(57)【要約】      （修正有）【課題】マルウェアから電子デバイスをプロテクトする。【解決手段】システム２００は、メモリ２０６、プロセッサ２０８、オペレーティングシステム２１２、オペレーティングシステム２１２に通信接続される電子デバイスのリソース２１４、オペレーティングシステム２１２より下位のレベルで電子デバイス２０４上で実行されるよう構成されるバーチャルマシーンモニタ２１６、及びオペレーティングシステム２１２より下位のレベルで電子デバイス２０４上で実行されるセキュリティエージェント２１７を有する。バーチャルマシーンモニタ２１６は、バーチャルマシーンモニタ２１６の上位のレベルから行われたリソースのリクエストをインターセプトし、リクエストをセキュリティエージェント２１７に通知するよう構成される。セキュリティエージェント２１７は、リクエストがマルウェアを示すか判断するよう構成される。【選択図】図２
2015212979.tif 000002
【特許請求の範囲】
【請求項１】
電子デバイスをセキュアにするシステムであって、
不揮発性メモリと、
前記不揮発性メモリに接続されるプロセッサと、
前記電子デバイスのリソースと、
前記不揮発性メモリにあって、前記プロセッサにより実行されるファームウェアであって、前記電子デバイスのリソースに通信接続される前記ファームウェアと、
前記ファームウェアにあるファームウェアセキュリティエージェントと、
を有し、
前記ファームウェアセキュリティエージェントは、前記リソースにアクセスする前記電子デバイスのすべてのオペレーティングシステムより下位のレベルで、
前記リソースに対するリクエストをインターセプトし、
前記リクエストがマルウェアを示すか判断する、
よう構成されるシステム。
【請求項２】
前記ファームウェアは、前記電子デバイスの周辺のコントローラにある、請求項１記載のシステム。
【請求項３】
前記リソースは、前記電子デバイスの入出力コンポーネントを有する、請求項１記載のシステム。
【請求項４】
前記リソースは、キーボードを有する、請求項１記載のシステム。
【請求項５】
前記リソースは、ディスプレイデバイスを有する、請求項１記載のシステム。
【請求項６】
前記リソースは、ディスクを有する、請求項１記載のシステム。
【請求項７】
前記リクエストは、入力又は出力コマンドを有する、請求項１記載のシステム。
【請求項８】
前記リクエストがマルウェアを示すかの判断は、前記入力又は出力コマンドの値がマルウェアを示すか評価することを含む、請求項７記載のシステム。
【請求項９】
前記メモリと前記プロセッサとを有する入出力（Ｉ／Ｏ）デバイスであって、前記電子デバイスのオペレーティングシステムに通信接続される前記Ｉ／Ｏデバイスと、
前記ファームウェアセキュリティエージェントに通信接続されるセキュリティエージェントと、
をさらに有し、
前記リクエストがマルウェアを示すか判断するよう前記ファームウェアセキュリティエージェントを設定することは、前記リクエストを有する情報を前記セキュリティエージェントに送信するよう前記ファームウェアセキュリティエージェントを設定することを有し、
前記セキュリティエージェントは、前記情報がマルウェアを示すか判断するため、１以上のセキュリティルールにアクセスするよう構成される、請求項１記載のシステム。
【請求項１０】
前記セキュリティエージェントは、前記電子デバイスのベアメタルレイヤ内で実行される、請求項９記載のシステム。
【請求項１１】
前記セキュリティエージェントに通信接続され、前記オペレーティングシステムにおいて実行されるオペレーティングシステムセキュリティエージェントをさらに有し、
前記セキュリティエージェントは、前記リソースのリクエストを行った前記オペレーティングシステムの１以上の要素に関する情報をセキュリティエージェントに提供するよう構成される、請求項９記載のシステム。
【請求項１２】
前記ファームウェアセキュリティエージェントは、前記セキュリティエージェントを認証するよう構成される、請求項９記載のシステム。
【請求項１３】
前記セキュリティエージェントは、
前記リソースにアクセスする前記電子デバイスのすべてのオペレーティングシステムより下位のレベルで実行され、
前記セキュリティエージェントより上位のレベルから前記リクエストを受信する、
よう構成される、請求項９記載のシステム。
【請求項１４】
前記セキュリティエージェントは、
前記リソースにアクセスした前記電子デバイスのすべてのオペレーティングシステムより高い優先度であって、前記プロセッサにより規定された前記優先度で実行され、
前記セキュリティエージェントより低い優先度を有するエンティティから前記リクエストを受信する、
よう構成される、請求項９記載のシステム。
【請求項１５】
前記セキュリティエージェントは、
前記リソースにアクセスした前記電子デバイスのすべてのオペレーティングシステムより高い特権実行リング上で実行され、
前記セキュリティエージェントより低い特権実行リングから前記リクエストを受信する、
よう構成される、請求項９記載のシステム。
【請求項１６】
電子デバイスをセキュアにする方法であって、
前記電子デバイスに接続されたリソースに通信接続され、不揮発性メモリにあるファームウェアにおいて、前記リソースにアクセスした前記電子デバイスのすべてのオペレーティングシステムより下位のレベルで前記リソースに対するリクエストをインターセプトするステップと、
１以上のセキュリティルールを照会するステップと、
前記１以上のセキュリティルールに基づき、前記リクエストがマルウェアを示すか判断するステップと、
を有する方法。
【請求項１７】
前記リクエストがマルウェアを示すか判断するステップは、
前記リクエストに関する情報をプロテクションサーバに送信するステップと、
前記リクエストに関する判定を前記プロテクションサーバから受信するステップと、
を有する、請求項１６記載の方法。
【請求項１８】
前記リクエストは、前記電子デバイスの周辺のコントローラにあるファームウェアにおいてインターセプトされる、請求項１６記載の方法。
【請求項１９】
前記リソースは、前記電子デバイスの入出力コンポーネントを有する、請求項１６記載の方法。
【請求項２０】
前記リソースは、キーボードを有する、請求項１６記載の方法。
【請求項２１】
前記リソースは、ディスプレイデバイスを有する、請求項１６記載の方法。
【請求項２２】
前記リソースは、ディスクを有する、請求項１６記載の方法。
【請求項２３】
前記リクエストは、入力又は出力コマンドを有する、請求項１６記載の方法。
【請求項２４】
１以上のセキュリティルールを受信するためセキュリティエージェントと通信するステップをさらに有する、請求項１６記載の方法。
【請求項２５】
入出力（Ｉ／Ｏ）デバイスのファームウェアにおいて前記リクエストをインターセプトするステップをさらに有し、
前記リクエストがマルウェアを示すか判断するステップは、
前記リクエストを有する情報を前記セキュリティエージェントに送信するステップと、
前記リクエストがマルウェアを示すか判断するため、前記セキュリティエージェントからの１以上のセキュリティルールにアクセスするステップと、
を有する、請求項２４記載の方法。
【請求項２６】
前記セキュリティエージェントからの１以上のセキュリティルールにアクセスするステップは、前記電子デバイスのベアメタルレイヤ内で実行される、請求項２４記載の方法。
【請求項２７】
前記電子デバイスのオペレーティングシステムにおいて実行されるオペレーティングシステムセキュリティエージェントと通信するステップと、
前記リソースのリクエストを行った前記オペレーティングシステムの１以上の要素に関する情報を受信するステップと、
をさらに有する、請求項２４記載の方法。
【請求項２８】
前記セキュリティエージェントを認証するステップをさらに有する、請求項２４記載の方法。
【請求項２９】
前記セキュリティエージェントは、前記電子デバイスのすべてのオペレーティングシステムより下位レベルで実行され、
前記セキュリティエージェントより上位のレベルから前記リクエストを受信するステップをさらに有する、請求項２４記載の方法。
【請求項３０】
前記セキュリティエージェントは、前記リソースにアクセスする前記電子デバイスのすべてのオペレーティングシステムより高い優先度であって、前記プロセッサにより規定される前記優先度において実行され、
前記セキュリティエージェントより低い優先度を有するエンティティから前記リクエストを受信するステップをさらに有する、請求項２４記載の方法。
【請求項３１】
前記セキュリティエージェントは、前記リソースにアクセスする前記電子デバイスのすべてのオペレーティングシステムより高い特権実行リング上で実行され、
前記セキュリティエージェントより低い特権実行リングから前記リクエストを受信するステップをさらに有する、請求項２４記載の方法。
【請求項３２】
コンピュータ可読媒体と、
前記コンピュータ可読媒体上に担持されるコンピュータ実行可能命令と、
を有する製造物であって、
前記命令はプロセッサにより可読であり、読み込まれ実行されると、前記電子デバイスに接続されたリソースに通信接続され、不揮発性メモリにあるファームウェアにおいて、前記リソースにアクセスした前記電子デバイスのすべてのオペレーティングシステムより下位のレベルで前記リソースに対するリクエストをインターセプトするステップと、
１以上のセキュリティルールを照会するステップと、
前記１以上のセキュリティルールに基づき、前記リクエストがマルウェアを示すか判断するステップと、
を前記プロセッサに実行させる製造物。
【請求項３３】
前記リクエストは、前記電子デバイスの周辺のコントローラにあるファームウェアにおいてインターセプトされる、請求項３２記載の製造物。
【請求項３４】
前記リソースは、前記電子デバイスの入出力コンポーネントを有する、請求項３２記載の製造物。
【請求項３５】
前記リソースは、キーボードを有する、請求項３２記載の製造物。
【請求項３６】
前記リソースは、ディスプレイデバイスを有する、請求項３２記載の製造物。
【請求項３７】
前記リソースは、ディスクを有する、請求項３２記載の製造物。
【請求項３８】
前記リクエストは、入力又は出力コマンドを有する、請求項３２記載の製造物。
【請求項３９】
１以上のセキュリティルールを受信するためセキュリティエージェントと通信するステップを前記プロセッサにさらに実行させる、請求項３２記載の製造物。
【請求項４０】
入出力（Ｉ／Ｏ）デバイスのファームウェアにおいて前記リクエストをインターセプトするステップを前記プロセッサにさらに実行させ、
前記リクエストがマルウェアを示すか判断するステップは、
前記リクエストを有する情報を前記セキュリティエージェントに送信するステップと、
前記リクエストがマルウェアを示すか判断するため、前記セキュリティエージェントからの１以上のセキュリティルールにアクセスするステップと、
を有する、請求項３９記載の製造物。
【請求項４１】
前記セキュリティエージェントからの１以上のセキュリティルールにアクセスするステップは、前記電子デバイスのベアメタルレイヤ内で実行される、請求項３９記載の製造物。
【請求項４２】
前記電子デバイスのオペレーティングシステムにおいて実行されるオペレーティングシステムセキュリティエージェントと通信するステップと、
前記リソースのリクエストを行った前記オペレーティングシステムの１以上の要素に関する情報を受信するステップと、
を前記プロセッサにさらに実行させる、請求項３９記載の製造物。
【請求項４３】
前記セキュリティエージェントを認証するステップを前記プロセッサにさらに実行させる、請求項３９記載の製造物。
【請求項４４】
前記セキュリティエージェントは、前記電子デバイスのすべてのオペレーティングシステムより下位レベルで実行され、
前記セキュリティエージェントより上位のレベルから前記リクエストを受信するステップを前記プロセッサにさらに実行させる、請求項３９記載の製造物。
【請求項４５】
前記セキュリティエージェントは、前記リソースにアクセスする前記電子デバイスのすべてのオペレーティングシステムより高い優先度であって、前記プロセッサにより規定される前記優先度において実行され、
前記セキュリティエージェントより低い優先度を有するエンティティから前記リクエストを受信するステップを前記プロセッサにさらに実行させる、請求項３９記載の製造物。
【請求項４６】
前記セキュリティエージェントは、前記リソースにアクセスする前記電子デバイスのすべてのオペレーティングシステムより高い特権実行リング上で実行され、
前記セキュリティエージェントより低い特権実行リングから前記リクエストを受信するステップを前記プロセッサにさらに実行させる、請求項３９記載の製造物。
【発明の詳細な説明】
【技術分野】
【０００１】
本出願は、その内容のすべてが参照することによりここに援用される、２０１１年３月２８日に出願された米国出願第１３／０７３，７９１号、２０１１年３月２８日に出願された米国出願第１３／０７３，８１０号、２０１１年３月２８日に出願された米国出願第１３／０７３，８４２号、２０１１年３月３１日に出願された米国出願第１３／０７７，２２７号、２０１１年３月２８日に出願された米国出願第１３／０７３，８５３号、２０１１年３月２９日に出願された米国出願第１３／０７５，０４９号、２０１１年３月３１日に出願された米国出願第１３／０７６，４９３号、２０１１年３月２９日に出願された米国出願第１３／０７４，７４１号、２０１１年３月３１日に出願された米国出願第１３／０７７，３０５号、２０１１年３月２９日に出願された米国出願第１３／０７４，８３１号、２０１１年３月２９日に出願された米国出願第１３／０７４，９２５号、２０１１年３月２９日に出願された米国出願第１３／０７４，９４７号、２０１１年３月３１日に出願された米国出願第１３／０７７，２７０号、２０１１年３月３１日に出願された米国出願第１３／０７６，５３７号、２０１１年３月２８日に出願された米国出願第１３／０７３，８６４号、２０１１年３月２９日に出願された米国出願第１３／０７５，０７２号、２０１１年３月２９日に出願された米国出願第１３／０７５，１０１号、２０１１年３月３１日に出願された米国出願第１３／０７６，５１２号、２０１１年３月３１日に出願された米国出願第１３／０７６，４８０号、及び２０１１年３月３１日に出願された米国出願第１３／０７６，４７３号の利益を請求する。
【０００２】
本発明は、一般にコンピュータセキュリティ及びマルウェアプロテクションに関し、より詳細には、バーチャルマシーンモニタベースのアンチマルウェアセキュリティのためのシステム及び方法に関する。
【背景技術】
【０００３】
ネイティブなオペレーティングシステムは、セキュリティソフトウェアがオペレーティングシステムのカーネル内に任意のフッキングをインストールすることを阻止することができる。セキュリティソフトウェアは、マルウェアによる悪意のある可能性のあるアクションを含む、電子装置のすべての動作をフィルタリングすることを阻止される。マルウェアは、限定することなく、スパイウェア、ルートキット、パスワードスチーラ、スパム、フィッシング攻撃のソース、ＤｏＳ（Ｄｅｎｉａｌ−ｏｆ−Ｓｅｒｖｉｃｅ）攻撃のソース、ウイルス、ロガー（ｌｏｇｇｅｒ）、Ｔｒｏｊａｎ、アドウェア（ａｄｗａｒｅ）又は悪意ある活動を生成する他の何れかのデジタルコンテンツを含むものであってもよい。
【０００４】
オペレーティングシステムにより提供されるフィルタリング機能は、限定的なものであってもよく、オペレーティングシステムのベンダにより決定されるタイムライン上でのみ利用可能である。マルウェアは、特にオペレーティングシステムのカーネルにおいてセキュリティソフトウェアと同じレベルで動作及び配置可能であり、セキュリティソフトウェア自体のインテグリティとオペレーティングシステムとの双方を危険にさらす。
【０００５】
多数の形態のアグレッシブカーネルモードマルウェアは、悪意あるコードを注入するなどの悪意あるタスクを動的に実現し、実行パスを変更して悪意あるコードにリダイレクトするようユーザモードコードセクションを修正し、セキュリティソフトウェアを無効にするためユーザモードデータ構造を修正するため、ユーザモードメモリを改ざんする。さらに、一部のマルウェアは、検出ロジックを欺くため、プロセスメモリコード及びデータセクションを改ざんすることによって、カーネルからのアンチマルウェアアプリケーション及びプロセスを攻撃してもよい。
【０００６】
カーネルモードルートキット及び他のマルウェアは、各種方法を利用してユーザモードアプリケーション及びカーネルモードデバイスドライバからその存在を隠す。利用される技術は、感染が行われる場所に応じて変化しうる。例えば、オペレーティングシステムのカーネルアクティブプロセスリストを攻撃したマルウェアは、ルートキット又は他のマルウェアプロセスをリスト解除又はリンク解除する。他のマルウェアは、プロセスアクセス及びエニュミュレーションファンクションのコードセクションを改善する可能性がある。
【発明の概要】
【０００７】
一実施例では、電子デバイスをセキュアにするシステムは、メモリと、プロセッサと、前記プロセッサによる実行のため前記メモリにある１以上のオペレーティングシステムと、前記オペレーティングシステムに通信接続される前記電子デバイスのリソースと、前記リソースにアクセスする前記電子デバイスのすべてのオペレーティングシステムより下位のレベルにおいて前記電子デバイス上で実行されるよう構成されるバーチャルマシーンモニタと、前記リソースにアクセスする前記電子デバイスのすべてのオペレーティングより下位のレベルにおいて前記電子デバイス上で実行されるよう構成されるセキュリティエージェントとを有する。前記バーチャルマシーンモニタは、前記バーチャルマシーンモニタの上位のレベルから行われる前記リソースのリクエストをインターセプトし、前記リクエストを前記セキュリティエージェントに通知するよう構成される。前記セキュリティエージェントは、前記リクエストがマルウェアを示すか判断するよう構成される。
【０００８】
他の実施例では、電子デバイスをセキュアにするシステムは、メモリと、プロセッサと、前記プロセッサによる実行のため前記メモリにある１以上のオペレーティングシステムと、前記オペレーティングシステムに通信接続される前記電子デバイスのリソースと、前記リソースにアクセスする前記電子デバイスのすべてのオペレーティングシステムより高い優先度で前記電子デバイス上で実行されるよう構成されるバーチャルマシーンモニタであって、前記優先度は前記プロセッサにより規定される、前記バーチャルマシーンモニタと、前記リソースにアクセスする前記電子デバイスのすべてのオペレーティングより高い優先度で前記電子デバイス上で実行されるよう構成されるセキュリティエージェントであって、前記優先度は前記プロセッサにより規定される、前記セキュリティエージェントとを有する。前記バーチャルマシーンモニタは、前記バーチャルマシーンモニタより低い優先度を有するエンティティから行われた前記リソースのリクエストをインターセプトし、前記リクエストを前記セキュリティエージェントに通知するよう構成される。前記セキュリティエージェントは、前記リクエストがマルウェアを示すか判断するよう構成される。
【０００９】
さらなる他の実施例では、電子デバイスをセキュアにするシステムは、メモリと、プロセッサと、前記プロセッサによる実行のため前記メモリにある１以上のオペレーティングシステムと、前記オペレーティングシステムに接続される前記電子デバイスのリソースと、前記リソースにアクセスする前記電子デバイスのすべてのオペレーティングシステムより高い特権実行リング上の前記電子デバイス上で実行されるよう構成されるバーチャルマシーンモニタと、前記電子デバイスのすべてのオペレーティングより高い特権実行リング上の前記電子デバイス上で実行されるよう構成されるセキュリティエージェントとを有する。前記バーチャルマシーンモニタは、前記バーチャルマシーンモニタより低い特権実行リングから行われた前記リソースのリクエストをインターセプトし、前記リクエストを前記セキュリティエージェントに通知するよう構成される。前記セキュリティエージェントは、前記リクエストがマルウェアを示すか判断するよう構成される。
【００１０】
さらなる他の実施例では、電子デバイスをセキュアにする方法は、リソースにアクセスする電子デバイスのすべてのオペレーティングシステムの下位のレベルで、より上位のレベルから行われた電子デバイスのリソースのリクエストをインターセプトするステップと、リクエストがマルウェアを示すか判断するステップとを有する。リソースは、オペレーティングシステムに通信接続される。
【００１１】
さらなる実施例では、電子デバイスをセキュアにする方法は、リソースにアクセスする電子デバイスのすべてのオペレーティングシステムより高い優先度で、より低い優先度を有するエンティティから行われたリソースのリクエストをインターセプトするステップと、リクエストがマルウェアを示すか判断するステップとを有する。当該優先度は、電子デバイスのプロセッサにより規定される。
【００１２】
さらなる他の実施例では、電子デバイスをセキュアにする方法は、リソースにアクセスする電子デバイスのすべてのオペレーティングシステムより高い特権実行リング上で、リソースのリクエストをインターセプトするステップと、リクエストがマルウェアを示すか判断するステップとを有する。リクエストは、より低い特権実行リングから行われる。
【００１３】
さらなる他の実施例では、製造物は、コンピュータ可読媒体と、当該コンピュータ可読媒体上に担持されるコンピュータ実行可能命令とを有する。当該命令は、プロセッサにより可読である。当該命令は、読み込まれて実行されると、リソースにアクセスする電子デバイスのすべてのオペレーティングシステムの下位のレベルで、より上位のレベルから行われた電子デバイスのリソースのリクエストをインターセプトするステップと、リクエストがマルウェアを示すか判断するステップとをコンピュータに実行させる。リソースは、オペレーティングシステムに通信接続される。
【００１４】
さらなる実施例では、製造物は、コンピュータ可読媒体と、当該コンピュータ可読媒体上に担持されるコンピュータ実行可能命令とを有する。当該命令は、プロセッサにより可読である。当該命令は、読み込まれて実行されると、リソースにアクセスする電子デバイスのすべてのオペレーティングシステムより高い優先度で、より低い優先度を有するエンティティから行われたリソースのリクエストをインターセプトするステップと、リクエストがマルウェアを示すか判断するステップとをコンピュータに実行させる。当該優先度は、電子デバイスのプロセッサにより規定される。
【００１５】
さらなる他の実施例では、製造物は、コンピュータ可読媒体と、当該コンピュータ可読媒体上に担持されるコンピュータ実行可能命令とを有する。当該命令は、プロセッサにより可読である。当該命令は、読み込まれて実行されると、リソースにアクセスする電子デバイスのすべてのオペレーティングシステムより高い特権実行リング上で、リソースのリクエストをインターセプトするステップと、リクエストがマルウェアを示すか判断するステップとをコンピュータに実行させる。リクエストは、より低い特権実行リングから行われる。
【図面の簡単な説明】
【００１６】
本発明及びその効果のより完全な理解のため、添付した図面に関して以下に記載された説明が参照される。
【図１】図１は、マルウェアから電子デバイスをプロテクトするシステムの実施例である。
【図２】図２は、マルウェアから電子デバイスをプロテクトするためのバーチャルマシーンモニタベース及びセキュリティルールベースのコンフィギュラブルセキュリティ手段のためのシステムの実施例である。
【図３】図３は、マルウェアからの電子デバイスのバーチャルマシーンモニタベースプロテクションのための方法の実施例である。
【図４】図４は、マルウェアから電子デバイスをプロテクトするためのファームウェアベース及びセキュリティルールベースシステムの実施例である。
【図５】図５は、マルウェアから電子デバイスをプロテクトするファームウェアベース手段の実施例のより詳細な図である。
【図６】図６は、マルウェアからの電子デバイスのファームウェアベースプロテクションのための方法の実施例である。
【図７】図７は、マルウェアに対する電子デバイスのプロテクションのためのマイクロコードベースシステムの実施例である。
【図８】図８は、マルウェアからの電子デバイスのマイクロコードベースプロテクションのための方法の実施例である。
【図９】図９は、電子デバイス上のセキュリティセンシティブなプロセッサリソースへのソフトウェアアクセスを規制するためのシステムの実施例である。
【図１０】図１０は、プロセッサリソース制御構造の実施例である。
【図１１】図１１は、電子デバイスのセキュリティセンシティブなプロセッサリソースへのソフトウェアアクセスを規制する方法の実施例である。
【図１２】図１２は、電子デバイス上のオペレーティングシステム下位トラッピングを利用したメモリをセキュアにするためのソフトウェアアクセスを規制するためのシステムの実施例である。
【図１３】図１３は、メモリマップの実施例の図である。
【図１４】図１４は、電子デバイスの試行されたアクセスのオペレーティングシステム下位トラッピングを利用したメモリをセキュアにするための方法の実施例である。
【図１５】図１５は、電子デバイスのオペレーティングシステムのカーネルをプロテクトするためのシステムの実施例である。
【図１６】図１６は、オペレーティングシステムへの信頼されたアクセスと信頼されたドライバコンポーネントとのアクセスマップの実施例である。
【図１７】図１７は、図１６のアクセスマップをさらに示すバーチャルメモリの実施例である。
【図１８】図１８は、オペレーティングシステムへの信頼されたアクセスと信頼されたドライバコンポーネントとのアクセスマップを生成するためのシステムの実施例である。
【図１９】図１９は、電子デバイスのオペレーティングシステムカーネルをプロテクトするための方法の実施例である。
【図２０】図２０は、オペレーティングシステムをセキュアに実行するためのオペレーティングシステムの実行環境を提供するためのシステムの実施例である。
【図２１】図２１は、セキュアなオペレーティングシステムの実行環境を提供するためのシステムにおける起動モジュールの実施例である。
【図２２】図２２は、オペレーティングシステムをセキュアに実行するためのオペレーティングシステムの実行環境の実施例である。
【図２３】図２３は、セキュアなオペレーティングシステムの実行環境を提供するためのシステム又は方法において利用されるディスクマッピングビットマップの実施例である。
【図２４】図２４は、セキュアなオペレーティングシステムの実行環境を起動するための方法の実施例である。
【図２５】図２５は、オペレーティングシステムをセキュアに実行するためのオペレーティングシステムの実行環境を提供する方法の実施例である。
【図２６】図２６は、未認証のアクセスからストレージデバイスをプロテクトするためのシステムの実施例である。
【図２７】図２７は、未認証のアクセスからストレージデバイスをプロテクトするためのシステム又は方法により利用されるセキュリティルールの実施例である。
【図２８】図２８は、未認証のアクセスからストレージデバイスをプロテクトするための方法の実施例である。
【図２９】図２９は、アプリケーションと入出力デバイスとの間のライトアクセスのための入出力パスをセキュアにするシステムの実施例である。
【図３０】図３０は、アプリケーションと入出力デバイスとの間のライトアクセスのための入出力パスをセキュアにする方法の実施例である。
【図３１】図３１は、アプリケーションと入出力デバイスとの間のリードアクセスのための入出力パスをセキュアにするシステムの実施例である。
【図３２】図３２は、アプリケーションと入出力デバイスとの間のリードアクセスのための入出力パスをセキュアにする方法の実施例である。
【図３３】図３３は、電子デバイス上の隠蔽されたプロセスを検出及び修復するシステムの実施例である。
【図３４】図３４は、電子デバイス上の隠蔽されたプロセスを検出及び修復する方法の実施例である。
【図３５】図３５は、電子デバイス上の隠蔽されたプロセスを検出及び修復する他のシステムの実施例である。
【図３６】図３６は、電子デバイス上の隠蔽されたプロセスを検出及び修復する他の方法の実施例である。
【図３７】図３７は、電子デバイス上の隠蔽されたプロセスを検出及び修復するさらなる他の方法の実施例である。
【図３８】図３８は、オペレーティングシステムのシステムコールへのアクセスをセキュアにするシステムの実施例である。
【図３９】図３９は、オペレーティングシステムのシステムコールへのアクセスをセキュアにするシステム又は方法により利用されるシステムコールテーブルの実施例である。
【図４０】図４０は、オペレーティングシステムのシステムコールへのアクセスをセキュアにする方法の実施例である。
【図４１】図４１は、電子デバイス上の悪意ある又は悪意の可能性があるコードの規制及び制御のためのシステムの実施例である。
【図４２】図４２は、電子デバイス上の自己変更コードの規制及び制御のための方法の実施例である。
【図４３】図４３は、電子デバイス上の悪意あるコードの変更のための方法の実施例である。
【図４４】図４４は、電子デバイス上の関連するスレッドのモニタリング及びトラッキングのための方法の実施例である。
【図４５】図４５は、電子デバイスのメモリ及びストレージをセキュアにするシステムの実施例である。
【図４６】図４６は、電子デバイスのメモリ及びストレージをセキュアにする方法の実施例である。
【図４７】図４７は、オペレーティングシステムのオブジェクトへのアクセスをセキュアにするシステムの実施例である。
【図４８】図４８は、オペレーティングシステムのオブジェクトへのアクセスをセキュアにするシステム又は方法により利用される動作状態マップの実施例である。
【図４９】図４９は、オペレーティングシステムのオブジェクトへのアクセスをセキュアにする方法の実施例である。
【図５０】図５０は、電子デバイス上のドライバ間の通信をセキュアにするシステムの実施例である。
【図５１】図５１は、ドライバ間通信の一例となる図である。
【図５２】図５２は、オペレーティングシステムの下位のセキュリティエージェントがプロテクトしうる電子デバイスの部分のさらなる図である。
【図５３】図５３は、電子デバイスにおけるドライバ間通信のオペレーティングシステムの下位のトラッピング及びセキュア処理のための方法の実施例である。
【図５４】図５４は、電子デバイス上のドライバフィルタのアタッチメント及びデタッチメントをセキュアにするシステムの実施例である。
【図５５】図５５は、一例となるデバイススタックの処理のよち詳細な図である。
【図５６】図５６は、マルウェアがドライバフィルタをアタッチ又はデタッチするよう動作することによって危険にさらされうるデバイススタックの一例となる図である。
【図５７】図５７は、電子デバイスにおけるドライバフィルタアタッチメントのオペレーティングシステムの下位のトラッピングの方法の実施例である。
【図５８】図５８は、電子デバイス上のドライバのロード又はアンロード処理をセキュアにするシステムの実施例である。
【図５９Ａ】図５９Ａは、電子デバイス上のドライバのロード処理又はアンロード処理をセキュアにする方法の実施例である。
【図５９Ｂ】図５９Ｂは、電子デバイス上のドライバのロード処理又はアンロード処理をセキュアにする方法の実施例である。
【図６０】図６０は、メモリへのコードのロード処理をオペレーティングシステムの下位でトラッピング及びセキュア処理するシステムの実施例である。
【図６１】図６１は、注入されたコードが実行用のメモリ内に配置するためアプリケーションにより収集される方法の一例となる図である。
【図６２Ａ】図６２Ａは、ディスクからメモリへのアプリケーションのイメージのロード処理の一例となる図である。
【図６２Ｂ】図６２Ｂは、アプリケーションのイメージがメモリロード処理された後に実行される可能性のあるアクションの一例となる図である。
【図６３】図６３は、コードを注入するためスワップされたコンテンツに対する悪意ある攻撃のさらなる例を示す。
【図６４】図６４は、メモリの一部が悪意あると判断された後のメモリマップの実施例である。
【図６５】図６５は、メモリへのコードのロード処理及び実行のオペレーティングシステムの下位のトラッピングの方法の実施例である。
【発明を実施するための形態】
【００１７】
図１は、マルウェアから電子デバイスをプロテクトするシステム１００の実施例である。システム１００は、トリガイベントハンドラ１０８に通信接続されるオペレーティングシステム（Ｏ／Ｓ）下位トラッピングエージェント１０４を有してもよい。Ｏ／Ｓ下位トラッピングエージェント１０４は、電子デバイス１０３のリソース１０６の各種の試行されたアクセスをトラップするよう構成されてもよい。Ｏ／Ｓ下位トラッピングエージェント１０４は、トラップされた試行されたアクセスに関連するトリガイベントを生成し、トリガイベントをトリガイベントハンドラ１０８に送信するよう構成されてもよい。トリガイベントハンドラ１０８は、トリガイベントの処理方法を決定するため、１以上のセキュリティルール１１４又はプロテクションサーバ１０３に照会するよう構成されてもよい。トリガイベントハンドラ１０８はまた、トリガイベントの傾向が電子デバイス１０３のリソース又は処理を妨害するマルウェア又は悪意ある試行の徴候であると評価するよう構成されてもよい。さらに、トリガイベントハンドラ１０８は、トリガイベントが許可又は拒絶されるべきかの判定をＯ／Ｓ下位トラッピングエージェント１０４に提供するか、又は他の訂正アクションを生成するよう構成されてもよい。
【００１８】
Ｏ／Ｓ下位トラッピングエージェント１０４は、電子デバイス１０３においてオペレーティングシステムより下位の機能レベルにおいて実現されてもよい。例えば、Ｏ／Ｓ下位トラッピングエージェント１０４は、オペレーティングシステム１１２、ドライバ１１１又はアプリケーション１１０によるリソースへの試行されたアクセスをインターセプトしてもよい。Ｏ／Ｓ下位トラッピングエージェント１０４は、オペレーティングシステムを利用することなく、電子デバイス１０３のプロセッサ上で実行されてもよい。一実施例では、Ｏ／Ｓ下位トラッピングエージェント１０４は、ベアメタル環境又は実行レベルにおいて実行されてもよい。さらに、Ｏ／Ｓ下位トラッピングエージェント１０４は、電子デバイス１０３のすべてのオペレーティングシステムよりも、電子デバイス１０３のプロセッサにより規定されるように、より高い実行優先度により実行されてもよい。例えば、より小さな数がより高い優先度を表すプロテクションリングを利用した階層的プロテクションドメインモデルに関して、オペレーティングシステム１１２は、“Ｒｉｎｇ０”で実行し、Ｏ／Ｓ下位トラッピングエージェント１０４は“Ｒｉｎｇ−１”で実行されてもよい。ドライバ１１１及びアプリケーション１１０は、“Ｒｉｎｇ０”又は“Ｒｉｎｇ３”により実行されてもよい。プロセッサのいくつかの実施例では、“Ｒｉｎｇ−１”のコンセプトは、“Ｒｉｎｇ０  ｐｒｉｖｉｌｅｇｅｄ  ｍｏｄｅ”として知られ、“Ｒｉｎｇ０”のコンセプトは、“Ｒｉｎｇ０  ｎｏｎ−ｐｒｉｖｉｌｅｇｅｄ  ｍｏｄｅ”として知られてもよい。“Ｒｉｎｇ−１”又は“Ｒｉｎｇ０  ｐｒｉｖｉｌｅｇｅｄ  ｍｏｄｅ”における処理は、“Ｒｉｎｇ０”又は“Ｒｉｎｇ０  ｐｒｉｖｉｌｅｇｅｄ  ｍｏｄｅ”より追加的なオーバヘッド及びコストを伴う可能性がある。電子デバイス１０３のオペレーティングシステムは、Ｒｉｎｇ０において実行されてもよい。
【００１９】
Ｏ／Ｓ下位トラッピングエージェント１０４は、Ｒｉｎｇ０又はより上位で実行するエンティティにトランスペアレントに実行されてもよい。このため、リソース１０６の試行されたアクセスは、Ｏ／Ｓ下位トラッピングエージェント１０４の有無に関わらず、同じ方法によりオペレーティングシステム１１２又は他のエンティティによりリクエストされてもよい。受信したアクションを実行する際、Ｏ／Ｓ下位トラッピングエージェント１０４は、当該リクエストが発生することを許可するか、当該リクエストを拒絶するか、又は他の訂正アクションを行ってもよい。リクエストを拒絶するため、Ｏ／Ｓ下位トラッピングエージェント１０４は、リソース１０６又はプロセッサに対するリクエストを単にわたさないか、又はアクションが行われたことをオペレーティングシステム１１２に確信させるため、リクエストに対するスプーフ又はダミーリプライを提供してもよい。
【００２０】
“Ｒｉｎｇ−１”により、電子デバイス１０３の関連するオペレーティングシステムより高い優先度により、又は電子デバイス１０３の関連するオペレーティングシステムの下位で実行することによって、Ｏ／Ｓ下位トラッピングエージェント１０４は、オペレーティングシステム１１２などのオペレーティングシステムを苦しめるマルウェアの多くを回避するようにしてもよい。しかしながら、電子デバイス１０３上のマルウェアは、それが悪意あるアクティビティを実行する場合、リソース１０６のリクエストを依然として実行する必要がある。従って、センシティブリソースにリンクされたトラッピング処理は、電子デバイス１０３のオペレーティングシステムのレベルより下位で実行されるトラッピングエージェントによって、より良好に実現されてもよい。
【００２１】
Ｏ／Ｓ下位トラッピングエージェント１０４は、何れか適切な方法により実現されてもよい。一実施例では、Ｏ／Ｓ下位トラッピングエージェント１０４は、バーチャルマシーンモニタにおいて実現されてもよい。このような実施例は、Ｏ／Ｓ下位トラッピングエージェント１０４について説明されるようなオペレーティングシステムのレベルより下位で実行されてもよい。このような実施例の具体例の説明は、例えば、セキュリティバーチャルマシーンモニタ２１６の以降の図２の説明などにおいて行われる。他の実施例では、Ｏ／Ｓ下位トラッピングエージェント１０４は、ファームウェアにより実現されてもよい。このような実施例は、Ｏ／Ｓ下位トラッピングエージェント１０４について説明されるように、オペレーティングシステムのレベルより下位で実行されてもよい。このような実施例の具体例の説明は、ファームウェアセキュリティエージェント４４０，５１６又はＰＣファームウェアセキュリティエージェント４４４の以降の図４及び５の説明などにおいて行われる。さらなる他の実施例では、Ｏ／Ｓ下位トラッピングエージェント１０４は、マイクロコードにより実現されてもよい。このような実現形態は、Ｏ／Ｓ下位トラッピングエージェント１０４について説明されるように、オペレーティングシステムのレベルより下位で実行されてもよい。このような実施例の具体例の説明は、例えば、マイクロコードセキュリティエージェント７０８の以降の図７の説明などにおいて行われる。Ｏ／Ｓ下位トラッピングエージェント１０４は、これらの実施例の組み合わせにより実現されてもよい。
【００２２】
トリガイベントハンドラ１０８は、相互に通信接続された１以上のイベントハンドラ又はセキュリティエージェントにより実現されてもよい。トリガイベントハンドラ１０８及びＯ／Ｓ下位トラッピングエージェント１０４は、同一のセキュリティエージェントにより実現されてもよい。一実施例では、トリガイベントハンドラ１０８は、Ｏ／Ｓ下位トラッピングエージェントと同一の優先度リングにより実行されてもよい。他の実施例では、トリガイベントハンドラ１０８は、オペレーティングシステム１１２、ドライバ１１１又はアプリケーション１１０と同じ優先度により実行されてもよい。さらなる他の実施例では、トリガイベントハンドラ１０８は、少なくとも１つのトリガイベントハンドラがＯ／Ｓ下位トラッピングエージェントと同一の優先度リングにより実行され、少なくとも１つのトリガイベントハンドラがオペレーティングシステム１１２、ドライバ１１１又はアプリケーション１１０のレベルにおいて実行される２以上のトリガイベントハンドラにより実現されてもよい。Ｏ／Ｓ下位トラッピングエージェント１０４のレベルにより実行することによって、トリガイベントハンドラ１０８は、エージェント自体に感染する“Ｒｉｎｇ０”又は“Ｒｉｎｇ３”のマルウェアの問題を同様に回避してもよい。しかしながら、オペレーティングシステム１１２、ドライバ１１１又はアプリケーション１１０と共に“Ｒｉｎｇ０”又は“Ｒｉｎｇ３”により実行されるトリガイベントハンドラ１０８は、“Ｒｉｎｇ−１”エージェントの観点から利用不可なリソース１０６の試行されたアクセスに関するコンテクスト情報を提供することが可能であってもよい。
【００２３】
トリガイベントハンドラ１０８は、何れか適切な方法により実現されてもよい。一実施例では、トリガイベントハンドラ１０８は、バーチャルマシーンモニタ又はバーチャルマシーンモニタセキュリティエージェントにおいて実現されてもよい。このような実施例は、トリガイベントハンドラ１０８について説明されるように、オペレーティングシステムのレベルより下位で実行されてもよい。このような実施例の具体例の説明は、例えば、セキュリティバーチャルマシーンモニタ２１６又はセキュリティバーチャルマシーンモニタセキュリティエージェント２１７の以降の図２の説明などにおいて行われる。他の実施例では、トリガイベントハンドラ１０８は、ファームウェアにおいて完全に又は部分的に実現されてもよい。このような実施例は、トリガイベントハンドラ１０８について説明されるように、オペレーティングシステムのレベルより下位で実行されてもよい。このような実施例の具体例の説明は、ファームウェアセキュリティエージェント４４０、５１６又はＰＣファームウェアセキュリティエージェント４４４の以降の図４及び５の説明などにおいて行われる。トリガイベントハンドラ１０８はまた、バーチャルマシーンモニタ、ファームウェア又はマイクロコードと同様にして実現されてもよい図４のＯ／Ｓ下位エージェント４５０において実現されてもよい。さらなる他の実施例では、トリガイベントハンドラ１０８は、マイクロコードにより実現されてもよい。このような実現形態は、トリガイベントハンドラ１０８について説明されるように、オペレーティングシステムのレベルより下位で実行されてもよい。このような実施例の具体例の説明は、例えば、マイクロコードセキュリティエージェント７０８の以降の図７の説明などにおいて行われる。トリガイベントハンドラ１０８は、バーチャルマシーンモニタ、ファームウェア又はマイクロコードと同様に実現されてもよい図７のＯ／Ｓ下位エージェント７１２において実現されてもよい。トリガイベントハンドラ１０８は、これらの実施例の組み合わせにより実現されてもよい。
【００２４】
一実施例では、Ｏ／Ｓ下位トラッピングエージェント１０４及び／又はトリガイベントハンドラ１０８は、電子デバイス１０３のベアメタルレイヤにおいて実行されてもよい。Ｏ／Ｓ下位トラッピングエージェント１０４及び／又はトリガイベントハンドラ１０８は、それらの間のオペレーティングシステムと、それらがプロテクトするよう構成されるリソース１０６とを利用することなく実行されてもよい。リソース１０６は、プロセッサ、プロセッサの機能、メモリ、データ構造などのメモリにあるエンティティ、又はファンクション、プロセス若しくはアプリケーションなどのプロセッサによる実行用のメモリにあるエンティティを含むものであってもよい。Ｏ／Ｓ下位トラッピングエージェント１０４及び／又はトリガイベントハンドラ１０８は、電子デバイス１０３のハードウェア上で直接的に実行されてもよい。Ｏ／Ｓ下位トラッピングエージェント１０４及び／又はトリガイベントハンドラ１０８は、実行するためのオペレーティングシステム１１２などのオペレーティングシステムの使用を要求せず、またリソース１０６に対するフルアクセスを取得しなくてもよい。
【００２５】
オペレーティングシステム１１２のレベルのエンティティ、Ｏ／Ｓ下位トラッピングエージェント１０４及びトリガイベントハンドラ１０８とリソース１０６との間の関係に参加しない他のオペレーティングシステムが、電子デバイス１０３に存在してもよい。例えば、プレブートオペレーティングシステムは、電子デバイスの各部分をセキュアに起動するが、リソース１０６から構成されるアプリケーション１１０、ドライバ１１１及びオペレーティングシステム１１２からのリクエストの処理に関して、電子デバイスの通常処理に参加しないようにしてもよい。他の具体例では、電子デバイス１０３は、マザーボードコンポーネント、プラグインカード、周辺装置、又はオペレーティングシステム１１２のレベルのエンティティ、Ｏ／Ｓ下位トラッピングエージェント１０４及びトリガイベントハンドラ１０８とリソース１０６との間の関係の外部においてファンクションを実行するため、オペレーティングシステム及びプロセッサの自らのセットを含む他のコンポーネントを含むものであってもよい。これらのオペレーティングシステムは、埋め込みオペレーティングシステムであってもよい。これらのオペレーティングシステムの何れかは、Ｏ／Ｓ下位トラッピングエージェント１０４及びトリガイベントハンドラ１０８の実行に利用されなくてもよい。さらに、これらのオペレーティングシステムの何れかは、トラッピングエージェント１０４及びトリガイベントハンドラ１０８によりプロテクトされるリソース１０６にアクセスしなくてもよい。
【００２６】
システム１００は、１以上のＯ／Ｓ下位トラッピングエージェント１０４と１以上のトリガイベントハンドラ１０８との何れかの組み合わせを含むものであってもよい。Ｏ／Ｓ下位トラッピングエージェント１０４とトリガイベントハンドラ１０８との説明は、以降の図におけるトラッピングエージェント、イベントハンドラ及びセキュリティエージェントの説明において行われる。
【００２７】
リソース１０６は、電子デバイスの何れか適切なリソースを含むものであってもよい。例えば、リソース１０６は、レジスタ、メモリ、コントローラ又はＩ／Ｏデバイスを含むものであってもよい。リソース１０６の実施例の説明は、例えば、図２のシステムリソース２１４、図４に示されるようなディスプレイ４３０及びストレージ４３２などのコンポーネント、又は以降の図７のシステムリソース７２４などの説明で行われる。
【００２８】
セキュリティルール１１４は、Ｏ／Ｓ下位トラッピングエージェント１０４にトラップするためのアクションを通知し、トリガイベントハンドラ１０８にトラップされるアクションに基づきイベントを処理するよう通知するための何れか適切なルール、ロジック、コマンド、命令、フラグ又は他の機構を含むものであってもよい。トリガイベントハンドラ１０８は、セキュリティルール１１４の１以上のＯ／Ｓ下位トラッピングエージェントに提供するよう構成されてもよい。セキュリティルール１１４の一部又は全ての実施例の説明は、例えば、図２のセキュリティルール２２２、図４のセキュリティルール４２２、４３４、４３６、４３８、図５のセキュリティルール５１８、又は以降の図７のセキュリティルール７０７、７２３などの説明において行われる。
【００２９】
システム１００のアプリケーション１１０、ドライバ１１１及びオペレーティングシステム１１２などのカーネルモード及びユーザモードエンティティは、何れか適切な方法により実現されてもよい。システム１００のアプリケーション１１０、ドライバ１１１及びオペレーティングシステム１１２の実施例の説明は、例えば、図２のアプリケーション２１０、ドライバ２１１及びオペレーティングシステム２１２、図４のアプリケーション４１０、ドライバ４１１及びオペレーティングシステム４１２、以降の図７のアプリケーション７０９、ドライバ７１１及びオペレーティングシステム７１３などの説明で行われる。
【００３０】
電子デバイス１０３は、コンピュータ、ＰＤＡ（Ｐｅｒｓｏｎａｌ  Ｄａｔａ  Ａｓｓｉｓｔａｎｔ）、電話、モバイル装置、サーバ又はプログラム命令及び／又はプロセスデータをインターセプト及び／又は実行するようコンフィギュラブルな他の何れかのデバイスなどにおいて何れか適切な方法により実現されてもよい。電子デバイス１０３の実施例の説明は、図２の電子デバイス２０４、図４の電子デバイス４０４又は図７の電子デバイス７０１などの説明において行われる。
【００３１】
システム１００は、電子デバイス１０３のオペレーティングシステムの下位のレベルにおいてリソースの試行されたアクセスをトラップするのに適した何れかのシステムにより実現されてもよい。システム１００はまた、試行されたアクセスが悪意あるか否か判断するため、セキュリティルールに照会することによって試行されたアクセスを処理するのに適した何れかの手段により実現されてもよい。例えば、システム１００は、以降の図２〜８に説明されるように、システム及び方法２００、３００、４００、５００、６００、７００及び８００により実現されてもよい。
【００３２】
図２は、マルウェアから電子デバイスをプロテクトするためのバーチャルマシーンモニタベース及びセキュリティルールベースのコンフィギュラブルなセキュリティ手段のためのシステム２００の実施例である。システム２００は、バーチャルマシーンモニタにおけるシステム１００の特定の要素を実現するシステム１００の実施例であってもよい。システム２００は、コンフィギュラブルセキュリティ手段によってマルウェアに対してプロテクトされるべき電子デバイス２０４を含むものであってもよい。システム２００のコンフィギュラブルセキュリティ手段は、すべてのオペレーティングシステムの下位で実行されるセキュリティエージェント、セキュリティバーチャルマシーンモニタ、クラウドベースセキュリティエージェント及びＯ／Ｓ内動作セキュリティエージェントを含むものであってもよい。Ｏ／Ｓ下位セキュリティエージェント及びセキュリティバーチャルマシーンモニタは、Ｏ／Ｓ内動作セキュリティエージェントにより利用されるリソースを含む、電子デバイス２０４のシステムリソースへのアクセスを保護するよう構成されてもよい。Ｏ／Ｓ下位セキュリティエージェントは、セキュリティバーチャルマシーンモニタにおいて実行されてもよい。クラウドベースセキュリティエージェントは、Ｏ／Ｓ下位セキュリティエージェント及びＯ／Ｓ内動作セキュリティエージェントにマルウェア検出情報を提供し、セキュリティバーチャルマシーンモニタ及びＯ／Ｓ内動作セキュリティエージェントからマルウェアにおそらく関連する疑わしい動作に関する情報を受信するよう構成されてもよい。Ｏ／Ｓ内動作セキュリティエージェントは、電子デバイス上で実行されるマルウェアの証拠のため、電子デバイス２０４をスキャンするよう構成されてもよい。システム２００は、電子デバイス２０４のリソースへのアクセスの試行される使用をトラップし、当該試行に対応するトリガイベントを生成し、トリガイベントに関してセキュリティルールを照会し、当該試行に関して必要に応じて訂正アクションを行うよう構成される１以上のＯ／Ｓ下位セキュリティエージェントを有してもよい。
【００３３】
一実施例では、システム２００は、１以上のＯ／Ｓ内セキュリティエージェント２１８及びセキュリティバーチャルマシーンモニタ（ＳＶＭＭ）セキュリティエージェント２１７に通信接続されるプロテクションサーバ２０２を有してもよい。ＳＶＭＭセキュリティエージェント２１７は、ＳＶＭＭ２１６にあってもよい。ＳＶＭＭ２１６は、電子デバイス２０４上にあって実行されてもよい。Ｏ／Ｓ内セキュリティエージェント２１８とＳＶＭＭセキュリティエージェント２１７とは、通信接続されてもよい。プロテクションサーバ２０２、Ｏ／Ｓ内セキュリティエージェント２１８、ＳＶＭＭセキュリティエージェント２１７及びＳＶＭＭ２１６は、マルウェアの感染から電子デバイス２０４をプロテクトするよう構成されてもよい。
【００３４】
ＳＶＭＭセキュリティエージェント２１７は、図１のトリガイベントハンドラ１０８の実施例であってもよい。ＳＶＭＭ２１６は、図１のＯ／Ｓ下位トラッピングエージェント１０４の実施例であってもよい。
【００３５】
電子デバイス２０４は、プロセッサ２０６に接続されるメモリ２０８を有してもよい。電子デバイス２０４は、何れか適切な目的のため電子デバイス上で実行される１以上のアプリケーション２１０又はドライバ２１１を有してもよい。電子デバイス２０４は、オペレーティングシステム２１２を有してもよい。オペレーティングシステム２１２は、電子デバイス２０４のシステムリソース２１４へのアクセスをアプリケーション２１０又はドライバ２１１に提供するよう構成されてもよい。ＳＶＭＭ２１６は、システムリソース２１４のオペレーティングシステム２１２のコールをインターセプトするよう構成されてもよい。ＳＶＭＭ２１６及びＳＶＭＭセキュリティエージェント２１７は、オペレーティングシステム２１２のレベルより下位で動作してもよい。例えば、ＳＶＭＭ２１６及びＳＶＭＭセキュリティエージェント２１７は、“Ｒｉｎｇ−１”などの特権モードでプロセッサ２０６上で直接動作してもよい。
【００３６】
プロセッサ２０６は、例えば、マイクロプロセッサ、マイクロコントローラ、デジタル信号プロセッサ（ＤＳＰ）、ＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）又はプログラム命令及び／又はプロセスデータをインターセプト及び／又は実行するよう構成される他の何れかのデジタル又はアナログ回路などから構成されてもよい。一部の実施例では、プロセッサ２０６は、メモリ２０８に格納されているプログラム命令及び／又はプロセスデータをインターセプト及び／又は実行してもよい。メモリ２０８は、部分的に又は全体的にアプリケーションメモリ、システムメモリ又はその双方として構成されてもよい。メモリ２０８は、１以上のメモリモジュールを保持及び／又は収容するよう構成される何れかのシステム、デバイス又は装置を有してもよく、例えば、メモリ２０８は、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ソリッドステートメモリ又はディスクベースメモリを含むものであってもよい。各メモリモジュールは、ある期間中にプログラム命令及び／又はデータを保持するよう構成される何れかのシステム、デバイス又は装置を有してもよい（例えば、コンピュータ可読な非一時的媒体など）。
【００３７】
プロテクションサーバ２０２は、ネットワーク２４４上で実行されてもよい。ネットワーク２４４上で実行されるプロテクションサーバ２０２は、クラウドコンピューティングスキームを実現してもよい。プロテクションサーバ２０２は、マルウェア検出ルール及び情報を更新するため、電子デバイス２０４の要素と通信するよう構成されてもよい。プロテクションサーバ２０２は、電子デバイス２０４から発信された疑わしいアクティビティに関する情報を受信し、このような疑わしいアクティビティがマルウェアの感染の徴候であるか判断するよう構成されてもよい。オペレーティングシステム２１２は、１以上のＯ／Ｓ内セキュリティエージェント２１８を有してもよい。Ｏ／Ｓ内セキュリティエージェント２１８は、Ｏ／Ｓ内セキュリティルール２２０などのモニタリング及び検出ルールをプロテクションサーバ２０２から受信するよう構成されてもよい。Ｏ／Ｓ内セキュリティエージェント２１８は、プロテクションサーバ２０２により受信されたＯ／Ｓ内セキュリティルール２２０を利用して、電子デバイス２０４上の疑わしいアクティビティをモニタ及び阻止するよう構成されてもよい。Ｏ／Ｓ内セキュリティエージェント２１８は、検出された疑わしいアクティビティをプロテクションサーバ２０２に報告するよう構成されてもよい。Ｏ／Ｓ内セキュリティエージェント２１８は、マルウェア処理を阻止し、当該阻止をプロテクションサーバ２０２に報告するよう構成されてもよい。複数のＯ／Ｓ内セキュリティエージェント２１８がシステム２００にある場合、各Ｏ／Ｓ内セキュリティエージェント２１８は、トラッピング、検証又はＯ／Ｓ内セキュリティエージェント２１８に関する他のタスクの指定された部分を実行するよう構成されてもよい。このような部分は、Ｏ／Ｓ下位セキュリティエージェントにより規定されてもよい。例えば、あるＯ／Ｓ内セキュリティエージェント２１８はＭＯＶ命令を検証又は調査し、他のＯ／Ｓ内セキュリティエージェント２１８はＪＭＰ命令を検証又は調査してもよい。Ｏ／Ｓ内セキュリティエージェント２１８は、メモリのあるページのライフサイクルを決定するよう構成されてもよい。例えば、Ｏ／Ｓ内セキュリティエージェント２１８は、メモリのページを配分するためオペレーティングシステムにより典型的に利用されるプロセス及びステップを知っていてもよい。同様に、Ｏ／Ｓ内セキュリティエージェント２１８は、それのローダにアプリケーションのイメージをロードするためオペレーティングシステム２１２により典型的に利用されるプロセス及びステップを知っていてもよい。このようなプロセスは、静的な処理パターンに従うものであってもよい。従って、Ｏ／Ｓ内セキュリティエージェント２１８は、所与のアクセションに対して標準的な手順に従ったか判断するため、オペレーティングシステム２１２の処理を追跡するよう構成されてもよい。Ｏ／Ｓ内セキュリティエージェント２１８は、ＳＶＭＭセキュリティエージェント２１７によりトラップされた処理がＯ／Ｓ内セキュリティエージェント２１８により観察された対応する予想されるアクションを生成したか判断するため、ＳＶＭＭセキュリティエージェント２１７と通信してもよい。相違は、マルウェアがオペレーティングシステム２１２の通常処理の外部のシステムファンクションを実行すことを試みたことを示すものであってもよい。従って、例えば、Ｏ／Ｓ内セキュリティエージェント２１８及びＳＶＭＭセキュリティエージェント２１７は、対象ページがマルウェアにより直接メモリにロードされたか、又はオペレーティングシステムのローダによりロードされたか判断してもよい。このような動作は、Ｏ／Ｓ内セキュリティエージェント２１８又はＳＶＭＭセキュリティエージェント２１７に情報をプロテクションサーバ２０２に報告させ、より攻撃的なトラッピング及びチェッキングを利用させ、又は他の何れかの訂正手段を行わさせてもよい。
【００３８】
一実施例では、Ｏ／Ｓ内セキュリティエージェント２１９は、オペレーティングシステム２１２内に自らを埋め込むことによって、コンテクスト情報を提供するよう構成されてもよい。例えば、Ｏ／Ｓ内セキュリティエージェント２１９は、自ら又はサブコンポーネントをドライバフィルタとして登録し、ドライバが観察するもの又は観察しないものを決定するため、自らをメインドライバにアタッチするよう構成されてもよい。フィルタとしてＮＤＩＳ．ＳＹＳにアタッチされることによって、Ｏ／Ｓ内セキュリティエージェント２１９は、オペレーティングシステム２１２のドライバにより観察されるファイルＩ／Ｏ処理を報告するよう構成されてもよい。
【００３９】
他の実施例では、Ｏ／Ｓ内セキュリティエージェント２１９は、オペレーティングシステムの下位で観察される情報と比較するため、ＳＶＭＭセキュリティエージェント２１６又は他のＯ／Ｓ下位セキュリティエージェントにオペレーティングシステム２１９内から観察された情報を提供するよう構成されてもよい。これら２つの情報セットの間の相違は、自らを隠蔽しようと試みるマルウェアの存在を示すものであるかもしれない。例えば、Ｏ／Ｓ内セキュリティエージェント２１９は、ＮＤＩＳ．ＳＹＳをフック又はフィルタリングし、あるファイルへのファイル書き込みをモニタしてもよい。ＳＶＭＭセキュリティエージェント２１６は、入出力コマンドをモニタしてもよい。ＳＶＭＭセキュリティエージェント２１６が、Ｏ／Ｓ内セキュリティエージェント２１９により観察されるファンクションコールのリストに基づき、あるべきものより多くの書き込みが観察されたと判断した場合、マルウェアは、オペレーティングシステム２１２により提供されるファンクションの外部においてディスクに秘かに書き込みをしている可能性がある。
【００４０】
ネットワーク２４４は、インターネット、イントラネット、ワイドエリアネットワーク、ローカルエリアネットワーク、バックホールネットワーク、ピア・ツー・ピアネットワーク又はこれらの何れかの組み合わせなど、通信のための何れか適切なネットワークにより実現されてもよい。プロテクションサーバ２０２は、普及評判解析ロジックを適用することによってマルウェアをさらに検出するため、各種電子デバイス２０４上で実行される各種セキュリティエージェント２１８から送信されるレポートを利用してもよい。例えば、電子デバイス２０４上で特定される疑わしい動作は、他の電子デバイス２０４を予防的にプロテクトするため、プロテクションサーバ２０２のルールに合成されてもよい。このようなルールは、例えば、疑わしいドライバが報告された回数などに基づき決定されてもよい。例えば、狭い又は遅い配信パターンの未知のドライバは、マルウェアと関連付けされてもよい。他方、広く速い配信の未知のドライバは、人気があって広範に利用可能なアプリケーションのパッチと関連付けされてもよい。他の具体例では、このような検出されたドライバは、ホストマルウェアに知られるウェブサイトにアクセスするため、他の電子デバイス上で実行されるセキュリティソフトウェアにより決定されてもよい。このようなドライバは、マルウェアと関連付けされるよう決定されてもよい。
【００４１】
ＳＶＭＭ２１６は、システム２００のファンクションをモニタするセキュリティバーチャルマシーンの一部又はすべてを実現してもよい。ＳＶＭＭ２１６は、電子デバイス上で実行される１以上のオペレーティングシステムに対するレジスタ、メモリ又はＩ／Ｏデバイスなどのシステムリソースへのアクセスをインターセプトするよう構成されてもよい。システム２００のファンクションをモニタするセキュリティバーチャルマシーンは、ＳＶＭＭ２１６を用いて実現されてもよいし、あるいは、他の何れかのバーチャルマシーンモニタは、本開示の教示により電子デバイス２０４をプロテクトするよう構成されてもよい。ＳＶＭＭ２１６は、オペレーティングシステム２１２が自らのために、又はオペレーティングシステム２１２を介し実行されるアプリケーション２１０のためにシステムリソース２１４にアクセスすることを試みる間に、オペレーティングシステム２１２により行われるアクションを制御及びフィルタリングするよう構成されてもよい。ＳＶＭＭ２１６は、電子デバイス２０４上でオペレーティングシステム２１２の下位で実行されてもよく、オペレーティングシステム２１２及びアプリケーション２１０又はドライバ２１１に利用可能とされている一部又はすべてのプロセッサリソースに対する制御を行ってもよい。アプリケーション２１０は、電子デバイス２０４上で実行されるのに適した何れかのアプリケーションから構成されてもよい。ドライバ２１１は、電子デバイス２０４上で実行されるのに適した何れかのドライバから構成されてもよい。ＳＶＭＭ２１６による制御のため利用可能とされるプロセッサリソースは、仮想化のため指定されたリソースを含むものであってもよい。一実施例では、ＳＶＭＭ２１６は、オペレーティングシステム２１２、アプリケーション２１０又はドライバ２１１によるアクセスのためのシステムリソースを仮想化するよう構成されてもよい。単なる具体例として、このようなシステムリソース２１４は、入出力デバイス２２６、システムメモリ２２８又はプロセッサリソース２３０を含むものであってもよい。単なる具体例として、プロセッサリソース２３０は、従来のレジスタ２３２、デバッグレジスタ２３４、メモリセグメンテーション２３６、メモリページング２３８、インタラプト２４０又はフラグ２４２を含むものであってもよい。Ｉ／Ｏデバイス２２６は、キーボード、ディスプレイ、マウス又はネットワークカードなどのこのようなデバイスへのアクセスを含むものであってもよい。
【００４２】
ＳＶＭＭ２１６は、システムリソース２１５にアクセスするため、オペレーティングシステム２１２から発信された処理の実行をトラップするよう構成されてもよい。ＳＶＭＭ２１６は、システムリソース２１４の特定の試行されたアクセスをトラップするよう構成される制御構造を有してもよい。何れか適切な制御構造が利用されてもよい。一実施例では、このような制御構造は、バーチャルマシーン制御構造（ＶＭＣＳ）２２１を有してもよい。ＳＶＭＭ２１６は、ＶＭＣＳ２２１の内部においてフラグを操作することによって、このような実行をトラップするよう構成されてもよい。ＳＶＭＭ２１６は、システムリソース２１４のアクセスに関するオペレーティングシステム２１２、アプリケーション２１０又はドライバ２１１の何れか適切な処理をトラップするよう構成されてもよい。このようなトラップされた処理は、例えば、システムメモリ２２８の特定のメモリページのリード、ライト及び実行、プロセッサレジスタ２３０との間における値をロード及び格納、又はＩ／Ｏデバイス２２６との間におけるリード及びライトなどを含むものであってもよい。このような何れかの処理は、ＳＶＭＭ２１６によりトラップされてもよいバーチャルマシーンイグジット（ＶＭ  Ｅｘｉｔ）を生じさせるものであってもよい。ＳＶＭＭ２１６は、プロセッサ２０８により生成されるか、又はオペレーティングシステム２１の要素により開始されるインタラプト２４０の生成をトラップするよう構成されてもよい。ＳＶＭＭ２１６は、ＩＮ及びＯＵＴ命令をトラップすることによって、Ｉ／Ｏデバイス２２６との間で試みられたリード及びライトをトラップするよう構成されてもよい。ＳＶＭＭは、例えば、Ｖｉｒｔｕａｌｉｚａｔｉｏｎ  Ｔｅｃｈｎｏｌｏｇｙ  Ｄｉｒｅｃｔｅｄ  Ｉ／Ｏ（ＶＴｄ）などの機構へのアクセスをトラップすることによって、このような命令をトラップするよう構成されてもよい。ＶＴｄは、プロセッサ２０８によるＩ／Ｏデバイスの仮想化を可能にするものであるかもしれない。ＶＴｄファシリティにアクセスすることによって、ＳＶＭＭセキュリティエージェント２１７は、ＶＴｄにより接続されるデバイスを決定し、オペレーティングシステム２１２からのメタ情報、Ｉ／Ｏデバイス上のポート又は他の適切な情報を決定するよう構成されてもよい。ＳＶＭＭセキュリティエージェント２１７は、このような仮想化されたデバイスアクセスの処理を制御又はトラップするよう構成されてもよい。例えば、ＳＶＭＭセキュリティエージェント２１７は、プログラマブルＩ／Ｏポートに与えられるＩ／Ｏ割当てを含むＩ／Ｏパーミッションマップを決定するよう構成されてもよい。ＳＶＭＭセキュリティエージェント２１７は、マルウェアにより実行される可能性があるパーミッションマップへのアクセスをトラップするか、あるいは、オペレーティングシステム２１２上のエンティティの関係とＩ／Ｏデバイスのリクエストとを決定するためパーミッションマップを利用するよう構成されてもよい。
【００４３】
一実施例では、ＳＶＭＭセキュリティエージェント２１７は、ＳＶＭＭ２１６において実行されてもよい。他の実施例では、ＳＶＭＭセキュリティエージェント２１７は、ＳＶＭＭ２１６の外部において実行され、ＳＶＭＭ２１６に通信接続されてもよい。このような実施例では、ＳＶＭＭセキュリティエージェント２１７は、オペレーティングシステム２１２などの電子デバイス２０４のオペレーティングシステムの下位で実行されてもよい。ＳＶＭＭセキュリティエージェント２１７は、ＳＶＭＭ２１６の同一レベル及び／又は同一優先度により実行されてもよい。ＳＶＭＭセキュリティエージェント２１７は、ＳＶＭＭ２１６によりトリガ又はトラップされたイベントを処理するよう構成されてもよい。ＳＶＭＭセキュリティエージェント２１７は、カーネルレベルルートキットの干渉のないコンテンツを調べるため、オペレーティングシステム２１２の下位レベルでメモリ２２８又はディスクのコンテンツにアクセスするよう構成されてもよい。さらに、ＳＶＭＭセキュリティエージェント２１７の一部の処理は、ＳＶＭＭ２１６により実現されてもよく、ＳＶＭＭ２１６の一部の処理は、ＳＶＭＭセキュリティエージェント２１７により実現されてもよい。
【００４４】
ＳＶＭＭセキュリティエージェント２１７は、何れのアクションがトラップ又はトリガを生じさせるかに関して、ＳＶＭＭ２１６の処理を設定するよう構成されてもよい。一実施例では、ＳＶＭＭ２１６は、トラップされたアクションの検出をＳＶＭＭセキュリティエージェント２１７に通信するよう構成されてもよい。ＳＶＭＭセキュリティエージェント２１７は、トラップされたアクションがマルウェア又は悪意あるアクティビティを示すか判断するため、セキュリティルール２２２を照会し、セキュリティルール２２２に基づき、以降の何れのアクションがとられるべきかに関する命令をＳＶＭＭ２１６に提供するよう構成されてもよい。このような以降のアクションは、試行されたアクションの許可若しくは不許可、又は他の訂正ステップの実行を含むものであってもよい。
【００４５】
ＳＶＭＭ２１６及びＳＶＭＭセキュリティエージェント２１７によりシステムリソース２１４の試行されたアクセス及び実行をトラップする処理は、Ｏ／Ｓ内セキュリティエージェント２１８により収集された情報を介し調整されてもよい。Ｏ／Ｓ内セキュリティエージェント２１８は、ＳＶＭＭ２１６及びＳＶＭＭセキュリティエージェント２１７のトラップ及びハンドリング処理にコンテクストを提供するよう構成されてもよい。例えば、あるオペレーティングシステムデータ構造は、通常は特定のアプリケーション又はサービスによってのみ書き込まれてもよい。Ｏ／Ｓ内セキュリティエージェント２１８は、何れのアプリケーション又はプロセスがオペレーティングシステム２１２上で現在可視的に実行されているか決定し、当該情報をＳＶＭＭセキュリティエージェント２１７に通信してもよい。特定のアプリケーション又はサービスが可視的に実行されているとリストされない場合、データ構造への試行されている書き込みは、未認証のアプリケーション又はプロセスからのものである可能性がある。
【００４６】
Ｏ／Ｓ内セキュリティエージェント２１８は、ハイパーコールを介しＳＶＭＭ２１６及び／又はＳＶＭＭセキュリティエージェント２１７と通信するよう構成されてもよい。ハイパーコールは、利用可能なリクエストを規定する記述子テーブルと共に関連する入出力パラメータにより実現されてもよい。このような記述子テーブルは、Ｏ／Ｓ内セキュリティエージェント２１８がＳＶＭＭ２１６及び／又はＳＶＭＭセキュリティエージェント２１７と通信するため可能な１以上のリクエストを規定してもよい。このような記述子テーブルはまた、このようなリクエストの入出力パラメータがメモリに配置されてもよい場所を規定してもよい。
【００４７】
Ｏ／Ｓ内セキュリティエージェント２１８、ＳＶＭＭセキュリティエージェント２１７及びプロテクションサーバ２０２は、互いに認証するよう構成されてもよい。セキュリティエージェント２１２、ＳＶＭＭセキュリティエージェント２１７及びプロテクションサーバ２０２のそれぞれは、各エンティティが認証されない場合、相互に通信することを継続しないよう構成されてもよい。ＳＶＭＭ２１６は、Ｏ／Ｓ内セキュリティエージェント２１８のイメージをメモリ２０６に配置し、暗号化署名アルゴリズムを利用してメモリ２０６のＯ／Ｓ内セキュリティエージェント２１８のイメージを検証するよう構成されてもよい。プロテクションサーバ２０２、Ｏ／Ｓ内セキュリティエージェント２１８及びＳＶＭＭセキュリティエージェント２１７の間の認証は、暗号化ハッシュ及び／又は署名アルゴリズムを含む何れか適切な方法を利用してもよい。一実施例では、このような認証は、プライベート秘密鍵の交換を伴うものであってもよい。Ｏ／Ｓ内セキュリティエージェント２１８は、ＳＶＭＭセキュリティエージェント２１７のインスタンスを検証するため、プロテクションサーバ２０２から秘密鍵を受信するよう構成されてもよい。
【００４８】
Ｏ／Ｓ内セキュリティエージェント２１８は、オペレーティングシステム２１２の処理に関するコンテクスト情報を有してもよい。Ｏ／Ｓ内セキュリティエージェント２１８は、このようなコンテクスト情報を提供するため、ＳＶＭＭセキュリティエージェント２１７と通信するよう構成されてもよい。ＳＶＭＭセキュリティエージェント２１７は、特定のメモリページの規定方法やトラップするレジスタなどに関してＳＶＭＭ２１６に指示してもよい。
【００４９】
ＳＶＭＭ２１６は、ＳＶＭＭセキュリティエージェント２１７により規定されるシステムリソース２１４へのアクセスの試みをトラップするよう構成されてもよい。例えば、メモリアクセスのトラップについて、ＳＶＭＭ２１６は、リード、ライト又は実行などの処理をトラップするよう構成されてもよい。プロセッサレジスタ２３０へのアクセスのトラップについて、ＳＶＭＭ２１６は、レジスタ値のロード、ストア又はリードを含む処理をトラップするよう指示されてもよい。Ｉ／Ｏデバイス２２６のＩ／Ｏ処理のトラップについて、ＳＶＭＭ２１６は、キーボード、マウス又は他の周辺装置への入出力などの処理をトラップするよう指示されてもよい。以降の図のＳＶＭＭセキュリティエージェント２１７及び／又は他のＯ／Ｓ下位セキュリティエージェントは、Ｏ／Ｓ内セキュリティエージェントに関して、Ｉ／Ｏ処理についてターゲットＩ／Ｏデバイス２２６の識別情報、Ｉ／Ｏデバイス２２６に対して実行されるターゲット処理及び転送されるデータを決定するよう構成されてもよい。
【００５０】
ＳＶＭＭセキュリティエージェント２１７は、オペレーティングシステム２１２の何れのエンティティが電子デバイス２０４のリソースにアクセスすることを試行したか、又はリソースがオペレーティングシステム２１２の何れのエンティティに属してもよいかなど、コンテクスト情報を決定するよう構成されてもよい。ＳＶＭＭセキュリティエージェント２１７は、何れか適切な方法を介してこのような決定を行うよう構成されてもよい。一実施例では、ＳＶＭＭセキュリティエージェント２１７は、Ｏ／Ｓ内セキュリティエージェント２１８からのこのような決定のためのコンテクスト情報にアクセスするよう構成されてもよい。他の実施例では、ＳＶＭＭセキュリティエージェント２１７は、オペレーティングシステム２１２の異なるプロセス又はアプリケーションにより行われたコールの順序を決定するため、オペレーティングシステム２１２のコールスタック及び／又はプロセッサ２０８の実行スタックに直接的に又は間接的にアクセスするよう構成されてもよい。実行命令ポインタはトリガを生じさせる命令を示し、実行スタックポインタ及び実行ベースポインタは、スタックフレームを示すものであってもよい。スタックを介し実行ベースポインタをウォークすることによって、対象となる処理のコンテクストを提供する以前のファンクションコールが特定されてもよい。このようなスタックは、ソースメモリ位置と共に、試行された処理を示すものであってもよい。さらなる他の実施例では、ＳＶＭＭセキュリティエージェント２１７は、セキュリティルール２２２に関してメモリマップを利用して、試行が悪意あるか又はマルウェアを示すか判断するよう構成されてもよい。このようなメモリマップは、例えば、試行されたアクセスのメモリ位置が与えられると、リソースの試行されたアクセスを行ったエンティティを示すものであってもよい。このようなメモリマップは、例えば、バーチャルメモリページ識別子及び／又は物理メモリアドレスなどにおいて規定されてもよい。他の例では、このようなメモリマップは、当該試行のターゲットのメモリ位置に対応するエンティティを示すものであってもよい。メモリマップを利用して、ＳＶＭＭセキュリティエージェント２１７は、試行されたアクセスのソース及びターゲット又はそのエンティティオーナーの識別情報を決定するよう構成されてもよい。メモリマップは、ＳＶＭＭセキュリティエージェント２１７又はシステムの実行をモニタすることを介しＯ／Ｓ内セキュリティエージェントに関する以降の図の他のＯ／Ｓ下位セキュリティエージェントによって部分的に作成されてもよい。ＳＶＭＭセキュリティエージェント２１７及び／又は以降の図の他の他のＯ／Ｓ下位セキュリティエージェントは、Ｏ／Ｓ内セキュリティエージェントに関連して、所与のメモリページ又は物理アドレスについて、当該位置があるコードセクション又はデータセクションに属するか、それが何れのモード、プロセス、アプリケーション、イメージ又は他のエンティティに属するか、又はそれはユーザモード又はカーネルモードエンティティに関連付けされているか判断してもよい。ＳＶＭＭセキュリティエージェント２１７及び／又は以降の図の他のＯ／Ｓ下位セキュリティエージェントは、Ｏ／Ｓ内セキュリティエージェントに関して、電子デバイス２０４上で実行される各種エンティティの識別情報、位置及びパーミッションを示すバーチャルメモリ及び物理メモリのマッピングのためのメタデータを決定してもよい。同様に、ＳＶＭＭセキュリティエージェント２１７及び／又は以降の図の他のＯ／Ｓ下位セキュリティエージェントは、マスストレージデバイスのセクタのマッピングを利用して、マスストレージデバイスの当該エンティティのイメージの位置を決定してもよい。ＳＶＭＭセキュリティエージェント２１７及び／又は以降の図の他のＯ／Ｓ下位セキュリティエージェントは、Ｏ／Ｓ内セキュリティエージェントに関して、所与のエンティティについてそれがあるセクタ、ファイル、ディレクトリ及びボリュームを決定してもよい。
【００５１】
ＳＶＭＭセキュリティエージェント２１７は、Ｏ／Ｓ内セキュリティエージェント２１８、ＳＶＭＭセキュリティエージェント２１７及びＳＶＭＭ２１６の処理に必要とされるようなシステムメモリ２２８などのメモリを割り当てるよう構成されてもよい。ＳＶＭＭセキュリティエージェント２１７は、ＳＶＭＭ２１６がこのような割り当てられた未認証のリード及びライト処理に対してメモリをセキュアにすることを要求するよう構成されてもよい。ＳＶＭＭ２１６は、メモリがＯ／Ｓ内セキュリティエージェント２１８により割り当てられた時とＳＶＭＭ２１６によりプロテクションが確立された時との間に悪意あるコードをマルウェアが追加する機会を排除するため、メモリのプロテクションが確立された後、割り当てられたメモリを初期化するよう構成されてもよい。
【００５２】
ＳＶＭＭセキュリティエージェント２１７は、ＳＶＭＭセキュリティルール２２２をセキュアに受信するため、プロテクションサーバ２０２と通信するよう構成されてもよい。ＳＶＭＭセキュリティルール２２２は、何れのセキュリティポリシーが利用されるべきかに関してＳＶＭＭ２１６に指示するための命令、ロジック、ルール、共有ライブラリ、ファンクション、モジュール又は他の何れか適切な機構を有してもよい。ＳＶＭＭセキュリティエージェント２１７は、電子デバイス２０４からの疑わしいアクティビティ及び検出されたマルウェアに関する情報をプロテクションサーバ２０２に送信するよう構成されてもよい。
【００５３】
Ｏ／Ｓ内セキュリティエージェント２１８は、Ｏ／Ｓ内セキュリティルール２２０を受信するため、プロテクションサーバ２０２と通信するよう構成されてもよい。Ｏ／Ｓ内セキュリティルール２２０は、Ｏ／Ｓ内セキュリティエージェント２１８が電子デバイス２０４上でマルウェアを検出するための命令、ロジック、ルール、共有ライブラリ、ファンクション、モジュール又は他の何れか適切な機構を有してもよい。Ｏ／Ｓ内セキュリティエージェント２１８は、電子デバイス２０４上の疑わしいアクティビティ及び検出されたマルウェアに関する情報をプロテクションサーバ２０２に送信するよう構成されてもよい。
【００５４】
Ｏ／Ｓ内セキュリティルール２２０及びＳＶＭＭセキュリティルール２２２はそれぞれ、マルウェアの感染に対して電子デバイス２０４をプロテクトし、マルウェアを有しうる疑わしいアクティビティを検出するためのプロテクションルールを有してもよい。Ｏ／Ｓ内セキュリティエージェントのセキュリティルールは、Ｏ／Ｓ内セキュリティエージェント２１８によって及び内部において実行されたルールを含むものであってもよい。ＳＶＭＭセキュリティルール２２２は、ＳＶＭＭ２１６及び／又はＳＶＭＭセキュリティエージェント２１７によって及び内部において実行されたルールを含むものであってもよい。
【００５５】
ＳＶＭＭセキュリティルール２２２は、電子デバイス２０４のマルウェア感染を観察及び検出する方法の定義と共に情報をＳＶＭＭセキュリティエージェント２１７に提供するよう構成されてもよい。例えば、ＳＶＭＭセキュリティルール２２２は、マルウェアの徴候についてＳＶＭＭセキュリティエージェント２１７がモニタするアプリケーション２１０又はドライバ２１１などのエンティティからのファンクションコール又は動作のタイプの分類を含むものであってもよい。他の例として、ＳＶＭＭセキュリティルール２２２は、何れのパラメータを利用するか、当該コールから値をどのように抽出するか、又は当該コールの処理をどのように無効にするかを含む、トリガされたファンクションコールをＳＶＭＭセキュリティエージェント２１７がどのように処理するかの定義を含むものであってもよい。さらに、ＳＶＭＭセキュリティルール２２２は、動作検出ルールに対する例外処理（ｅｘｃｅｐｔｉｏｎ）と共に、アプリケーション２１０又はドライバ２１１などの電子デバイスのエンティティの動作をモニタする方法に関するＳＶＭＭ内セキュリティエージェント２１７の情報を含むものであってもよい。さらなる他の具体例として、ＳＶＭＭセキュリティルール２２２は、当該動作検出ルールにより検出された悪意ある動作をどのように阻止及び修復するかに関するＳＶＭＭセキュリティエージェント２１７の情報を含むものであってもよい。ＳＶＭＭセキュリティルール２２２は、当該ＳＶＭＭセキュリティエージェント２１７がモニタ、収集及びプロテクションサーバ２０２に送信すべきデータの詳細を含むものであってもよい。
【００５６】
同様に、Ｏ／Ｓ内セキュリティルール２２０は、電子デバイス２０４のマルウェア感染を観察及び検出する方法と共に、ＳＶＭＭセキュリティエージェント２１７と当該アクティビティをどのように調整するかの定義と共に情報をＯ／Ｓ内セキュリティエージェント２１８に提供するよう構成されてもよい。
【００５７】
ＳＶＭＭセキュリティルール２２２はまた、何れのアクションをＳＶＭＭ２１６がトラップするかに関するルールを含むものであってもよい。ＳＶＭＭセキュリティエージェント２１７は、当該ルールをＳＶＭＭ２１６に適用するよう構成されてもよい。例えば、ＳＶＭＭセキュリティエージェント２１７は、トラップ対象のファンクションのアドレスを識別可能なバーチャル又は物理メモリページに変換し、当該ページの実行をトラップするためＳＶＭＭ２１６に対するリクエストを生成し、実行をトラップした後に以降にセキュリティエージェント２１７をコールするよう構成されてもよい。ＳＶＭＭセキュリティエージェント２１７は、ＳＶＭＭ２１６とのそれのインタフェースを介しＳＶＭＭセキュリティルール２２２を受信するよう構成されてもよい。このようなインタフェースは、ハイパーコールベースインタフェースから構成されてもよい。ＳＶＭＭセキュリティエージェント２１７は、同じハイパーコールベースインタフェースを介しＳＶＭＭ２１６に何れかの結果としての検出又はレポートをプッシュするよう構成されてもよい。
【００５８】
一実施例では、ＳＶＭＭ２１６は、ＳＶＭＭセキュリティエージェント２１７に照会することなく、トリガされたアクションを処理するよう構成されてもよい。このような実施例では、ＳＶＭＭ２１６は、ＳＶＭＭセキュリティエージェント２１７にわたされないＳＶＭＭ２１６内で処理される追加的なトリガをインストールするよう構成されてもよい。このような追加的なトリガは、ＳＶＭＭセキュリティルール２２２により規定されてもよい。一実施例では、ＳＶＭＭセキュリティルール２２２は、ＳＶＭＭ２１６についてメモリページスキャンルールを規定してもよい。このようなルールは、悪意があり、メモリに配置されることが許可されるべきでないエンティティ又は修正のリストを含むものであってもよい。このようなルールはまた、システムメモリ２２８内に存在することが特に許可されるページのリストを含むよう構成されるホワイトリストを含むものであってもよい。他の実施例では、ＳＶＭＭセキュリティルール２２２は、ＳＶＭＭ２１６のメモリページに対するアクセスルールを規定してもよい。このようなルールは、何れのコードページが所与のコード又はデータページにアクセスすることが許可又は阻止されるかの規定を含むものであってもよい。この結果、ＳＶＭＭセキュリティルール２２２は、ＳＶＭＭ２１６にメモリスキャナとして機能し、及び／又はメモリページへのアクセスを制御することを指示するよう構成されてもよい。
【００５９】
ＳＶＭＭ２１６は、システムリソース２１４の各自のコード及びデータページへの未認証のリード及びライトアクセスを阻止することによって、ＳＶＭＭセキュリティエージェント２１７、ＳＶＭＭ２１６及びＯ／Ｓ内セキュリティエージェントをプロテクトするよう構成されてもよい。例えば、アプリケーション２１０又はドライバ２１１が、ＳＶＭＭセキュリティエージェント２１７、ＳＶＭＭ２１６及びＯ／Ｓ内セキュリティエージェント２１８のインテグリティ又は処理に影響を与えるシステムメモリ２２８、プロセッサレジスタ２３０又はＩ／Ｏデバイス２２６の一部に対してリクエストを生成する場合、ＳＶＭＭ２１６は、当該試行されたリクエストをインターセプトし、その後、当該リクエストをリルート又は拒絶し、又は他の適切なアクションをとるよう構成されてもよい。他の具体例では、ＳＶＭＭ２１６は、ＳＶＭＭセキュリティエージェント２１７自体又は他の対応する若しくはアフィリエイトプログラムなど、メモリセキュリティソフトウェアアプリケーションについてＳＶＭＭセキュリティエージェント２１７、ＳＶＭＭ２１６及びＯ／Ｓ内セキュリティエージェント２１８に影響を与えるシステムメモリ２２８、プロセッサレジスタ２３０又はＩ／Ｏデバイス２２６の一部についてリードアクセスを認証するよう構成されてもよい。このような認証は、システムメモリ２２８などのシステムリソース２１４へのアクセスをどのように処理するかＳＶＭＭ２１６に対して規定するＳＶＭＭセキュリティルール２２２内で規定されてもよい。一実施例では、ＳＶＭＭセキュリティルール２２２は、ＳＶＭＭセキュリティエージェント２１７を含みうる信頼されたセキュリティプログラムのホワイトリストを含むものであってもよい。
【００６０】
プロテクションサーバ２０２と通信するため、ＳＶＭＭ２１６は、セキュアネットワークインタフェース２２４を有してもよい。セキュアネットワークインタフェース２２４は、プロテクションサーバ２０２などのネットワークサーバと、ＳＶＭＭ２１６又はＳＶＭＭセキュリティエージェント２１７などの電子デバイス２０４の要素との間のセキュアアクセスを提供するよう構成されてもよい。ＳＶＭＭ２１６は、セキュアネットワークインタフェース２２４を実現しうる論理ＴＣＰ／ＩＰドライバ又は他の通信インタフェースを有してもよい。プロテクションサーバ２０２は、ＳＶＭＭセキュリティルール２２２又はＯ／Ｓ内セキュリティルール２２０などのプロテクションルールを提供すると共に、自らを更新するようＳＶＭＭ２１６又はＳＶＭＭセキュリティエージェント２１７に指示するためにセキュアネットワークインタフェース２２４を介し通信するよう構成されてもよい。プロテクションサーバ２０２は、特定の電子デバイス２０４又は特定のＳＶＭＭ２１６についてカスタマイズされたルールを配信するよう構成されてもよい。このようなカスタマイズは、アンチウイルスプログラム、ファイアウォール又は他のプロテクション機構などの電子デバイス２０４内の他のプロテクション機構と共に、電子デバイス２０４により報告された悪意あるアクティビティのタイプを含むものであってもよい。一実施例では、プロテクションサーバ２０２は、例えば、ローカルネットワーク上などの電子デバイス２０４のアドもニスとレータにより運営されてもよい。このような場合、アドミニストレータは、プロテクションサーバ２０２から受信したルールにより実現されてもよい疑わしい動作を処理するためのグローバルな又はパーソナル化されたポリシーを設定してもよい。ＳＶＭＭ２１６は、プロテクションサーバ２０２を介しセキュアに配信された新たなイメージを介し自らをどのように更新するかＳＶＭＭ２１６又はＳＶＭＭセキュリティエージェント２１７に通知するアップデートエンジンを有してもよい。
【００６１】
Ｏ／Ｓ内セキュリティルール２２０及びＳＶＭＭセキュリティルール２２２はそれぞれ、電子デバイス２０４上の特定の観察されたアクション又は処理又はそのクラスがプロテクションサーバ２０２にわたされることを要求するよう構成されてもよい。そこでは、プロテクションサーバは、アクションが電子デバイス２０４上で進捗することが許可される前に、観察結果を調べて検証してもよい。プロテクションサーバ２０２は、このようなアクションが同期的に又は非同期的に調べられることを受け入れるよう構成されてもよい。一実施例では、Ｏ／Ｓ内セキュリティエージェント２１８は、プロテクションサーバ２０２による検証のため、問題のあるアクティビティ、コード若しくはデータのセグメント又はアクションをＳＶＭＭ２１６にわたすよう構成されてもよい。例えば、Ｏ／Ｓ内セキュリティエージェント２１８は、メモリ内にロードされた署名なしのドライバを検出することによって、マルウェアの疑わしいインスタンスを検出してもよい。ＳＶＭＭ２１６は、Ｏ／Ｓ内セキュリティエージェント２１８から疑わしいソフトウェアに関する情報を受信し、それをプロテクションサーバ２０２に提供してもよい。
【００６２】
ＳＶＭＭセキュリティルール２２２は、電子デバイスの何れか適切なシステムリソースへのアクセスを許可又は拒絶するよう構成されてもよい。モニタ対象に利用可能な当該リソースは、プロセッサ２０６により示されるリソースに依存してもよい。例えば、一実施例では、ＳＶＭＭセキュリティルール２２２は、ＳＶＭＭ２１６がシステムメモリ２２８、Ｉ／Ｏデバイス２２６及びインタラプト１４０へのアクセスを制限することを可能にするよう構成されてもよい。このような制限は、キーボードディスプレイ又は着脱可能なディスクなどのＩ／Ｏデバイスへの未認証のアクセスを阻止してもよい。他の実施例では、ＳＶＭＭセキュリティルール２２２は、ＳＶＭＭ２１６がインタラプト２４０などのプロセッサレジスタのエントリを含むインタラプト記述子テーブルのエントリへのアクセスを制限することを可能にするよう構成されてもよい。さらなる他の実施例では、ＳＶＭＭセキュリティルール２２２は、物理メモリをホストするため、バーチャルメモリのマッピング（ゲストオペレーティングシステムの観点からの実際のメモリ）を処理するＥｘｔｅｎｄｅｄ  Ｐａｇｅ  Ｔａｂｌｅ（ＥＰＴ）又は他の何れかの機構へのアクセスを制限することを可能にするよう構成されてもよい。
【００６３】
電子デバイス２０４がバーチャル化をサポートするプロセッサ２０８に加えて１以上のプロセッサを含む場合、ＳＶＭＭ２１６又はＳＶＭＭ２１６の他のインスタンスは、当該他のプロセッサのバーチャル化されたリソースにアクセスするための試みをインターセプトするよう構成されてもよい。電子デバイス２０４が、例えば、プロセッサ２０８を含むクワドプロセッサを含む場合、クワドプロセッサのリソースは、ＳＶＭＭ２１６によりプロテクトされてもよい。１以上の他のプロセッサがバーチャル化をサポートしない場合、ＳＶＭＭ２１６は、それらのリソースへのアクセスをセキュアにすることが可能でないかもしれない。１以上の他のプロセッサがプロセッサ２０８と異なるバーチャル化技術をサポートする場合、ＳＶＭＭ２１６は、リソースがバーチャル化される方法は異なりうるため、ＳＶＭＭ２１６がプロセッサ２０８と異なる方法でセキュアにされる場合、自らのリソースへのアクセスをセキュアにするよう構成されてもよい。
【００６４】
処理について、プロテクションサーバは、ネットワーク２４４上で実行されてもよい。Ｏ／Ｓ内セキュリティエージェント２１８は、電子デバイス２０４についてマルウェアをスキャンし、疑わしい動作について電子デバイス２０４上のアプリケーション２１０及びドライバ２１１などのエンティティの動作を観察し、検出された何れかの感染を修復することによって、マルウェアの感染から電子デバイス２０４をプロテクトするため、電子デバイス２０４上で実行される。Ｏ／Ｓ内セキュリティエージェント２１８は、オペレーティングシステムと同じ優先度又はレベルにおいて実行されてもよく、また、オペレーティングシステム２１２において実行されてもよい。ＳＶＭＭ２１６は、電子デバイス２０４のシステムリソースの試行されたアクセスをトラップすることによって、マルウェアの感染から電子デバイス
２０４をプロテクトするため、電子デバイス２０４上で実行されてもよい。ＳＶＭＭセキュリティエージェント２１７は、ＳＶＭＭ２１６のトラップ処理を設定し、システムリソースのトラップされた試行されたアクセスの一部又はすべてを処理するため、電子デバイス２０４又は他の適切な電子デバイス上で実行されてもよい。ＳＶＭＭ２１６及びＳＶＭＭセキュリティエージェント２１７は、“Ｒｉｎｇ−１”の優先度によってオペレーティングシステム２１２の下位で実行されてもよい。ＳＶＭＭセキュリティエージェント２１７は、ＳＶＭＭ２１６上で実行されてもよい。
【００６５】
プロテクションサーバ２０２は、ＳＶＭＭセキュリティルール２２２及びＯ／Ｓ内セキュリティルール２２０などのセキュリティルールを電子デバイス２０４に送信してもよい。当該ルールは、ＳＶＭＭセキュリティエージェント２１７により受信され、それは、Ｏ／Ｓ内セキュリティルール２２０をＳＶＭＭ２１６に提供してもよい。当該ルールは、Ｏ／Ｓ内セキュリティエージェント２１８により受信されてもよい。
【００６６】
プロテクションサーバ２０２、セキュリティエージェント２１８及びＳＶＭＭセキュリティエージェント２１７はそれぞれ相互認証してもよい。ＳＶＭＭセキュリティエージェント２１７は、セキュリティエージェント２１８のイメージをメモリに配置し、暗号化署名アルゴリズムを利用して、メモリにあるセキュリティエージェント２１８のイメージを検証してもよい。プロテクションサーバ２０２及びＳＶＭＭセキュリティエージェント２１７は、暗号化ハッシュ署名アルゴリズムを利用して正しく相互識別することによって、相互認証してもよい。ＳＶＭＭセキュリティエージェント２１７及びプロテクションサーバ２０２はまた、互いの識別情報を認証するため、プライベート秘密鍵を交換してもよい。セキュリティエージェント２１８は、ＳＶＭＭセキュリティエージェント２１７のインスタンスを検証するため、プロテクションサーバ２０２から秘密鍵を受信してもよい。セキュリティエージェント２１８、ＳＶＭＭセキュリティエージェント２１７，２０２の間の通信は、各エージェントが相互認証されない場合、完全には確立されなくてもよい。同様に、ＳＶＭＭセキュリティエージェント２１７及びＳＶＭＭセキュリティエージェント２１７２１６は、別々のエンティティとして実行されている場合、相互に検証及び認証してもよい。
【００６７】
ＳＶＭＭ２１６及びＳＶＭＭセキュリティエージェント２１７は、オペレーティングシステム２１２及び電子デバイス２０４のすべてのオペレーティングシステムの下位で実行されてもよい。ＳＶＭＭ２１６は、オペレーティングシステム２１２、セキュリティエージェント２１８、アプリケーション２１０及びドライバ２１１によるＩ／Ｏデバイス２２６、システムメモリ２２８及びプロセッサレジスタ２３０を含むシステムリソース２１４へのアクセスをモニタしてもよい。ＳＶＭＭ２１６は、オペレーティングシステム２１２、セキュリティエージェント２１８、アプリケーション２１０、ドライバ２１１又は電子デバイス２０４の他の何れかのエンティティによりリクエストされるキーとなる処理の実行をトラップしてもよい。ＳＶＭＭ２１６は、ＶＭＣＳ２２１の内部のフラグを操作することによって、当該実行をトラップしてもよい。ＶＭＣＳ２２１がプロテクトされるリソースに対するリクエストをインターセプトすると、さらなる処理、診断及び修復のため、処理がＳＶＭＭ２１６にわたされてもよい。一実施例では、処理は、その後にＳＶＭＭセキュリティエージェント２１７により扱われてもよい。他の実施例では、トラップされた処理の取り扱いは、ＳＶＭＭ２１６自体により行われてもよい。ＳＶＭＭ２１６は、マルウェアに対するプロテクションを提供するため、電子デバイス２０４の何れか必要な処理をトラップしてもよい。このような処理は、限定することなく、システムメモリ２２８の特定のコード又はデータページのリード、ライト及び実行、システムレジスタ及びプロセッサレジスタ２３０からの値のロード及びストア、又はＩ／Ｏデバイス２２６との間のリードを含むものであってもよい。ＳＶＭＭ２１６によりトラップされる具体的な処理は、ＳＶＭＭセキュリティルール２２２により規定されてもよい。
【００６８】
プロテクションサーバ２０２は、各自にセキュリティルールを提供するため、ＳＶＭＭセキュリティエージェント２１７又はＯ／Ｓ内セキュリティエージェント２１８と通信してもよい。一実施例では、プロテクションサーバ２０２は、ＳＶＭＭセキュリティルール２２２をＳＶＭＭセキュリティエージェント２１７に配信してもよい。他の実施例では、プロテクションサーバ２０２は、Ｏ／Ｓ内セキュリティルール２２０をＯ／Ｓ内セキュリティエージェント２１８に配信してもよい。さらなる他の実施例では、プロテクションサーバ２０２は、Ｏ／Ｓ内セキュリティルール２２０をＳＶＭＭセキュリティエージェント２１７に配信し、その後、それは、当該ルールをＯ／Ｓ内セキュリティエージェント２１８に提供してもよい。
【００６９】
アプリケーション２１０、ドライバ２１１又は電子デバイス２０４を実行する他のエンティティが、Ｏ／Ｓ内セキュリティエージェント２１８により観察されてもよい。Ｏ／Ｓ内セキュリティエージェント２１８は、Ｏ／Ｓ内セキュリティルールを利用して、このような処理エンティティの動作を観察し、それらの動作がマルウェアの感染の可能性があることを示す疑わしい動作を構成するか判断してもよい。疑わしいアクティビティの検出によって、Ｏ／Ｓ内セキュリティエージェント２１８は、さらなる解析及び命令のため、疑わしい情報をプロテクションサーバ２０２に提供してもよい。Ｏ／Ｓ内セキュリティルール２２０は、当該動作が疑わしいものであることをＯ／Ｓ内セキュリティエージェント２１８に通知すると共に、訂正アクションを通知してもよい。例えば、アプリケーション２１０は、マルウェアをホストしていると知られるネットワークデスティネーションと通信するかもしれない。Ｏ／Ｓ内セキュリティエージェント２１８は、アプリケーション２１０のアクティビティを通知し、その後、当該ネットワークデスティネーションへのアプリケーション２１０のネットワークアクセスをブロックしてもよい。Ｏ／Ｓ内セキュリティエージェント２１８はまた、マルウェアについて電子デバイス２０４をスキャンしてもよい。例えば、Ｏ／Ｓ内セキュリティエージェント２１８は、マルウェアのシグネチャに対応するパターンについて、メモリ２０６又はシステムメモリ２２８のコンテンツを調べてもよい。このように調べることは、例えば、アプリケーション２１０が既知のマルウェアのセグメントに対応するコードブロックを含むことを明らかにするものであってもよい。その後、Ｏ／Ｓ内セキュリティエージェント２１８は、アプリケーション２１０を修復し、アプリケーション２１０を削除し、又は他の何れか適切なアクションをとることによって、マルウェアの感染から電子デバイス２１０をクリーンにしてもよい。Ｏ／Ｓ内セキュリティエージェント２１８は、何れか検出された疑わしい動作又は他のマルウェアの徴候に関してプロテクションサーバ２０２と通信し、当該マルウェアをどのように処理するかに関する命令をプロテクションサーバ２０２から受信してもよい。
【００７０】
一実施例では、ＳＶＭＭセキュリティエージェント２１７は、試行された処理を行ったエンティティのソースに基づきトラップされた処理を評価するよう構成されてもよい。例えば、ドライバが未知のドメインからダウンロードされたか、未知のギャランタ（ｇｕａｒａｎｔｏｒ）からの証明書を有する場合、ドライバが以降に動作する能力が制限されてもよい。例えば、ステータスが未知であるドライバは、自らを他のドライバにアタッチする能力について拒絶されてもよい。ドライバがマルウェアをホストしていると知られるドメインからダウンロードされたか、又は不正な証明書を含む場合、ドライバはロードすることが許可されないようにしてもよい。同様に、ドライバが特定のドメインからのものであるか、又は特定のオーサにより作成されていると知られる場合、ＳＶＭＭセキュリティエージェント２１７は、ドライバを更新することが認証されている電子デバイス２０４におけるサービスを認識し、当該サービスに対してドライバをライト又はアクセスするのう力を制限するよう構成されてもよい。例えば、企業Ｘからのカーネルドライバは、電子デバイス２０４にある企業Ｘのアップデートサービスソフトウェアからに限って書き込みされてもよい。ＳＶＭＭセキュリティエージェント２１７は、当該アップデートサービスの処理及びインテグリティを有効にするよう構成されてもよい。他の実施例では、ＳＶＭＭセキュリティエージェント２１７は、試行のターゲットに基づきトラップされた処理を評価するよう構成されてもよい。例えば、あるサービスからソフトウェアを更新する試みは、カーネルドライバについてトラップされ、アプリケーションソフトウェアについてトラップされないようにしてもよい。
【００７１】
あるエンティティが疑わしいと判断されるか、又はある試みがマルウェアを示すと判断されると、当該試行を生じさせたプロセスと当該プロセスを収容するメモリとがリンク付けされてもよい。メモリの同じ部分にアクセスする他のプロセスは、同様にマルウェアであると判断されてもよい。リソースにアクセスするトラップされた試みは格納され、プロテクトされたリソースにアクセスする以降の試みは、元のイベントに基づき評価されてもよい。例えば、悪意ある処理は、コードがデータセグメントに書き込まれ、その後に実行されることを要求するかもしれない。従って、ＳＶＭＭセキュリティエージェント２１７は、当該データセグメントへの元のライトアクセスをトラップし、当該ライトを許可するが、ライトアクセスのソースを記録してもよい。その後、ＳＶＭＭセキュリティエージェント２１７は、データセグメントを実行する以降の試みをトラップし、以前にトラップされた処理、それを試みたエンティティ又は他の適切なフォレンジック（ｆｏｒｅｎｓｉｃ）情報に基づき、当該試行の悪意ステータスを評価してもよい。
【００７２】
ＳＶＭＭセキュリティエージェント２１７は、ＳＶＭＭ２１６がＶＭＣＳ２２１などの制御構造を介しトラップしようとするシステムリソース２１４に関してＳＶＭＭ２１６に指示してもよい。ＳＶＭＭ２１６は、その後、オペレーティングシステム２１２、アプリケーション２１０又はドライバ２１１などの電子デバイス２０４のエンティティからのシステムリソース２１４へのアクセスリクエストをトラップしてもよい。例えば、システムリソース２２８の一部をリード、ライト又は実行するリクエストが行われる場合、ＳＶＭＭ２１６は、ＶＭＣＳ２２１のシステムメモリの指定された部分について設定されたフラグを介し当該リクエストをインターセプトしてもよい。他の具体例では、入力又は出力処理などのＩ／Ｏデバイス２２６からなされたアクセスリクエストが、ＶＭＣＳ２２１によりインターセプトされてもよい。さらなる他の具体例では、ロード又はストア命令などのプロセスレジスタ２３０のリクエストが、ＶＭＣＳ２２１によりトラップされてもよい。このような何れかのトラップは、試行されたアクセスをＳＶＭＭ２１６に通知するものであってもよい。ＳＶＭＭ２１６がシステムリソース２１４に対して試みられた処理をトラップすると、ＳＶＭＭ２１６は、ＳＶＭＭセキュリティエージェント２１７に当該トラップされた実行を通信してもよい。
【００７３】
Ｏ／Ｓ内セキュリティエージェント２１８及びＳＶＭＭセキュリティエージェント２１７は、オペレーティングシステム２１２内で行われる処理のコンテクストを決定するため通信してもよい。例えば、オペレーティングシステム２１２から電子デバイス２０４の特定のリソースへのトラップされたシステムコールは、メモリの特定部分から生じたものであってもよい。ＳＶＭＭセキュリティエージェント２１７は、何れのアプリケーション、プロセス又は他のエンティティがメモリの当該部分内にあるか判断するため、Ｏ／Ｓ内セキュリティエージェント２１８と通信してもよい。
【００７４】
ＳＶＭＭセキュリティルール２２２と、Ｏ／Ｓ内セキュリティエージェント２１８からのトラップされた処理及び／又はコンテクスト情報とに基づき、ＳＶＭＭセキュリティエージェント２１７は、当該アクセスがマルウェアの感染を示すものなどの疑わしいアクションを構成したか判断してもよい。例えば、未認証アプリケーションによるプロテクトされたメモリスペースのシステムメモリ２２８の試行された変更は、疑わしいアクティビティである可能性があり、ＳＶＭＭ２１６により検出されたこのような試行された変更は、ＳＶＭＭセキュリティエージェント２１７によってマルウェアの処理であると解釈されてもよい。このようなアクティビティは、さらなる命令のためプロテクションサーバ２０２に報告されてもよいし、あるいは、アクションがＯ／Ｓ内セキュリティルール２２０により指示されてもよい。このような検出の結果は、システムメモリ２２８における試行された変更を阻止するか、又は試行された変更を生成した電子デバイス２０４のエンティティに対する追加的なクリーン処理をトリガするものであってもよい。
【００７５】
ＳＶＭＭ２１６は、ＳＶＭＭ２１６、ＳＶＭＭセキュリティエージェント２１７及び／又はＯ／Ｓ内セキュリティエージェント２１８のインテグリティをプロテクトするため、システムリソース２１４に対する追加的なコールをモニタしてもよい。ＳＶＭＭ２１６は、システムメモリ２２８の一部をスキャンし、当該メモリ部分がマルウェアにより変更されたか判断するため、ＳＶＭＭセキュリティルール２２２により規定されるスキャン処理を実行してもよい。ＳＶＭＭ２１６は、所与のメモリパターンが安全でない又は安全であると知られていることを示すシグネチャ、ハッシュ又は他のルールを利用してもよい。
【００７６】
例えば、ＳＶＭＭ２１６は、システムメモリ２２８におけるＯ／Ｓ内セキュリティエージェント２１８に対応するコード及びデータページへの未認証のリード及びライトアクセスを阻止することによって、Ｏ／Ｓ内セキュリティエージェント２１８をプロテクトしてもよい。あるマルウェアは、システムメモリ２２８に関するシステムリソース２１４に対するメモリ修正又は他の修正を行うことによって、Ｏ／Ｓ内セキュリティエージェント２１８を攻撃することを試みるかもしれない。ＳＶＭＭ２１６は、認証されたアプリケーションと、コード又はデータを変更することが許可される電子デバイス２０４の他のエンティティと、Ｏ／Ｓ内セキュリティエージェント２１８に対応する他のシステムリソースとのＳＶＭＭセキュリティルール２２２に含まれるホワイトリストを読むようにしてもよい。修正がホワイトリスト内に含まれないエンティティから発生したものである場合、ＳＶＭＭ２１６は、当該修正がマルウェアに関連付けされていると判断してもよい。Ｏ／Ｓ内セキュリティエージェント２１８に対応するシステムリソース２１４への未認証のアクセスは、アクセスのブロック、ハニースポットプロセスの作成、プロテクションサーバ２０２への違反の報告又は他の何れか適切な救済を含む何れか適切な方法によって、ＳＶＭＭにより処理されてもよい。
【００７７】
ＳＶＭＭ２１６はまた、電子デバイス２０４の他のエンティティに属するシステムリソース２１４へのアクセスをトラップしてもよい。例えば、システムメモリ２２８のターゲットメモリページは、オペレーティングシステム２１２のカーネル処理の一部に属するサンプルコード又はデータを含むものであってもよい。ＳＶＭＭ２１６及びＳＶＭＭセキュリティルール２２２は、許可されたコードセクションのみに当該ターゲットページへのアクセスを制限してもよい。この結果、システムメモリ２２８のコードページがターゲットメモリページをリード又は変更しようとし、コードページが電子デバイス２０４の未認証のエンティティに属する場合、当該アクセスは、ＳＶＭＭ２１６によりブロックされてもよい。従って、ＳＶＭＭ２１６は、システムメモリ２２８のメモリページへのアクセスを制御するよう動作してもよい。
【００７８】
ＳＶＭＭセキュリティエージェント２１７は、更新されたルールについてプロテクションサーバ２０２に接触することによって、ＳＶＭＭセキュリティルール２２２又はＯ／Ｓ内セキュリティルール２２０を更新可能であってもよい。プロテクションサーバ２０２は、観察された特定のマルウェア、アドミニストレータ設定又は電子デバイス２０４の他の特性に基づき、ルールがＳＶＭＭセキュリティエージェント２１７に配信されることを設定してもよい。ＳＶＭＭセキュリティエージェント２１７は、ユーザによる要求により、定期的に、又はマルウェアにリンク付けされうる新たな疑わしいアクティビティの遭遇などの重大なイベントの発生によって、電子デバイス２０４のルールを更新してもよい。
【００７９】
ＳＶＭＭセキュリティエージェント２１７は、複合的な条件に対応してＶＭＣＳのフラグを設定してもよい。このようなフラグは、トラップ対象の異なるタイプのリソースに及ぶものであってもよい。例えば、ＶＭＣＳは、メモリのページへの特定の値のライトと、Ｉ／Ｏデバイスのバッファへの当該ページの以降の移動との組み合わせをトラップするよう構成されてもよい。
【００８０】
システム２００は、アンチマルウェアシステム及びソフトウェアの他の実現に対して１以上の効果を有する。例えば、いくつかのアンチマルウェア手段は、アプリケーションの低レベル処理をトラップ及び評価するため、オペレーティングシステムの各種部分をフックしてもよい。しかしながら、これらの手段自体は、オペレーティングシステムの内部で、又は２つのゲストオペレーティングシステムのケースでは他のオペレーティングシステムにおいて動作するようにしてもよい。オペレーティングシステムの制限範囲内で動作することによって、カーネルレベル優先度においてさえ、アンチマルウェア手段は、同一のオペレーティングシステム上で実行され、おそらく同一の優先度で実行されるマルウェアからのマルウェア攻撃の影響を受ける可能性がある。特定のイベントに対するトラップ又はトリガが、オペレーティングシステムのレベルで実行される場合、このようなトラップ又はトリガは、オペレーティングシステムについて同じ又はより低い優先度で実行されるマルウェアによって、フィッシング、ホック、リバースエンジニアリング、危険にさらされる、又は無効にされるかもしれない。例えば、オペレーティングシステムにおいて悪意あるフックを検出及び削除するオペレーティングシステム上で実行されるアンチマルウェア手段は、同じ優先度で実行されるマルウェアにより観察される可能性がある。他の例では、特定のルーチンの処理を検出するためフィルタドライバとして登録されるアンチマルウェア手段は、当該アンチマルウェア手段よりドライバスタック上で下位の悪意フィルタドライバを登録したマルウェアによって無効にされる可能性がある。同様に、特定のトラップ又はトリガされたイベントの処理がオペレーティングシステムのレベルで実行される場合、マルウェアは、当該処理に影響を及ぼすことが可能であってもよい。例えば、マルウェアは、アンチマルウェア手段の訂正をやり直すか、又はアンチマルウェア手段の処理を無効にするかもしれない。
【００８１】
他の例では、ハイパーバイザが、システムメモリ２２８などのシステムリソースへのアクセスをバーチャル化するよう機能するが、システムリソースへのアクセスを条件付きでガードしなくてもよく、セキュリティハイパーバイザとして機能する。このようなハイパーバイザは、悪意あるアクティビティ、エンティティ又はシステムリソースの悪意ある試行されたアクセスを特定するため、セキュリティルール２２２の動作ルールなどのアンチマルウェアルールへのアクセスを有しなくてもよい。このようなハイパーバイザは、オペレーティングシステム内で実行されてもよく、マルウェアがオペレーティングシステムと同じ優先度レベルで実行される傾向がある。このようなハイパーバイザは、“Ｒｉｎｇ０  ｐｒｉｖｉｌｅｇｅｄ  ｍｏｄｅ”では実行されなくてもよい。当該モードは、ハイパーバイザにシステムリソースの多すぎる試行されたアクセスをインターセプトすることを求めるものであるためである。ハイパーバイザは、ゲストオペレーティングシステムのすべての特徴をバーチャル化する作業が課せられ、当該仮想化の要求は負担が多すぎて、悪意ある動作をチェックするためセキュリティルールに同時にアクセスできない。
【００８２】
図３は、マルウェアからの電子デバイスのバーチャルマシーンモニタベースのプロテクションのための方法３００の実施例である。ステップ３０５において、Ｏ／Ｓ下位セキュリティエージェント、Ｏ／Ｓ内セキュリティエージェント、プロテクションサーバ及びバーチャルマシーンモニタの識別情報とセキュリティとが認証されてもよい。当該認証は、メモリに配置される各自のイメージ、暗号化ハッシュ又は秘密鍵を特定及び検証することを含む、何れか適切な方法を介して実行されてもよい。ステップ３０５が終了するまで、他のステップの処理は保留されてもよい。
【００８３】
ステップ３１０において、プロテクションサーバは、セキュリティルールを決定するためアクセスされてもよい。当該セキュリティルールは、ステップ３１５〜３８０における判定を行うのに利用されてもよい。ステップ３１５におて、バーチャルマシーンモニタは、システムリソースへのアクセスをトラップするよう指示されてもよい。当該アクセスは、電子デバイス上で実行されるアプリケーション、ドライバ又はオペレーティングシステムから発生するものであってもよい。バーチャルマシーンモニタは、電子デバイスの何れのシステムリソースがモニタ対象であるかに関して指示されてもよい。バーチャルマシーンモニタはまた、モニタされるシステムリソースに対する何れの処理がトラップされるべきかに関して指示されてもよい。例えば、システムメモリに対するリード、ライト又は実行処理がトラップされてもよい。他の例では、レジスタに対するロード又はストア処理がトラップされてもよい。さらなる他の例では、Ｉ／Ｏデバイスに対する入力又は出力アクションがトラップされてもよい。
【００８４】
ステップ３２０において、トラップ対象の処理に対応するフラグが、バーチャルマシーン制御構造などの制御構造内で設定されてもよい。このようなトラップされた処理は、トリガイベントがフラグ設定されたリソースのアクセスに応答して生成されるＶＭイグジットを生成してもよい。ステップ３２５において、バーチャルマシーンモニタ、Ｏ／Ｓ内セキュリティエージェント及びＯ／Ｓ下位セキュリティエージェントにシステムメモリが割り当てられると、当該メモリは、未認証のリード及びライト処理に対してセキュアにされてもよい。
【００８５】
電子デバイスは、ステップ３３０〜３４０におけるシステムリソースのアクセスのトラップ、ステップ３４５〜３５５におけるマルウェアの存在についてのメモリのスキャン、及びステップ３６０〜３６５における試行されたメモリ修正についてのメモリのスキャンの１以上によって、実行及びプロテクトされてもよい。システムリソースのアクセスのトラップ、マルウェアの存在についてのメモリのスキャン、及び試行されたメモリ修正についてのメモリのスキャンのそれぞれは、パラレルに実行されてもよい。さらに、これらはそれぞれ、電子デバイスの処理をプロテクトするため、必要に応じて繰り返されてもよい。
【００８６】
ステップ３３０において、システムメモリ、レジスタ又はＩ／Ｏデバイスなどのシステムリソースのアクセスがトラップされてもよい。当該アクセスは、ＶＭイグジットを生成するＶＭＣＳフラグを用いてトラップされてもよい。当該トラップは、電子デバイス上で実行されるオペレーティングシステムのレベルの下位で実行されてもよい。ステップ３３５において、当該アクセスは、要求元のエンティティがリクエストされたリソースにアクセスするためのパーミッションを有しているか判断するため解析されてもよい。試行されたアクセスに関するコンテクスト情報が、当該判断を行うためアクセスされてもよい。セキュリティルールは、当該判断を行うためアクセスされてもよい。未認証のアクセスは、疑わしいものであると判断されてもよい。このような取り扱い及び判断は、電子デバイス上で実行されるオペレーティングシステムのレベルの下位で行われてもよい。アクセスが疑わしいものである場合、ステップ３４０において、システムリソースの疑わしい試行されたアクセスはブロックされてもよい。当該試行は、プロテクションサーバに報告されてもよい。アクセスが疑わしくない場合、アクセスはステップ３７０において許可されてもよい。
【００８７】
ステップ３４５において、電子デバイスのメモリページが、マルウェアの存在についてスキャンされてもよい。電子デバイスのメモリをスキャンする間、電子デバイス上にあるエンティティを反映するメモリのパターンが安全であると知られているか判断するため、ホワイトリストが利用されてもよい。安全であると知られているメモリのパターンに遭遇した場合、ステップ３７０において、メモリは、電子デバイスへのアクセスを有し続けることが許可され、維持されてもよい。電子デバイスのメモリをスキャンする間、ブラックリストは、メモリのパターンがマルウェアを有するか、又は関連付けされていると知られているか判断するのに利用されてもよい。ホワイトリストとブラックリストとは、セキュリティルールにアクセスすることによってアクセスされてもよい。ステップ３５０において、マルウェアに関連付けされていると知られるメモリのパターンが検出された場合、ステップ３７５において、メモリのパターンは、修復、削除又は無力化されることによって、電子デバイスへのアクセスが拒絶されてもよい。
【００８８】
ステップ３５５において、メモリは、メモリへの修正が試みられたか、又は試みられているか判断するためスキャンされてもよい。このようなスキャンは、電子デバイスにおいてオペレーティングシステムのレベルより下位で実行されてもよい。このようなメモリは、マルウェアにより修正される可能性のある電子デバイスのカーネルメモリ、システムデータ構造又はメモリの他の何れかの部分を含むものであってもよい。例えば、電子デバイス上で実行されるアクティブなスレッドのリストは、悪意あるプロセスの存在を隠蔽するため修正されてもよい。修正が検出された場合、ステップ３６５において、当該修正が許容されるか判断されてもよい。このような修正が許容されるか否かは、セキュリティルールにより規定されてもよい。例えば、アンチマルウェアプロセスのコード又はデータページは、他の何れかのプロセスにより修正又はアクセスに対してプロテクトされてもよい。メモリの修正が認証されていると判断された場合、ステップ３７０において、当該修正は許可されてもよい。メモリの修正が未認証であり、許可されていない場合、ステップ３７５において、当該修正は拒絶されてもよい。
【００８９】
ステップ３７０において、アクセス又は修正が許可される場合、アクセス又は修正は以降の参照のため格納されてもよい。マルウェアの検出は、過去のアクセスと現在検出されたアクセスとが共にリソースの悪意あるアクセスを構成しているか判断するため、過去のアクセス又は修正に関する情報を利用してもよい。
【００９０】
ステップ３７５において、修正がアクセスされる場合、又は他の処理が拒絶される場合、当該イベントは、ステップ３８０においてプロテクションサーバに報告されてもよい。当該報告は、何れか関連するマルウェア又は疑わしい動作に関する情報を含むものであってもよい。
【００９１】
方法３００のステップは、継続的に、定期的に又は要求に応答して電子デバイスをプロテクトするため、必要に応じて繰り返されてもよい。
【００９２】
図４は、マルウェアから電子デバイス４０４をプロテクトするためのファームウェアベース及びセキュリティルールベースシステム４００の実施例である。システム４００は、システム１００の特定の要素がファームウェアにより実現されるシステム１００の実施例であってもよい。システム４００のトラップ処理は、電子デバイス４０４のオペレーティングシステムのレベルの下位で実行されてもよい。システム４００は、電子デバイス４０４のリソースの利用又はアクセスのため、Ｉ／Ｏコマンドなどのリクエストをトラップするよう構成される１以上のＯ／Ｓ下位セキュリティエージェントを含むものであってもよい。当該Ｏ／Ｓ下位セキュリティエージェントは、電子デバイス４０４のメインプロセッサとの又はデバイス間の入出力データのやりとりを管理するよう構成されてもよい。当該Ｏ／Ｓ下位セキュリティエージェントは、電子デバイス４０４のデバイスコントローラなどのコンポーネントのファームウェアにおいて、又は電子デバイス４０４自体のファームウェアにおいて実現されてもよい。このようなファームウェアは、不揮発性メモリにあってもよい。電子デバイス４０４のリソースは、図１のシステムリソース、それの各種の可能な実施例又はシステム４００のデバイスに接続又は実現されるリソースを含むものであってもよい。システム４００は、電子デバイス４０４のリソースへのアクセスの試みられた利用をトラップし、当該試みに対応するトリガイベントを生成し、トリガイベントに関してセキュリティルールを照会し、当該試みに関して必要に応じて訂正アクションを実行するよう構成される１以上のＯ／Ｓ下位セキュリティエージェントを含むものであってもよい。
【００９３】
一実施例では、システム４００のＯ／Ｓ下位セキュリティエージェントは、図５の説明と以下に説明されるように、電子デバイス４０４のコンポーネントのファームウェアにおいてのみ実現されてもよい。他の実施例では、システム４００のＯ／Ｓ下位セキュリティエージェントは、メインＰＣファームウェア４２８などの電子デバイス４０４自体のファームウェアにより実現されてもよい。このような実施例では、メインＰＣファームウェア４２８は、電子デバイス４０４のマザーボード上で実現されてもよい。さらなる他の実施例では、システム４００のＯ／Ｓ下位セキュリティエージェントがまた、Ｏ／Ｓ下位エージェント４５０において実現されてもよい。Ｏ／Ｓ下位エージェント４５０は、リソースのアクセスのトリガ又は当該トリガの処理を提供するための何れか適切な方法により、オペレーティングシステム４１２などの電子デバイス４０４のオペレーティングシステムのレベル以下で実現されてもよい。例えば、Ｏ／Ｓ下位エージェント４５０は、図２のＳＶＭＭ２１６又はＳＶＭＭセキュリティエージェント２１７の実施例であってもよい。Ｏ／Ｓ下位エージェント４５０は、セキュリティルールを有してもよい。
【００９４】
電子デバイス４０４は、電子デバイス４０４からの入出力処理を実行する１以上のコンポーネントを有してもよい。電子デバイス４０４は、何れか適切な個数の当該コンポーネントと何れか適切なタイプのコンポーネントとを有してもよい。当該コンポーネントは、ファームウェアに埋め込まれる自らのプロセッサ、メモリ及びソフトウェアを備えたデバイスにより実現されてもよい。このようなコンポーネントの実施例は、図５のＩ／Ｏデバイス５０２であってもよい。
【００９５】
電子デバイス４０４は、例えば、ディスプレイ４２４とストレージ４２６とを有してもよい。各コンポーネント４２４，４２６は、ファームウェア４３０，４３２を有してもよい。ファームウェア４３０，４３２はそれぞれ、図５のファームウェア５０４を実現してもよい。上述されるように、各コンポーネント４２４，４２６は、ファームウェアセキュリティエージェント４４０，４４３などのファームウェアベースセキュリティエージェントを有してもよい。ファームウェアセキュリティエージェント４４０，４４３はそれぞれ、図５のファームウェアセキュリティエージェント５１６を部分的又は完全に実現してもよい。一実施例では、ファームウェアセキュリティエージェント４４０，４４２のそれぞれは、各自のファームウェア４３０，４３２により実現されてもよい。他の実施例では、ファームウェアセキュリティエージェント４４０、４４２のそれぞれは、各自のコンポーネント４２４，４２６のそれぞれにおいてファームウェア４３０，４３２の外部に実現されてもよい。デバイスファームウェアセキュリティエージェント４４０，４４２のそれぞれは、各自のセキュリティルールセット４３４，４３６に通信接続されてもよい。各セキュリティルール４３４，４３６は、図５のセキュリティルール５１８を実現してもよい。
【００９６】
電子デバイス４０４は、ファームウェアを有してもよい。一実施例では、電子デバイス４０４は、メインＰＣファームウェア４２８を有してもよい。メインＰＣファームウェア４２８は、ＢＩＯＳ（Ｂａｓｉｃ  Ｉｎｐｕｔ／Ｏｕｔｐｕｔ  Ｓｙｓｔｅｍ）により実現されてもよい。一実施例では、メインＰＣファームウェア４２８は、コンピュータのＢＩＯＳとして構成されてもよい。この場合、メインＰＣファームウェア４２８は、コンピュータのプロセッサ４０６の処理を初期化するよう構成されてもよい。メインＰＣファームウェア４２８は、メインプロセッサ４０６がディスプレイ４２４及びストレージ４２６などのＩ／Ｏデバイスと通信することを可能にするよう構成されてもよい。当該実施例では、コンピュータはまた、ファームウェア又はＢＩＯＳによりプログラムされてもよく、ディスプレイ４２４及びストレージ４２６などのＩ／Ｏデバイスのファームウェアと通信するプログラマブルＩ／Ｏコントローラを有してもよい。
【００９７】
メインＰＣファームウェア４２８は、Ｏ／Ｓ下位セキュリティエージェントを有してもよい。一実施例では、メインＰＣファームウェア４２８は、ＰＣファームウェアセキュリティエージェント４４４を有してもよい。ＰＣファームウェアセキュリティエージェント４４４は、システムリソース４１４のリクエストをインターセプトするよう構成されてもよい。このような機能を実現するため、ＰＣファームウェアセキュリティエージェント４４４は、図２のＳＶＭＭセキュリティエージェント２１７又はＳＶＭＭ２１６、及び／又は図５のファームウェアセキュリティエージェント５１６の機能を完全に又は部分的に実現してもよい。ＰＣファームウェアセキュリティエージェント４４４は、システムリソース４１４へのアクセスのＯ／Ｓより下位のトリガ及び処理、Ｏ／Ｓ内セキュリティエージェント４１８などのＯ／Ｓ内セキュリティエージェント及びＯ／Ｓ下位エージェントの検証及び確認、並びにセキュリティルール４２０，４２２などのセキュリティルールの配信を実現するため、図２のＳＶＭＭセキュリティエージェント２１７又はＳＶＭＭ２１６の機能を実現してもよい。ＰＣファームウェアセキュリティエージェント４４４は、ファームウェアにおけるＯ／Ｓより下位のトリガ及び処理、セキュリティルールの更新を実現し、電子デバイス４０４の各部分に送信されるＩＮ及びＯＵＴコマンドを評価するため、図５のファームウェアセキュリティエージェント５１６の機能を実現してもよい。
【００９８】
電子デバイス４０４は、セキュリティルール４３８を有してもよい。セキュリティルール４３８は、図１のセキュリティルールの実施例であってもよい。一実施例では、セキュリティルール４３８は、メインＰＣファームウェア４２８にあってもよい。他の実施例では、セキュリティルール４３８は、メインＰＣファームウェア４２８の外部にあってもよく、ＰＣファームウェアセキュリティエージェント４４４は、セキュリティルール４３８に接続されてもよい。
【００９９】
システム４００のセキュリティエージェントは、マルウェア及びそれの悪意ある処理を阻止するため一緒に動作するよう構成されてもよい。リソースの試行されたアクセスはトラップされ、以降のイベントは、ディスプレイ４２４又はストレージ４２６などのデバイスのファームウェアセキュリティエージェント又はメインＰＣファームウェア４２８における処理のためトリガされてもよい。当該デバイス又はファームウェアのファームウェアセキュリティエージェントは、トリガイベントを処理するか、又は処理のためトリガイベントを他のセキュリティエージェントにわたすよう構成されてもよい。限定的な実行及び更新能力のため、あるファームウェアセキュリティエージェントは、自らのトリガイベントの処理に限定され、当該トリガイベントを他のセキュリティエージェントにわたすことが効果的であるかもしれない。ファームウェアセキュリティエージェントがイベントをわたすセキュリティエージェントは、例えば、Ｏ／Ｓ内セキュリティエージェント４１８などのＯ／Ｓ内セキュリティエージェント、Ｏ／Ｓ下位セキュリティエージェント４５０などのＯ／Ｓ下位セキュリティエージェント又はＰＣファームウェアセキュリティエージェント４４４などの他のファームウェアセキュリティエージェントなどを含むものであってもよい。これら他のセキュリティエージェントは、トリガイベントを受信し、セキュリティルール、コンテクスト情報又はパーミッションを照会し、実現されるべき結果としてのアクションを送り返すよう構成されてもよい。
【０１００】
従って、図４は、ファームウェアベースセキュリティエージェントによるＯ／Ｓ下位トリガ及び処理を実行するための一例となる個数の要素を示したが、各種実施例では、より多くの又はより少ない要素が利用されてもよい。より多くの又はより少ない要素が利用されるとき、各要素及びシステム４００の機能は、これに従って変更されてもよい。一実施例では、オペレーティングシステム４１２のレベルの下位のシステム４００のセキュリティエージェントは、１以上のＯ／Ｓ内セキュリティエージェント４１８及びファームウェアセキュリティエージェント４４０，４４２に限定されてもよい。当該具体例では、ファームウェアセキュリティエージェント４４０，４４２は、セキュリティルール４３４，４３６に対するアップデートのため、プロテクションサーバ４０２に依拠してもよい。ファームウェアセキュリティエージェント４４０，４４２は、トリガイベントの更新又は処理のためＯ／Ｓ内セキュリティエージェント４１８に依拠するが、Ｏ／Ｓ内セキュリティエージェント４１８の処理は、Ｏ／Ｓ下位セキュリティエージェントがＯ／Ｓ内セキュリティエージェントを有効にしない場合、あまりセキュアでないかもしれない。ファームウェアセキュリティエージェント４４０，４４２は、インストール時、製造時又は設定時に決定されたファームウェアセキュリティルール４３４に基づきトリガを提供してもよい。この場合、ファームウェアセキュリティエージェント４４０，４４２は、ほとんど解析することなく、相対的に基本的なイベントトリガを提供するよう構成されてもよい。当該トリガは電子デバイス４０４のオペレーティングシステムの下位で実現され、悪意ある又は疑わしい処理をより良好に検出するため、ファームウェアセキュリティエージェント４４０，４４２は、にもかかわらず有用であるかもしれない。
【０１０１】
他の実施例では、システム４００のセキュリティエージェントは、ＰＣファームウェアセキュリティエージェント４４４又はＯ／Ｓ下位エージェント４５０を含むが、その双方は含まないようにしてもよい。この場合、ＰＣファームウェアセキュリティエージェント４４４の機能は、Ｏ／Ｓ下位エージェント４５０により実現されてもよいし、逆もまた同様であってもよい。ＰＣファームウェアエージェント４４４又はＯ／Ｓ下位エージェント４５０は、プロテクションサーバ４０２に接続され、セキュリティルール４２０，４２２，４３８，４３４，４３６などの情報を取得し、当該情報をシステム４００の他のセキュリティエージェントと共有するよう構成されてもよい。このようなセキュリティルールは、通信、更新又は格納のため各セキュリティエージェントに対して調整されてもよい。ＰＣファームウェアエージェント４４４又はＯ／Ｓ下位エージェント４５０は、ファームウェアセキュリティエージェント４４０，４４２などの他のセキュリティエージェントからトリガイベントを受信し、セキュリティルール及び他の情報を適用し、結果としてのイベントの送信やプロテクションサーバ４０２への情報の送信などの訂正アクションを実行するよう構成されてもよい。ＰＣファームウェアエージェント４４４又はＯ／Ｓ下位エージェント４５０は、システムリソース４１４の試行されたアクセスをトラップするよう構成されてもよい。ＰＣファームウェアエージェント４４４又はＯ／Ｓ下位エージェント４５０は、トリガイベントのコンテクストを決定するため、Ｏ／Ｓ内セキュリティエージェント４１８と通信するよう構成されてもよい。複数のＯ／Ｓ内セキュリティエージェント４１８がシステム４００にある場合、各Ｏ／Ｓ内セキュリティエージェント４１８は、Ｏ／Ｓ内セキュリティエージェント４１８に関連するトラップ、検証又は他のタスクの指定された部分を実行するよう構成されてもよい。このような部分は、Ｏ／Ｓ下位セキュリティエージェントにより規定されてもよい。例えば、あるＯ／Ｓ内セキュリティエージェント４１８がＭＯＶ命令を検証又は調査し、他のＯ／Ｓ内セキュリティエージェント４１８がＪＭＰ命令を検証又は調査してもよい。
【０１０２】
さらなる他の実施例では、システム４００のセキュリティエージェントは、ＰＣファームウェアセキュリティエージェント４４４とＯ／Ｓ下位エージェント４５０との双方を含むものであってもよい。にもかかわらず、当該実施例では、ＰＣファームウェアセキュリティエージェント４４４の機能の一部又はすべては、Ｏ／Ｓ下位エージェント４５０により実現されてもよく、又は逆もまた同様であってもよい。ＰＣファームウェアセキュリティエージェント４４４とＯ／Ｓ下位エージェント４５０との間のタスクの説明は複数のファクタを考慮してもよい。例えば、ＰＣファームウェアセキュリティエージェント４４４などのファームウェア内のセキュリティエージェントの処理は、他のＯ／Ｓ下位エージェント４５０の処理よりセキュアであってもよい。しかしながら、Ｏ／Ｓ下位エージェント４５０のセキュリティルール及びソフトウェアの更新は、ＰＣファームウェアセキュリティエージェント４４４におけるものよりシンプルで迅速である可能性がある。
【０１０３】
さらなる他の実施例では、１以上のファームウェアセキュリティエージェント４４０，４４２は、ＰＣファームウェアセキュリティエージェント４４４又はＯ／Ｓ下位エージェント４２２から独立してシステム４００にあってもよい。当該具体例では、ファームウェアセキュリティエージェント４４０，４４２は、Ｏ／Ｓ内セキュリティエージェント４１８のインスタンスを検証してもよい。
【０１０４】
各ファームウェアセキュリティエージェント４４０，４４２，４４４は、外部通信用のファームウェアロジックをモニタ及び制御するのを可能にするのに十分なファームウェアロジック内にあるよう構成されてもよい。ファームウェアセキュリティエージェント４４０，４４２，４４４は、特定の情報又は特定の他のエンティティをトラップ及び／又は通信するよう構成されてもよい。ファームウェアセキュリティエージェント４４０，４４２，４４４は、受信した処理リクエストと共に、送受信対象のデータを決定するよう構成されてもよい。さらに、ファームウェアセキュリティエージェント４４０，４４２，４４４は、送受信対象のデータを制御し、暗号化、圧縮、透かしの埋め込み又はデータの透かしの復号化など、当該データに対する追加的な処理を実行させるよう構成されてもよい。ファームウェアセキュリティエージェント４４０，４４２，４４４と通信するシステム４００の他のセキュリティエージェントは、ファームウェアセキュリティエージェント４４０，４４２，４４４によりトラップされるデータに透かしを埋め込み、又はファームウェアセキュリティエージェント４４０，４４２，４４４によりデータに配置された透かしを復号化するよう構成されてもよい。
【０１０５】
ファームウェアセキュリティエージェント４４０，４４２又はＰＣファームウェアセキュリティエージェント４４４との通信は、例えば、プログラマブル入出力インタラプト又はプログラマブル入出力レジスタなどを介し実行されてもよい。このようなインタラプト又はレジスタは、ファームウェアセキュリティエージェント４４０，４４２，４４４があるファームウェア又はデバイスのメーカーにより定義及び提供されてもよい。
【０１０６】
システム４００のＯ／Ｓ下位セキュリティエージェントの１以上は、電子デバイス４０４のファームウェアベースセキュリティエージェントのアンチマルウェアアクティビティを調整するためのメインセキュリティエージェントとして機能するよう構成されてもよい。一実施例では、ＰＣファームウェアセキュリティエージェント４４４は、システム４００のメインセキュリティエージェントとして構成されてもよい。他の実施例では、Ｏ／Ｓ下位エージェント４５０は、メインセキュリティエージェントして機能するよう構成されてもよい。セキュリティエージェントは、ファームウェアセキュリティエージェント４４０，４４２からのトリガイベントを処理するよう構成されてもよい。メインセキュリティエージェントは、何れのセキュリティエージェントが疑わしい動作を通知し、又はマルウェアを検出したか、システム４００がマルウェアに攻撃されているか、システム４００のアドミニストレータがセキュリティに影響を与える嗜好又は設定を変更したかに関して他のセキュリティエージェントに通知するよう構成されてもよい。メインセキュリティエージェントは、システム４００のその他のセキュリティエージェントと攻撃に関する情報を共有してもよい。
【０１０７】
システム４００のリソースへのアクセスをトラップし、及び／又はシステム４００のオペレーティングシステムのレベルの下位の結果として生じるトリガイベントを処理することによって、システム４００は、マルウェアに対するセキュリティを増大するようにしてもよい。ファームウェアにおけるセキュリティエージェントの処理は、マルウェアがセキュリティエージェントの処理に影響を与える機会を減少させるようにしてもよい。ファームウェア又はデバイスレベルの処理をトラップすることは、それの処理を偽るため、システム４００の要素をマルウェアがスプーフ又はフィッシングする能力を減少させるようにしてもよい。例えば、オペレーティングシステム４１２の何れの部分がマルウェアにより危険にさらされても、コンポーネント４２４，４２６に対するリクエストは、デバイス自らから偽らないようにしてもよい。
【０１０８】
図５は、マルウェアから電子デバイスをプロテクトするためのファームウェアベース手段の実施例のより詳細な図である。Ｉ／Ｏデバイス５０２などのデバイスは、当該デバイスのリソースの利用又はアクセスのためのリクエストを受信及びトラップするよう構成されてもよい。一実施例では、Ｉ／Ｏデバイス５０２は、当該リクエストがマルウェアの存在を示しているか判断するため、トラップされたリクエストを処理するよう構成されてもよい。他の実施例では、Ｉ／Ｏデバイス５０２は、Ｉ／Ｏデバイスがあるシステムの他の部分にトリガイベントとしてトラップされたリクエストをわたすよう構成されてもよい。システムの当該他の部分は、Ｏ／Ｓ下位セキュリティエージェントを有してもよい。Ｉ／Ｏデバイス５０２は、メモリ５０８に接続されたプロセッサ５０６とファームウェア５０４とを有し、ファームウェア５０４は、プロセッサ５０６による実行のためメモリ５０８にある命令を有してもよい。
【０１０９】
Ｉ／Ｏデバイス５０２は、電子デバイスのリスースへのアクセスを制御するための電子デバイスの何れか適切な部分を有してもよい。一実施例では、Ｉ／Ｏデバイス５０２は、電子デバイスの周辺装置の一部又はすべてを実現してもよい。Ｉ／Ｏデバイス５０２は、例えば、ディスプレイコントローラカード、コンピュータバスコントローラ、キャッシュデバイス、Ｉ／Ｏコントローラデバイス、ディスクコントローラ、メモリデバイス、ネットワークコントローラ、マザーボード、又はキーボードコントローラなどにより実現されてもよい。Ｉ／Ｏデバイス５０２は、電子デバイスにあってもよい。一実施例では、Ｉ／Ｏデバイス５０２は、物理コンポーネントに接続されてもよい。当該物理コンポーネントは、一例として、ディスプレイ、コンピュータバス、メモリ、Ｉ／Ｏコントローラ、ディスク、ネットワークカード、又はキーボードを含むものであってもよい。例えば、キーボードコントローラは、キーボードとのシリアルインタフェースを介し接続されてもよい。当該実施例では、Ｉ／Ｏデバイス５０２は、電子デバイスにあってもよく、物理コンポーネントは、電子デバイスに通信接続されるが、電子デバイスの外部にあってもよい。
【０１１０】
ファームウェア５０４は、Ｉ／Ｏデバイス５０２の処理を制御するよう構成されてもよい。ファームウェア５０４は、リソースに対するリクエストをトラップし、Ｉ／Ｏデバイス５０２又はＩ／Ｏデバイス５０２があるシステムにおいてオペレーティングシステムのレベルの下位で動作するよう構成されるＯ／Ｓ下位セキュリティエージェント５１６を有してもよい。Ｏ／Ｓ下位セキュリティエージェント５１６は、Ｉ／Ｏデバイス５０２又はＩ／Ｏデバイス５０２があるシステムをマルウェアからプロテクトするため、当該リクエストを許可、拒絶又は処理するか判断するため、トラップされたリクエストから生じるイベントを処理するよう構成されてもよい。一実施例では、ファームウェア５０４は、ファームウェアセキュリティエージェント５１６を有してもよい。ファームウェアセキュリティエージェント５１６は、図２のＳＶＭＭ２１６又はＳＶＭＭセキュリティエージェント２１７の機能の一部又はすべてを内蔵するが、ファームウェア５０４において実現されるものであってもよい。この場合、リソースへのアクセスのトラップ及び／又はトラップされたリクエストの処理などのＳＶＭＭ２１６又はＳＶＭＭセキュリティエージェント２１７の機能は、ファームウェアセキュリティエージェント５１６により実行されてもよい。一実施例では、ファームウェアセキュリティエージェント５１６は、ファームウェア５０４にあるよう構成されてもよい。
【０１１１】
ファームウェア５０４は、Ｉ／Ｏコマンド５１０、データ伝送エンジン５１２及びプログラマブルロジック５１４を有してもよい。Ｉ／Ｏコマンド５１０は、デバイスと情報を送受信するための命令を有してもよい。当該コマンドは、ＩＮ又はＯＵＴコマンドの変形を含むものであってもよい。Ｉ／Ｏコマンド５１０の実行は、デバイスの所望のアクションを実行するよう処理可能であってもよい。デバイスにより受信されたリクエストは、Ｉ／Ｏコマンドに変換されてもよい。リソースに対する特定のリクエストに応答したトラップ又はトリガは、関連するＩ／Ｏコマンド５１０に対するトラップ又はトリガにより実現されてもよい。データ伝送エンジン５１２は、デバイスとのリクエストと以降のレスポンスとの通信を処理するよう構成されてもよい。データ伝送エンジン５１２は、Ｉ／Ｏコマンド５１０とデータとが交換されるＩ／Ｏバスを介しプロセッサ５０６及びプログラマブルＩ／Ｏコントローラに接続されてもよい。プログラマブルロジック５１４は、ファームウェア５０４がＩ／Ｏコマンド５１０とデータ伝送エンジン５１２とを処理するための命令を提供するよう構成されてもよい。プログラミングロジック５１４は、プロセッサ５０６などのプロセッサにロードされてもよい。
【０１１２】
ファームウェアセキュリティエージェント５１６は、試行された悪意ある処理を検出するため、プログラミングロジック５１４の処理を修正するよう構成されてもよい。ファームウェアセキュリティエージェント５１６は、データ伝送エンジン５１２を介しＩ／Ｏデバイス５０２のリクエストをインターセプトし、当該リクエストが悪意あるか判断するため、デバイスとのリクエストの通信をモニタするよう構成されてもよい。ファームウェアセキュリティエージェント５１６は、トラップ対象の処理に対応するフラグが設定される制御構造を有してもよい。一実施例では、トラップ対象のコマンドのメモリアドレスに従って、フラグが制御構造において設定されてもよい。ファームウェアセキュリティエージェント５１６は、Ｉ／Ｏデバイス５０２に対するリクエストのインターセプトについてフラグを設定するよう構成されてもよい。当該フラグは、例えば、Ｉ／Ｏコマンド５１０の特定のコマンド又は特定のパラメータに関する当該特定のコマンドなどに対応するものであってもよい。このようなフラグは、特定のリクエスト又はリクエストのカテゴリをインターセプトするよう構成されてもよい。Ｉ／Ｏコマンド５１０のトラップされた試行された処理に対応するフラグのトリガに応答して、ファームウェアセキュリティエージェント５１６は、イベントを処理し、結果としてのアクションを実行し、結果としての情報をデータ伝送エンジン５１２を介し他のセキュリティエージェントにわたすか、又はデータ伝送エンジン５１２を介しトリガイベントをわたすよう構成されてもよい。
【０１１３】
Ｉ／Ｏデバイス５０２はまた、セキュリティルール５１８を有してもよい。セキュリティルール５１８は、図２のセキュリティルール２２２の一部又はすべてを実装してもよい。セキュリティルール５１８は、メモリ５０８において実現されてもよい。一実施例では、セキュリティルール５１８は、ファームウェア５０４の外部にあってもよい。他の実施例では、セキュリティルール５１８は、ファームウェア５０４の内部にあってもよい。ファームウェアセキュリティエージェント５１６は、セキュリティルール５１８に通信接続され、それのリソースへのアクセスのためＩ／Ｏデバイス５０２に行われる特定のリクエスト又は特定のリクエストのカテゴリをトラップするため、ファームウェア５０４において設定されるべきフラグを決定するため、セキュリティルール５１８にアクセスするよう構成されてもよい。例えば、ファームウェアセキュリティエージェント５１６は、トリガイベントが悪意あるか又はないか判断するため、セキュリティルール５１８にアクセスするよう構成されてもよい。一実施例では、セキュリティルール５１８は、ファームウェアセキュリティエージェント５１６がトリガイベントを処理するための命令を含むものであってもよい。ファームウェアセキュリティエージェント５１６は、当該命令を用いてリクエストを許可若しくは拒絶するか、又は他の訂正アクションを実行すべきか判断するよう構成されてもよい。他の実施例では、ファームウェアセキュリティエージェント５１６は、当該命令を用いてリクエストを他のセキュリティエージェントに報告すべきか判断するよう構成されてもよい。このような訂正アクションはまた、他のセキュリティエージェントからのレスポンスを待機することを含むものであってもよく、リクエストを許可又は拒絶するかに関する命令を含むものであってもよい。
【０１１４】
いくつかの実施例では、ファームウェアセキュリティエージェント５１６は、ファームウェア５０４にあってもよく、これは、ファームウェアセキュリティエージェント５１６を更新することを相対的に困難にする可能性がある。さらに、マルウェアの攻撃の永続的性質は、アンチマルウェア手段をフレキシブルにすることを要求するかもしれない。このため、ファームウェアセキュリティエージェント５１６は、トラップすべきＩ／Ｏデバイスに対するリクエストと、実行されるべき以降のアクションとを決定するための情報を受信するのに適した何れかの機構を利用してもよい。
【０１１５】
一実施例では、このような機構は、上述されるようなセキュリティルール５１８にアクセスすることを含むものであってもよい。ファームウェアセキュリティエージェント５１６は、他のセキュリティエージェント又はプロテクションサーバから新規及び更新されたセキュリティルール５１８を受信するよう構成されてもよい。フレキシビリティを実現するため、ファームウェアセキュリティエージェント５１６は、例えば、ファームウェア５０４の当該ルールのストレージがセキュリティルール５１８の更新を困難にする場合、ファームウェア５０４から分離したメモリ５０８にセキュリティルール５１８を格納するよう構成されてもよい。
【０１１６】
他の実施例では、ファームウェアセキュリティエージェント５１６は、ファームウェアの更新又はフラッシュに応答して、セキュリティルール５１８を更新するよう構成されてもよい。当該実施例では、トラップ対象のリクエストを更新するフレキシビリティは限定的であるかもしれない。この結果、セキュリティルール５１８は、極めて特定のプロテクトされたリソースに対するものになる可能性がある。例えば、ディスクデバイスのセキュリティルール５１８は、デバイスのブートセクタに対するすべてのライトリクエストをトラップするための命令を含むものであってもよい。いくつかのケースでは、他のセキュリティエージェントとの通信が容易である場合、セキュリティルール５１８は、広範なリクエストをトラップするための命令を含んでもよく、処理が他のセキュリティエージェントに対して大きくオフロードされるかもしれない。
【０１１７】
さらなる他の実施例では、ファームウェアセキュリティエージェント５１６は、他のセキュリティエージェントから命令を受信するよう構成されてもよい。あるケースでは、当該命令は、ファームウェア５０４又はファームウェアセキュリティエージェント５１６のファンクションコールに対するパラメータの形態をとるものであってもよい。例えば、他のセキュリティエージェントは、“ＵｐｄａｔｅＲｕｌｅ（ｔｒｉｇｇｅｒ，ａｃｔｉｏｎ）”と呼ばれるファームウェアセキュリティエージェント５１６のファンクションをコールしてもよく、トラップするためのリクエストがｔｒｉｇｇｅｒに詳述され、実行すべき以降のアクションはａｃｔｉｏｎに詳述される。ファームウェアセキュリティエージェント５１６は、セキュリティルールに対する更新に関する命令を受信することによって、セキュリティルール５１８を更新してもよい。他のケースでは、他のセキュリティエージェントは、ファームウェアセキュリティエージェント５１６により以降にアクセスされてもよいデバイス５０２の確保されているメモリスペースにセキュリティルール５１８のアップデートを書き込むようにしてもよい。他のセキュリティエージェントから受信すべき命令はまた、ファームウェアセキュリティエージェント５１６にセキュリティルール５１８の特定のセットを利用するよう指示するものであってもよい。例えば、タイムクリティカル処理中、ファームウェアセキュリティエージェント５１６は、当該命令によってセキュリティルール５１８の最小限のコアなセットを利用するよう構成されてもよい。Ｉ／Ｏデバイス５０２がディスクデバイスである場合、このような最小限のコアなルールセットは、ディスクのブートセクタへのアクセスをトラップするための命令を含むものであってもよい。他の例では、タイムクリティカル処理が現在実行されていない場合、ファームウェアセキュリティエージェント５１６は、当該命令によってセキュリティルール５１８からのルールを利用して、より広範なアクセス試行の範囲をトラップし、対応するイベントを処理のために他のセキュリティエージェントに送信するよう構成されてもよい。
【０１１８】
ファームウェアセキュリティエージェント５１６は、Ｉ／Ｏコマンド５１０を制御し、受信した又は送信対象のコンテンツ又はデータをスキャンし、当該コマンド及びコンテンツに対するアクセス制御を適用するよう構成されてもよい。ファームウェアセキュリティエージェント５１６は、既存のデバイスファームウェアの拡張として実現されてもよい。
【０１１９】
ファームウェアセキュリティエージェント５１６の実現は、デバイス５０２のタイプに依存してもよい。例えば、ディスプレイデバイス及びディスクデバイスは、異なるタイプのコンテンツ又は試行されるコマンドに対してトリガしてもよい。各種デバイスのファームウェアセキュリティエージェント５１６の作成は、デバイスとの特定タイプのインタフェースに調整されてもよい。例えば、デバイス５０２がＳＡＴＡ（Ｓｅｒｉａｌ  Ａｄｖａｎｃｅｄ  Ｔｅｃｈｎｏｌｏｇｙ  Ａｔｔａｃｈｅｍｅｎｔ）バスを介し通信するよう構成される場合、それには、ＳＡＴＡバスを介し通信する他のデバイスに類似したファームウェアセキュリティエージェント５１６が備えられるようにしてもよい。ファームウェアセキュリティエージェント５１６は、デバイス５０２のアーキテクチャをサポートし、デバイス５０２の外部バスＩ／Ｏをサポートし、又はデバイス５０２の他のインタフェースをサポートするようカスタマイズされてもよい。
【０１２０】
ファームウェアセキュリティエージェント５１６は、リソースのリクエストの一部を構成しうる、特定のリード及びライトコマンドをインターセプトすることによって、デバイス５０２のリソースの試行されたアクセスをトラップするよう構成されてもよい。リード又はライトコマンドは、セキュリティルール５１８の１つなどのルールに基づき、インターセプト及び評価されて、ブロック又は許可されてもよい。ファームウェアセキュリティエージェント５１６のためのセキュリティルール５１８は、マルウェアの証拠を検出するのに適した何れかのルールを含むものであってもよい。当該リード及びライトコマンドは、例えば、ドライバ又はインタラプトに対するファンクションコールなどの結果であってもよい。
【０１２１】
例えば、セキュリティルール５１８は、ファームウェアセキュリティエージェント５１６がデバイスに書き込まれるデータをスキャンするためのルールを含むものであってもよい。データのコンテンツ又はデータのハッシュが、当該データがマルウェアデータ又はコードに対応するか判断するため評価されてもよい。このような評価は、当該コンテンツをホワイトリスト又はブラックリストのデータ又はシグネチャに対して比較することによって行われてもよい。良好なライトは、コンテンツ又はデータをマルウェア又はそうでないものとして正しく特定するため、書き込まれるデータ又はコンテンツの完全な範囲を適切に評価するため一緒に評価される必要があるかもしれない。例えば、ファイルは、デバイス５０２に対する繰り返される良好なコールに対して書き込まれるようにしてもよい。書き込まれるデータは、ライトコマンドのコンテンツの適切なスキャンが評価されるようにキューされてもよい。
【０１２２】
他の例では、セキュリティルール５１８は、ファームウェアセキュリティエージェント５１６がデバイスにおける既存のデータをスキャンするためのルールを含むものであってもよい。デバイス５０２は、ネットワークカードなどのシステムの外部から受信されるコンテンツを含むものであってもよい。それがデバイス５０２ににより備えられると、受信情報のコンテンツがマルウェアの証拠についてスキャンされてもよい。ファームウェアセキュリティエージェント５１６は、当該コンテンツとホワイトリスト又はブラックリストのデータ又はシグネチャとを比較することによって評価してもよい。
【０１２３】
さらなる他の例では、セキュリティルール５１８は、ファームウェアセキュリティエージェント５１６が時間又はパーミッションに基づきコマンドを評価するためのルールを含むものであってもよい。ネットワークデバイス又はディスクなどのデバイス５０２は、何れの正当なアクティビティも実行されるべきでない時間中、リード又はライトからプロテクトされてもよい。例えば、特定のマルウェアは、ブート処理中にディスクドライブを攻撃するかもしれない。従って、ファームウェアセキュリティエージェント５１６は、ディスクがブートされている時間中、デバイスへのライトを阻止してもよい。同様に、デバイスやシステムが利用可能である時間又は方法に関して、デバイス５０２があるシステムのアドミニストレータによってパーミッションが設定されてもよい。例えば、デバイス５０２があるシステムのアドミニストレータは、デバイスを営業時間外に利用不可に設定してもよい。システム上のネットワークデバイスは、営業時間外のアクティビティを移送する正当な目的を有していないかもしれず、セキュリティルール５１８のパーミッションに基づき、ネットワークデバイスのリード及びライトがファームウェアセキュリティエージェント５１６により阻止されてもよい。このような利用は、例えば、デバイスの実際のユーザによる又はネットワークデバイスを用いてＤｏＳ攻撃を実行するマルウェアによる意図的なアクティビティなどを阻止してもよい。
【０１２４】
さらなる他の例では、セキュリティルール５１８は、Ｉ／Ｏコマンドと共に用いられるパラメータに基づき、ファームウェアセキュリティエージェント５１６がコマンドを評価するためのルールを含むものであってもよい。このようなパラメータは、例えば、ライトコマンドが書き込むアドレスなどを含むものであってもよい。セキュリティルール５１８は、ディスクデバイスの特定部分が読み出し専用であることを示すルールを含むものであってもよい。従って、ファームウェアセキュリティエージェント５１６は、データが書き込みされるアドレスを決定するため、ディスクにデータを書き込むためのＯＵＴコマンドに関するパラメータを調べ、試みられたライトがセキュリティルール５１８のルールによりライトプロテクトされるディスクの部分に対するものである場合、当該コマンドをブロックしてもよい。ファームウェアセキュリティエージェント５１６は、当該コールの発信元のコンテンツやエンティティなどの他のベースに関して当該パラメータを考慮してもよい。例えば、書き込み対象のデータのコンテンツをスキャンすることはコストがかかる可能性があり、セキュリティルール５１８は、データが特定の範囲のアドレスに書き込まれる場合に限って、書き込み対象のデータをスキャンするようファームウェアセキュリティエージェント５１６を設定してもよい。他の例では、セキュリティルール５１８などのセキュリティルールは、特定のコール元のエンティティがディスクデバイスの特定部分に対してライト又はリードすることしか許可しないようにしてもよい。従って、ファームウェアセキュリティエージェント５１６は、試行されたライト又はリードをトラップし、コール元のエンティティの識別情報がセキュアに決定されるまで当該試行を許可しないようにしてもよい。当該決定は、一部のファンクションがコール元のデバイスドライバ又はアプリケーションを特定するとき、デバイスファンクションをコールするのに利用されるパラメータにおける情報を評価することによって行われてもよい。このようなケースでは、ファームウェアセキュリティエージェント５１６は、コールの有効性を判断するため、何れか適切なステップを実行してもよい。一実施例では、ファームウェアセキュリティエージェント５１６は、コール元のエンティティが当該コールを行うことが許可されているか判断するため、セキュリティルール５１８のホワイトリスト又はブラックリストを照会してもよい。他の実施例では、ファームウェアセキュリティエージェント５１６は、コール元のアプリケーション又はデバイスドライバが有効であるか判断するため、デバイス５０２を含むシステムにおける他のセキュリティエージェントと通信してもよい。このような他のセキュリティエージェントは、コール元のアプリケーション又はデバイスドライバの処理を検証していてもよいし、又は当該処理を検証したＯ／Ｓ内セキュリティエージェントと通信してもよい。さらなる他の例では、デバイス５０２などのデバイスに対する既存のドライバコールは、コール元のエンティティを特定しなくてもよい。従って、何れのパラメータも利用可能でなくてもよい。この例では、ファームウェアセキュリティエージェント５１６は、トリガイベントをわたすか、あるいは、試行されたアクセスを生じさせたコールのコンテクストを判断するため、システムの他のセキュリティエージェントに照会するよう構成されてもよい。当該他のセキュリティエージェントは、認証されたエンティティが当該試行を行ったか判断するため、コールに適したコンテクストを提供することが可能であってもよい。
【０１２５】
さらなる例では、セキュリティルール５１８は、ファームウェアセキュリティエージェント５１６がデバイス５０２がある環境からの情報に基づきコマンドを評価するためのルールを含むものであってもよい。システムにおける他のセキュリティエージェントは、取り除くことが困難なマルウェアの感染を検出していてもよいし、又はクリーンするためのアドミニストレータからの直接的な介入を要求してもよい。システムの他のセキュリティエージェントは、疑わしい動作を観察しており、当該動作の性質がまだ完全には解析されていない。この場合、ファームウェアセキュリティエージェント５１６は、他のセキュリティエージェントから既存の脅威の通知を受信してもよい。セキュリティルール５１８は、感染のタイプに応じてファームウェアセキュリティエージェント５１６のための予防的アクションを指示してもよい。例えば、キーボードデバイスのファームウェアセキュリティエージェント５１６は、キーログについて知られる特定タイプのマルウェアの証拠が検出されたが、まだ取り除くことができていないという通知を受信するかもしれない。セキュリティルール５１８は、ファームウェアセキュリティエージェント５１６がキーボードデバイスからのすべてのリード及びライトがキーボードと通信される情報を危険にさらすことを阻止することを不可にすることを指示してもよい。
【０１２６】
ファームウェアセキュリティエージェント５１６は、異なるタイプのデバイスのＩ／Ｏを異なる方法によりプロテクトしてもよい。例えば、ディスプレイデバイスのファームウェアセキュリティエージェント５１６は、マルウェアの脅威に応じてディスプレイの一部をシャットダウンしてもよい。ファームウェアセキュリティエージェント５１６は、画面上に透かしを生じさせる特定のパターンの表示をブロックしてもよい。ファームウェアセキュリティエージェント５１６は、特定のパターンの試行された表示をトラップしてもよい。ファームウェアセキュリティエージェント５１６は、画面キャプチャを阻止するため、デバイスからの情報の試行されたリードをインターセプトしてもよい。
【０１２７】
他の例では、キーボードデバイスのファームウェアセキュリティエージェント５１６は、任意的には、システムの残りとの通信においてそれの結果を符号化又は復号化してもよい。このような暗号化は、キーロガー（ｋｅｙｌｏｇｇｅｒ）などのマルウェアの脅威が存在するという通知に応答して、ファームウェアセキュリティエージェント５１６により設定されてもよい。
【０１２８】
さらなる他の例では、ネットワークデバイスのファームウェアセキュリティエージェント５１６は、ソースＩＰ（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）アドレス、ソースポート番号、送受信対象のデータ、デスティネーションＩＰアドレス又はデスティネーションポート番号に基づきトラップしてもよい。ネットワークデバイスを利用する試行がトラップされると、ファームウェアセキュリティエージェント５１６は、マルウェアの証拠について送受信対象のパケットのデータペイロードをスキャンしてもよい。一実施例では、このようなデータペイロードは、他のセキュリティエージェント又はプロテクションサーバに送信されてもよく、当該コンテンツがマルウェアの証拠についてスキャンされる。データペイロードのコンテンツは、パケットスニッファ（ｐａｃｋｅｔ  ｓｎｉｆｆｅｒ）がコンテンツのインターセプトに成功しないように暗号化されてもよい。ネットワークデバイス上の試行された処理は、安全でないネットワークデスティネーションとの通信に関するセキュリティリスクのためトラップされてもよく、悪意あるデスティネーションとのネットワーク通信は、デバイス５０２があるシステムのセキュリティを危険にさらす可能性がある。試行された処理は、銀行取引ウェブサイトなどの特定のデータセットのセンシティブな性質のためトラップされてもよい。このような場合、当該ウェブサイトからのデータの受信に対して、当該データは、他のセキュリティエージェント又はコール元のエンティティにわたされる前に、ファームウェアセキュリティエージェント５１６により暗号化されてもよい。このような暗号化は、デバイス５０２のシステムのパケットスニッファ又はフィルタが情報のインターセプトに成功することを阻止する可能性がある。
【０１２９】
トラップされる特定のＩ／Ｏコマンド５１０は、特定のデバイス及び当該デバイスの処理に依存してもよい。従って、デバイス５０２のメーカーは、特定のデバイス５０２についてファームウェアセキュリティエージェント５１６の処理をどのように設定するか決定してもよい。デバイス５０２のメーカーは、他のセキュリティエージェントにデバイス５０２の機能をどの程度明らかにするか決定してもよい。例えば、デバイス５０２は、他のセキュリティエージェントにトリガイベントをわたす前に、他のセキュリティエージェントによる検証を要求するよう構成されてもよい。
【０１３０】
動作について、１以上のＯ／Ｓ下位セキュリティエージェントは、システム４００のファームウェア又はコンポーネントにおいて実行されてもよい。ファームウェアセキュリティエージェント４４０は、ディスプレイ４２４において実行され、ファームウェアセキュリティエージェント４４２は、ストレージ４２６において実行され、ＰＣファームウェアセキュリティエージェント４４４は、メインＰＣファームウェア４００において実行されてもよい。Ｏ／Ｓ下位エージェント４５０及びＯ／Ｓ内エージェント４１２は、システム４００において実行されてもよい。各セキュリティエージェントは、システム４００における１以上の他のセキュリティエージェントと通信してもよい。各セキュリティエージェントは、通信を受け付ける前に他のセキュリティエージェントのインスタンスを検証してもよい。プロテクションサーバ４０２は、セキュリティエージェントを検証した後、セキュリティエージェントの１以上と通信してもよい。
【０１３１】
ＰＣファームウェアセキュリティエージェント４４４又はＯ／Ｓ下位エージェントは、メインセキュリティエージェントとして指定されてもよい。メインセキュリティエージェントは、セキュリティルールを決定するため、プロテクションサーバ４０２と通信してもよい。メインセキュリティエージェントは、メインセキュリティエージェントにローカルにセキュリティルールを格納してもよい。メインセキュリティエージェントは、セキュリティルールを各セキュリティエージェントに配信してもよく、セキュリティルールは、セキュリティエージェントにローカルに格納されてもよい。セキュリティルールは、セキュリティルールの大きなセットのコストを低減するため、デバイスのタイプ、製造又はモデルについてカスタマイズされてもよい。
【０１３２】
ルール４３４などのセキュリティルールを受信すると、ディスプレイ４２４などのデバイスは、トラップされるべきデバイスの処理に対応するデバイスファームウェア４３０内の制御構造においてフラグを設定してもよい。同様のタスクが、ストレージ４２６により実行されてもよい。
【０１３３】
アプリケーション４１０又はドライバ４１１は、ディスプレイ４２４やストレージ４２６などのデバイスにアクセスすることを試みる。アプリケーション４１０又はドライバ４１１は、オペレーティングシステム４１２のカーネルをコールすることによって当該試行を行うかもしれず、さらにオペレーティングシステムのデバイスドライバがコールされ、さらにリクエストがコンポーネント４２４、４２６に送信されるかもしれない。
【０１３４】
当該リクエストは、ストレージ４２６などのデバイスに到着する。デバイス上で実行されるファームウェアセキュリティエージェント４４２は、制御構造を備えたストレージ４２６のデータ伝送エンジン４１２をモニタすることによって、当該リクエストをフィルタリングしてもよい。当該リクエストは、ストレージ４２６により利用可能とされるＩ／Ｏコマンド５１０の形態をとりうる。当該リクエストがファームウェアセキュリティエージェント４４２により設定された何れかのフラグに一致する場合、当該リクエストはトラップされ、結果としてのイベントがトリガされてもよい。ファームウェアセキュリティエージェント４４２は、トリガイベントをどのように処理するか決定するため、セキュリティルール４３６に照会してもよい。
【０１３５】
一実施例では、トリガイベントは、ファームウェアセキュリティエージェント４４２により処理されてもよく、関連するデータコマンド、コンテクスト情報、時間又は環境情報などの利用可能な情報に基づき、訂正アクションがとられてもよい。このような訂正アクションは、リクエストの許可又は拒絶、悪意あるコード又はデータの削除、又は転送対象のデータの暗号化を含むものであってもよい。他の訂正アクションは、トラップされるイベントに関してプロテクションサーバ４０２にわたされる情報を送信することを含むものであってもよい。ファームウェアセキュリティエージェント４４２は、他のセキュリティエージェントにトリガイベントの状態を通知し、これにより、他のエージェントがまた各自のセキュリティルールに照会した後に訂正アクションを行ってもよい。例えば、ファームウェアセキュリティエージェント４４２が未知のソースのマルウェア攻撃を検出した場合、ファームウェアセキュリティエージェント４４０は、ディスプレイ４２４への追加的なアクセスをロックしてもよい。
【０１３６】
他の実施例では、トリガイベントは、Ｏ／Ｓ内セキュリティエージェント４１８、ＰＣファームウェアセキュリティエージェント４４４又はＯ／Ｓ下位エージェント４５０など、処理のための他のセキュリティエージェントに転送されてもよい。ＰＣファームウェアセキュリティエージェント４４４などの受信側のセキュリティエージェントは、セキュリティルール４３８を照会することによって、トリガイベントを処理してもよい。データ、コマンド、コンテクスト情報、時間又は環境情報などの利用可能な情報に基づき、トリガイベントにより表されるリクエストは、ＰＣファームウェアセキュリティエージェント４４４により許可又は拒絶されてもよい。ＰＣファームウェアセキュリティエージェント４４４は、リソースの試行されたアクセスに関するコンテクスト情報を決定するため、Ｏ／Ｓ内セキュリティエージェント４１８と通信してもよい。ＰＣファームウェアセキュリティエージェント４４４は、トリガイベントをどのように処理するかに関する追加的な情報のため、プロテクションサーバ４０２と通信してもよい。ＰＣファームウェアセキュリティエージェント４４４は、発信元のファームウェアセキュリティエージェント４４２に結果としてのアクションに対する命令を送り返してもよい。ＰＣファームウェアセキュリティエージェント４４４は、解析又は記録対象のトリガイベントに関する情報をプロテクションサーバ４０２に送信してもよい。当該解析又は記録は、トリガイベントの悪意ある性質が未知であるときに実行されてもよい。ＰＣファームウェアセキュリティエージェント４４４は、システム４００のセキュリティエージェントに特定のタイプのマルウェアが検出された、あるタイプの疑わしいアクティビティが検出された、又はシステム４００がマルウェアの攻撃を受けていることを通知してもよい。
【０１３７】
ＰＣファームウェアセキュリティエージェント４４４から情報を受信すると、ファームウェアセキュリティエージェント４４０は、訂正アクションを実行してもよい。当該アクションは、試行されたアクセスの許可又は拒絶、転送されるデータの暗号化、又は悪意あるコード又はデータの削除を含むものであってもよい。
【０１３８】
図６は、マルウェアからの電子デバイスのファームウェアベースコンフィギュラブルプロテクションのための方法６００の実施例である。ステップ６０５において、Ｏ／Ｓ下位セキュリティエージェント、Ｏ／Ｓ内セキュリティエージェント、プロテクションサーバ及びファームウェアセキュリティエージェントの識別情報とセキュリティとが認証されてもよい。当該認証は、メモリにある各自のイメージ、暗号化ハッシュ又は秘密鍵の特定及び検証によることを含む何れか適切な方法により実行されてもよい。ステップ６０５が終了するまで、他のステップの処理は保留されてもよい。
【０１３９】
ステップ６１０において、プロテクションサーバは、セキュリティルールを決定するためアクセスされてもよい。当該セキュリティルールは、以下のステップにおける決定に利用されてもよい。ステップ６１５において、ファームウェアセキュリティエージェントは、システムリソースへのアクセスをトラップするよう指示されてもよい。当該アクセスは、電子デバイス上で実行されるアプリケーション、ドライバ又はオペレーティングシステムから生じるものであってもよい。ファームウェアセキュリティエージェントは、電子デバイスの何れのシステムリソースがモニタされるべきかに関して指示されてもよい。ファームウェアセキュリティエージェントはまた、モニタされるシステムリソースに対する何れの処理がトラップされるべきかに関して指示されてもよい。例えば、ファームウェアセキュリティエージェントが実行されるデバイスに対するリード及びライトコマンドが、トラップ対象として特定されてもよい。ステップ６２０において、トラップ対象の処理に対応するフラグが、制御構造において設定されてもよい。当該トラップされる処理は、トリガイベントを生成してもよい。
【０１４０】
電子デバイスは、ステップ６３０〜６７５におけるシステムリソースのアクセスのトラップ、又はステップ６８０〜６８５におけるマルウェアの存在についてのデータのスキャンの１以上によって実行及びプロテクトされてもよい。システムリソースのアクセスのトラップと、マルウェアの有無についてのデータのスキャンとのそれぞれは、パラレルに実行されてもよい。さらに、これらのそれぞれは、電子デバイスの処理をプロテクトするため、必要に応じて繰り返されてもよい。
【０１４１】
ステップ６３０において、システムメモリ、レジスタ又はＩ／Ｏデバイスなどのシステムリソースのアクセスがトラップされてもよい。当該トラップは、電子デバイス上で実行されるオペレーティングシステムのレベルの下位で実行されてもよい。当該トラップは、ファームウェアの内部で実行されてもよい。ステップ６３２において、結果としてのトリガイベントは、何れかの関連する情報と共に、トラップされた試行に関連して生成されてもよい。ステップ６３５において、トリガイベントが現在処理されるべきか、又は処理のため他のセキュリティエージェントにわたされるべきか判断されてもよい。当該判定は、１以上のセキュリティルールにアクセスすることによって行われてもよい。トリガイベントが現在処理されるべきである場合、ステップ６４０において、セキュリティルールが、関連するデータ、コマンド、コンテクスト情報、時間又は環境情報なの他の情報とトラップされるイベントとに基づき、実行すべきアクションを決定するためアクセスされてもよい。例えば、ライト又はリード対象のデータがセンシティブ又は悪意あるコンテンツについてスキャンされ、コール元のエンティティが、当該エンティティがパーミッションを有しているか確認するため特定され、コマンドをコールするのに利用されるパラメータが調べられ、又は他のセキュリティエージェントからのシステムにおけるマルウェアに関するアラートが参照されてもよい。
【０１４２】
ステップ６４２において、試行されたアクセスが疑わしかったか判断されてもよい。試行されるアクセスに関する情報に関してセキュリティルールにアクセスすることが、試行されるアクセスが疑わしくないという判定をもたらす場合、ステップ６４５において、当該試行は許可されてもよい。当該試行が疑わしいと判断される場合、ステップ６４７において、訂正アクションが実行されてもよい。当該訂正アクションは、データからの悪意あるコンテンツの削除、プロテクションサーバ又は他のセキュリティエージェントへの悪意ある試行の存在の通知、試行されるアクセスの拒絶、又は転送されるデータの暗号化を含むものであってもよい。当該試行が疑わしくない場合、ステップ６５０において、トリガイベントが許可されてもよい。
【０１４３】
ステップ６５５において、他のセキュリティエージェントがトリガイベントを処理すべきであると判断された場合、トリガイベントは処理のため他のセキュリティエージェントにわたされる。ステップ６７０において、適切なアクションが実行されるべきことを指示するセキュリティエージェントからのレスポンスが受信されてもよい。ステップ６７５において、訂正アクションやトリガイベントの処理の許可などのアクションが実行されてもよい。
【０１４４】
ステップ６８０において、デバイスのメモリが、マルウェアの存在についてスキャンされてもよい。当該メモリは、以前に実行されたファイルリードの結果や他のネットワークカードなどの他のエンティティから到着したコンテンツを含むものであってもよい。メモリのコンテンツが悪意ある、疑わしい又は未知であると知られた場合、ステップ６８５において、メモリのコンテンツは削除されてもよい。
【０１４５】
ステップ６９０において、試行されたアクセスが拒絶された場合、又は疑わしいコンテンツが検出された場合、当該イベントは、他のセキュリティエージェント又はプロテクションサーバに報告されてもよい。当該報告は、何れか関連するマルウェア又は疑わしい動作に関する情報を含むものであってもよい。
【０１４６】
方法６００のステップは、連続的、定期的又は要求に応答して電子デバイスをプロテクトするため、必要に応じて繰り返されてもよい。
【０１４７】
図７は、マルウェアに対する電子デバイス２０４のプロテクションのためのマイクロコードベースシステム７００の実施例である。システム７００は、マイクロコードによりシステム１００の特定の要素を実現するシステム１００の実施例であってもよい。システム７００のトラップ処理は、電子デバイス７０１のオペレーティングシステムの下位で実行されてもよい。システム７００は、電子デバイス２０４のリソースへのアクセスの試行された利用をトラップし、当該試行に対応するトリガイベントを生成し、トリガイベントに関するセキュリティルールを照会し、当該試行に関して必要に応じて訂正アクションを実行するよう構成される１以上のＯ／Ｓ下位セキュリティエージェントを含むものであってもよい。当該Ｏ／Ｓ下位セキュリティエージェントは、電子デバイス７０１のリソースから生成される情報をインターセプトし、当該生成に対応するトリガイベントを生成し、トリガイベントに関するセキュリティルールを照会し、当該試行に関して必要に応じて訂正アクションを実行するよう構成されてもよい。当該Ｏ／Ｓ下位セキュリティエージェントの１以上は、システム７００のプロセッサにおいて完全に又は部分的に実現されてもよい。Ｏ／Ｓ下位セキュリティエージェントは、当該プロセッサのマイクロコード（μＣ）により完全に又は部分的に実現されてもよい。システム７００によりプロテクトされる電子デバイス７０１のシステムリソース７２４は、例えば、図２のシステムリソース２２４に類似したリソース、物理メモリ７１４、プロセッサフラグ７１６、例外（ｅｘｃｅｐｔｉｏｎ）７１８、レジスタ７２０又はインタラプト７２２などを含むものであってもよい。
【０１４８】
システム７００は、マイクロコードセキュリティエージェント７０８などのマイクロコードベースＯ／Ｓ下位セキュリティエージェントを含むものであってもよい。マイクロコードセキュリティエージェント７０８は、プロセッサ７０４などのプロセッサのマイクロコード内にあってもよい。一実施例では、マイクロコードセキュリティエージェント７０８は、アプリケーション７１０、ドライバ７１１又はオペレーティングシステム７１３などのシステム７００の各部分により行われるシステムリソース７２４の試行されたアクセスをトラップするよう構成されてもよい。マイクロコードセキュリティエージェント７０８は、システムリソース７２４の試行されたアクセスに基づき、トリガイベントを生成するよう構成されてもよい。例えば、オペレーティングシステム７１３は、物理メモリ７１４におけるアドレスのコードのセグメントを実行することを試みることによって、プログラムを起動することを試みてもよい。他の例では、オペレーティングシステム７１３は、物理メモリ７１４のアドレスをリード又はライトすることを試みてもよい。物理メモリ７１４が示されているが、マイクロコードセキュリティエージェントは、バーチャルメモリにアクセスするための試行をトラップするよう構成されてもよい。他の実施例では、マイクロコードセキュリティエージェント７０８は、マイクロコードモジュール７１０などのプロセッサ７０２の他の部分からの情報の試行された通信をトラップするよう構成されてもよい。マイクロコードモジュール７１０は、命令を実行するためのプロセッサ７０２の処理を実行するよう構成されるプロセッサ７０２の他の部分を含むものであってもよい。試行された情報の通信は、システムリソース７２４からの処理の結果を含むものであってもよい。例えば、コードの処理中、ゼロによる除算演算がマイクロコードモジュール７１０によりインターセプトされ、例外７１８を生成及び通信することを試行してもよい。
【０１４９】
マイクロコード７０６は、オペレーティングシステム７１３などのシステム７００の要素から受信した上位レベルの命令を実行するためのハードウェアレベル命令を含むものであってもよい。マイクロコード７０６は、当該上位レベル命令をプロセッサ７０２により実行される回路レベル命令に変換してもよい。マイクロコード７０６は、プロセッサ７０２により実現される電子回路又はプロセッサのタイプに固有のものであってもよい。マイクロコード７０６は、プロセッサ７０２の生成に応答して、マイクロコード７０６の特定のコンテンツにより構成されてもよい。プロセッサ７０２上でマイクロコード７０６を更新又は再プログラムする能力は、限定されてもよい。マイクロコード７０６は、内部プロセッサメモリ７０４にあってもよい。内部プロセッサメモリ７０４は、メモリ７０３などのシステム７００のシステムメモリから分離した高速メモリであってもよい。一実施例では、内部プロセッサメモリ７０４は、ＲＯＭであってもよい。他の実施例では、マイクロコード７０６は、内部プロセッサメモリ７０４に含まれるプログラマブルロジックアレイにあってもよい。さらなる他の実施例では、内部プロセッサメモリ７０４は、メモリストア又は制御ストアを有するか、又は実現されてもよい。当該実施例では、内部プロセッサメモリ７０４は、ＳＲＡＭ（Ｓｔａｔｉｃ  ＲＡＭ）又はフラッシュメモリにより部分的に又は完全に実現されてもよい。当該実施例では、マイクロコード７０６は、プロセッサ７０２の初期化の一部として、メモリ７０３などの他の記憶媒体からのメモリストアにロードされるよう構成されてもよく、また、メモリストアに書き込まれたデータを介しセキュリティルールやマシーン命令などの新たな情報を受信、更新又は再インストールするよう構成されてもよい。
【０１５０】
マイクロコードセキュリティエージェント７０８は、何れの処理、コマンド、通信又は他のアクションをトラップするか決定するため、セキュリティルール７０７にアクセスするよう構成されてもよい。セキュリティルール７０７は、マイクロコード７０６又はプロセッサ７０２若しくはシステム７００の他の適切な部分内にあってもよい。セキュリティルール７０７は、マイクロコードセキュリティエージェント７０８に対するコールを行い、パラメータを介し情報をわたす他のセキュリティエージェントなど、プロセッサ７０２の外部のエンティティからのファンクションコールにより実現されてもよい。マイクロコードセキュリティエージェント７０８は、セキュリティルール７０７に通信接続されてもよい。一例では、セキュリティルール７０７は、
−アドレス（ｘ）がバーチャルメモリレンジ（Ｘ１――＞Ｘ２）又は物理メモリレンジ（Ｙ１――＞Ｙ２）のコードにより実行される場合、処理のためＯ／Ｓ下位エージェントに対するトリガイベントを生成し、
−アドレス（ｘ）が物理メモリレンジ（Ｚ１――＞Ｚ２）のコードにより実行される場合、命令をスキップし、
−Ａ、Ｂ及びＣである場合、メモリレンジ（Ｙ１――＞Ｙ２）はメモリレンジ（Ｘ１――＞Ｘ２）にアクセスし、
−メモリレンジ（Ｙ１――＞Ｙ２）及び（Ｔ１――＞Ｔ２）からのコードのみが（Ｚ１――＞Ｚ２）に書き込まれる、
などのロジックを有してもよい。
【０１５１】
マイクロコード７０６は、受信された命令のコンテクストを理解するための状態マシーンを有してもよい。当該情報は、例えば、相互のコンテクスト内で連続する処理を評価するなどの特定のセキュリティルール７０７を実行するため必要とされてもよい。当該情報は、トリガイベントと共にわたされてもよい。
【０１５２】
システム７００のＯ／Ｓ下位セキュリティエージェントの１以上がまた、Ｏ／Ｓ下位エージェント７１２において実現されてもよい。Ｏ／Ｓ下位エージェント７１２は、オペレーティングシステム７１３などの電子デバイス７０１のオペレーティングシステムのレベルの下位においてリソースのアクセスのトリガ又は当該トリガの処理を提供するのに適した何れかの方法により実現されてもよい。Ｏ／Ｓ下位エージェント７１２は、図２のＳＶＭＭ２１６又はＳＶＭＭセキュリティエージェント２１７、図４のファームウェアセキュリティエージェント４４０，４４２又はＰＣファームウェアセキュリティエージェント４４４、又は図５のファームウェアセキュリティエージェント５１６の機能の一部又はすべてを実現してもよい。Ｏ／Ｓ下位エージェント７１２は、セキュリティルール７２３に通信接続されてもよい。
【０１５３】
一実施例では、Ｏ／Ｓ下位エージェント７１２などのシステム７００のＯ／Ｓ下位セキュリティエージェントの１以上は、マイクロコードセキュリティエージェント７０８などのマイクロコードベースセキュリティエージェントにより生成されるトリガイベントを処理するよう構成されてもよい。Ｏ／Ｓ下位エージェント７１２は、図１〜２及び４〜５のＯ／Ｓ下位エージェントと同様にして、リソースへのアクセスをトラップするか、又はトリガイベントを処理するよう構成されてもよい。Ｏ／Ｓ下位エージェント７１２及びマイクロコードセキュリティエージェント７０８は、通信接続されてもよい。マイクロコードセキュリティエージェント７０８は、Ｏ／Ｓ下位エージェント７１２にトリガイベントを送信するよう構成されてもよい。Ｏ／Ｓ下位エージェント７１２は、Ｏ／Ｓ内セキュリティエージェント７１９などの他のセキュリティエージェントに通信接続されてもよく、プロテクションサーバ２０２に通信接続されてもよい。Ｏ／Ｓ下位エージェント７１２は、Ｏ／Ｓ内セキュリティエージェント７１９などの他のセキュリティエージェントからコンテクスト情報を受信するよう構成されてもよい。当該情報は、システムリソース７２４への試行されたアクセスを生成したエンティティに関する情報を提供してもよい。複数のＯ／Ｓ内セキュリティエージェント７１９がシステム７００に存在する場合、各Ｏ／Ｓ内セキュリティエージェント７１９は、トラップ、検証又はＯ／Ｓ内セキュリティエージェントに関する他のタスクの指定された部分を実行するよう構成されてもよい。当該部分は、Ｏ／Ｓ内セキュリティエージェントにより規定されてもよい。例えば、あるＯ／Ｓ内セキュリティエージェント７１９はＭＯＶ命令を検証又は調査し、他のＯ／Ｓ内セキュリティエージェント７１９はＪＭＰ命令を検証又は調査してもよい。
【０１５４】
Ｏ／Ｓ下位エージェント７１２はまた、プロテクションサーバ２０２からセキュリティルール又はジャストインタイム情報を受信するよう構成されてもよい。さらに、Ｏ／Ｓ下位エージェント７１２は、マイクロコードセキュリティエージェント７０８から受信したトリガイベントをどのように処理するか決定するため、Ｏ／Ｓ内セキュリティエージェント７１９又はプロテクションサーバ２０２などの他のセキュリティエージェントから受信したコンテクスト情報とセキュリティルール７２３などのセキュリティルールを照会するよう構成されてもよい。
【０１５５】
特定の実施例では、Ｏ／Ｓ下位エージェント７１２は、システム７００において遭遇する処理のコンテクストを理解するため、動作状態マシーンを含むものであってもよい。Ｏ／Ｓ下位エージェント７１２は、その後、コンテクストに基づきマイクロコードセキュリティエージェント７０８により実行されるのに適したアクションを決定するよう構成されてもよい。当該アクションは、訂正アクション、処理の許可、処理の拒絶又はセキュリティルールの要求の促進における他のステップの実行を含むものであってもよい。マイクロコードセキュリティエージェント７０８は、Ｏ／Ｓ下位エージェント７１２から受信されるアクションを実行するよう構成されてもよい。
【０１５６】
Ｏ／Ｓ下位エージェント７１２はまた、Ｏ／Ｓ内セキュリティエージェント７１９などの他のセキュリティエージェントにより実行されるのに適したアクションを決定するよう構成されてもよい。例えば、マイクロコードセキュリティエージェント７０８からのトリガイベントが特定のタイプのマルウェアの脅威、カーネルの特定部分又は電子デバイス７０１のユーザモードに対する脅威を示す場合、Ｏ／Ｓ下位エージェント７１２は、Ｏ／Ｓ内セキュリティエージェント７１９に訂正アクションを実行するよう命令するよう構成されてもよい。従って、Ｏ／Ｓ下位エージェント７１２は、Ｏ／Ｓ内セキュリティエージェント７１９を制御してもよい。
【０１５７】
Ｏ／Ｓ下位エージェント７１２は、マイクロコードセキュリティエージェント７０８のインスタンスを検証し、またその逆を行うよう構成されてもよい。Ｏ／Ｓ下位エージェント７１２は、セキュリティルール７０７により実現されるべきセキュリティルール７２３からのものなどのセキュリティルール、システム７００に関するステータス情報、アドミニストレータ若しくは環境設定若しくは嗜好、又はマイクロコードセキュリティエージェント７０８が処理をトラップし、トリガを生成し、当該トリガを処理し、又はそれらを他のセキュリティエージェントに送信するのに適した他の情報を共有又は設定するため、マイクロコードセキュリティエージェント７０８と通信するよう構成されてもよい。
【０１５８】
Ｏ／Ｓ下位エージェント７１２は、何れか適切な機構を介し当該情報をマイクロコードセキュリティエージェント７０８に通信するよう構成されてもよい。Ｏ／Ｓ下位エージェント７１２は、プロセッサ７０２、マイクロコード７０６又はマイクロコードセキュリティエージェント７０８のファンクションをコールし、パラメータなどの情報を当該ファンクションにわたしてもよい。当該ファンクションは、マイクロコードセキュリティエージェント７０８に当該変更をわたすよう特に生成されてもよい。例えば、物理メモリ“Ｂ”の他のレンジからのメモリから実行される何れかのエンティティからの物理メモリ“Ａ”のレンジへのアクセスを禁止するため、“Ｂａｒ＿Ｍｅｍｏｒｙ（Ａ，Ｂ）”などのファンクションが利用可能である。当該ファンクションがコールされた結果として、マイクロコードセキュリティエージェント７０８は、マイクロコード７０６内でパラメータを設定するよう構成されてもよい。当該マイクロコード命令のコールは、マイクロコードセキュリティエージェント７０８がＯ／Ｓ下位エージェント７１２のために当該マイクロコード命令をコールする前にＯ／Ｓ下位エージェント７１２を検証するよう構成されるように特権が付与されてもよい。他の例では、Ｏ／Ｓ下位エージェント７１２又はマイクロコードセキュリティエージェント７０８は、メモリストア、制御ストア又はプロセッサ若しくはマイクロコード７０６の他の書き換え可能部分にデータを書き込むことによって、当該情報を通信してもよい。
【０１５９】
プロセッサ７０２は、マイクロコードセキュリティエージェント７０８がマルウェアからシステム７００をプロテクトするために必要なすべてのトラップ及び処理を完全に実現するための限定的なリソースを有してもよい。一実施例では、マイクロコードセキュリティエージェント７０８は、プロセッサ７０２により実行されるアクションのトラップのみを実現するよう構成されてもよく、以降の処理のためシステム７００の他のセキュリティエージェント又はコンポーネントに当該トラップに関するトリガをオフロードしてもよい。マイクロコードセキュリティエージェント７０８は、リクエスト又は通信の許可又は不許可などの以上のアクションを実行するか、又は情報の報告などの他のアクションを行うようにしてもよい。他の実施例では、マイクロコードセキュリティエージェント７０８は、トリガイベントの小さな部分の処理を実現するよう構成されてもよい。当該処理に適したトリガイベントは、重要なコンテクスト情報を要求しないものを含むものであってもよい。例えば、マイクロコードセキュリティエージェント７０８は、Ｏ／Ｓ下位エージェントのインスタンスが検証されていない場合、あるレンジのメモリアドレスがすべてのリード及びライトからプロテクトされるべきであるというセキュリティルール７０７を介し情報を受信してもよい。当該セキュリティルールは、コンテンツが極めてセンシティブであるという理由により実現されてもよく、Ｏ／Ｓ下位エージェント７１２の処理の支援がない場合、メモリコンテンツにアクセスするエンティティの識別情報は特定できない。従って、Ｏ／Ｓ下位エージェントのインスタンス及び処理を検証した後、マイクロコードセキュリティエージェント７０８は、当該検証を示すビットを設定してもよい。メモリの試行されたアクセスがトリガされ、ビットがまだ設定されていない場合、マイクロコードセキュリティエージェント７０８は、メモリレンジのコンテンツのリード、ライト又は実行を不許可するよう構成されてもよい。ビットが設定された場合、マイクロコードセキュリティエージェント７０８は、メモリレンジへの試行されたアクセスをトラップし、Ｏ／Ｓ下位エージェント７１２に送信されるべきトリガイベントを生成するよう構成されてもよく、Ｏ／Ｓ下位エージェント７１２は、コール元のエンティティがメモリレンジにアクセスすることが許可されているかコンテクスト情報と他の設定とから評価する。Ｏ／Ｓ下位エージェント７１２は、おそらくアクセスを許可又は拒絶するか示す結果としてのアクションをマイクロコードセキュリティエージェント７０８に送信してもよい。
【０１６０】
トリガイベントは、試行されたアクションのソース、メソッド又はデスティネーションを特定するため利用される何れか適切な情報を有してもよい。トリガイベントは、セキュリティルールを適用するため、マイクロコードセキュリティエージェント７０８又はＯ／Ｓ下位セキュリティエージェント７１２により利用されてもよい。トリガイベントは、マイクロコードセキュリティエージェント７０８により生成されてもよい。例えば、トリガイベントは、何れのリソースがアクセスされたか、何れの命令がコールされたか、何れの命令オペランドが利用されたか、何れのメモリアドレスから当該試行又は命令が到来したか（すなわち、ソースメモリ）、何れのメモ路に処理の結果が格納されるべきであったか（すなわち、ターゲットメモリ）、何れのメモリに影響を与えるか、又は、試行されたアクションのソース、メソッド又はデスティネーションの特定を導く他の何れかの情報を正確に詳述するものであってもよい。マイクロコードセキュリティエージェント７０８はまた、アクティブ、スリープ、アイドル、ホルト及びリセットのプロセッサ状態、プロセッサ間通信及び電力消費などのプロセッサ７０２に関する情報を含むよう構成されてもよい。
【０１６１】
Ｏ／Ｓ下位エージェント７１２などの他のセキュリティエージェントは、セキュリティルール７２２を適用する際にイベントの範囲を決定するため、トリガイベントにおいて当該情報を利用するよう構成されてもよい。Ｏ／Ｓ下位エージェント７１２は、オペレーティングシステム７１３で実行されるエンティティに関する情報、プロテクションサーバ２０２における新たな情報、他のセキュリティエージェントにより検出されたマルウェア若しくは他の脅威、アドミニストレータ設定などの追加的な情報にアクセスしてもよい。例えば、物理メモリの特定のアドレスからのトラップリクエストが与えられると、Ｏ／Ｓ下位エージェント７１２は、特定のアドレスに関連するスレッド、プロセス又はアプリケーションを決定することが可能であってもよい。その後、Ｏ／Ｓ下位エージェント７１２は、当該エンティティが対象となるアクションを実行することが認められているか判断するよう構成されてもよい。Ｏ／Ｓ下位エージェント７１２は、エンティティの識別情報を決定するよう構成されてもよい。Ｏ／Ｓ下位エージェント７１２は、安全であると知られている（例えば、ホワイトリストを照会することによって）、悪意あると知られている（例えば、動作を観察するか、又は既知のマルウェアのブラックリストを照会することによって）、又は未知であるととしてエンティティを分類するよう構成されてもよい。Ｏ／Ｓ下位エージェント７１２は、未知の及び悪意あるエンティティに関する情報をプロテクションサーバ２０２に報告するよう構成されてもよい。
【０１６２】
マイクロコードセキュリティエージェント７０８は、トラップのため、他のセキュリティエージェントに利用不可な特定のプロセッサ７０２のリソース及び他のシステムリソースにアクセスしてもよい。一実施例では、マイクロコード７０６内のマイクロコードセキュリティエージェント７０８の実現は、プロセッサの外部のコール元のエンティティに対して当該リソースを限定的に明らかにすることによって生成される制限を回避してもよい。例えば、バーチャルマシーンモニタは、仮想化のためプロセッサ７０２により明らかにされたリソースに対するトラップ処理に限定されてもよい。さらなる例として、メモリに対する試行されたリード、ライト又は実行をトラップする能力を取得する。バーチャルマシーンモニタベースセキュリティエージェントは、仮想化されるのが利用可能であるときのみメモリにアクセスしてもよく、この結果、メモリページに対して試みられたリード、ライト又は実行の試行を追跡することのみ可能であってもよい。他方、マイクロコードセキュリティエージェント７０８は、特定の物理メモリアドレスへのリード、ライト又は実行リクエストをインターセプトして処理し、セキュリティルール７０７に基づき当該リクエストを評価することが可能であってもよい。より小さな粒度は、システム７００においてセキュリティ手段を提供する際のより大きなフレキシビリティを提供してもよい。特定の物理メモリアドレスに関して何れの命令が利用されたかの命令レベルアウェアネスは、何れのエンティティが何れのリソースをコールしたかシステム７００に通知し、メモリページがアクセスされたことを単に通知するものでない。このフレキシビリティは、大変価値があるかもしれない。例えば、マイクロコードセキュリティエージェント７０８は、リード、ライト又は実行の試行について２つの隣接するメモリアドレスをモニタするが、２つのメモリアドレスの何れがアクセスされたかに基づき、完全に異なるアクションをとるようにセキュリティルール７０７により指示されてもよい。ある試行が行われるメモリページへの閲覧のみによって、ルールにおける区別は適用できない。他の例では、デバッグレジスタをモニタ及び設定するためハイパーバイザによる他の方法は、システム７００と同様に、デバッグレジスタにアクセスするのに利用された命令のコンテクストを有しなかった。さらに、当該デバッグレジスタを設定又は観察するための他のいくつかのエンティティは、オペレーティングシステムのレベルの下位では実行されず、マルウェアの傾向が高いものにする。最後に、当該デバッグレジスタを設定又は観察するための他のいくつかのエンティティは、セキュリティに対して指示されておらず、セキュリティルールにアクセスし、当該アクセスを評価し、訂正アクションを実行することができない。
【０１６３】
マイクロコードセキュリティエージェント７０８により実行されるべき訂正アクションは、セキュリティルール７０７により決定されるか、又はＯ／Ｓ下位エージェント７１２から受信された何れか適切なアクションを含むものであってもよい。コマンド又は命令は、許可又は拒絶されてもよい。マイクロコードモジュール７１０から生成される情報は許可又は抑制されてもよい。当該コマンド、命令又は情報は修正されてもよい。
【０１６４】
マイクロコードセキュリティエージェント７０８は、インターラプトの生成をトラップするよう構成されてもよい。当該インターラプトは、例えば、“ＩＮＴ”命令の実行と、その後のインターラプトに関する情報をホストするのに知られる関連するレジスタをリードするなどのトラップによりトラップされてもよい。例えば、汎用レジスタは、インターラプトのコード識別子と共に、それをコールするのに利用されるパラメータとを学習するため読み出されてもよい。例えば、インターラプト１３は、ディスクインターラプトであってもよく、既知のレジスタセットは、関連するデータのセクタ及び位置と共に、インターラプトをリード又はライトとして特定してもよい。
【０１６５】
マイクロコードセキュリティエージェント７０８は、プロセッサ７０２の入力及び出力ポートに書き込まれる値をトラップするよう構成されてもよい。マイクロコードセキュリティエージェント７０８は、プロセッサ７０２により入出力デバイスに書き込まれる値をトラップするよう構成されてもよい。マイクロコードセキュリティエージェント７０８は、当該ライト又はリードを行うための命令に対してトラップするよう構成されてもよい。
【０１６６】
マイクロコードセキュリティエージェント７０８はまた、プロセッサ７０２のＡＬＵ（Ａｒｉｔｈｍｅｔｉｃ  Ｌｏｇｉｃ  Ｕｎｉｔ）の特定の処理をトラップするよう構成されてもよい。プロテクトされたハッシュアルゴリズムのステップに対応するプロセッサ上の処理系列は、ファンクションの未認証のアクセスを決定するようトラップされてもよい。いくつかの算術処理は、自らを偽装又は変身するためマルウェアにより利用される。特定の算術命令、ビット単位命令又はＭＯＶ命令はすべて、メモリページ又はアドレスレンジのコンテンツの変更を生じさせる可能性のある命令である。当該命令をトラップすることによって、コードセクション又はデータセクションに対する変更が記録されてもよい。以降の解析が、自己修正したマルウェアの一部としてコードセクション又はデータセクションが修正されたことを示す場合、トランプ及び記録された命令は、マルウェアにより利用される暗号化アルゴリズムを追跡するのに利用されてもよい。例えば、マルウェアは自らを変身するための特定のキーと共にＸＯＲファンクションを利用すると判断されてもよい。当該情報は、自己変身するマルウェアを検出するためのより良好なセキュリティルールを生じさせるものであってもよい。さらに、メモリの修正を追跡することによって、リペアロジックは、命令の適用を逆転することによって実現されてもよい。
【０１６７】
さらに、マイクロコードセキュリティエージェント７０８は、ＤＲＭ（Ｄｉｇｉｔａｌ  Ｒｉｇｈｔ  Ｍａｎａｇｅｍｅｎｔ）処理を実行するよう構成されてもよい。例えば、マイクロコードセキュリティエージェント７０８は、特定のプログラムを実行するための許可が必要であることを示すセキュリティルール７０７を受信するよう構成されてもよい。特定のプログラムは、メモリの特定のアドレスに配置されてもよい。当該許可は、例えば、マイクロコードセキュリティエージェント７０８がＯ／Ｓ下位セキュリティエージェント７１２から認証コード、キー又はバイトなどを受信するという形態をとってもよい。当該許可は、マイクロコードセキュリティエージェント７０８がメモリ上で試行されたアクセスをトラップするか、又はプログラム命令をロードし、トリガイベントを認証コード、キー又はバイトにアクセス可能なＯ／Ｓ下位セキュリティエージェント７１２に送信することによって実現されてもよい。Ｏ／Ｓ下位セキュリティエージェント７１２は、マイクロコードセキュリティエージェント７１２に当該判定を返してもよい。従って、プログラムの処理は、認証コードに基づき許可又は不許可されてもよい。
【０１６８】
さらに、マクロコードセキュリティエージェント７０８は、メモリのハッシュ又はチェックサムに基づき、メモリの特定のコードの実行を停止するよう構成されてもよい。当該ハッシュ又はチェックサムは、セキュリティルール７０７によって悪意あるとして示されてもよい。コードがメモリからロードされると、マイクロコードセキュリティエージェント７０８は、コンテンツのハッシュ又はチェックサムを実行し、それを既知の悪意あるコードのものと比較し、その後、ロードする試行を拒絶し、攻撃的なコードを排除するためのリペアファンクションをロードしてもよい。
【０１６９】
Ｏ／Ｓ下位エージェント７１２は、システム７００がマルウェアにより件戦死、疑わしい動作に遭遇し、又は危険にさらされていると判断されたことを、マイクロコードセキュリティエージェント７０６を含むシステム７００の他のセキュリティエージェントに通知するよう構成されてもよい。当該ケースでは、マイクロコードセキュリティエージェント７０６は、プロセッサ７０２の一部の処理を不可にするよう構成されてもよい。マイクロコードセキュリティエージェント７０６は、特定のシステムリソース７２４に対するリクエスト又はマイクロコードモジュール７１０から生成される通信をトラップ及び拒絶することによって、当該処理を不可にするよう構成されてもよい。プロセッサ７０２の一部は、それらがセンシティブであるか、又はマルウェアにより悪用される可能性があるため、不可にされてもよい。
【０１７０】
マイクロコードセキュリティエージェント７０６は、ロード、リード、ライト又は実行するための試行からメモリアドレス又はあるレンジのメモリアドレスをプロテクトするよう構成されてもよい。当該メモリは、センシティブなデータを有してもよく、又は制限されたファンクション、センシティブなファンクション又はプロテクトされたファンクションのための初期化ポイントであってもよい。マイクロコードセキュリティエージェント７０６は、アクセス元のソフトウェアが安全か又は無力であるという検証がないメモリへのアクセスを阻止するようにしてもよい。この場合、Ｏ／Ｓ下位エージェント７１２などのセキュリティエージェントは、おそらく当該メモリアドレスがセンシティブな情報又はプロテクトされたルーチンなどに対応してもよいため、プロテクトされる特定のメモリアドレスを特定してもよい。Ｏ／Ｓ下位エージェント７１２は、何れのアドレスがプロテクトされるべきかに関するセキュリティルール７０７などの情報をマイクロコードセキュリティエージェント７０８に送信してもよい。マイクロコードセキュリティエージェント７０８は、当該メモリアドレスに対して試行されるロード、実行、リード又はライトをトラップし、Ｏ／Ｓ下位エージェント７１２に対応するトリガイベントを送信してもよい。Ｏ／Ｓ下位エージェント７１２は、コール元のソフトウェアがセキュリティルール７２３、プロテクションサーバ２０２からの情報、ホワイトリスト又は他の何れか適切な情報ソースに従って安全であるか又は無力であるか判断してもよい。Ｏ／Ｓ下位エージェント７１２は、実現されるべきアクションをマイクロコードセキュリティエージェント７０８に返してもよい。マイクロコードセキュリティエージェント７０６は、バーチャルメモリのページ又はレンジ及び／又は物理メモリのアドレス又はレンジをプロテクトするよう構成されてもよい。マイクロコードセキュリティエージェント７０６は、バーチャルメモリページ、位置又はアドレスを物理メモリの位置又はアドレスに変換するよう構成されてもよい。従って、トラップすべきバーチャルメモリ位置又は試行の発信元のバーチャルメモリ位置が与えられると、マイクロコードセキュリティエージェント７０６は、対応する物理メモリの位置を決定するよう構成されてもよく、またその逆を行うよう構成されてもよい。
【０１７１】
さらに、マイクロコードセキュリティエージェント７０８は、センシティブコードのアクセスをプロテクトするよう構成されてもよい。一実施例では、マイクロコードセキュリティエージェント７０８は、メモリに格納されるときのコードの開始位置を示す特定のアドレスのアクセスをモニタすることによって、上述されたような方法によりセンシティブコードのアクセスをプロテクトするよう構成されてもよい。他の実施例では、マイクロコードセキュリティエージェント７０８は、プロセッサ３０４の処理をセンシティブデータ又はコードの中間に移動する“ＪＭＰ”又は同様のブランチ命令をモニタするよう構成されてもよい。この場合、マイクロコードセキュリティエージェント７０８は、センシティブなメモリレンジと共に“ＪＭＰ”命令の実行をトラップするよう構成されてもよい。マイクロコードセキュリティエージェント７０８は、“ＪＭＰ”命令の発信元を解析するよう構成されてもよい。マイクロコードセキュリティエージェント７０８は、Ｏ／Ｓ下位エージェント７１２により処理されるトラップされた“ＪＭＰ”の試行された実行に対応するトリガイベントを生成するよう構成されてもよい。Ｏ／Ｓ下位エージェント７１２は、“ＪＭＰ”命令の発信元と、“ＪＭＰ”命令が発信されたメモリが対象となるメモリにアクセスすることが許可されているかとを考慮するよう構成されてもよい。
【０１７２】
マイクロコードセキュリティエージェント７０８自体又はそのトラップ機能はまた、システム７００の他の部分によりイネーブル又は不可とされるよう構成されてもよい。このような能力は、トラップ及び処理イベントがコストがかかり、システムパフォーマンスに不利である場合に有用であるかもしれない。当該イネーブル又は不可は、特にセンシティブなプログラム若しくはデータの利用、マルウェアの脅威の検出、管理上の嗜好又は他の何れか適切な理由に基づくものであってもよい。一実施例では、マイクロコードセキュリティエージェント７０６は、セキュリティ処理及びトラップを開始するため、ＭＳＡＯｎ信号、ＶＭＸＯｎ信号又は他の命令をＯ／Ｓ下位エージェント７１２から受信するよう構成されてもよい。マイクロコードセキュリティエージェント７０８は、セキュリティ処理及びトラップを停止するため、ＭＳＡＯｆｆ信号、“ＶＭＷｒｉｔｅ  ＶＭＸＯｆｆ”信号又は他の命令を受信してもよい。セキュリティ処理及びトラップを開始又は停止する前に、マイクロコードセキュリティエージェント７０８は、リクエストを行ったセキュリティエージェントの識別情報とインスタンスとを検証してもよい。
【０１７３】
さらに、マイクロコードセキュリティエージェント７０８は、プロセッサ７０２と電子デバイス７０１の他のプロセッサとの間のプロセッサ間のメッセージ及びコマンドをインターセプトするよう構成されてもよい。当該プロセッサ間のコマンドは、適切なマイクロコードモジュール７１０により受信されてよく、又は特定のシステムリソース７２４にアクセスする電子デバイス７１０のエンティティにより試行されてもよい。一実施例では、プロセッサ間のコマンドは、マシーン状態レジスタを介しオペレーティングシステム７１３のプロセッサ７０２にアクセスするソフトウェアから送信されてもよい。マルウェアは、例えば、プロセッサをスイッチオフするか、又はそれらをスリープモードに移行させるなどのため、メッセージを送信することを試みてもよい。マイクロコードセキュリティエージェント７０８は、例えば、プロセッサ間コマンドに対応するＭＳＲレジスタなどへの試行されたライトにトラップするよう構成されてもよい。トラップされたコマンドのトリガイベントは、当該試行のソースを検証するための処理のために、Ｏ／Ｓ下位エージェント７１２に送信されてもよい。
【０１７４】
マイクロコードセキュリティエージェント７０８は、ソフトウェアインタラプト７２２などのプロセッサからのメッセージの生成及び通信をインターセプトするよう構成されてもよい。マイクロコードセキュリティエージェント７０８は、許可されたソフトウェアのみによりアクセス可能とされるように、インタラプトの実行を制御するよう構成されてもよい。例えば、既知の識別情報のないドライバ（ハッシュにより判断され、メモリのドライバのソースなど）又は悪意あるアイデンティティは、ソフトウェアインターラプトを実行することが許可されない。マイクロコードセキュリティエージェント７０８は、インタラプトのアクセスをトラップし、トリガイベントを処理のためＯ／Ｓ下位エージェント７１２にわたしてもよい。
【０１７５】
他の例では、マイクロコードセキュリティエージェント７０８は、プロセッサ７０２による例外７１８の生成をトラップするよう構成されてもよい。例外は、例えば、ゼロによる除算演算、ページフォルト及びデバッグ信号などを含むものであってもよい。これらを含むメモリアドレスへのリードアクセスは、マイクロコードセキュリティエージェント７０８によりトラップされ、Ｏ／Ｓ下位エージェント７１２により処理されてもよい。
【０１７６】
マイクロコードセキュリティエージェント７０８は、プロセッサ７０２の各種データ構造をプロテクトするよう構成されてもよい。例えば、マルウェアは、Ｉｎｔｅｒｒｕｐｔ  Ｄｅｓｃｒｉｐｔｏｒ  Ｔａｂｌｅ（ＩＤＴ）をプロテクトするよう構成されてもよい。一実施例では、マイクロコードセキュリティエージェント７０８は、ＩＤＴ自体を含むメモリ位置へのライトアクセス試行をトラップしてもよい。他の実施例では、マイクロコードセキュリティエージェント７０８は、“ＬＯＡＤ  ＩＤＴ”及び“ＳＴＯＲＥ  ＩＤＴ”などのＩＤＴを変更するためのファンクションが格納されるメモリ位置をプロテクトしてもよい。他の例では、マイクロコードセキュリティエージェント７０８は、ＥＦＬＡＢＳ若しくは同様のデータ構造又はインタラプトハンドラに関するフラグをプロテクトするよう構成されてもよい。マルウェアは、未認証のソースによる当該リソースの変更を開始インタラプトハンドラの処理を妨害することを試みるかもしれない。
【０１７７】
マイクロコードセキュリティエージェント７０８は特定タイプのプロセッサの特定のインスタンスに固有のものであってもよいが、異なる回路構成が異なるマイクロコード命令を必要とするため、セキュリティルール７０７のセットは、所与の命令セットを利用してすべてのプロセッサに対して有効とされてもよい。これは、マイクロコードセキュリティエージェント７０８が、同一の命令セットを実現する異なるプロセッサ間で変更されない特定の命令をトラップするため可能であるかもしれず、回路は関連するリソースが変化し、回路に依存するかもしれない。例えば、メインディスクトップＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）及び埋め込みシステムＣＰＵは共に、同一メーカーからのＩＳＡプロセッサであってもよく、セキュリティルール７０７は、２つのタイプのプロセッサの間で少なくとも部分的に共有されてもよい。他方、グラフィックプロセッサ上のグラフィック処理ユニット又は異なる命令セットを備えた自動車埋め込みプロセッサは、セキュリティルール７０７を共有できなくてもよい。
【０１７８】
動作について、マイクロコードセキュリティエージェント７０８は、電子デバイス７０１のプロセッサ７０２において実行され、Ｏ／Ｓ下位エージェント７１２は、電子デバイス１０４のオペレーティングシステムのレベルより下位で実行されてもよい。マイクロコードセキュリティエージェント７０８とＯ／Ｓ下位エージェント７１２とは、相互認証してもよい。マイクロコードセキュリティエージェント７０８は、システムリソース７２４へのアクセスと、マイクロコードモジュール７１０により生成される出力又は通信とのトラップを開始してもよい。マイクロコードセキュリティエージェント７０８は、Ｏ／Ｓ下位エージェント７１２からの要求に応答して、セキュリティルール７０７に応答して又はプロセッサ７０２のスタートアップに応答して開始されてもよい。Ｏ／Ｓ下位エージェント７１２は、システム７００における発生、アドミニストレータ若しくはシステム設定又はトリガされたセキュリティルール７２３のため、マイクロコードセキュリティエージェント７０８にセキュリティイネーブルリクエストを送信してもよい。当該リクエストは、例えば、特定のプログラムが実行されるべきである、センシティブデータがアクセスされるべきである、又はマルウェアの脅威がシステム７００の何れかにおいて検出されたため、生成されてもよい。Ｏ／Ｓ内セキュリティエージェント７１９及び／又はＯ／Ｓ下位システムエージェント７１２は、マイクロコードセキュリティエージェント７０８に対して自らを認証してもよい。自己認証のため、Ｏ／Ｓ内セキュリティエージェント７１９及び／又はＯ／Ｓ下位システムエージェントは、認証プロセスを開始するため、プロセッサ７０２により提供される特権命令をコールしてもよい。当該コールは、マイクロコードセキュリティエージェント７０８に、Ｏ／Ｓ内セキュリティエージェント７１９及び／又はＯ／Ｓ下位システムエージェント７１２などをシグネチャ又はハッシュにより評価及び認証させるようにしてもよい。
【０１７９】
マイクロコードセキュリティエージェント７０８は、Ｏ／Ｓ下位エージェント７１２からセキュリティルール７０７を受信してもよい。マイクロコードセキュリティエージェント７０８は、ファンクションコールによって、又はメモリストアなどの共有メモリへのライトによって更新されてもよい。マイクロコードセキュリティエージェント７０８は、特定の命令、当該命令に対するオペランド、ターゲットアドレス、ソースアドレス又はこれらの何れかの組み合わせをトラップするよう構成されるマイクロコード７０６の制御構造に対して、セキュリティルール７０７に基づくフラグを適用してもよい。マイクロコードセキュリティエージェント７０８は、オペレーティングシステム７１３、アプリケーション７１０又はドライバ７１１などのプロセッサの上位で実行されるエンティティによるシステムリソースの試行されたアクセスをトラップしてもよい。マイクロコードセキュリティエージェント７０８の処理は、当該エンティティにトランスペアレントであってもよい。マイクロコードセキュリティエージェント７０８は、他のマイクロコードモジュール７１０のインスタンスからの出力など、情報をの生成をトラップしてもよい。当該マイクロコードモジュール７１０は、プロセッサ７０２について各種タスクを実行するよう構成されるマイクロコードの他の部分を含むものであってもよい。例えば、マイクロコードモジュール７１０の一部は、プロセッサ
の例外又はインタラプトが生成されるべき時点、入出力データをどのようにルーティングするか。又は数学演算をどのように実行するかを検出するようにしてもよい。マイクロコードセキュリティエージェント７０８の処理は、当該モジュールにトランスペアレントであってもよい。マイクロコードセキュリティエージェント７０８は、状態マシーンを利用して、観察された以前にイベントに基づき特定のトラップを実行してもよい。
【０１８０】
リスースへのアクセス又は情報の生成をトラップすると、マイクロコードセキュリティエージェント７０８は、トラップに関するトリガイベントを生成してもよい。当該トリガイベントは、トラップされる命令、利用されるパラメータ、発信元のメモリ位置及びターゲットメモリ位置などのコンテクスト情報を含む、トラップに関する情報を含むものであってもよい。
【０１８１】
一実施例では、マイクロコードセキュリティエージェント７０８は、トリガイベントを処理してもよい。他の実施例では、マイクロコードセキュリティエージェント７０８は、トリガイベントをＯ／Ｓ下位エージェント７１２又は処理用の他のセキュリティエージェントにわたしてもよい。マイクロコードセキュリティエージェント７０８は、トリガイベントを処理するか否か、及びどのように処理するかを決定するため、又はトリガイベントをＯ／Ｓ下位エージェント７１２にわたすたけセキュリティルール７０７を照会してもよい。マイクロコードセキュリティエージェント７０８は、Ｏ／Ｓ下位エージェント７１２からのリプライを待機してもよいし、又はフォローアップがセキュリティルール７０７により要求されない場合、トラップアクションを許可してもよい。マイクロコードセキュリティエージェント７０８は、命令の許可又は拒絶、又は実行される値又はパラメータの置換など、セキュリティルール７０７に基づき訂正アクションを実行してもよい。
【０１８２】
Ｏ／Ｓ下位エージェント７１２は、マイクロコードセキュリティエージェント７０８からトリガイベントを受信してもよい。Ｏ／Ｓ下位エージェント７１２は、トリガイベントに基づき実行するのに適したアクションを決定するため、セキュリティルール７２３などのセキュリティルールを照会してもよい。Ｏ／Ｓ下位エージェント７１２は、マイクロコードセキュリティえーじぇント７０８からのトリガイベント情報、Ｏ／Ｓ内セキュリティエージェント７１９からのコンテクスト情報、プロテクションサーバ２０２からの情報、他のセキュリティエージェントからの判定結果、アドミニストレータ設定、時間又は実行されるべき適切なアクションを決定するための他の情報を利用してもよい。Ｏ／Ｓ内エージェント７１２は、Ｏ／Ｓ内セキュリティエージェント７１９及び／又はマイクロコードセキュリティエージェント７０８に実行されるべきアクションを送信してもよい。Ｏ／Ｓ下位エージェント７１２は、トリガイベント及び結果のアクションに関する情報をプロテクションサーバ２０２に送信してもよい。
【０１８３】
マイクロコードセキュリティエージェント７０８は、Ｏ／Ｓ下位エージェント７１２などの他のセキュリティエージェントから実行されるアクションを受信してもよい。マイクロコードセキュリティエージェント７０８は、命令の許可若しくは拒絶又は実行される値若しくはパラメータの置換などの受信したアクションを実行してもよい。
【０１８４】
図８は、マルウェアから電子デバイスのマイクロコードベースのパーソナル化及びコンフィギュラブルなプロテクションのための方法８００の実施例である。ステップ８０５において、マイクロコードセキュリティエージェントのインスタンスが検証されてもよい。ステップ８１０において、他のセキュリティエージェントのインスタンスが検証されてもよい。当該セキュリティエージェントは、Ｏ／Ｓ下位セキュリティエージェントを含むものであってもよい。ステップＳ８１５において、プロセッサ内でマイクロコードレベルでトラップするための１以上のセキュリティルールが取得、送信又は受信されてもよい。当該セキュリティルールは、例えば、ファンクションコールなどによって、又は共有メモリスペースへのパラメータの書き込みによって通信されてもよい。ステップ８２０において、マイクロコードレベルのリソースのセキュリティトラップが開始されてもよい。一実施例では、当該開始は、セキュリティトラップを開始するための信号の受信から行われてもよい。当該実施例では、システムに対する悪意ある攻撃が検出されたため、又はセンシティブデータがシステムに存在する可能性があるため、信号が受信されてもよい。他の実施例では、当該開始は、プロセッサのスタートアップから行われてもよい。
【０１８５】
ステップ８２５において、トラップ対象の処理に対応するフラグが、マイクロコードに設定されてもよい。当該フラグは、特定の命令、当該命令に対するオペランド、ターゲットアドレス、ソースアドレス又はこれらの何れかの組み合わせに対応するものであってもよい。当該フラグは、受信されたセキュリティルールにより規定されてもよい。ステップ８３０において、実行対象の命令が受信され、トラップフラグと比較される。ステップ８３５において、マイクロコードにより生成及び送信される情報が受信され、トラップフラグと比較されてもよい。ステップ８３０及び８３５は、これらのステップが繰り返される状態マシーンにより実現されてもよく、複数のステップの繰り返しからの結果が記憶され、フラグ又はセキュリティルールに対して一緒に比較されてもよい。
【０１８６】
ステップ８４０において、命令又は情報がトラップされたか判断されてもよい。何もトラップされなかった場合、本方法は、ステップ８３０及び８３５において命令及び生成された情報のモニタリングに戻ってもよい。トラップされるものがある場合、ステップ８４５において、トラップに関するトリガイベントが生成されてもよい。当該トリガイベントは、トラップされる命令、使用されるパラメータ、発信元のメモリ位置及びターゲットメモリ位置などのコンテクスト情報を含む、トラップに関する情報を含むものであってもよい。
【０１８７】
ステップ８５０において、トリガイベントがマイクロコード内で処理されるべきか、又はマイクロコード外のセキュリティエージェントがトリガイベントを処理すべきか判断されてもよい。トリガイベントがマイクロコード内で処理されるべきである場合、ステップ８５５において、トリガイベントに適したアクションが実行されてもよい。当該アクションは、セキュリティルールを照会することによって規定されてもよい。当該アクションは、実行対象の命令又は送信対象の情報の許可、命令又は通信の拒絶、メモリ又はパラメータの値の置換、又は他の何れかの要求される訂正アクションを含むものであってもよい。方法８００は、その後、ステップ８３０及び８３５におけるセキュリティのモニタを継続してもよい。
【０１８８】
トリガイベントがマイクロコードの外部で処理されるべきである場合、ステップ８６０において、トリガイベントは、当該トリガイベントを処理するためのセキュリティエージェントに送信されてもよい。ステップ８６５において、トリガイベントに関する追加的な情報が収集されてもよい。当該情報は、設定、嗜好、コンテクスト情報又はマルウェア状態を含むものであってもよい。当該情報は、トリガイベントにセキュリティルールを適用するため、ステップ８７０において利用されてもよい。当該アプリケーションは、トリガイベントに関して実行されるべき手順を生成してもよい。ステップ８７５において、当該手順が規定され、規定されたアクションを実現する各種セキュリティエージェントに送信されてもよい。当該アクションは、処理若しくは通信が実行されることの許可、プロテクションサーバへのイベントの報告又は他の何れか適した結果などの訂正アクションを含むものであってもよい。ステップ８８０において、ステップ８７５において規定されたアクションが実行されてもよい。本方法８００は、その後、ステップ８３０及び８３５におけるセキュリティのモニタを継続してもよい。
【０１８９】
図９は、電子デバイス９０１上のセキュリティセンシティブなプロセッサリソースへのソフトウェアアクセスを規制するシステム９００の実施例である。システム９００は、オペレーティングシステム９１３などの電子デバイス９０１のオペレーティングシステムにおいて実行されるソフトウェアベースエンティティから、プロセッサリソース９２４にアクセスする悪意ある試みを検出するため電子デバイス９０１上で実行されるよう構成されるＯ／Ｓ下位トラップエージェント９２０及びトリガイベントハンドラ９２２を有してもよい。さらに、Ｏ／Ｓ下位トラップエージェント９２０及びトリガイベントハンドラ９２２は、トラップすべき嗜好された処理又は情報の生成と、トラップされる処理又は情報に対応して生成されるトリガイベントをどのように処理するかとを決定するため、１以上のセキュリティルール９０８を利用するよう構成されてもよい。Ｏ／Ｓ下位トラップエージェント９２０及びトリガイベントハンドラ９２２は、許可、拒絶又はトリガイベントの他の訂正アクションを実行するよう構成されてもよい。
【０１９０】
電子デバイス９０１は、図１の電子デバイス１０３、図２の電子デバイス２０４、図４の電子デバイス４０４、図７の電子デバイス７０１及び／又はこれらの何れかの組み合わせの機能を実現するよう全体的又は部分的に構成されてもよい。電子デバイス９０１は、メモリ９０３に接続される１以上のプロセッサ９０２を有してもよい。プロセッサ９０２は、図２のプロセッサ２０８、図４のプロセッサ４０８、図７のプロセッサ７０２又はこれらの何れかの組み合わせの機能を実現するよう全体的又は部分的に構成されてもよい。メモリ９０３は、図２のメモリ２０６、図４のメモリ４０６、図７のメモリ７０３及び／又はこれらの何れかの組み合わせの機能を実現するよう全体的又は部分的に構成されてもよい。電子デバイス９０１は、１以上のセキュリティルール９２１に接続されるＯ／Ｓ内セキュリティエージェント９１９を有するオペレーティングシステム９１３を有してもよい。オペレーティングシステム９１３は、図１のオペレーティングシステム１１２、図２のオペレーティングシステム２１２、図４のオペレーティングシステム４１２、図７のオペレーティングシステム７１３及び／又はこれらの何れかの組み合わせの機能を実現するよう全体的又は部分的に構成されてもよい。Ｏ／Ｓ内セキュリティエージェント９１９は、図１のＯ／Ｓ内セキュリティエージェント２１８、図４のＯ／Ｓ内セキュリティエージェント４１８、図７のＯ／Ｓ内セキュリティエージェント７１９又はこれらの何れか適切な組み合わせを実現するよう全体的又は部分的に構成されてもよい。
【０１９１】
Ｏ／Ｓ下位トラップエージェント９２０は、図１のＯ／Ｓ下位トラップエージェント１０４、図２のＳＶＭＭ２１６、図４のファームウェアセキュリティエージェント４４０，４４２又はＰＣファームウェアセキュリティエージェント４４４、図５のファームウェアセキュリティエージェント５１６、図７のマイクロコードセキュリティエージェント７０８及び／又はこれらの何れかの組み合わせの機能を実現するよう構成されてもよい。トリガイベントハンドラ９２２は、図１のトリガイベントハンドラ１０８、図２のＳＶＭＭセキュリティエージェント２１７、図４のＯ／Ｓ下位エージェント４５０、図７のＯ／Ｓ下位エージェント７１２及び／又はこれらの何れかの組み合わせを実現するよう構成されてもよい。各種実施例では、Ｏ／Ｓ下位トラップエージェント９２０の機能の一部は、トリガイベントハンドラ９２２により実現されてもよく、又はトリガイベントハンドラ９２２の機能の一部は、Ｏ／Ｓ下位トラップエージェント９２０により実現されてもよい。さらに、Ｏ／Ｓ下位トラップエージェント９２０及びトリガイベントハンドラ９２２は、同一のソフトウェアモジュールにより実現されてもよい。
【０１９２】
セキュリティルール９０８は、図１のセキュリティルール１１４、図２のセキュリティルール２２２、図４のセキュリティルール４３４、４３６、４３８、図５のセキュリティルール５１８、図７のセキュリティルール７０７、７２３、及び／又はこれらの何れかの組み合わせの機能を実現するよう構成されてもよい。セキュリティルール９２１は、図２のセキュリティルール２２０、図４のセキュリティルール４２０、図７のセキュリティルール７２１及び／又はこれらの何れかの組み合わせの機能を実現するよう構成されてもよい。
【０１９３】
Ｏ／Ｓ下位トラップエージェント９２０は、プロセッサリソース９２４などの何れか適切なリソースとの間のアクセス又は情報をインターセプトするよう構成されてもよい。例えば、プロセッサリソース９２４は、図１のリソース１０６、図２のシステムリソース２１４、図４のディスプレイ４２４及びストレージ４２６などのコンポーネントの一部、又は図７のシステムソースの機能を実現するよう構成されてもよい。プロセッサ９２４は、プロセッサが命令をロード及び実行することを可能にするため、プロセッサ９０２などのプロセッサに利用可能なリソースを有してもよい。当該リソースは、例えば、データレジスタ９２８、制御レジスタ９３０、キャッシュ９３４、プロセッサフラグ９３６、プロセッサコア９３８、プロセッサ例外９４０、又はプロセッサインタラプト９４２などを含む物であってもよい。当該リソースの試行されたアクセスは、オペランドを有するアセンブリ言語命令などの命令を含むものであってもよい。トラップが利用可能なプロセッサリソース９２４は、プロセッサ９０２により明らかにされるリソースに依存してもよい。例えば、Ｏ／Ｓ下位トラップエージェント９２０がバーチャルマシーンモニタにより実現される場合、Ｏ／Ｓ下位トラップエージェント９２０がトラップするのに利用可能なプロセッサリソース９２４は、仮想化の目的のため、プロセッサ９０２により明らかにされたプロセッサリソース９２４に限定されてもよい。この場合、プロセッサ９０２は、プロセッサリソース９２４の一部についての仮想化拡張を含む物であってもよい。他の例では、Ｏ／Ｓ下位トラップエージェント９２０がマイクロコードセキュリティエージェントにより実現される場合、プロセッサ９０２は、プロセッサ９０２のほぼすべてのリソースをトラップに利用可能にしてもよい。
【０１９４】
Ｏ／Ｓ下位トラップエージェント９２０は、プロセッサリソース制御構造（ＰＲＣＳ）９２６を有してもよい。ＰＲＣＳ９２６は、レコード、データ構造、テーブル又は他の何れか適切な構造により実現されてもよい。ＰＲＣＳ９２６は、何れの命令、情報又はプロセッサリソース９２４の試行されたアクセスがトラップされるべきか規定する情報を有してもよい。Ｏ／Ｓ下位トラップエージェント９２０又はトリガイベントハンドラ９２２は、トラップされるセンシティブな処理、情報又はリソースに対応するＰＲＣＳ９２６のフラグを設定するよう構成されてもよい。Ｏ／Ｓ下位トラップエージェント９２０又はトリガイベントハンドラ９２２は、セキュリティルール９０８に含まれる情報に従ってＰＲＣＳ９２６のフラグを設定するよう構成されてもよい。
【０１９５】
図１０は、ＰＲＣＳ１００の実施例である。ＰＲＣＳ１０００は、図９のＰＲＣＳ９２６の実施例であってもよい。ＰＲＣＳ１０００は、トラップされる各種プロセッサリソースのエントリ１０１４のテーブルを含むものであってもよい。各エントリは、トリガイベントを生じさせるリソース及び条件を特定した１以上のフィールド１００４、１００６、１００８、１０１０、１０１２を有してもよい。例えば、ＰＲＣＳ１０００は、トリガフラグ１００２、リソースの識別子１００４、リソースに関するタイプ１００６、トリガタイプ１００８、イベントをトリガすべき時期に関するトリガ時期条件１０１０、及びイベントをトリガする実行段階１０１２のフィールドを有してもよい。ＰＲＣＳ１０００の実現形態は、プロセッサ９０２により明らかにされるリソース又はアーキテクチャ（ＩＳＡ（Ｉｎｄｕｓｔｒｙ  Ｓｔａｎｄａｒｄ  Ａｒｃｈｉｔｅｃｔｕｒｅなど）を含む、特定されるリソースを有するプロセッサの性質に依存してもよい。
【０１９６】
トリガフラグ１００２は、関連するエントリ１０１４のトラップ及びトリガがオン又はオフされるかの指示を含むものであってもよい。当該フラグは、トラップ条件がエントリ１０１４としてＰＲＣＳ１０００にロードされることを可能にするが、依然として休眠状態に維持される。従って、ＰＲＣＳ１０００は、それらをアクティブに強制することなく、セキュリティルールの実施例によりロードされてもよい。トリガフラグ１００２は、図９のＯ／Ｓ下位トラップエージェント９２０などのエンティティにより設定されるよう構成されてもよい。当該処理は、特定のリソース又は条件に対するトラップがイネーブル又は非イネーブルされる毎に、ＰＲＣＳ１０００に投入又は非投入されることを要求するシステムと対照的に、ＰＲＣＳ１０００を用いたアンチマルウェアシステムがより迅速に動作することを可能にするものであってもよい。エントリ１０１４をオン及びオフする能力は、アンチマルウェアシステムが特定の処理を選択的にトラップすることを可能にするものであってもよい。当該選択は、特定のトラップ処理が時間又は実行に関してコストがかかる場合に効果的であり、このため、エントリ１０１４が特定の条件が検出されたときに限ってイネーブルとされる。例えば、システムが特定のレジスタに多数回通常の書き込みを行う場合、当該レジスタへのアクセスに対するトラップは、アンチマルウェアシステムの他の部分がマルウェア感染の可能性を示す疑わしい動作を検出するまでオフされてもよい。この場合、レジスタのライトに対応するエントリ１０１４のトリガフラグ１００２は、リソースを攻撃するための何れか追加的な悪意ある試みをキャッチするため、“ＯＮ”に設定されてもよい。
【０１９７】
リソース識別子１００４は、トラップされるプロセッサの特定のリソースの識別情報を含むものであってもよい。例えば、識別子１００４は、リソースが特定のデータレジスタなどのレジスタ、ＥＡＸなどのアドレスレジスタ、スタックレジスタ、制御レジスタ、ベクトルレジスタ、ＥＳＰなどのスタックポインタ、命令レジスタ、プログラムカウンタ、命令レジスタ、プログラムステータスワード、コンスタントレジスタ、浮動小数点レジスタ又は条件付きレジスタであることを示すものであってもよい。他の例として、識別子１００４は、リソースが“ＪＭＰ”、“ＪＺ”（条件がゼロに等しい場合にジャンプする）、“ＪＮＺ”（条件がゼロに等しくない場合にジャンプする）、“ＭＯＶ”（値の移動）、又は“ＳｙｓＥｎｔｅｒ”（Ｒｉｎｇ０手順へのファーストコール）などの命令であることを特定するものであってもよい。さらなる他の例として、識別子１００４は、変換ルックアサイドバッファなどのキャッシュ、タイムスタンプなどのカウンタ、システムのプロセッサ０、プロセッサ１、．．．、プロセッサＮなどの論理コア、“ＤＩＶ／０”などのプロセッサ例外、又はプロセッサ間インタラプト若しくは他のグローバル変数などのインタラプトなどの他のリソースの１つであることを特定するものであってもよい。リソース識別子１００４は、リソース識別子１００４により表される命令、レジスタ又は他のリソースのアドレスの表現に変換されてもよい。リソースタイプ１００６は、エントリ１０１４が含むリソースのクラス又はタイプの識別情報を含むものであってもよい。ＰＲＣＳ１０００のいくつかのエントリは、特定のタイプのすべてのリソースに適用されてもよい。
【０１９８】
トリガタイプ１００８は、結果としてのトリガイベントの処理が同期的又は非同期的であるかの特定を含むものであってもよい。同期的トリガは、トラップされたリソースの実行又は通信が、例えば、試行がマルウェアを示すか判断されるまで停止させるものであってもよい。非同期的トリガは、例えば、トリガが以降の評価のため記録される間、トラップされたリソースの実行又は通信が継続されることを可能にするものであってもよい。一実施例では、非同期的にトリガされるリソースの試行されたアクセスは、より大きなアクション系列の評価を構築するのに利用されてもよく、当該アクション系列の適切な評価は、判定が可能になる前に複数のデータポイントを要求するものであってもよい。例えば、命令ポインタレジスタの特定のリードがそれ自体悪意のないものであるが、返される情報の以降の利用は悪意あるものであるかもしれない。従って、状態マシーンはまず、命令ポインタレジスタのリードを最初に非同期的にトラップし、その後に他の命令においてそれの使用を同期的にトラップするのに利用されてもよい。
【０１９９】
トリガ時期条件１０１０は、リソースのアクセスに基づきトリガイベントが生成される論理ルール又は条件を含むものであってもよい。例えば、トリガイベントは、リソースがライト又はリードされると、レジスタに対して生成されてもよい。トリガイベントは、命令が実行されると、“ＪＭＰ”などの命令に対して生成されてもよい。トリガイベントは、キャッシュが無効にされると、変換ルックアサイドバッファなどのキャッシュについて生成されてもよい。トリガイベントは、コアがアイドルであるときなど、プロセッサの状態に応じてプロセッサコアについて生成されてもよい。プロセッサ例外又はプロセッサフラグは、フラグ又は例外が設定又はライとされると、トリガされてもよい。トリガ時期条件１０１０は、単一のリソースに対する複数の条件（値のレンジなど）、複数のリソースに対する条件（複数のエントリ１０１４において結び付けられる）又は双方の組み合わせなどの復号化的な論理条件を有してもよい。
【０２００】
トリガ時期条件１０１０は、トラップされるべきリソースのタイプに従って条件を含むものであってもよい。例えば、レジスタは、それがライトされると、特定の値によりライトされると、又はリードされるとトリガされてもよい。他の例では、キャッシュ又はポインタは、それはライトされると、特定の値によりライトされると、又はリードされると同様にトリガされてもよい。さらなる他の例では、プロセッサコアに停止、スリープ又はアクティブ化するよう指示するのに利用されるものなどのプロセッサ間インタラプトは、当該インタラプトが送信される前（インタラプトテーブルのグローバルなスペースの試行されたアクセスに応答して）、又はインタラプトが送信された後（インタラプトテーブルが書き込まれた後）、トリガされてもよい。
【０２０１】
トリガ実行段階１０１２は、命令の実行の何れの段階で試行されたアクセスがトラップされ、トリガイベントが生成されるかの指示を含むものであってもよい。トリガ実行段階１０１２は、所与のリソースをトラップするための追加的な要求として、トリガ時期条件１０１０に関して利用されてもよい。所与のエントリをトラップするため、トリガ時期条件１０１０は、関連する命令がトリガ実行段階１０１２に指定された実行段階に到達すると評価されてもよい。トリガ実行段階１０１２は、例えば、プロセッサによる実行の５つの段階又はステップなどに対応するエントリを含むものであってもよい。一実施例では、命令の実行の５つの段階は、１）命令のフェッチ、２）命令の復号化、３）実行、４）結果のメモリ位置のアクセス、及び５）リターン値のメモリ、レジスタ又は他の位置への書き込みを含むものであってもよい。当該実施例では、トリガ実行段階１０１２は、５つの段階の何れの前後においてトリガする可能性を有してもよい。これは、フェッチ前、復号化後（従って実行前）、実行後（従ってメモリ位置へのアクセス前）、メモリ位置へのアクセス後（従ってリターン値の書き込み前）、及びリターン値の書き込み後の合計で異なる６つのトリガオプションを提供する。実行段階に基づきトラップすることを可能にすることは、他のアンチマルウェアシステムにおいて利用不可な有意なフレキシビリティを提供するものであってもよい。例えば、特定の命令を実行する結果は予め知られておらず、アンチマルウェアシステムは、結果のメモリ位置へのアクセス後であるが、命令により指示されるようなレジスタへのリターン値の書き込み前となるように、トリガ実行段階１０１２の値を設定してもよい。これは、アンチマルウェアシステムが書き込みの許可なしに処理結果を評価することを可能にするものであってもよい。結果が悪意ある処理を示す場合、ダミー値が、第４の実行段階から返される値の代わりにレジスタに書き込まれてもよい。試行された実行に関する情報は、当該試行が悪意あるか否かを判断するのに役立つように、試行された実行に基づきトリガイベントのハンドラに提供されてもよい。
【０２０２】
ＰＲＣＳ１０００の各リソース１００４は、リソース１００４のアクセスと他のリソース１００４との組み合わせに対応する複数のエントリを有してもよい。当該アクセスの組み合わせは、２以上のステップのプロセスがトラップされることを含むものであってもよい。例えば、エントリ１０１４は、ａ）制御レジスタのアクセスに関してＩＤＴ（Ｉｎｔｅｒｒｕｐｔ  Ｄｅｓｃｒｉｐｔｏｒ  Ｔａｂｌｅ）に対応するメモリ位置のアクセスと、ｂ）汎用レジスタのアクセスに関してＩＤＴに対応するメモリ位置のアクセスとについて、別々のエントリを含むものであってもよい。さらに、図９において、当該別々のエントリは、システム９００の別々の部分により処理されてもよい。例えば、特定のＯ／Ｓ内トラップエージェント９１９は、トラップされるＩＤＴ汎用レジスタアクセスについてコンテクスト情報を収集することを処理し、他のＯ／Ｓ内トラップエージェント９１９は、トラップされるＩＤＴ制御レジスタアクセスについてコンテクスト情報を収集することを処理するものであってもよい。
【０２０３】
図９を参照して、Ｏ／Ｓ下位トラップエージェント９２０は、ＰＲＣＳ９２６においてフラグを設定し、又はエントリを追加するよう構成されてもよい。Ｏ／Ｓ下位トラップエージェント９２０は、当該フラグ又はエントリを決定するため、セキュリティルール９０８などの１以上のセキュリティルールにアクセスするよう構成されてもよい。一実施例では、Ｏ／Ｓ下位トラップエージェント９２０は、セキュリティルール９０８又はプロテクションサーバ２０２への照会後にＯ／Ｓ下位トラップエージェント９２０をコールしうるトリガイベントハンドラ９２２から、当該フラグ又はエントリを設定するための命令を受信するよう構成されてもよい。特定の特権ルーチンセットが、ＰＲＣＳ９２６へのフラグの設定又はエントリの追加のため、プロセッサ９０２及び／又はＯ／Ｓ下位トラップエージェント９２０により提供されてもよい。
【０２０４】
電子デバイス９０１が複数のプロセッサを有する場合、各プロセッサは、対応するＰＲＣＳ９２６を有してもよい。一実施例では、システム９００は、各ＰＲＣＳ９２６についてＯ／Ｓ下位トラップエージェント９２０を有してもよい。他の実施例では、Ｏ／Ｓ下位トラップエージェント９２０は、各ＰＲＣＳ９２６に表されるリソースをトラップするよう構成されてもよい。
【０２０５】
システム９００が仮想化をサポートする場合、ＰＲＣＳ９２６自体が仮想化されてもよい。仮想化されたＰＲＣＳ９２６のコンテンツは、対応するプロセッサ９０２により仮想化されるリソースに限定されてもよい。当該階層化ＰＲＣＳ９２６は、バーチャルマシーンモニタに含まれてもよい。この場合、Ｏ／Ｓ下位トラップエージェント９２０又はトリガイベントハンドラ９２２は、バーチャルマシーンモニタにおいてＰＲＣＳ９２６を制御するよう構成されてもよい。他の実施例では、Ｏ／Ｓ下位トラップエージェント９２０は、各ＰＲＣＳ９２６に表されるリソースをトラップするよう構成されてもよい。さらに、エントリ１０１４は、各仮想化ＰＲＣＳ９２６において、ＰＲＣＳ単位で、又は仮想化プロセッサ単位で生成され、トリガフラグ１００２が設定されてもよい。
【０２０６】
Ｏ／Ｓ下位トラップエージェント９２０は、トリガイベントハンドラ９２２とのトラップされた試行又は通信から生じるトリガイベントを送信するよう構成されてもよい。トリガイベントハンドラ９２２は、トリガイベントの情報と１以上のセキュリティルール９０８とに基づき、以降の何れか適切なアクションを実行するよう構成されてもよい。例えば、トリガイベントハンドラ９２２は、試行される命令の実行を許可するが、実行後の結果の通知を要求するよう構成されてもよい。他の例では、トリガイベントハンドラ９２２は、コマンド又は通信の実行をスキップするよう構成されてもよい。当該具体例は、リターン値が要求されない場合に適用されてもよい。さらなる他の例では、実行は、“ＪＭＰ”命令を用いてリペアルーチンのアドレスに実行を送信するなどによって、新たな位置に転送されてもよい。
【０２０７】
動作について、Ｏ／Ｓ下位トラップエージェント９２０及びトリガイベントハンドラ９２２は、電子デバイス９０１上で実行されてもよい。Ｏ／Ｓ下位トラップエージェント９２０は、電子デバイス９０１のオペレーティングシステムのレベルの下位で実行されてもよい。さらに、トリガイベントハンドラ９２２はまた、電子デバイス９０１のオペレーティングシステムのレベルの下位で実行されてもよい。トリガイベントハンドラ９２２は、ＰＲＣＳ９２６に設定するフラグ１００２又はエントリ１０１４を決定するため、セキュリティルール９０８又はプロテクションサーバ２０２を照会してもよい。トリガイベントハンドラ９２２は、ＰＲＣＳ９２６に設定するフラグ１００２又はエントリ１０１４をＯ／Ｓ下位トラップエージェント９２０に指示してもよい。使用中のアプリケーション９１０、検出されたマルウェアの他の通知、以前にトリガされたイベント又は電子デバイス９０１のアドミニストレータ設定などの検出される各種条件に応じて、Ｏ／Ｓ下位エージェント９２０及びトリガイベントハンドラ９２２は、電子デバイス９０１の動作中に動的にＰＲＣＳ９２６のトリガフラグ１００２を変更し、又は新たなエントリ１０１４を追加してもよい。当該動的な変更の基礎となる情報は、例えば、Ｏ／Ｓ下位トラップエージェント９２０又はＯ／Ｓ内エージェント９１９などから得られてもよい。ＰＲＣＳ９２６のエントリ１０１４は、リソース１００４又はリソースタイプ１００６に従って特定されてもよい。トリガタイプ１００８は、以降のトラップイベントを同期的又は非同期的に設定するよう設定されてもよい。トリガ時期条件１０１０は、トリガ実行段階１０２と同様に、インターセプトされたリクエストが何れの状況においてトリガイベントを生成するか設定するよう設定されてもよい。
【０２０８】
ＰＲＣＳ９２６のエントリは、システム９００により遭遇する各種条件に応じて動的にイネーブル又は非イネーブルとされてもよい。例えば、Ｏ／Ｓ下位トラップエージェント９２０は、トラップされる試行されたアクセスが多くの偽陽性により頻繁に行われるためコストのかかるトラップ処理を、電子デバイス９０１がマルウェアの攻撃を受けているという通知をトリガイベントハンドラ９２２が受信するまで非イネーブルとしてもよい。その後、Ｏ／Ｓ下位トラップエージェント９２０は、トラップ処理をイネーブルとしてもよい。一実施例では、当該条件の下、１以上のプロセッサリソース９２４上の過剰なトラップが、有害な電子デバイス９０１から未知のマルウェアアクションを阻止するためイネーブルとされてもよい。このような過剰なトラップは、プロセッサの実行環境全体、仮想化されたプロセッサ、スレッド、プロセス又はアプリケーションを実質的にシャットダウンするため延長されてもよい。
【０２０９】
プロセッサリソース９２４に対するリクエストは、アプリケーション９１０、ドライバ９１１又はオペレーティングシステム９１３などから、システム９００のオペレーティングシステムのレベルにおいてエンティティから発生してもよい。当該リクエストは、プロセッサリソース９２４にわたされるが、Ｏ／Ｓ下位トラップエージェント９２０によりインターセプトされてもよい。さらに、情報又は通信は、各種プロセッサリソース９２４を介しプロセッサから生成されてもよい。情報又は通信は、Ｏ／Ｓ下位トラップエージェント９２０によりインターセプトされてもよい。
【０２１０】
Ｏ／Ｓ下位トラップエージェント９２０は、ＰＲＣＳ９２６を利用して、情報又は通信がＰＲＣＳ９２６のエントリ１０１４の何れかのトリガ時期フィールド１０１４に一致する場合、リソースのアクセスをトラップし、その後にトリガイベントを生成してもよい。トリガフラグ１００２が“ＯＮ”に設定されることによりイネーブルとされたエントリ１０１４は、試行されたアクセス、情報又は通信に一致してもよい。アクセスされるリソースは、リソースフィールド１００４及び／又はリソースタイプフィールド１００６と比較されてもよい。アクセスされるリソースが当該フィールドに一致する場合、トリガ時期条件１０１０が評価されてもよい。トリガ時期条件１０１０がリクエストに関する情報又はシステム情報に一致する場合、ＰＲＣＳ９２６は、トリガイベントを生成してもよい。トリガ実行段階１０１２は、トリガイベントを生成する時期を決定するのに利用されてもよい。例えば、トリガイベントは、命令フェッチ前、命令フェッチ後、実行後、以降のライトのためメモリがアクセスされた後、又はレジスタなどの他のリソースがライトのためアクセスされた後に生成されてもよい。さらに、トリガイベントは、インタラプトがインタラプトテーブルに送信又は書き込まれる前後に、“Ｉｎｔｅｒｒｕｐｔ＿Ｓｌｅｅｐ”などのプロセッサ間インタラプトなどの試行された情報の通信又は生成に対して生成されてもよい。生成されたトリガイベントは、トリガタイプ１００８に応じて同期的又は非同期的であってもよい。Ｏ／Ｓ下位トラップエージェント９２０は、同期的トリガイベントが生成される場合、試行されたリソースのアクセスの実行又は通信の生成を停止し、イベントの処理を保留してもよい。Ｏ／Ｓ下位トラップエージェント９２０は、非同期的トリガイベントが生成される場合、試行されるリソースのアクセスの実行又は通信の生成を許可してもよい。Ｏ／Ｓ下位トラップエージェント９２０は、当該試行の発信元のメモリアドレス、結果が書き込まれる場所又は他の何れか適切な情報など、試行に関する追加的なコンテクスト情報をトリガイベントに追加してもよい。
【０２１１】
Ｏ／Ｓ下位トラップエージェント９２０は、トリガイベントが疑わしいか決定するため、トリガイベントに関する情報を含むものであってもよい。例えば、Ｏ／Ｓ下位トラップエージェント９２０は、試行されるアクセスがメモリの何れの部分から行われたかの判断などの情報を決定してもよい。メモリの当該部分は、電子デバイス９０３上で実行される既知のプロセス、アプリケーション又はプログラムに対してトリガイベントハンドラ９２２により相互に関連付けされてもよい。試行されたアクセスが未知の又は未認証のプロセス、アプリケーション又はプログラムから発生した場合、当該試行は疑わしいものであるかもしれない。トリガイベントハンドラ９２２は、当該相互関係を決定するため、Ｏ／Ｓ内セキュリティエージェント９１９からの情報を利用してもよい。他の例では、Ｏ／Ｓ下位トラップエージェント９２０は、状態マシーンに記録されたものなど、以前にトリガされたイベントに関する情報を提供してもよい。現在トリガされたイベントに関連する以前のトリガイベントは、試行が疑わしいかに関するコンテクスト情報を提供してもよい。
【０２１２】
Ｏ／Ｓ下位トラップエージェント９２０は、トリガイベントをトリガイベントハンドラ９２２をわたし、トリガイベントハンドラ９２２は、セキュリティルール９０８に従ってＯ／Ｓ内エージェント９１９からのコンテクスト情報及び／又はトリガイベントの情報を評価することによって、イベントを処理してもよい。結果としての適切なアクションが決定され、トラップされた試行に適用するため、Ｏ／Ｓ下位トラップエージェント９２０に送り返してもよい。当該アクションは、試行の許可、命令の実行の拒絶、又はマルウェアの動作を回避するための異なるデータ若しくは命令の置換を含むものであってもよい。
【０２１３】
Ｏ／Ｓ下位トラップエージェント９２０は、以降に試行されたアクセスをトラップする際に以降の参照のためトリガイベントを格納してもよい。例えば、悪意ある処理は、複数の命令がプロセッサリソース９２４により実行されることを要求してもよい。従って、当該悪意ある動作の各ステップは、ＰＲＣＳ９２６において別々のエントリ１０１４に反映されてもよい。Ｏ／Ｓ下位トラップエージェント９２０は、それ自体は悪意はないが、以降のステップと関連するときにのみ悪意ある処理の第１ステップをトラップしてもよい。この場合、当該ステップのエントリ１０１４は、Ｏ／Ｓ下位トラップエージェント９２０又はＰＲＣＳ９２６が以前の処理された試行を認識するように、条件が状態マシーンに単に記録されるとき、非同期的にトリガするよう設定されてもよい。悪意ある処理の第２ステップのトラップは、第１ステップのトラップをトリガ時期条件１０１０として有してもよい。
【０２１４】
図１１は、電子デバイスのセキュリティセンシティブなプロセッサリソースへのソフトウェアアクセスを規制するための方法１１００の実施例である。ステップ１１０５において、セキュリティルールは、ステップ１１１０において、何れのプロセッサリソース又はプロセッサ通信がセキュアにされるべきか判断するためアクセスされてもよい。電子デバイスのオペレーティングシステムのレベルの下位で動作するトラップエージェントは、何れのリソース及び通信をトラップするか決定してもよい。当該トラップエージェントは、例えば、プロセッサのバーチャルマシーンモニタ、ファームウェア又はマイクロコードなどにおいて実行されてもよい。
【０２１５】
ステップ１１１５において、トラップされるリソース又は通信に対応するエントリが、指定された条件の下で指定されたリソース又は通信の処理、アクセス又は他の利用をトラップするよう構成されてもよいプロセッサリソース制御構造に書き込まれてもよい。ＰＲＣＳのエントリは、リソースの識別情報、リソースタイプ、イベントがトリガされる条件、トリガが非同期的又は同期であるか否か、存在する場合に何れの実行段階において試行されたアクセス若しくは通信がトリガイベントを生じさせるべきかと共に書き込まれてもよい。ステップ１１２０において、ＰＲＣＳのエントリはまた、当該エントリがトラップのためアクティブ化されるか否か示すトリガ若しくはイネーブルフラグと共に書き込まれてもよい。トリガフラグが設定されていない場合、エントリは休止状態とされ、試行されたリソースのアクセスをトラップするのに利用されなくてもよい。
【０２１６】
ステップ１１２５において、リソースへのアクセス又は通信の生成がモニタされてもよい。当該モニタは、ＰＲＣＳを介し行われてもよい。電子デバイスのエンティティは、プロセッサ通信を生成するための試行又はプロセッサリソースにアクセスするための試行を試みてもよい。リソースにアクセスするための試行は、電子デバイスのオペレーティングシステムのレベルから発信されてもよい。リソースにアクセスするための命令、コマンド又は他の試行が、エントリがアクティブ化されたＰＲＣＳのエントリのリソース識別子に一致する場合、当該試行はトラップされてもよい。同様に、エントリがアクティブ化されたＰＲＣＳのエントリのリソース識別子に一致するプロセッサ通信が生成される場合、当該試行はトラップされてもよい。一実施例では、リソースにアクセスし、又は通信を生成するための試行は、トリガ時期を指定する追加的な基準が満たされる場合にトラップされてもよい。例えば、制御レジスタの試行されたライトは、制御レジスタがこれまで書き込みされているとトラップされてもよい。他の例では、制御レジスタの試行されたライトは、制御レジスタが特定の値により書き込まれるとトラップされてもよい。
【０２１７】
ステップ１１３０において、試行されたアクセス又は通信がトラップされたか判断されてもよい。何れの試行もトラップされていない場合、ステップ１１４０において、ＰＲＣＳのエントリが調整される必要があるか判断されてもよい。当該調整は、当該エントリのイネーブル化又は非イネーブル化、新たなエントリの追加又は基準若しくはエントリの設定の調整を含むものであってもよい。方法１１００は、その後にステップ１１２５に戻ってもよい。当該調整は、例えば、電子デバイスにおいて検出された新たなマルウェアの脅威、時間の経過、以前にトラップされた試行又はアドもニスとレータの設定などに基づくものとすることができる。
【０２１８】
ステップ１１４５において、試行がトラップされた場合、結果としてのトリガイベントが同期的又は非同期的であるべきか判断されてもよい。トリガタイプが同期的でない場合、方法１１００は、ステップ１１５０に移行するのとパラレルにステップ１１２５に戻ってもよい。トリガタイプが同期的である場合、ステップ１１５０において、トラップされた試行に関する情報が格納されてもよい。当該情報は、例えば、トラップされた試行がトリガイベントを生じさせるべきかの以降の判定において状態マシーンにより利用されてもよい。ステップ１１５５において、トリガのすべての条件が充足されているか判断されてもよい。当該条件は、例えば、特定の値がリソースに書き込まれることを要求してもよいし、又は当該リクエストがメモリの特定位置から発信された（又は発信されていない）ものであってもよい。さらに、当該条件は、他の試行が以前にトラップされたことを要求してもよい。当該試行に関する情報がアクセスされ、状態マシーンに格納されてもよい。トリガのすべての条件が充足されない場合、方法１１００はステップ１１２５に戻ってもよい。
【０２１９】
トリガのすべての条件が充足される場合、ステップ１１５５において、存在する場合には実行の特定の段階においてトリガイベントが生成されるべきか判断されてもよい。当該段階は、例えば、試行の命令がフェッチされる前、命令がフェッチされた後、命令が実行された後、メモリが結果を読み込むためアクセスされた後、又は値が書き込みされた後などを含むものであってもよい。さらに、当該段階は、プロセッサ間インタラプトが実行される前後を含むものであってもよい。指定された実行段階が実現されると、当該試行のトリガイベントが、ステップ１１６５において生成されてもよい。試行のソース若しくはデスティネーションアドレスや関係するリソースなどのコンテクスト情報が、ステップ１１７５におけるハンドラへの配信のため、ステップ１１７０においてトリガイベントと共に含まれてもよい。
【０２２０】
ステップ１１８０において、セキュリティルールは、トリガイベントが疑わしいか、アドミニストレータ設定により許可されていないか、又はマルウェアを示しているか判断するため、ステップ１１８５において照会されてもよい。トリガイベントのもの、電子デバイスのオペレーティングシステムにおける他のイベント又はアドミニストレータ設定などのコンテクスト情報が、トリガイベントに対するセキュリティルールの適用を評価するのに利用されてもよい。トリガイベントが疑わしくない場合、ステップ１１８７において、トリガエージェントに通知され、方法１１００はステップ１１２５に戻ってもよい。トリガイベントが疑わしい場合、ステップ１１９０において、結果としての訂正アクションはトラップエージェントに送信されてもよい。このような訂正アクションは、リソースにアクセスするため、又はプロセッサ通信を生成するための特定の試行に依存してもよい。例えば、悪意ある命令は、リード又はライトスプーフされる値を有してもよいし、又はジャンプ命令がリペアルーチンにリダイレクトされてもよい。ステップ１１９５において、訂正アクションが適用されてもよい。方法１１００はステップ１１２５に戻ってもよい。
【０２２１】
図１２は、電子デバイス１２０１上のＯ／Ｓ下位トラップを利用してメモリをセキュアにするソフトウェアアクセスを規制するためのシステム１２００の実施例である。システム１２００は、オペレーティングシステム１２１３などの電子デバイス１２０１のオペレーティングシステム上で実行されるソフトウェアベースエンティティからのメモリにアクセスするための悪意ある試行を検出するため、電子デバイス１２０１上で動作するよう構成されるＯ／Ｓ下位セキュリティエージェント１２２０を有してもよい。さらに、Ｏ／Ｓ下位セキュリティエージェント１２２０は、１以上のセキュリティルール１２０８及びメモリマップ１２０６を利用して、トラップする試行されたメモリのアクセスと、トランプされる処理に対応して生成されるトリガイベントをどのように処理するかとを決定するよう構成されてもよい。Ｏ／Ｓ下位セキュリティエージェント１２２０は、トリガイベントについて許可、拒絶又は他の訂正アクションを実行するよう構成されてもよい。
【０２２２】
電子デバイス１２０１は、図１の電子デバイス１０３、図２の電子デバイス２０４、図４の電子デバイス４０４、図７の電子デバイス７０１、図９の電子デバイス９０１及び／又はこれらの何れかの組み合わせの機能を実現するため全体的又は部分的に実現又は構成されてもよい。電子デバイス１２０１は、物理メモリ１２０３などのメモリに接続された１以上のプロセッサ１２０２を有してもよい。プロセッサ１２０２は、図２のプロセッサ２０８、図４のプロセッサ４０８、図７のプロセッサ７０２、図９のプロセッサ９０２又はこれらの何れかの組み合わせの機構を全体的又は部分的に実現するよう構成されてもよい。物理メモリ１２０３は、図２のメモリ２０６、図４のメモリ４０６、図７のメモリ７０３、図９のメモリ９０３、及び／又はこれらの何れかの組み合わせの機能を実現するよう全体的又は部分的に構成されてもよい。電子デバイス１２０１は、１以上のセキュリティルール１２２１に接続されるＯ／Ｓ内セキュリティエージェント１２１９を含みうるオペレーティングシステム１２１３を有してもよい。オペレーティングシステム１２１３は、図１のオペレーティングシステム１１２、図２のオペレーティングシステム２１２、図４のオペレーティングシステム４１２、図７のオペレーティングシステム７１３、図９のオペレーティングシステム９１３及び／又はこれらの何れかの組み合わせの機能を実現するよう全体的又は部分的に構成されてもよい。Ｏ／Ｓ内セキュリティエージェント１２１９は、図１のＯ／Ｓ内セキュリティエージェント２１８、図４のＯ／Ｓ内セキュリティエージェント４１８、図７のＯ／Ｓ内セキュリティエージェント７１９、図９のＯ／Ｓ内セキュリティエージェント９１９又はこれらの何れか適切な組み合わせの機能を実現するよう全体的又は部分的に構成されてもよい。
【０２２３】
Ｏ／Ｓ下位セキュリティエージェント１２２０は、図１のＯ／Ｓ下位トラップエージェント１０４若しくはトリガイベントハンドラ１０８、図２のＳＶＭＭ２１６若しくはＳＶＭＭセキュリティエージェント２１７、図４のファームウェアセキュリティエージェント４４０、４４２、Ｏ／Ｓ下位エージェント４５０若しくはＰＣファームウェアセキュリティエージェント４４４、図５のファームウェアセキュリティエージェント５１６、図７のマイクロコードセキュリティエージェント７０８若しくはＯ／Ｓ下位エージェント７１２、図９のＯ／Ｓ下位トラップエージェント９２０若しくはトリガイベントハンドラ９２２及び／又はこれらの何れかの組み合わせの機能を実現するよう構成されてもよい。
【０２２４】
セキュリティルール１２０８は、図１のセキュリティルール１１４、図２のセキュリティルール２２２、図４のセキュリティルール４３４、４３６、４３８、図５のセキュリティルール５１８、図７のセキュリティルール７０７、７２３、図９のセキュリティルール９０８及び／又はこれらの何れかの組み合わせの機能を実現するよう構成されてもよい。セキュリティルール１２２１は、図２のセキュリティルール２２０、図４のセキュリティルール４２０、図７のセキュリティルール７２１、図９のセキュリティルール９２１及び／又はこれらの何れかの組み合わせを実現するよう構成されてもよい。
【０２２５】
Ｏ／Ｓ下位セキュリティ１２２０は、電子デバイス１２０１のメモリへのアクセスをインターセプトするよう構成されてもよい。当該メモリは、例えば、物理メモリ１２０３の試行されたアクセスのアクセス又は仮想化メモリ１２０４の試行されたページのアクセスなどを含むものであってもよい。当該試行されたアクセスは、アプリケーション１２１０やドライバ１２１１などの電子デバイス１２０１上で実行されるオペレーティングシステム１２１３を利用したエンティティ又はオペレーティングシステム１２１３から発信されてもよい。
【０２２６】
一実施例では、Ｏ／Ｓ下位セキュリティ１２２０によりセキュアにされるメモリは、仮想化メモリ１２０４を含むものであってもよい。仮想化メモリ１２０４は、物理メモリ及び／又はストレージから抽象化されたオペレーティングシステム１２１３、アプリケーション１２１０又はドライバ１２１１などのエンティティに利用可能なメモリを含むものであってもよい。仮想化メモリ１２０４は、使用される実際のスペースは物理メモリ１２０３などの実際の物理メモリ及び／又はディスク上などのストレージにおいて別々に展開されてもよいが、オペレーティングシステム１２１３、アプリケーション１２０１０又はドライバ１２１１などのエンティティへの連続的なメモリブロックとして出現するようにしてもよい。仮想化メモリ１２０４は、プロセッサ１２０２の拡張に従って仮想化されてもよい。仮想化メモリ１２０４のアドレススペースは、メモリページに分割されてもよい。メモリページはそれぞれ、４キロバイトなどの等しいサイズを有してもよい。電子デバイス１２０１は、ページテーブルを利用して仮想化メモリ１２０４のバーチャルアドレスを、物理メモリ１２０３又はストレージのアドレスなどのメモリの物理的アドレスに変換するよう構成されてもよい。電子デバイス１２０１は、バーチャルメモリ１２０４のバーチャルアドレスを物理メモリ１２０３などのメモリの物理的アドレス及び／又はストレージのアドレスに変換するよう構成されるメモリマネージメントユニット（ＭＭＵ）１２１４を有してもよい。バーチャルメモリ１２０４のページはインデックス化されてもよい。バーチャルメモリ１２０４のページの試行されたアクセスは、当該ページの試行されたリード、ライト又は実行を含むものであってもよく、Ｏ／Ｓ下位セキュリティエージェント１２２０は、当該試行をトラップするよう構成されてもよい。一実施例では、バーチャルメモリ１２０４のページは、物理メモリのアドレス又はストレージのアドレスに対応するものであってもよい。他の実施例では、バーチャルメモリ１２０４の各ページは、物理メモリのアドレスに対応するものであってもよい。さらなる他の実施例では、オペレーティングシステム１２１３の特定部分などの特定コンテンツを含むページがピン留めされ、電子デバイス１２０１の実行中は変更されないようにしてもよい。
【０２２７】
他の実施例では、Ｏ／Ｓ下位セキュリティエージェント１２２０によりセキュアにされるメモリは、物理メモリ１２０３を含むものであってもよい。物理メモリ１２０３は、規定された要素を含むメモリレンジのベースアドレスであってもよい物理メモリ１２０３の特定のアドレスを示すマーカ（Ａ）、（Ｂ）、（Ｃ）、（Ｄ）、（Ｅ）、（Ｆ）、（Ｇ）、（Ｈ）、（Ｉ）、（Ｊ）及び（Ｋ）により示されるように、物理メモリのアドレスを介しアクセスされてもよい。物理メモリ１２０３は、特定のメモリアドレスの試行されたリード、ライト又は実行を介しアクセスされてもよく、Ｏ／Ｓ下位セキュリティエージェント１２２０は、当該試行をトラップするよう構成されてもよい。例えば、試行されたライトは、“ＭＯＶ  Ａｄｄｒ１，Ｖａｌｕｅ”の命令の形態をとるものであってもよく、変数“Ｖａｌｕｅ”により表される値が、“Ａｄｄｒ１”により表される特定のメモリアドレスに書き込まれてもよい。物理メモリ１２０３への何れかの書き込み命令が利用されてもよい。試行されたリードは、“ＭＯＶ  Ｖａｌｕｅ，Ａｄｄｒ１”などの命令の形態をとるものであってもよく、変数“Ｖａｌｕｅ”により表される値が、“Ａｄｄｒ１”により表される特定のメモリアドレスからリードされる。物理メモリ１２０３のアドレスからの何れかのリード命令が利用されてもよい。試行される実行は、“ＭＯＶ  ＥＩＰ，Ａｄｄｒ１”などの物理メモリ１２０３のアドレスによって“ＥＩＰ”などの命令ポインタレジスタをロードする命令の形態をとるものであってもよい。当該命令は、“Ａｄｄｒ１”により表されるアドレスから始まるコードを実行するよう構成されてもよい。メモリのアドレスを実行する何れかの命令が利用されてもよい。
【０２２８】
Ｏ／Ｓ下位セキュリティエージェント１２２０は、バーチャルメモリ１２０４への試行されたアクセスをインターセプトするよう構成されてもよい。さらに、Ｏ／Ｓ下位セキュリティエージェント１２２０は、物理メモリ１２０３への試行されたアクセスをインターセプトするよう構成されてもよい。一実施例では、バーチャルメモリ１２０４に対するリクエストはインターセプトされず、ＭＭＵがバーチャルメモリ１２０４のページを物理メモリ１２０３のアドレスに変換した後に物理メモリ１２０３の以降の対応する試行されたアクセスにおいて、Ｏ／Ｓ下位セキュリティエージェント１２２０は、物理メモリに試行されたアクセスをインターセプトするよう構成されてもよい。他の実施例では、試行されたアクセスは、バーチャルメモリ１２０４を介し変換されることなく物理メモリ１２０３から直接行われてもよく、Ｏ／Ｓ下位セキュリティエージェント１２２０は、試行されたアクセスをインターセプトするよう構成されてもよい。さらなる他の実施例では、バーチャルメモリ１２０４に対して行われる試行されるアクセスはインターセプトされるが、Ｏ／Ｓ下位セキュリティエージェント１２２０は、物理メモリ１２０３のアドレスの以降のアクセスをインターセプトするよう構成されなくてもよい。
【０２２９】
Ｏ／Ｓ下位セキュリティエージェント１２２０は、Ｏ／Ｓ内セキュリティエージェント１２１９に通信接続されてもよい。Ｏ／Ｓ下位セキュリティエージェント１２２０は、Ｏ／Ｓ内セキュリティエージェント１２１９から電子デバイス１２０１のメモリの試行されるアクセスに関するコンテクスト情報を受信するよう構成されてもよい。Ｏ／Ｓ内セキュリティエージェント１２１９により提供されるコンテクスト情報は、電子デバイス１２０１のメモリの特定のアクセスを試行したエンティティの身元を含むものであってもよい。
【０２３０】
Ｏ／Ｓ下位セキュリティエージェント１２２０は、メモリマップ１２０６に通信接続されるか、又はこれを含むものであってもよい。メモリマップ１２０６は、ファイル、レコード、データ構造又は他の適切なエンティティにより実現されてもよい。メモリマップ１２０６は、メモリにおける電子デバイス１２０１の各種エンティティの位置に関する情報を含むものであってもよい。例えば、プロセスが実行のため電子デバイス１２０１のメモリにロードされる場合、メモリマップ１２０６は、仮想化メモリ１２０４の何れのメモリページ又は物理メモリ１２０３の何れのアドレスレンジが当該プロセスを含むかに関する情報を有してもよい。電子デバイス１２０１のメモリの仮想化の実装に応じて、一部のコンテンツがディスクなどのストレージにロードされてもよいため、プロセスのコンテンツのすべてが物理メモリ１２０３にロードされてもよいし、又はそうでなくてもよい。当該コンテンツがアクセスされるため、それらは物理メモリ１２０３にロードされてもよい。この場合、メモリマップ１２０６は、コンテンツが格納されるアドレス、物理メモリ１２０３又はディスクなどのストレージに格納されるかに関する情報を含むものであってもよい。Ｏ／Ｓ下位セキュリティエージェント１２２０は、メモリマップ１２０６を利用してバーチャルメモリ１２０４のページ又は物理メモリ１２０３のアドレスにおける何れか所与のコンテンツの身元又はオーナーを決定するよう構成されてもよい。Ｏ／Ｓ下位セキュリティエージェント１２２０は、例えば、オペレーティングシステムの処理をプロファイルし、その後に各種センシティブコンポーネントがメモリに何れに配置されるかを決定することによって、メモリマップ１２０６を構成してもよい。オペレーティングシステム１２１３のカーネルのロード、又はカーネルモード命令の実行など、メモリにアクセスするための試行が行われると、Ｏ／Ｓ下位セキュリティエージェント１２２０は、オペレーティングシステム１２１３の何れの部分がロード又は実行されているか判断するため、Ｏ／Ｓ内セキュリティエージェント１２１９と通信するよう構成されてもよい。他の例では、Ｏ／Ｓ下位セキュリティエージェント１２２０は、当該バーチャルメモリ１２０４のページのメモリレンジのコンテンツのハッシュ又はデジタルシグネチャを決定するよう構成されてもよい。ハッシュ又はデジタルシグネチャは、セキュリティルール１２０８に含まれるか、又はプロテクションサーバ２０２から取得されてもよい既知の値に対して比較されてもよい。当該既知の値は、例えば、オペレーティングシステム１２１３の何れの部分が特定されたかという以前の特徴付けの結果であってもよい。マッピング対象の要素は、セキュリティルール１２０８により決定されてもよい。Ｏ／Ｓ下位セキュリティエージェント１２２０は、メモリマップ１２０６の要素が電子デバイス１２０１のメモリのある場所から他の場所にコピーされるとき、当該要素の動きを追跡するよう構成されてもよい。
【０２３１】
図１３は、メモリマップの実施例の図である。一実施例では、バーチャルメモリマップ１３０２は、バーチャルメモリの各自のポジションを介し追跡される各要素のマッピングを含むものであってもよい。他の実施例では、物理メモリマップ１３０４は、物理メモリの各自のポジションを介し追跡される各要素のマッピングを含むものであってもよい。各種実施例では、バーチャルメモリマップ１３０２及び物理メモリマップ１３０４は、要素が双方のマッピングで追跡されるように一緒にマッピングされてもよい。
【０２３２】
バーチャルメモリマップ１３０２は、１０個の異なるバーチャルメモリページを反映してもよい。バーチャルメモリマップ１３０２は、例えば、ページディレクトリなどのカーネルオペレーティングシステムのデータ構造がメモリページ１及びメモリページ２に検出されてもよいことなどを示すものであってもよい。他の例では、“Ｆｎ１”と呼ばれる特定のプロセス、ファンクション又はルーチンの要素が、メモリページ４〜６に検出されてもよい。さらなる他の例では、システムサービスディスパッチテーブル（ＳＳＤＴ）のパーミッションのデータ構造がページ８に検出されてもよい。さらなる他の例では、“Ｆｎ２”と呼ばれる特定のプロセス、ファンクション又はルーチンの要素が、メモリページ８及びメモリページ９に検出されてもよい。
【０２３３】
物理メモリマップ１３０４は、物理メモリによって要素の位置を反映してもよい。物理メモリの要素の一部は、メモリにおいて不連続なセグメント又はブロックに展開されてもよい。さらに、物理メモリの要素の一部は、任意の順序によりメモリに展開されてもよい。各セグメントのサイズは可変であってもよい。セグメントは、ベースアドレスからのオフセットのアドレスから開始されてもよい。図１３に示される一例となるベースアドレスは、ＦＦｘＦＦＦのアドレスで終了する００ｘ０００である。物理メモリの各種セグメントのスタートを示すアドレスは、（Ａ）〜（Ｏ）により示される。物理メモリの複数のセグメント内に含まれる要素について、これらの要素の順序が留意されてもよい。物理メモリでは、ある要素の複数のセグメントがポインタにより一緒にリンクされてもよく、要素の１つのセグメントのエンドが当該要素の次のセグメントを指し示すようにしてもよい。
【０２３４】
例えば、Ｆｎ１は、（Ａ）と（Ｂ）、（Ｊ）と（Ｋ）、及び（Ｍ）と（Ｎ）との間のセグメントにマッピングされてもよい。他の例では、ＳＳＤＴパーミッションは、（Ｇ）と（Ｈ）との間のセグメントにマッピングされてもよい。さらなる他の例では、ページディレクトリデータ構造が、（Ｏ）とＦＦｘＦＦＦ、（Ｆ）と（Ｇ）、及び（Ｉ）と（Ｊ）との間のセグメントにマッピングされてもよい。さらなる他の例では、Ｆｎ２は、（Ｈ）と（Ｉ）、及び（Ｂ）と（Ｃ）との間のセグメントにマッピングされてもよい。
【０２３５】
図１２に戻って、Ｏ／Ｓ下位セキュリティエージェント１２２０は、メモリの何れの部分をプロテクトするか、及びそれらをどのようにプロテクトするかを決定するため、セキュリティルール１２０８を照会するよう構成されてもよい。例えば、セキュリティルール１２０８は、ページディレクトリデータ構造が電子デバイス１２０１の特定の特権が付与されたエンティティによってのみ書き込み可能であることを示すよう構成されてもよい。従って、ページディレクトリデータ構造への書き込みの試みがトラップされ、当該書き込みを試みた要素が、安全であるか、未知であるか、又は安全でないと知られているか判断するため調べられてもよい。Ｏ／Ｓ下位セキュリティエージェント１２２０は、ページディレクトリデータ構造がメモリに配置されている場所を決定するため、メモリマップ１２０６を照会するよう構成されてもよい。Ｏ／Ｓ下位セキュリティエージェント１２２０は、例えば、バーチャルマシーンモニタにおいて完全に又は部分的に実現される場合、Ｏ／Ｓ下位セキュリティエージェント１２２０は、バーチャルメモリ１２０４のメモリページ１及び／又は２への何れかの試行されたライトをトラップするため、制御構造のフラグを設定するよう構成されてもよい。他の例では、Ｏ／Ｓ下位セキュリティエージェント１２２０がマイクロコードにより完全に又は部分的に実現される場合、Ｏ／Ｓ下位セキュリティエージェント１２２０は、物理メモリ１２０３のアドレス（Ｏ）とＦＦｘＦＦＦ、（Ｆ）と（Ｇ）、及び（Ｉ）と（Ｊ）との間のアドレスレンジ内のメモリアドレスへの何れか試行されたライトをトラップするため、制御構造のフラグを設定するよう構成されてもよい。
【０２３６】
他の例では、セキュリティルール１２０８は、Ｆｎ１が電子デバイスの特定の特権が付与されたエンティティによってのみコールされてもよいことを示すよう構成されてもよい。従って、Ｆｎ１を実行するための試行はトラップされ、Ｆｎ１をコールする要素は、安全であるか、未知であるか、又は安全でないと知られているか判断するため調べられてもよい。Ｏ／Ｓ下位セキュリティエージェント１２２０は、Ｆｎ１がメモリにある場所を決定するため、メモリマップ１２０６を照会するよう構成されてもよい。Ｏ／Ｓ下位セキュリティエージェント１２２０が、例えば、バーチャルマシーンモニタにおいて完全に又は部分的に実現される場合、Ｏ／Ｓ下位セキュリティエージェント１２２０は、バーチャルメモリ１２０４のメモリページ４、５及び／又は６の試行された実行をトラップするため、制御構造のフラグを設定するよう構成されてもよい。他の例では、Ｏ／Ｓ下位セキュリティエージェント１２２０がマイクロコードにより完全に又は部分的に実現される場合、Ｏ／Ｓ下位セキュリティエージェント１２２０は、物理メモリ１２０３のメモリアドレスの何れか試行された実行をトラップするため、制御構造のフラグを設定するよう構成されてもよい。Ｆｎ１の異なる部分が別々に実行されるいくつかのケースでは、Ｏ／Ｓ下位セキュリティエージェント１２２０は、物理メモリ１２０３の（Ａ）と（Ｂ）、（Ｍ）と（Ｎ）、アドレス（Ｏ）とＦＦｘＦＦＦ、（Ｆ）と（Ｇ）、（Ｊ）と（Ｋ）又は（Ｉ）と（Ｊ）の間のレンジの範囲内の何れかのメモリアドレスの試行された実行をトラップするよう構成されてもよい。
【０２３７】
一実施例では、Ｏ／Ｓ下位セキュリティエージェント１２２０は、何れのエンティティがメモリへのライトのためのコールを行ったか判断するため、Ｏ／Ｓ内セキュリティエージェント１２１９を照会するよう構成され、その後、それは当該エンティティがライトを行うことが許可されているか否か判断するのに利用されてもよい。他の実施例では、Ｏ／Ｓ下位セキュリティエージェント１２２０は、リクエストの発信元の仮想化メモリ１２０４のメモリページを決定し、メモリマップ１２０６を照会して、当該メモリページがそこにマッピングされた何れかの要素に関連付けされているか判断するよう構成されてもよい。さらなる他の実施例では、Ｏ／Ｓ下位セキュリティエージェント１２２０は、要求元の要素のメモリページのハッシュ又はシグネチャを決定し、それを既知のエンティティのハッシュ及びシグネチャに対して比較するよう構成されてもよい。
【０２３８】
Ｏ／Ｓ下位セキュリティエージェント１２２０がマイクロコードによって完全に又は部分的に実現される場合、Ｏ／Ｓ下位セキュリティエージェント１２２０は、当該ライトを試みた命令のアドレスを決定するよう構成されてもよい。一実施例では、Ｏ／Ｓ下位セキュリティエージェント１２２０は、命令が物理メモリ１２０３の何れで行われたか判断するため、命令ポインタを調べることによって、当該決定を行うよう構成されてもよい。他の実施例では、メモリマップ１２０６にアクセスすることによって、Ｏ／Ｓ下位セキュリティエージェント１２２０は、アドレスに関連するメモリマップ１２０６からの要素を決定するよう構成されてもよい。さらなる他の実施例では、Ｏ／Ｓ下位セキュリティエージェント１２２０は、要求元の要素のハッシュ又はシグネチャを決定し、それを既知のエンティティのハッシュ及びシグネチャと比較するよう構成されてもよい。
【０２３９】
メモリの試行されたアクセスがトラップされると、Ｏ／Ｓ下位セキュリティエージェント１２２０は、特定された要求元のエンティティに基づきトラップされた試行をどのように処理するか判断するため、セキュリティルール１２０８にアクセスするよう構成されてもよい。セキュリティルール１２０８は、例えば、オペレーティングシステム１２１３の指定された特定のカーネル部分のみがＦｎ１をコール及び実行可能であるか、又は安全であると知られる及びホワイトリストにあるエンティティのみがＳＳＤＴのパーミッションに書き込み可能であることを規定してもよい。Ｏ／Ｓ下位セキュリティエージェント１２２０は、その後、リクエストを進捗することの許可、当該リクエストの拒絶、レスポンス又は書き込まれた値のスプーフ、又は訂正プロセスの実行などの何れか適切なアクションを実行するよう構成されてもよい。
【０２４０】
動作について、Ｏ／Ｓ下位セキュリティエージェント１２２０は、オペレーティングシステム１２１３などの電子デバイス１２０１のオペレーティングシステムのレベルの下位で実行されてもよい。Ｏ／Ｓ下位セキュリティエージェント１２２０は、電子デバイス１２０１の何れのメモリリソースをプロテクトするか判断するため、セキュリティルール１２０８にアクセスしてもよい。Ｏ／Ｓ下位セキュリティエージェント１２２０は、メモリマップ１２０６のコンテンツを決定、展開及び／又は投入してもよい。これを実行するため、Ｏ／Ｓ下位セキュリティエージェント１２２０は、メモリマップ１２０６に情報を投入するため、セキュリティルール１２０８、プロテクションサーバ２０２又は他の何れか適切な情報のソースにアクセスしてもよい。Ｏ／Ｓ下位セキュリティエージェント１２２０は、メモリマップ１２０６のメモリのコンテンツ及びオーナーシップをマッピングするため、オペレーティングシステム１２１３、アプリケーション１２１０又はドライバ１２１１などのオペレーティングシステムのレベルにおけるエンティティからの物理メモリ１２０３又はバーチャルメモリ１２０４のリクエストをインターセプトしてもよい。Ｏ／Ｓ下位セキュリティエージェント１２２０は、メモリマップ１２０６が投入されるように、何れのエンティティがメモリにロードされているか判断するため、Ｏ／Ｓ内セキュリティエージェント１２１９にアクセスしてもよい。メモリマップ１２０６は、物理メモリ１２０３、バーチャルメモリ１２０４及び／又はこれら２つの間のマッピングのためのメモリマッピングを有してもよい。
【０２４１】
Ｏ／Ｓ下位セキュリティエージェント１２２０は、バーチャルメモリ１２０４及び／又は物理メモリ１２０３の何れの部分をプロテクトするか判断するため、セキュリティルール１２０８を照会してもよい。セキュリティルール１２０８は、メモリに対するプロテクションが各種考慮に応じてＯ／Ｓ下位セキュリティエージェント１２２０によってイネーブル化又は非イネーブル化されてもよい動的ベースによって、メモリの一部がセキュアにされるべきであることを指定してもよい。このような考慮は、例えば、アドミニストレータの設定、悪意ある又は疑わしい動作の検出、時間、メモリの以前に検出されたアクセス又は他の何れか適切な基準などを含むものであってもよい。電子デバイス１２０１のメモリをプロテクトすることが、計算リソースに関してコストのかかるものである場合、当該動的なイネーブル化及び非イネーブル化は、Ｏ／Ｓ下位セキュリティエージェント１２２０が他のタスクを実行する電子デバイス１２０１の能力に対する副次的影響を軽減しながら、電子デバイス１２０１のメモリの重要な部分をより良好にセキュアにすることを可能にするものであってもよい。例えば、オペレーティングシステム１２１３のカーネルコードのコンテンツを含むメモリは常に、Ｏ／Ｓ下位セキュリティエージェントによりプロテクトされる一方、サードパーティのアプリケーション１２１０のコードのコンテンツを含むメモリは、マルウェアが存在するか、又はサードパーティアプリケーション１２１０に影響を与えうるという他の通知に応答してのみプロテクトされるようにしてもよい。
【０２４２】
Ｏ／Ｓ下位セキュリティエージェント１２２０は、物理メモリ１２０３及び／又はバーチャルメモリ１２０４の試行されたアクセスをトラップするため、制御構造のフラグを設定してもよい。一実施例では、オペレーティングシステム１２１３のエンティティからトラップ対象に指定されたバーチャルメモリ１２０４のメモリページに対するリクエストが行われると、Ｏ／Ｓ下位セキュリティエージェント１２２０は、試行されたリクエストをインターセプトしてもよい。他の実施例では、バーチャルメモリ１２０４のメモリページに対するリクエストがされると、Ｏ／Ｓ下位セキュリティエージェントは、当該リクエストがＭＭＵ１２１４によって物理メモリ１２０３のアドレスに対するリクエストに変換され、これにより、Ｏ／Ｓ下位セキュリティエージェントが試行されたリクエストをインターセプトすることを可能にしてもよい。さらなる他の実施例では、オペレーティングシステム１２１３のエンティティからのリクエストが物理メモリ１２０３のアドレスに対して直接的に行われる可能性があるため、Ｏ／Ｓ下位セキュリティエージェント１２２０は、試行されたリクエストをインターセプトしてもよい。
【０２４３】
リクエストがインターセプトされると、Ｏ／Ｓ下位セキュリティエージェント１２２０は、何れか適切な機構を利用して、インターセプトされたメモリのリクエストを評価してもよい。セキュリティルール１２０８は、試行が疑わしく、電子デバイス１２０１のリソースを使用するマルウェアによる悪意ある試行を示すか判断するため利用されてもよい。セキュリティルール１２０８は、例えば、リード、ライト又は実行が試行されたか、何れのエンティティが当該試行を行ったか、アクセスされたメモリアドレス若しくはページ、同一の要求元による以前の試行若しくはアクション、電子デバイス１２０１のアドミニストレータによるセキュリティ設定、電子デバイス１２０１のユーザに基づくより制限的な又はより制限的でないルール、メモリ位置及び／若しくはデジタルシグネチャ若しくはハッシュによって若しくは関連するページ若しくはメモリアドレスにより決定されるような要求元の身元などの考慮を含むものであってもよい。
【０２４４】
例えば、バーチャルメモリ１２０４のページ２又は物理メモリ１２０３のアドレス（Ｊ）におけるページディレクトリデータ構造の試行されたライトが、Ｏ／Ｓ下位セキュリティエージェント１２２０によりインターセプトされてもよい。当該ライトが未知のプロセスのメモリの一部から到来したものである場合、当該ライトはＯ／Ｓ下位セキュリティエージェント１２２０により疑わしいと判断されてもよい。しかしながら、試行されたライトが既知のオペレーティングシステム１２１３のカーネルの検証された部分から到来したものである場合、当該試行は、疑わしいものでないと判断されてもよい。同様に、バーチャルメモリ１２０４のページ８又は物理メモリ１２０３のアドレス（Ｈ）におけるＦｎ２の試行された実行がインターセプトされてもよい。試行された実行がユーザ入力から行われたものである場合、当該実行は、疑わしくないと判断されてもよい。試行された実行が他のプログラムのメモリからのものであり、当該プログラムが承認されたリストにない場合、当該試行は、疑わしい又は悪意あるものと判断されてもよい。
【０２４５】
他の例では、Ｆｎ１が互換性のため他のアプリケーションに自らのキャッシュを通常明らかにするウェブブラウザである場合、Ｏ／Ｓ下位セキュリティエージェント１２２０は、Ｆｎ１のメモリページ又はメモリアドレスの指定された部分が他のアプリケーションにより読み込まれることを可能にするものであってもよい。しかしながら、Ｆｎ１がプライベートに維持されるべきメタデータ又は他の情報を含む場合、Ｏ／Ｓ下位セキュリティエージェント１２２０は、Ｆｎ１自体以外の何れかのプロセスからのリードから、Ｆｎ１のメモリページ又はメモリアドレスの部分をセキュアにするようにしてもよい。
【０２４６】
プログラムが疑わしい、悪意ある又はマルウェアを示していると判断されると、Ｏ／Ｓ下位セキュリティエージェント１２２０は、何れか適切な訂正アクションを行うようにしてもよい。Ｏ／Ｓ下位セキュリティエージェント１２２０は、例えば、バーチャルメモリ１２０４のメモリページ２又は物理メモリ１２０３のアドレス（Ｊ）に対するライトリクエストを拒絶し、値が書き込まれたことを示す結果を返すようにしてもよい。当該リクエストを生成するプロセスは、電子デバイス１２０１のリソースにアクセスするための追加的な試行についてモニタされるか、停止されるか、又は電子デバイス１２０１からクリーンされてもよい。他の例では、バーチャルメモリ１２０４のページ８又は物理メモリ１２０３のアドレス（Ｈ）の試行された実行が、代わりにハニーポット又はクリーンアッププロセスの実行に関するものであってもよい。
【０２４７】
Ｏ／Ｓ下位セキュリティエージェント１２２０によりセキュアにされるメモリのコンテンツは、マルウェアにより攻撃されてもよいデータ、コード又は他の何れか有用なシステムリソースを含むものであってもよい。Ｏ／Ｓ下位セキュリティエージェント１２２０は、電子デバイス１２０１上で実行されるプロセスを示す機構をリード、ライト又はフックなどすることを試みるマルウェアに対してメモリのコンテンツをプロテクトし、それのコードをメモリにロードされたアプリケーションの部分に挿入し、又はパーミッションを変更してバーチャルメモリ１２０４についてマッピングテーブルのフラグにアクセスするようにしてもよい。オペレーティングシステム１２１３のレベルの下位で実行することによって、Ｏ／Ｓ下位セキュリティエージェント１２２０は、オペレーティングシステム１２１３のカーネルモードレベルでマルウェアが実行されることを回避してもよい。Ｏ／Ｓ下位セキュリティエージェント１２２０は、一部のケースでは、要求元のエンティティの身元が悪意あるものであると以前に決定されたという知識を必要としなくてもよいため、ゼロデイ検出（ｚｅｒｏ−ｄａｙ  ｄｅｔｅｃｔｉｏｎ）を実現してもよい。すなわち、当該エンティティが未知であるという事実が、電子デバイス１２０１のメモリの一部へのアクセスを拒絶するのに利用されてもよい。オペレーティングシステム１２１３又はオペレーティングシステム１２１３上で実行されるアンチウイルス若しくはアンチマルウェアが完全に危険にされされる場合、メモリは、オペレーティングシステムのレベルで実行されるエンティティから完全にロックされてもよい。
【０２４８】
Ｏ／Ｓ下位セキュリティエージェント１２２０の１つのアプリケーションは、特定のコンテンツのリード、ライト又は実行が特定のメモリページのパーミッションへに対する変更を検出することによって試行される前に、バーチャルメモリ１２０４のコンテンツの試行されたアクセスを検出するものであってもよい。ＭＭＵ１２１４により使用されるメモリテーブルは、メモリ、バーチャルメモリ１２０４のページ自体、及び／又は物理メモリ１２０３のアドレスにあってもよい。例えば、“リード”から“ライト”へのプロセスのコードセクションのパーミッションを変更するなど、メモリテーブルの値を変更する試行は、それ自体Ｏ／Ｓ下位セキュリティエージェント１２２０によりトラップされてもよい。バーチャルメモリ１２０４のメモリページ又は物理メモリ１２０３のアドレスは、Ｏ／Ｓ下位セキュリティエージェント１２２０によりセキュアにされてもよく、当該位置にパーミッションに対する新たな値を書き込むためのトラップされる試行に応答して、Ｏ／Ｓ下位セキュリティエージェント１２２０は、当該試行の要求元が当該変更を行うことが許可されているか判断してもよい。例えば、プロセスのコードセクションのパーミッションを変更するための当該リクエストが異なるプロセスから発生したものである場合、試行されたパーミッションの変更は拒絶されてもよい。
【０２４９】
図１４は、電子デバイスの試行されたアクセスのＯ／Ｓ下位トラップを利用してメモリをセキュアにする方法１４００の実施例である。ステップ１４０５において、電子デバイスのバーチャル又は物理メモリが、メモリのコンテンツの身元又はオーナーを決定するためマッピングされてもよい。メモリをマッピングするため、例えば、プロテクションサーバがアクセスされ、メモリのリード、ライト及び実行が追跡され、及び／又はメモリのコンテンツがスキャンされ、当該コンテンツについてシグネチャが生成されてもよい。
【０２５０】
ステップ１４１０において、セキュリティルールが、ステップ１４１５において、セキュアにされるべき物理メモリのアドレス又はバーチャルメモリのページを決定するためアクセスされてもよい。セキュアにされるメモリは、例えば、セキュリティルール、電子デバイスのユーザ、マルウェアのつうしなどの電子デバイスにおいて観察される他の動作、セキュアにされたメモリにアクセスするための以前の試行又はアドミニストレータ設定などに依存してもよい。セキュアにされるメモリは、電子デバイスの処理の条件が変更されてもよいとき、動的に変更されてもよい。セキュリティルールは、プロテクト対象の電子デバイスのエンティティを指定し、当該エンティティの物理又はバーチャルメモリの位置が、メモリマップにアクセスすることによって決定されてもよい。
【０２５１】
ステップ１４２０において、セキュリティルールの要件に従って、メモリの試行されたアクセスをトラップするため、制御構造においてフラグが設定されてもよい。当該フラグは、バーチャルメモリのページ及び／又は物理メモリのアドレスについて設定されてもよい。フラグは、フラグ付けされるアクセス方法の種類と共に（例えば、リード、ライト又は実行など）、セキュアにされるメモリの指定を含むものであってもよい。ステップ１４２５において、指定されたタイプの試行されたアクセスが指定されたアドレス又はページに対して行われたものであるか確認するため、セキュアにされたメモリへのアクセスがモニタされてもよい。ステップ１４３０において、メモリにアクセスするための試行がトラップされたか判断されてもよい。トラップされていない場合、ステップ１４３５において、セキュアにされるメモリのフラグが変更を要するか判断されてもよい。トラップされている場合、本方法１４００はステップ１４１０に戻り、メモリへのアクセスを保護するためのフラグを更新するため、セキュリティルールにアクセスしてもよい。変更を要しない場合、本方法１４００はステップ１４２５に戻り、セキュアにされたメモリの試行されたアクセスをモニタしてもよい。
【０２５２】
メモリにアクセスするための試行がトラップされた場合、ステップ１４４０において始めて、トラップされた試行が評価されてもよい。当該トラップを評価するため、メモリマップは、当該リクエストが何れから行われたかを決定し、要求元を特定するため照会されてもよい。書き込み対象のデータの値が、そのコンテンツについて決定及び評価されてもよい。リード、ライト又は実行の試行の性質が考慮されてもよい。これらの一例となる考慮は、試行されたアクセスがマルウェアを示しているか判断するため、ステップ１４４５においてセキュリティルールに関して利用されてもよい。試行されたアクセスがマルウェアを示す場合、ステップ１４５０において、訂正アクションが実行されてもよい。当該訂正アクションは、共有されたアクセスの拒絶、スプーフされた値のリターン、又はハニーポット又は訂正プロセスの開始を含むものであってもよい。試行されたアクセスがマルウェアを示していない場合、ステップ１４５５において、当該リクエストは許可されてもよい。本方法１４００は、電子デバイスのメモリをセキュアにし続けるため要求されるように、ステップ１４２５に戻ってもよい。
【０２５３】
図１５は、電子デバイス１５０４のオペレーティングシステム１５１２のカーネルをプロテクトするシステムの実施例である。システム１５００は、オペレーティングシステム１５１２のコンポーネント（ファンクション、データ及び／又は他のコンポーネントなど）とオペレーティングシステムに関連する信頼されたドライバにアクセスするためのマルウェアによる試行に対してプロテクトするために電子デバイス１５０４上で動作するよう構成されるＯ／Ｓ下位セキュリティエージェント１５１６を有してもよい。さらに、Ｏ／Ｓ下位セキュリティエージェント１５１６は、１以上のセキュリティルール１５２２を利用して、何れの試行された処理をトラップするか、及び当該トラップされた処理にどのように応答するかを決定するよう構成されてもよい。Ｏ／Ｓ下位セキュリティエージェント１５１６は、トラップされた処理について許可、拒絶又は他の訂正アクションを実行するよう構成されてもよい。
【０２５４】
図１５に示されるように、電子デバイス１５０４は、メモリ１５０８に接続されるプロセッサ１５０６、１以上のアプリケーション１５１０、１以上のドライバ１５１１、オペレーティングシステム１５１２、Ｏ／Ｓ下位セキュリティエージェント１５１６及びセキュリティルール１５２２を有してもよい。電子デバイス１５０４は、図１の電子デバイス１０３、図２の電子デバイス２０４、図４の電子デバイス４０４、図７の電子デバイス７０１、図９の電子デバイス９０１、図１２の電子デバイス１２０１及び／又はこれらの何れかの組み合わせの機能を実現するよう全体的又は部分的に構成されてもよい。プロセッサ１５０６は、図２のプロセッサ２０８、図４のプロセッサ４０８、図７のプロセッサ７０２、図９のプロセッサ９０２、図１２のプロセッサ１２０２、及び／又はこれらの何れかの組み合わせの機能を実現するよう全体的又は部分的に構成されてもよい。メモリ１５０８は、図２のメモリ２０６、図４のメモリ４０６、図７のメモリ７０３、図９のメモリ９０３、図１２の物理メモリ１２０３若しくは仮想化メモリ、及び／又はこれらの何れかの組み合わせの機能を実現するよう全体的又は部分的に構成されてもよい。アプリケーション１５１０は、図１のアプリケーション１１０、図２のアプリケーション２１０、図４のアプリケーション４１０、図７のアプリケーション７０９、図９のアプリケーション９１０、図１２のアプリケーション１２１０及び／又はこれらの何れかの組み合わせの機能を実現するよう全体的又は部分的に構成されてもよい。ドライバ１５１１は、図１のドライバ１１１、図２のドライバ２１１、図４のドライバ４１１、図７のドライバ７１１、図９のドライバ９１１、図１２のドライバ１２１１及び／又はこれらの何れかの組み合わせの機能を実現するよう全体的又は部分的に構成されてもよい。オペレーティングシステム１５１２は、図１のオペレーティングシステム１１２、図２のオペレーティングシステム２１２、図４のオペレーティングシステム４１２、図７のオペレーティングシステム７１３、図９のオペレーティングシステム９１３、図１２のオペレーティングシステム１２１３及び／又はこれらの何れかの組み合わせの機能を実現するよう全体的又は部分的に構成されてもよい。Ｏ／Ｓ下位セキュリティエージェント１５１６は、図１のＯ／Ｓ下位トラップエージェント１０４、図２のＳＶＭＭセキュリティエージェント２１７若しくはＳＶＭＭ２１６、図４のファームウェアセキュリティエージェント４４０、４４２、ＰＣファームウェアセキュリティエージェント４４４若しくはＯ／Ｓ下位システムエージェント４５０、図５のファームウェアセキュリティエージェント５１６、図７のマイクロコードセキュリティエージェント７０８、図９のＯ／Ｓ下位トラップエージェント９２０、図１２のＯ／Ｓ下位セキュリティエージェント１２２０及び／又はこれらの何れかの組み合わせの機能を実現するよう全体的又は部分的に構成されてもよい。
【０２５５】
図１５に示されるように、Ｏ／Ｓ下位セキュリティエージェント１５１６は、セキュリティルール１５２２を有してもよい。セキュリティルール１５２２は、図１のセキュリティルール１１４、図２のセキュリティルール２２２、図４のセキュリティルール４３４、４３６、４３８、図５のセキュリティルール５１８、図７のセキュリティルール７０７、７２３、図９のセキュリティルール９０８、図１２のセキュリティルール７０７、７２３及び／又はこれらの何れかの組み合わせの機能を実現するよう全体的又は部分的に構成されてもよい。セキュリティルール１５２２は、何れか適切な方法により設定されてもよい（例えば、電子デバイス１５０４のユーザにより設定されたポリシー、電子デバイス１５０４を含む企業のアドミニストレータにより設定されたポリシー、Ｏ／Ｓ下位セキュリティエージェント１５１６の作成者により設定されたポリシーなど）。一部の実施例では、Ｏ／Ｓ下位セキュリティエージェント１５１６は、ネットワーク２４４を介しプロテクションサーバ２０２からセキュリティルール１５２２に対する更新又は修正を要求及び／又は受信してもよい（例えば、マルウェアの定義に対する更新のためなど）。
【０２５６】
図１５に示されるように、セキュリティルール１５２２は、アクセスマップ１５６２とポリシー１５６４とを有してもよい。アクセスマップ１５６２は、１以上の信頼されるアクセスに関するコンテクスト情報と共に、オペレーティングシステム１５１２及びドライバ１５１１の各種コンポーネント（ファンクション、データ及び／又は他のコンポーネントなど）の１以上の信頼されたアクセスを設定するログ、リスト、マップ又は他のデータ構造を有してもよい。図１６は、アクセスマップ１５６２の実施例である。特定の実施例では、アクセスマップ１５６２は、実質的にマルウェアのないオペレーティングシステム（図１８のオペレーティングシステム１８１２など）と他の電子デバイス（図１８の電子デバイス１８００など）上のそれの実質的にマルウェアのない信頼されたドライバ（信頼されたドライバ１８１１など）との実行をシミュレートすることによって生成されてもよい。当該実施例によるアクセスマップ１５６２の作成は、図１８及び１９に関して以下においてより詳細に説明される。図１６に示されるように、アクセスマップ１５６２は、１以上のファンクションアクセスサブマップ１６０２、１以上のデータアクセスサブマップ１６０４及び／又は１以上のスタックアクセスマップ１６０６を含むものであってもよい。
【０２５７】
ファンクションアクセスサブマップ１６０２は、オペレーティングシステム１５１２又は信頼されたドライバ１５１１の特定のファンクションについて、他の信頼されたファンクションによる特定のファンクションへの信頼されたアクセスを定義してもよい。ファンクションアクセスサブマップ１６０２はまた、一部の実施例では、信頼されたアクセスのコール元のファンクションが特定のドライバないにあるコードセクション（メモリ位置により特定されるように）を含むコンテクスト情報などのファンクションへの信頼されたアクセスに関連するコンテクスト情報を含むものであってもよい。
【０２５８】
データアクセスサブマップ１６０４は、オペレーティングシステム１５１２又はドライバ１５１１の特定のデータアイテムについて、信頼されたファンクションによる特定データへの信頼されたアクセスを定義してもよい。データアクセスサブマップ１６０４はまた、一部の実施例では、信頼されたファンクションに関する特定のメモリ位置、信頼されたファンクションが特定のドライバないにあるコードセクション（メモリ位置により特定されるような）、及び／又は信頼されたアクセスがリード又はライトアクセスであるか否かを含む、データアイテムへの信頼されたアクセスに関するコンテクスト情報を含むものであってもよい。
【０２５９】
スタックアクセスサブマップ１６０６は、複数のファンクションの間の許可されたコール関係を記述するファンクションスタックを定義してもよい。スタックアクセスサブマップ１６０６において、スタックの各ファンクションは、ファンクションスタックのそれの下位に出現するファンクションにアクセスするのに信頼されている。スタックアクセスサブマップ１６０６は、ファンクションアクセスサブマップ１６０２のものと同様のコンテクスト情報を有してもよい。スタックアクセスサブマップ１６０６は、例えば、特定のファンクションＦ２がファンクションＦ３をコールし、ファンクションＦ３がＦ４をコールし、Ｆ３をコールするＦ４とＦ２をコールするＦ３とが信頼されたファンクションコールパスでないことを示す。
【０２６０】
アクセスマップ１５６２において提供される各種ファンクション、データ、コードセクション、ドライバ及び他のエンティティの身元は、当該ファンクション、データ、コードセクション、ドライバ又はエンティティがメモリに格納されているメモリ位置（物理メモリアドレス又はバーチャルメモリアドレスなど）により規定されてもよい。図１７は、図１６の一例となるアクセスマップ１５６２において定義されたファンクション及びデータの間の相互関係をさらに示すバーチャルメモリ１７９９の実施例である。図１７に示されるように、メモリ１７００は、メモリアドレス１７０１、１７０６、１７１０及び１７１４にそれぞれ配置されるドライバＹ１、Ｙ２、Ｙ３及びＹ４を有する。ドライバＹ１は、アドレス１７０２のコードセクションＸ１内のアドレス１７０３においてファンクションＦ１を有してもよい。ドライバＹ１はまた、アドレス１７０４のデータセクションＤ１内にデータポインタ１７０５を有してもよい。ドライバＹ２は、アドレス１７０７のコードセクションＸ２内のアドレス１７０８においてファンクションＦ２を有してもよい。ドライバＹ３は、アドレス１７１１のコードセクションＸ３内のアドレス１７１２においてファンクションＦ３を有してもよい。ドライバＹ４は、アドレス１７１５のコードセクションＸ３内のアドレス１７１６においてファンクションＦ４を有してもよい。ファンクションＦ２のメモリアドレスＺ２は、メモリ位置１７０９にあってもよい。ファンクションＦ３のメモリアドレスＺ３は、メモリ位置１７１３にあってもよい。ファンクションＦ４のメモリアドレスＺ４は、メモリ位置１７１７にあってもよい。図１７の各種矢印は、図１６のアクセスマップ１５６２において設定されるファンクションとデータとの間の信頼されたアクセスを示す。例えば、ファンクションアクセスサブマップ１６０２の信頼されたアクセスは、アドレス１７０８のファンクションＦ２とアドレス１７０３のファンクションＦ１との間の信頼された実行コールを示す矢印、アドレス１７１２のファンクションＦ３とアドレス１７０３のファンクションＦ１との間の信頼された実行コールを示す矢印、及びアドレス１７１６のファンクションＦ４とアドレス１７０３のファンクションＦ１との間の信頼された実行コールを示す矢印によって示される。
【０２６１】
図１５に戻って、ポリシー１５６４は、Ｏ／Ｓ下位セキュリティエージェント１５１６によりトラップされるイベント及び／又はトラップされるイベントの処理を規定するため適用されるポリシーを設定したログ、リスト又は他のデータ構造を有してもよい。特定の実施例では、ポリシーは、オペレーティングシステム１５１２のコンポーネント又は信頼されたドライバ１５１１を格納するメモリの部分に対するドライバファンクションによる試行されたアクセス（リード、ライト、実行、ファンクションコールなど）に応答して、アクセスマップ１５６２のエントリがドライバファンクションがコンポーネントへのアクセスを有することを示す場合（一部の実施例では、ドライバファンクションは、アクセスマップ１５６２に規定されるように、ドライバの特定のコードセクションにあるという通知を含む）、Ｏ／Ｓ下位セキュリティエージェント１５１６が試行されたアクセスを許可してもよいことを指示してもよい。同一の又は他の実施例では、ポリシーは、オペレーティングシステム１５１２のコンポーネント又は信頼されたドライバ１５１１を格納するメモリの部分に対するドライバファンクションにより試行されたアクセス（リード、ライト、実行、ファンクションコールなど）に応答して、アクセスマップ１５６２へのエントリが当該ドライバファンクションが当該コンポーネントへのアクセスを有していることを示さない場合（一部の実施例では、アクセスマップ１５６２に規定されるように、ドライバファンクションがドライバの特定のコードセクションにあるという通知を含む）、Ｏ／Ｓ下位セキュリティエージェント１５１６は当該試行されたアクセスを拒絶してもよいことを示すものであってもよい。上記及び他の実施例では、ポリシーは、未知のドライバファンクションによりオペレーティングシステム１５１２のコンポーネント又は信頼されたドライバ１５１１に対する試行されたアクセスについて、特定の試行されたアクセスが許可され、他の試行されたアクセスが拒絶され、及び／又は当該アクセスに関する情報は、さらなる解析のためのフォレンジックエビデンスとしてプロテクションサーバ２０２に通信されてもよい。
【０２６２】
動作について、Ｏ／Ｓ下位セキュリティエージェント１５１６は、本開示に提供される何れかのトラップ技術に従って、オペレーティングシステム１５１２のコンポーネント及びドライバ１５１１への試行されたアクセスに対してトラップしてもよい。一部の実施例では、Ｏ／Ｓ下位セキュリティエージェント１５１６は、セキュリティルール１５２２に従ってイベントに応答してトラップしてもよい。オペレーティングシステム１５１２のコンポーネント及びドライバ１５１１への試行されたアクセスをトラップすることに応答して、Ｏ／Ｓ下位セキュリティエージェント１５１６は、試行されたアクセスが信頼されているか判断するため、試行されたアクセスに関するコンテクスト情報とアクセスマップ１５６２とを比較してもよい。試行されたアクセスが信頼されている場合（例えば、試行されたアクセスがアクセスマップ１５６２の対応するエントリを有する場合など）、Ｏ／Ｓ下位セキュリティエージェント１５１６は、アクセスを許可してもよい。試行されたアクセスが信頼されていない場合（例えば、試行されたアクセスがアクセスマップ１５６２において対応するエントリを有しない場合など）、Ｏ／Ｓ下位セキュリティエージェント１５１６は、訂正アクションを開始してもよい。訂正アクションは、試行されたアクセスの拒絶、アクセスを許可若しくは拒絶するか判断するためのポリシー１５６４の照会、及び／又はさらなる処理のためプロテクションサーバ２０２へのアクセスに関するフォレンジックデータの報告（コンテクスト情報など）を含むものであってもよい。従って、アクセスマップ１５６２及びポリシー１５６４に関してＯ／Ｓ下位セキュリティエージェント１５１６は、オペレーティングシステム１５１２のコンポーネント及びドライバ１５１１に対する悪意ある攻撃をプロテクトしてもよい。
【０２６３】
一部の実施例では、ポリシー１５６４は、信頼されない試行されたアクセスに応答してＯ／Ｓ下位セキュリティエージェント１５１６により開始された訂正アクションが、試行されたアクセスが悪意の可能性のないエンティティ又は悪意の可能性のあるエンティティによるものであるかに依存してもよいことを示すものであってもよい。悪意の可能性のあるエンティティは、信頼されない試行されたアクセス（アクセスマップ１５６２において対応するエントリを有しないなど）を開始し、マルウェアの存在の可能性を示す動作を示す（例えば、電子デバイス１５０４のセンシティブリソースにアクセスする試み、オペレーティングシステム１５１２により提供されるファンクションルーティングを利用することなくサブファンクションにアクセスするための試みなど）Ｏ／Ｓ下位セキュリティエージェント１５１６に未知のアプリケーション、ドライバ又は他のエンティティ（例えば、ホワイトリスト又はブラックリストの何れにも出現しない）であってもよい。悪意の可能性のないエンティティは、悪意の可能性のあるエンティティであると検出されなかった何れかのエンティティであってもよい。悪意の可能性のないエンティティの場合、ポリシー１５６４は、他のものを拒絶しながら、特定の試行されたアクセスを許可してもよい。例えば、悪意の可能性のないエンティティについて、ネットワークコール及びファイルシステムコールが許可される一方、内部のネットワークディスパッチルーチンポインタを修正したり、内部のＮＤＩＳ（Ｎｅｔｗｏｒｋ  Ｄｒｉｖｅｒ  Ｉｎｔｅｒｆａｃｅ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ）ポインタを修正したり、又はカーネルコードセクション、データセクション又はＳＳＤＴ（Ｓｓｙｓｔｅｍ  Ｓｅｒｖｉｃｅ  Ｄｉｓｐａｔｃｈ  Ｔａｂｌｅ）への書き込みのための試行されたアクセスは拒絶されてもよい。他方、悪意の可能性のあるエンティティについて、試行されるすべてのアクセスが拒絶されてもよい。
【０２６４】
他の実施例では、ポリシー１５６４は、未知のエンティティ（ホワイトリスト又はブラックリストに出現しないエンティティなど）が制限付きで一度だけ試行されたアクセスを実行するよう許可され、その後、当該アクセスに関する情報がプロテクションサーバ２０２に通信され、さらなる訂正アクションを決定するため評価されてもよい。
【０２６５】
図１８は、アクセスマップ１５６２を生成するシステム１８００の実施例である。システム１８００は、オペレーティングシステム１８１２及び信頼されるドライバ１８１１の観察された動作に基づきアクセスマップ１５６２のエントリを生成するため、電子デバイス１８０４上で動作するよう構成されるＯ／Ｓ下位セキュリティエージェント１８１６を有してもよい。図１８に示されるように、電子デバイス１８０４は、プロセッサ１８０６、メモリ１８０８、ドライバ１８１１、オペレーティングシステム１８１２、及びＯ／Ｓ下位セキュリティエージェント１８１６を有してもよい。電子デバイス１８０４は、図１の電子デバイス１０３、図２の電子デバイス２０４、図４の電子デバイス４０４、図７の電子デバイス７０１、図９の電子デバイス９０１、図１２の電子デバイス１２０１及び／又はこれらの何れかの組み合わせの機能を実現するよう全体的又は部分的に構成されてもよい。
【０２６６】
プロセッサ１８０６は、例えば、マイクロプロセッサ、マイクロコントローラ、デジタル信号プロセッサ（ＤＳＰ）、ＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）又はプログラム命令及び／若しくはプロセスデータを解釈及び／若しくは実行するよう構成される他の何れかのデジタル若しくはアナログ回路などを有してもよい。いくつの実施例では、プロセッサ１８０６は、メモリ１８０８に格納されているプログラム命令及び／又はプロセスデータを解釈及び／又は実行してもよい。メモリ１８０８は、アプリケーションメモリ、システムメモリ又は双方として部分的又は全体的に構成されてもよい。メモリ１８０８は、１以上のメモリモジュールを保持及び／又は収容するよう構成される何れかのシステム、デバイス又は装置を有してもよく、例えば、メモリ１８０８は、ＲＯＭ、ＲＡＭ、ソリッドステートメモリ又はディスクベースメモリを含むものであってもよい。各メモリモジュールは、ある期間においてプログラム命令及び／又はデータを保持するよう構成される何れかのシステム、デバイス又は装置（コンピュータ可読な非一時的媒体など）を含むものであってもよい。
【０２６７】
Ｏ／Ｓ下位セキュリティエージェント１８１６は、図１のＯ／Ｓ下位トラップエージェント１０４、図２のＳＶＭＭセキュリティエージェント２１７若しくはＳＶＭＭ２１６、図４のファームウェアセキュリティエージェント４４０、４４２、ＰＣファームウェアセキュリティエージェント４４４又はＯ／Ｓ下位システムエージェント４５０、図５のファームウェアセキュリティエージェント５１６、図７のマイクロコードセキュリティエージェント７０８、図９のＯ／Ｓ下位トラップエージェント９２０、図１２のＯ／Ｓ下位セキュリティエージェント、図１５のＯ／Ｓ下位セキュリティエージェント１５１６及び／又はこれらの何れかの組み合わせの機能を実現するよう全体的又は部分的に構成されてもよい。
【０２６８】
オペレーティングシステム１８１２は、図１のオペレーティングシステム１１２、図２のオペレーティングシステム２１２、図４のオペレーティングシステム４１２、図７のオペレーティングシステム７１３、図９のオペレーティングシステム９１３、図１２のオペレーティングシステム１２１３、図１５のオペレーティングシステム１５１２、及び／又はこれらの何れかの組み合わせの機能を実現するよう全体的又は部分的に構成されてもよい。信頼されるドライバ１８１１は、図１のドライバ１１１、図２のドライバ２１１、図４のドライバ４１１、図７のドライバ７１１、図９のドライバ９１１、図１２のドライバ１２１１、図１５のドライバ１５１１及び／又はこれらの何れかの組み合わせの機能を実現するよう全体的又は部分的に構成されてもよい。しかしながら、電子デバイス１８０４における利用に関して、オペレーティングシステム１８１２はマルウェアがなく、信頼されるドライバ１８１１は、悪意がなく、マルウェアがないと知られるドライバのみを含む。例えば、オペレーティングシステム１８１２及び信頼されるドライバ１８１１は悪意のあるエンティティを有しないことを保証するため、電子デバイス１８０４に関して配慮されてもよい。具体例として、オペレーティングシステム１８１２及び信頼されるドライバ１８１１は、電子デバイス１８０４のエンプティ又は新たにフォーマット化されたコンピュータ可読媒体にインストールされてもよく、Ｏ／Ｓ下位セキュリティエージェント１８１６以外のエンティティは電子デバイス１８０４上でインストールされないことが配慮されてもよい。
【０２６９】
動作について、Ｏ／Ｓ下位セキュリティエージェント１８１６は、本開示に提供される何れかのトラップ技術に従って、オペレーティングシステム１８１２のコンポーネント及び信頼されるドライバ１８１１への試行されたアクセスに応答してトラップしてもよい。システム１８１２のコンポーネント及び信頼されるドライバ１８１１へのアクセスをトラップすることに応答して、Ｏ／Ｓ下位セキュリティエージェント１８１６は、当該アクセスに関するコンテクスト情報を決定し、当該アクセス及びコンテクスト情報のレコードを格納してもよい（例えば、ファンクションアクセスサブマップ１６０２、データアクセスサブマップ１６０４、ファンクションスタックアクセスサブマップ１６０６の一部として又は他の適切な方法により）。従って、実質的にマルウェアのない電子デバイス１８０４の実行と、オペレーティングシステム１８１２及びその信頼されたドライバ１８１１の間の信頼される依存関係とが、アクセスマップ１５６２のエントリを生成するため、Ｏ／Ｓ下位セキュリティエージェント１８１６により観察されてもよく、各エントリは、オペレーティングシステム１８１２のコンポーネント又は信頼されるドライバ１８１１への信頼されるアクセスを規定する。アクセスマップ１５６２のエントリは実質的にマルウェアがないと知られるエンティティのシミュレートされた実行に基づき生成されるため、アクセスマップ１５６２は、追加的なエンティティなしにオペレーティングシステム１８１２及びその信頼されるドライバ１８１１の標準的な予想される動作の表現を含むものであってもよい。従って、アクセスマップ１５６２は、オペレーティングシステム１８１２のコンポーネント及びそれの信頼されるドライバ１８１１への正当な悪意のないアクセスを有するエントリのみを含むものであってもよい。
【０２７０】
この結果、電子デバイス１８０４のＯ／Ｓ下位セキュリティエージェント１８１６がアクセスマップ１５６２を生成すると、アクセスマップ１５６２はＯ／Ｓ下位セキュリティエージェント１５１６に利用可能とされてもよく（例えば、ネットワーク２４４を介しアクセスマップ１５６２にアクセスすることによって、電子デバイス１５０４にアクセスマップをダウンロードすることによって、コンピュータ可読記憶媒体を介し電子デバイス１５０４に転送することによってなど）、Ｏ／Ｓ下位セキュリティエージェント１５１６は、上述されるように、試行されたアクセスの何れが信頼され、又は信頼されていないか判断し、当該判断に基づきさらなるアクションを実行するため、オペレーティングシステム１５１２のコンポーネント及び／又はドライバ１５１１への試行されたアクセスをトラップしてもよい。この結果、Ｏ／Ｓ下位セキュリティエージェントは、オペレーティングシステム１５１２及び信頼されるドライバ１５１１を悪意あるアクセスからプロテクトしてもよい。
【０２７１】
図１９は、電子デバイスのオペレーティングシステムカーネルをプロテクトする方法１９００の実施例である。本方法１９００では、オペレーティングシステムにインストールされた第１電子デバイス上で実行される第１Ｏ／Ｓ下位セキュリティエージェントと、マルウェアが実質的にない関連する信頼されるドライバとが、アクセスマップを作成するのに利用されてもよい（ステップ１９０５〜１９１０などを参照されたい）。さらに、第２電子デバイス上で実行される第２Ｏ／Ｓ下位セキュリティエージェントは、アクセスマップを参照することにより、第２電子デバイスにインストールされた第２オペレーティングシステムのコンポーネントとそれの関連するドライバとをプロテクトしてもよい（ステップ１９１５〜１９３０などを参照されたい）。
【０２７２】
ステップ１９０５において、オペレーティングシステムがインストールされた第１電子デバイス上で実行される第１Ｏ／Ｓ下位セキュリティエージェントと、実質的にマルウェアのない関連する信頼されたドライバとが、オペレーティングシステムのコンポーネント（ファンクション及びデータなど）及び／又は信頼されるドライバへのアクセスをトラップしてもよい。ステップ１９１０において、第１Ｏ／Ｓ下位セキュリティエージェントは、アクセスに関連するコンテクスト情報を含む、アクセスに関する情報をアクセスマップに記録してもよい。他のコール元ファンクションによるファンクションへのアクセスに関して、当該コンテクスト情報は、信頼されるアクセスのコール元ファンクションが特定のドライバ以内に配置されるコードセクション（メモリ位置などにより特定される）を含むものであってもよい。コール元ファンクションによるデータアイテムへのアクセスに関して、当該コンテクスト情報は、信頼されるファンクションに関する特定のメモリレジスタ、信頼されるファンクションが特定のドライバ内に配置されるコードセクション、及び／又は信頼されるアクセスがリード又はライトアクセスであるか否かを含むものであってもよい。
【０２７３】
ステップ１９１５において、第２電子デバイス上で実行される第２Ｏ／Ｓ下位セキュリティエージェントは、第２電子デバイス上で実行されるオペレーティングのコンポーネント及び／又はドライバへの試行されたアクセスをトラップしてもよい。ステップ１９２０において、コンポーネントへの試行されたアクセスのトラップに応答して、第２Ｏ／Ｓ下位セキュリティエージェントは、試行されたアクセスが信頼されるか判断するため、試行されたアクセスに関するコンテクスト情報とアクセスマップとを比較してもよい。試行されたアクセスは、それがアクセスマップにおいて対応するエントリを有する場合、信頼されてもよい。試行されるアクセスが信頼される場合、本方法１９００はステップ１９２５に移行してもよい。試行されるアクセスが信頼されない場合、本方法１９００はステップ１９３０に移行してもよい。
【０２７４】
ステップ１９２５において、試行されるアクセスが信頼されると判断されたことに応答して、第２Ｏ／Ｓ下位セキュリティエージェントは、試行されるアクセスを許可してもよい。ステップ１９２５の終了後、本方法１９００はステップ１９１５に再び移行してもよい。
【０２７５】
ステップ１９３０において、試行されるアクセスが信頼されないと判断されたことに応答して、第２Ｏ／Ｓ下位セキュリティエージェントは、訂正アクションを開始してもよい。訂正アクションは、試行されるアクセスの拒絶、アクセスを許可若しくは拒絶するか判断するためのポリシーの照会、及び／又はさらなる処理のためプロテクションサーバへのアクセスに関するフォレンジックデータの報告（例えば、コンテクスト情報など）を含むものであってもよい。ステップ１９２５の終了後、本方法１９００はステップ１９１５に再び移行してもよい。
【０２７６】
図２０は、マルウェアから電子デバイス２００１をプロテクトするよう構成されるオペレーティングシステムをセキュアに実行するためのオペレーティングシステム実行環境を提供するシステム２０００の実施例である。図２０からの要素は、図２１及び図２２からの共通の名前が付されたパーツと同じであってもよい。システム２０００は、オペレーティングシステム実行環境２００８（ＯＳＥＥ）のセキュアな起動を提供するよう構成される起動モジュール２０２０を有してもよい。起動モジュール２０２０は、Ｏ／Ｓ下位セキュリティエージェント２００４、オペレーティングシステム２０１２及びＯ／Ｓ内セキュリティエージェント２０１６などのＯＳＥＥ２００８のコンポーネントが起動前にマルウェアにより制約されていないことを保証することによって、ＯＳＥＥ２００８のセキュアな起動を提供するよう構成されてもよい。起動モジュール２０２０がＯＳＥＥ２００８のセキュアな起動を良好に提供した後、Ｏ／Ｓ下位セキュリティエージェント２００４及びＯ／Ｓ内セキュリティエージェント２０１６などのＯＳＥＥ２００８のコンポーネントは、起動モジュール２０２０などの電子デバイス２００１のコンポーネントをマルウェアが件センすることを阻止するため連係してもよい。
【０２７７】
電子デバイス２００１は、ＯＳＥＥ２００８のセキュアな起動を提供するよう構成される起動モジュール２０２０を有してもよい。ＯＳＥＥ２００８は、１以上のオペレーティングシステム２０１２を実行するためのセキュアな環境を提供するため、Ｏ／Ｓ下位セキュリティエージェント２００４及びＯ／Ｓ内セキュリティエージェント２０１６を有してもよい。電子デバイス２００１はまた、１以上のオペレーティングシステム２０１２を実行するためのセキュアな環境を提供するのに役立つため、プロテクションサーバ２０２２に通信接続されてもよい。プロテクションサーバ２０２２は、バックアップストレージデバイス２０２４を有してもよい。電子デバイス２００１は、図１の電子デバイス１０３、図２の電子デバイス１０４、図４の電子デバイス４０４、図７の電子デバイス７０１、及び／又はこれらの何れかの組み合わせの機能を実現するよう全体的又は部分的に構成されてもよい。電子デバイス２００１は、１以上のプロセッサ２００２、メモリ２００３又はストレージデバイス２００６などのリソース２０２６を有してもよい。プロセッサ２００２は、図２のプロセッサ２０８、図４のプロセッサ４０６、図７のプロセッサ７０２、及び／又はこれらの何れかの組み合わせの機能を実現するよう全体的又は部分的に構成されてもよい。メモリ２００３は、図２のメモリ２０７、図４のメモリ４０８、図７のメモリ７０３、及び／又はこれらの何れかの組み合わせの機能を実現するよう全体的又は部分的に構成されてもよい。オペレーティングシステム２０１２は、図１のオペレーティングシステム１１２、図２のオペレーティングシステム２１２、図４のオペレーティングシステム４１２、図７のオペレーティングシステム７１３、及び／又はこれらの何れかの組み合わせの機能を実現するよう全体的又は部分的に構成されてもよい。Ｏ／Ｓ内セキュリティエージェント２０１６の実施例の説明は、図２２からのＯ／Ｓ内セキュリティエージェント２２０６の説明に見つけられてもよい。Ｏ／Ｓ下位セキュリティエージェント２００４の実施例の説明は、図２２からのＯ／Ｓ下位セキュリティエージェント２２０８の説明に見つけられてもよい。
【０２７８】
ストレージデバイス２００６は、図１のリソース１０６、図２のシステムリソース２１４、図４のストレージ４２６、図５のＩ／Ｏデバイス５０２、及び／又はこれらの何れかの組み合わせの機能を実現するよう全体的又は部分的に構成されてもよい。ストレージデバイス２００６は、データ又は他の情報を格納するのに適した何れかのリソースを有してもよい。例えば、ストレージデバイス２００６は、限定することなく、ダイレクトアクセスストレージデバイス（ハードディスクドライブやフロッピー（登録商標）ディスクなど）、シーケンシャルアクセスストレージデバイス（テープディスクドライブなど）、コンパクトディスク、ＣＤ−ＲＯＭ、ＤＶＤ、ＲＡＭ、及び／又はフラッシュメモリ（フラッシュベースソリッドステートドライブなど）を含むものであってもよい。ストレージデバイス２００６は、それそれが一定量のデータを格納可能な１以上のセクタに分割されてもよい。例えば、ストレージデバイス２００６は、何れか適切なセクタサイズが利用されてもよいが、それぞれが５１２バイトのセクタに分割されてもよい。各種実施例では、ストレージデバイス２００６は、プロテクションサーバ２０２２などの電子デバイス２００１から遠隔配置されてもよい。他の実施例では、ストレージデバイス２００６は、電子デバイス２００１のローカルリソース２０２６であってもよい。
【０２７９】
バックアップストレージデバイス２０２４は、データ又は他の情報を格納するのに適した何れかのリソースを有してもよい。例えば、バックアップストレージデバイス２０２４は、ストレージデバイス２００６の機能により実現されてもよく、又は当該機能を実現するよう構成されてもよい。バックアップストレージデバイス２０２４は、ストレージデバイス２００６などの電子デバイス２００１のローカルストレージデバイスにより実現されてもよい。他の実施例では、バックアップストレージデバイス２０２４は、プロテクションサーバ２０２２などのネットワーク上に配置されたリモートストレージデバイスにより実現されてもよい。バックアップストレージデバイス２０２４がネットワーク上にある場合、Ｏ／Ｓ下位セキュリティエージェント２００４は、ネットワーク接続を利用して、バックアップストレージデバイス２０２４にアクセスしてもよい。ネットワーク接続は、マルウェアに感染する可能性のあるオペレーティングシステムカーネルのネットワークデバイスドライバを利用することを回避するため、オペレーティングシステム２０１２の下位の優先レベルにおいて実現されてもよい。ネットワーク接続は、電子デバイス２００１のネットワークカードに直接アクセスすることによって、バックアップストレージデバイス２０２４にアクセスするためのＨＴＴＰＳ、ｉＳＣＳＩ、ＮＦＳ又はＣＩＦＳクライアントの利用を可能にするＡｃｔｉｖｅ  Ｍａｎａｇｅｍｅｎｔ  Ｔｅｃｈｎｏｌｏｇｙ（ＡＭＴ）を用いて実現されてもよい。当該実施例では、ネットワーク接続がバックアップストレージデバイス２０２４にアクセスすることが要求されるが、バックアップストレージデバイス２０２４は、電子デバイス２００１のオペレーティングシステム２０１２上で実行される何れのマルウェアからも隔離されてもよい。
【０２８０】
プロテクションサーバ２０２２は、電子デバイス２００１から遠隔は位置され、セキュリティルール２０１８を提供するか、又は他の情報を送受信するため、起動モジュール２０２０、Ｏ／Ｓ下位セキュリティエージェント２００４及びＯ／Ｓ内セキュリティエージェント２００１などの電子デバイス２００１のコンポーネントと通信するよう構成されてもよい。例えば、プロテクションサーバ２０２２は、リソース２０２６にアクセスするための疑わしい試行に関する情報を受信し、以降の解析のため当該情報を格納してもよい。プロテクションサーバ２０２２は、図１のプロテクションサーバ１０２、図２のプロテクションサーバ２０２及び／又はこれらの何れかの組み合わせの機能により実現されるか、又は当該機能を実現するよう構成されてもよい。
【０２８１】
セキュリティルール２０１８は、各イベントについてトラップ及び適切なレスポンスを要求するイベントを指定するのに適した何れかのルール、ロジック、コマンド、命令、フラグ又は他の機構を有してもよい。セキュリティルール２０１８は、図１のセキュリティルール１１４、図２のセキュリティルール２２０、２２２、図４のセキュリティルール４２０、４２２、４３４、４３６、４３８、図５のセキュリティルール５１８、図７のセキュリティルール７０７、７２１、７２３及び／又はこれらの何れかの組み合わせの機能によって実現されてもよいし、又は当該機能を実現するよう構成されてもよい。
【０２８２】
起動モジュール２０２０は、Ｏ／Ｓ下位セキュリティエージェント２００４、オペレーティングシステム２０１２及びＯ／Ｓ内セキュリティエージェント２０１６などのＯＳＥＥ２００８のコンポーネントが起動前にマルウェアにより制約されないことを保証することによって、ＯＳＥＥ２００８のセキュアな起動を提供するよう構成されてもよい。起動モジュール２０２０は、Ｏ／Ｓ下位セキュリティエージェント２００４、オペレーティングシステム２０１２及びＯ／Ｓ内セキュリティエージェントに関連する１以上のプロテクトされたファイルのインテグリティを検証することによって、Ｏ／Ｓ下位セキュリティエージェント２００４、オペレーティングシステム２０１２及びＯ／Ｓ内セキュリティエージェント２０１６がマルウェアにより制約されるか評価してもよい。起動モジュール２０２０がプロテクトされたファイルの何れかにマルウェアを検出した場合、起動モジュール２０２０は、バックアップコピーからプロテクトされるファイルを復元するよう構成されてもよい。ＯＳＥＥ２００８のコンポーネントがマルウェアにより制約されていないか、又は起動モジュール２０２０が、マルウェアにより制約されたＯＳＥＥ２００８の何れかのコンポーネントを良好に復元したことを起動モジュール２０２０が検証した後、起動モジュール２０２０は、ＯＳＥＥ２００８を起動してもよい。ＯＳＥＥ２００８を起動した後、起動モジュール２０２０は、オペレーティングシステム２０１２などのＯＳＥＥ２００８の他のコンポーネントを起動する前に、Ｏ／Ｓ下位セキュリティエージェント２００４を起動してもよい。
【０２８３】
起動モジュール２０２０がＯＳＥＥ２００８のセキュアな起動を提供するのに成功した後、Ｏ／Ｓ下位セキュリティエージェント２００４及びＯ／Ｓ内セキュリティエージェント２０１６などのＯＳＥＥ２００８のコンポーネントは、電子デバイス２００１のリソース２０２６にマルウェアが感染することを阻止するよう連係してもよい。例えば、Ｏ／Ｓ下位セキュリティエージェント２００４及び／又はＯ／Ｓ内セキュリティエージェント２０１６は、セキュリティルール２０１８により指定されるように、ストレージデバイス２０２６上の各種のプロテクトされたファイルにアクセスするための試行をインターセプトするよう構成されてもよい。プロテクトされるファイルは、起動モジュール２０２０、Ｏ／Ｓ下位セキュリティエージェント２００４又はＯ／Ｓ内セキュリティエージェント２０１６に関連するファイル又はオペレーティングシステム２０１２のコアファイルを含むものであってもよい。マルウェアからこれらのファイルをプロテクトすることは、これらのコンポーネントにより利用されるセーフガードがマルウェアにより覆されないことを保証するのに役立つものであってもよい。例えば、オペレーティングシステム２０１２の実行中に起動モジュール２０２０をマルウェアからプロテクトすることによって、起動モジュール２０２０は、電子デバイス２００１の次のスタートアップにおいてマルウェアがなくなる。このようにして、Ｏ／Ｓ下位セキュリティエージェント２００４、Ｏ／Ｓ内セキュリティエージェント２０１６及びオペレーティングシステム２０１２などのＯＳＥＥ２００８のコンポーネントは、電子デバイス２００１がブーとされるとき、起動モジュール２０２０によりマルウェアについてチェックされ、起動モジュール２０２０は、オペレーティングシステム２０１２の実行中にＯＳＥＥ２００８のコンポーネントによってマルウェアからプロテクトされてもよい。
【０２８４】
図２１は、セキュアなオペレーティングシステム実行環境を提供するシステムにおける起動モジュール２１０２の実施例である。図２１からの要素は、図２０及び図２２からの共通の名前が付けられた対応するパーツと同じであってもよい。起動モジュール２１０２は、図２０のシステムからの起動モジュール２０２０又は図２２のシステムからの起動モジュール２２２６の機能を実現するため利用されてもよい。起動モジュール２１０２は、Ｏ／Ｓ下位セキュリティエージェント２１２８、オペレーティングシステム２１２４及びＯ／Ｓ内セキュリティエージェント２１２６をセキュアに起動することによって、セキュアなオペレーティングシステム実行環境２１２２を提供するよう構成されてもよい。
【０２８５】
起動モジュール２１０２は、ブートエージェント２１０４、セキュア起動エージェント２１１０及びリカバリエージェント２１１２を有してもよい。ブートエージェント２１０４は、電子デバイス２１０１が開始されると、セキュア起動エージェント２１１０が、オペレーティングシステム２１２４及び他の何れかのソフトウェア（マルウェアなど）の前にブートされることを保証するよう構成されてもよい。セキュア起動エージェント２１１０は、ＯＳＥＥ２１２２をセキュアに起動するよう構成されてもよい。ＯＳＥＥ２１２２は、オペレーティングシステム２１２４をセキュアに実行するための実行環境であってもよい。セキュア起動エージェント２１１０は、セキュリティエージェント２１１６を利用して、Ｏ／Ｓ下位セキュリティエージェント２１２８、オペレーティングシステム２１２４及び／又はＯ／Ｓ内セキュリティエージェント２１２６がマルウェアにより感染されているか判断することによって、ＯＳＥＥ２１２２のセキュアな起動を提供してもよい。例えば、セキュア起動エージェント２１１０は、各コンポーネントのディスクイメージの暗号化ハッシュ値を比較することによって、及び／又はマルウェアを検出するのに適した他の何れかの方法を利用することによって、マルウェアの既知のパターンについてストレージデバイス２１１４の各コンポーネントのディスクイメージをスキャンすることによって、マルウェアについてＯＳＥＥ２１２２のコンポーネントをチェックしてもよい。セキュア起動エージェント２１１０がマルウェア感染を検出した場合、リカバリエージェント２１１２は、マルウェア感染から復元するのに利用されてもよい。マルウェア感染がセキュア起動エージェント２１１０により検出された場合、又はリカバリの成功がリカバリエージェント２１１２により実現された場合、セキュア起動エージェント２１１０は、Ｏ／Ｓ下位セキュリティエージェント２１２８、オペレーティングシステム２１２４及び／又はＯ／Ｓ内セキュリティエージェント２１２６を起動するよう構成されてもよい。Ｏ／Ｓ下位セキュリティエージェント２１２８は、図２２のＯ／Ｓ下位セキュリティエージェント２２０８の機能によって実現されてもよいし、又は当該機能を実現するよう構成されてもよい。Ｏ／Ｓ内セキュリティエージェント２１２６は、図２２のＯ／Ｓ内セキュリティエージェント２２０６の機能により実現されてもよいし、又は当該機能を実現するよう構成されてもよい。オペレーティングシステム２１２４は、図２０のオペレーティングシステム２０１２の機能により実現されてもよいし、又は当該機能を実現するよう構成されてもよい。ストレージデバイス２１１４は、図２０のストレージデバイス２００６の機能により実現されてもよいし、又は当該機能を実現するよう構成されてもよい。セキュリティルール２１１６は、図２０のセキュリティルール２０１８の機能により実現されてもよいし、又は当該機能を実現するよう構成されてもよい。
【０２８６】
ブートエージェント２１０４は、マスタブートレコード（ＭＢＲ）マネージャ２１０６とブートストラップローダ２１０８とを有してもよく、電子デバイス２１０１が開始されると、セキュア起動エージェント２１１０は、オペレーティングシステム２１２４及びマルウェアなどの他の何れかのソフトウェアの前にブートされることを保証するよう構成されてもよい。ＭＢＲマネージャ２１０６は、ストレージデバイス２１１４上の既存のＭＢＲ２１３０をブートストラップローダ２１０８により置換するよう構成されてもよい。ＭＢＲ２１３０は、ストレージデバイスの第１セクタ（すなわち、セクタ０）に配置されてもよく、電子デバイス２１０１が開始されるとき、オペレーティングシステム２１４又は他のソフトウェアをブートするためのものであってもよい。ＭＢＲ２１３０をブートストラップローダ２１０８により置換することによって、ブートストラップローダ２１０８は、新たなＭＢＲ２１３０になってもよい。元のＭＢＲ２１３０は実行されず、元のＭＢＲ２１３０に関するオペレーティングシステム２１２４又は他のソフトウェアはブーとされない。その代わりに、電子デバイス２１０１が開始されると、ブートストラップローダ２１０８は、それが新たなＭＢＲ２１３０になったため、実行されることになる。ブートストラップローダ２１０８は、ＯＳＥＥ２１２２を起動するためのセキュア起動エージェント２１１０をブートするよう構成されてもよい。このようにして、セキュア起動エージェント２１１０は、オペレーティングシステム２１２４及び／又は他の何れかのソフトウェアの前にブートされ、セキュア起動エージェント２１１０がＯ／Ｓ下位セキュリティエージェント２１２８、Ｏ／Ｓ内セキュリティエージェント２１２６及び／又はオペレーティングシステム２１２４をロードする前にセキュア起動エージェント２１１０がマルウェアについてチェックすることを可能にする。
【０２８７】
セキュア起動エージェント２１１０は、ＯＳＥＥ２１２２を起動するよう構成されてもよい。ＯＳＥＥ２１２２は、オペレーティングシステム２１２４をセキュアに実行するための実行環境として構成されてもよく、Ｏ／Ｓ下位セキュリティエージェント２１２８、オペレーティングシステム２１４及び／又はＯ／Ｓ内セキュリティエージェント２１２６を有してもよい。セキュア起動エージェント２１１０は、ディスクＩ／Ｏ機能、ネットワークＩ／Ｏ機能及びベーシックコンソールＩ／Ｏ機能を提供可能なスリム埋め込みオペレーティングシステムにより実現されてもよい。他の実施例では、セキュア起動エージェント２１１０は、Ｏ／Ｓ下位セキュリティエージェント２１２８により実現されてもよい。セキュア起動エージェント２１１０は、Ｏ／Ｓ下位セキュリティエージェント２１２８、オペレーティングシステム２１４及び／又はＯ／Ｓ内セキュリティエージェント２１２６がマルウェアに感染したか検出するよう構成されてもよい。マルウェア感染を検出するため、セキュア起動エージェント２１１０は、暗号化ハッシュアルゴリズムを利用して、Ｏ／Ｓ下位セキュリティエージェント２１２８、オペレーティングシステム２１２４及び／又はＯ／Ｓ内セキュリティエージェント２１２６に関連する各種のプロテクトされたファイル２１２０のインテグリティを検証してもよい。プロテクトされたファイルは、例えば、ＭＢＲ２１３０、オペレーティングシステム２１２４のコアファイル、及びＯ／Ｓ下位セキュリティエージェント２１２８及び／又はＯ／Ｓ内セキュリティエージェント２１２６の実行可能イメージなどを含むものであってもよい。プロテクトされたファイル２１２０のインテグリティを検証するため、セキュア起動エージェント２１１０は、ハッシュアルゴリズムを利用して、プロテクトされたファイル２１２０のハッシュ値を計算してもよい。計算されたハッシュ値は、その後、プロテクトされたファイル２１２０について以前に生成されたハッシュ値と比較されてもよい。ハッシュ値が異なる場合、プロテクトされたファイル２１２０は、おそらくマルウェアにより修正又は変更されている。各種実施例では、セキュリティエージェント２１１０は、ディスクマッピングビットマップ（ＤＭＢ）２１１８を利用して、プロテクトされたファイル２１２０のインテグリティを検証してもよい。ディスクマッピングビットマップ２１１８は、ストレージデバイス２１１４上のプロテクトされた各ファイル２１２０の位置を指定し、プロテクトされた各ファイル２１２０について以前に生成されたハッシュ値を提供してもよい。ディスクマッピングビットマップ２１１８の実施例の説明は、図２３からのディスクマッピングビットマップ２３０１の説明に見つけられてもよい。セキュア起動エージェント２１１０は、ストレージデバイス２１１４上のプロテクトされたファイル２１２０の位置を特定し、プロテクトされたファイル２１２０のハッシュ値を計算し、当該計算されたハッシュ値とディスクマッピングビットマップ２１１８により提供される以前に生成されたハッシュ値と比較するため、ディスクマッピングビットマップ２１１８を照会してもよい。プロテクトされたファイル２１２０のハッシュ値が一致しない場合、プロテクトされたファイル２１２０は、おそらくマルウェアにより変更又は修正された。セキュア起動エージェント２１１０は、マルウェア感染の可能性から復元するため、リカバリエージェント２１１２を起動してもよい。マルウェア感染の可能性が検出されない場合、又は感染の可能性のあるすべてのファイルがリカバリエージェント２１１２により復元に成功した場合、セキュア起動エージェント２１１０は、Ｏ／Ｓ下位セキュリティエージェント２１２８、オペレーティングシステム２１２４及びＯ／Ｓ内セキュリティエージェント２１２６をロードするよう進捗してもよい。セキュア起動エージェント２１１０は、ＯＳＥＥ２１２２を起動した後に終了するよう構成されてもよい。
【０２８８】
リカバリエージェント２１１２は、Ｏ／Ｓ下位セキュリティエージェント２１２８、オペレーティングシステム２１２４及び／又はＯ／Ｓ内セキュリティエージェント２１２６に関連する１以上のプロテクトされたファイル２１２０のマルウェア感染から復元するよう構成されてもよい。マルウェア感染から復元させるため、リカバリエージェント２１１２は、バックアップストレージデバイスからバックアップファイルを抽出し、感染したプロテクトされたファイル２１２０を対応するバックアップファイルに置換するよう構成されてもよい。バックアップファイルは、例えば、電子デバイス２１１４上など電子デバイス２１０１上にローカルに格納されてもよい。バックアップファイルはまた、電子デバイス２１０１から遠隔的な位置に格納されてもよい。例えば、バックアップファイルは、図２０からのプロテクションサーバ２０２２のバックアップストレージデバイス２０２４上など、ネットワーク上に格納されてもよい。バックアップファイルのメタデータが維持され、バックアップファイルが作成された日時と改訂番号とを含むものであってもよい。プロテクトされたファイル２１２０の復元のためバックアップファイルを利用する前に、リカバリエージェント２１１２は、バックアップファイルがマルウェアにより感染されていないことを保証するため、バックアップファイルのインテグリティを検証するよう構成されてもよい。リカバリエージェント２１１２は、セキュア起動エージェント２１１０がプロテクトされたファイル２１２０のインテグリティを検証するの同様にして、バックアップファイルのインテグリティを検証してもよい。例えば、リカバリエージェント２１１２は、バックアップファイルのハッシュ値を計算し、計算されたハッシュ値とディスクマッピングビットマップ２１１８からのバックアップファイルの対応するハッシュ値と比較してもよい。ハッシュ値の比較が、マルウェアによりバックアップファイルが感染しているかもしれないことを示す場合、バックアップファイルは利用されないか、及び／又は古いバックアップファイルが利用されてもよい。リカバリエージェント２１１２は、セキュア起動エージェント２１１０がＯ／Ｓ下位セキュリティエージェント２１２８、オペレーティングシステム２１２４及びＯ／Ｓ内セキュリティエージェント２１２６を起動することに進むことを可能にするため、復元の成功をセキュア起動エージェント２１１０に通知するよう構成されてもよい。
【０２８９】
図２２は、オペレーティングシステムをセキュアに実行するためのオペレーティングシステム実行環境（ＯＳＥＥ）２２０２の実施例である。図２２からの要素は、図２０及び図２１からの共通の名前が付された対応するパーツと同じであってもよい。ＯＳＥＥ２２０２は、例えば、図２０からのＯＳＥＥ２００８又は図２１からのＯＳＥＥ２１２２の機能などを実現するのに利用されてもよい。ＯＳＥＥ２２０２は、オペレーティングシステム２２０４をセキュアに実行するための実行環境として構成されてもよく、オペレーティングシステム２２０４、Ｏ／Ｓ下位セキュリティエージェント２２０８、Ｏ／Ｓ内セキュリティエージェント２２０６及び／又はディスクセキュリティエージェント２２１４を含むものであってもよい。ＯＳＥＥ２２０２は、起動モジュール２２２６によりセキュアに起動されてもよい。その後、Ｏ／Ｓ下位セキュリティエージェント２２０８、Ｏ／Ｓ内セキュリティエージェント２２０６及びディスクセキュリティエージェント２２１４などのＯＳＥＥ２２０２のコンポーネントは、電子デバイス２２０１のコンポーネントをマルウェアが抑制することを阻止するよう連係してもよい。例えば、ＯＳＥＥ２２０２のコンポーネントは、起動モジュール２２２６をマルウェアからプロテクトするよう連係してもよい。このようにして起動モジュール２２２６をプロテクトすることは、電子デバイス２２０１の次の初期化において、起動モジュール２２２６により利用されるセーフガードがマルウェアに感染したオペレーティングシステム２２０４、Ｏ／Ｓ下位セキュリティエージェント２２０８及び／又はＯ／Ｓ内セキュリティエージェント２２０６の起動を可能にするため覆されない。
【０２９０】
ＯＳＥＥ２２０２は、Ｏ／Ｓ下位セキュリティエージェント２２０８、オペレーティングシステム２２０４、Ｏ／Ｓ内セキュリティエージェント２２０６及び／又はディスクセキュリティエージェント２２１４を有してもよい。ＯＳＥＥ２２０２は、起動モジュール２２２６によりセキュアに起動されてもよい。起動モジュール２２２６がＯＳＥＥ２２０２のセキュアな起動の提供に成功した後、Ｏ／Ｓ下位セキュリティエージェント２２０８、Ｏ／Ｓ内セキュリティエージェント２２０６及びディスクセキュリティエージェント２２１４などのＯＳＥＥ２２０２のコンポーネントは、起動モジュール２２２６などの電子デバイス２２０１のコンポーネントをマルウェアが抑制することを阻止するよう連係してもよい。
【０２９１】
Ｏ／Ｓ下位セキュリティエージェント２２０８は、Ｏ／Ｓ下位トラップエージェント２２１０とトリガイベントハンドラ２２１２とを有してもよい。Ｏ／Ｓ下位トラップエージェント２２１０は、図１のＯ／Ｓ下位トラップエージェント１０４、図２のＳＶＭＭ２１６、図４のファームウェアセキュリティエージェント４４０、４４２若しくはＰＣファームウェアセキュリティエージェント４４４、図５のファームウェアセキュリティエージェント５１６、図７のマイクロコードセキュリティエージェント７０８及び／又はこれらの何れかの組み合わせの機能により実現されてもよいし、又は当該機能を実現するよう構成されてもよい。トリガイベントハンドラ２０１０は、図１のトリガイベントハンドラ１０８、図２のＳＶＭＭセキュリティエージェント２１７、図４のＯ／Ｓ下位エージェント４５０、図７のＯ／Ｓ下位エージェント７１２及び／又はこれらの何れかの組み合わせの機能により実現されてもよいし、又は当該機能を実現するよう構成されてもよい。各種実施例では、Ｏ／Ｓ下位トラップエージェント２２１０の機能の一部は、トリガイベントハンドラ２２１２により実行されてもよく、あるいは、トリガイベントハンドラ２２１２の機能の一部は、Ｏ／Ｓ下位トラップエージェント２２１０により実行されてもよい。一実施例では、トリガイベントハンドラ２２１２は、Ｏ／Ｓ下位セキュリティエージェント２２０８と同じ優先レベルで動作してもよい。他の実施例では、トリガイベントハンドラ２２１２は、Ｏ／Ｓ内セキュリティエージェント２２０６の一部として実現されてもよく、オペレーティングシステム２２０４の優先レベルで又は上位で動作してもよい。さらなる他の実施例では、トリガイベントハンドラ２２１２は、２以上のトリガイベントハンドラにより実現されてもよく、少なくとも１つのトリガイベントハンドラは、Ｏ／Ｓ下位セキュリティエージェント２２０８と同じ優先レベルで動作し、少なくとも１つのトリガイベントハンドラは、オペレーティングシステム２２０４の優先レベルで又は上位で動作する。
【０２９２】
Ｏ／Ｓ下位セキュリティエージェント２２０８は、Ｏ／Ｓ下位トラップエージェント２２１０を利用して、ストレージデバイス２２１８などの電子デバイス２２０１のリソースにアクセスするためのリクエストをインターセプトするよう構成されてもよい。ストレージデバイス２２１８にアクセスするためのリクエストをインターセプトすると、Ｏ／Ｓ下位トラップエージェント２２１０は、トラップされたアクセスの試みに関連するトリガイベントを作成するよう構成され、イベントに関して実行するのに適切なアクションを決定するため、トリガイベントをトリガイベントハンドラ２２１２に送信するよう構成されてもよい。トリガイベントは、リクエスト、要求元のエンティティ及び要求されたアクセスのタイプに関連するストレージデバイス２２１８のエリア（セクタ及び／又はファイルなど）などの情報を有してもよい。要求元のエンティティは、オペレーティングシステム２２０４、ドライバ２２２８又はアプリケーション２２３０など、当該リクエストを開始するためのエンティティである。要求されたアクセスのタイプは、ストレージデバイス２２１８からのコードをリード、ライト又は実行するリクエストを含むものであってもよい。
【０２９３】
トリガイベントハンドラ２２１２は、Ｏ／Ｓ下位トラップエージェント２２１０からトリガイベントを受信及び処理するよう構成されてもよい。トリガイベントは、Ｏ／Ｓ下位トラップエージェント２２１０によりトラップされたストレージデバイス２２１８にアクセスするためのリクエストに関する情報を含むものであってもよい。トリガイベントハンドラ２２１２は、トリガイベントに関連するコンテクスト情報と共に１以上のセキュリティルール２２１６を利用し、ストレージデバイス２２１８のプロテクトされたエリアにアクセスする試行を特定し、適切なレスポンスを決定するよう構成されてもよい。プロテクトされたセクタ及び／又はファイルなどのプロテクトされたエリアにアクセスするための試行を特定した後、トリガイベントハンドラ２２１２は、プロテクトされたエリアにアクセスするための試行が許可されているか判断するため、セキュリティルール２２１６を照会するよう構成されてもよい。トリガイベントハンドラ２２１２はさらに、適切なアクションの決定をＯ／Ｓ下位セキュリティエージェント２２０８に提供するよう構成されてもよい。例えば、トリガイベントハンドラ２２１２は、トリガイベントが許可又は拒絶されるべきか、あるいは、他の訂正アクションが実行されるべきかＯ／Ｓ下位セキュリティエージェント２２０８に通知してもよい。
【０２９４】
Ｏ／Ｓ内セキュリティエージェント２２０６は、図１のＯ／Ｓ内セキュリティエージェント２１８、図４のＯ／Ｓ内セキュリティエージェント４１８、図７のＯ／Ｓ内セキュリティエージェント７１９、及び／又はこれらの何れか適切な組み合わせの機能によって全体的又は部分的に実現されるか、当該機能を実現するよう構成されてもよい。Ｏ／Ｓ内セキュリティエージェント２２０６は、オペレーティングシステム２２０４の優先レベルにおいて又は上位で実行されてもよく、マルウェアから電子デバイス２２０１をプロテクトするため、１以上のセキュリティルール２２１６を照会するよう構成されてもよい。例えば、セキュリティルール２２１６は、Ｏ／Ｓ内セキュリティエージェント２２０６がストレージデバイス２２１８上の特定のプロテクトされたファイル２２２２にアクセスするための試行をインターセプトすることを要求してもよい。セキュリティルール２２１６はさらに、プロテクトされたファイル２２２２にアクセスするための特定の試行が許可されているか指定してもよい。しかしながら、Ｏ／Ｓ内セキュリティエージェント２２０６は、オペレーティングシステム２２０４の優先レベルにおいて又は上位で実行されるため、Ｏ／Ｓ内セキュリティエージェント２２０６自体は、オペレーティングシステム上で実行されるマルウェアにより感染される可能性があり、Ｏ／Ｓ内セキュリティエージェント２２０６のセーフガードが回避される可能性がある。この可能性を阻止することに資するため、Ｏ／Ｓ下位セキュリティエージェント２２０８は、マルウェアからＯ／Ｓ内セキュリティエージェント２２０６をプロテクトするよう構成されてもよい。
【０２９５】
ディスクセキュリティエージェント２２１４は、ＤＭＢ生成手段２２３２とディスクプロテクト手段２２３４とを有し、ＯＳＥＥ２２０２のコンポーネントや起動モジュール２２２６などの電子デバイス２２０１のコンポーネントをマルウェアからプロテクトするのに利用されてもよい。ディスクセキュリティエージェント２２１４は、何れか適切な方法により実現されてもよい。一実施例では、ディスクセキュリティエージェント２２１４は、Ｏ／Ｓ下位セキュリティエージェント２２０８の一部として実現されてもよく、及び／又はＯ／Ｓ下位セキュリティエージェント２２０８と同じ優先レベルで実行されてもよい。他の実施例では、ディスクセキュリティエージェント２２１４は、Ｏ／Ｓ内セキュリティエージェント２２０６として実現されてもよく、及び／又はオペレーティングシステム２２０４の優先レベルにおいて又は上位で実行されてもよい。さらなる他の実施例では、ディスクセキュリティエージェント２２１４は、少なくとも１つのディスクセキュリティエージェントがＯ／Ｓ下位セキュリティエージェント２２０８と同じ優先レベルで動作し、少なくとも１つのディスクセキュリティエージェントがオペレーティングシステム２２０４の優先レベルにおいて又は上位で動作する２以上のディスクセキュリティエージェントにより実現されてもよい。
【０２９６】
ディスクプロテクト手段２２３４は、起動モジュール２２２６及びＯＳＥＥ２２０２のコンポーネントを、当該コンポーネントに関連する各種のプロテクトされたファイル２２２２にアクセスするための未認証の試行をインターセプトすることによって、マルウェアからプロテクトするよう構成されてもよい。プロテクトされたファイル２２２２は、コアオペレーティングシステムファイル（オペレーティングシステムカーネルファイルなど）、コアセキュリティエージェントファイル（Ｏ／Ｓ下位セキュリティエージェント２２０８及びＯ／Ｓ内セキュリティエージェント２２０６の実行可能イメージなど）、及び／又はこれらのファイルのバックアップコピーを含むものであってもよい。ディスクプロテクト手段２２３４は、プロテクトされたファイル２２２２が格納されるストレージデバイス２２１８のセクタにアクセスするための未認証の試行をインターセプトすることによって、プロテクトされたファイル２２２２への未認証のアクセスを阻止してもよい。いくつかの実施例では、ディスクプロテクト手段２２３４は、ディスクマッピングビットマップ２２２０を利用して、プロテクトされたファイル２２２２と共に、プロテクトされたファイル２２２２が格納されるストレージデバイス２２１８上のセクタを特定してもよい。ディスクマッピングビットマップ２２２０の実施例の説明は、図２３からのディスクマッピングビットマップ２３０１の説明に見つけられてもよい。ディスクマッピングビットマップ２２２０は、例えば、プロテクトされた各ファイルが格納されるストレージデバイスのセクタなどを含む各種のプロテクトされたファイルに関連する情報を含むものであってもよい。ディスクプロテクト手段２２３４は、プロテクトされたファイル２２２２が格納されるストレージデバイス２２１８のセクタを特定するため、ディスクマッピングビットマップ２２２０を照会してもよい。ディスクプロテクト手段２２３４は、その後、プロテクトされたファイル２２２２に関連するセクタにアクセスするための試行をインターセプトし、試行が許可されているか判断するため、セキュリティルール２２１６を照会してもよい。例えば、セキュリティルール２２１６は、コアオペレーティングシステムファイルに書き込むためのリクエストが、オペレーティングシステム２２０４からのものでない場合には拒絶されることを指示するものであってもよい。
【０２９７】
いくつかの実施例では、ディスクプロテクト手段２２３４の機能は、Ｏ／Ｓ下位セキュリティエージェント２２０８のコンポーネントにより実現されてもよい。Ｏ／Ｓ下位セキュリティエージェント２２０８のコンポーネントとしてディスクプロテクト手段２２３４を実現することによって、ディスクプロテクト手段２２３４は、オペレーティングシステムの下位のレベルで実行され、オペレーティングシステム２２０４を感染させるマルウェアの多くを回避するようにしてもよい。ディスクプロテクト手段２２３４の機能は、例えば、Ｏ／Ｓ下位トラップエージェント２２１０及びトリガイベントハンドラ２２１２などにより実現されてもよい。Ｏ／Ｓ下位トラップエージェント２２１０は、プロテクションを要求するストレージデバイス２２１８のセクタを特定するため、ディスクマッピングビットマップ２２２０を照会するよう構成されてもよい。Ｏ／Ｓ下位トラップエージェントはさらに、ストレージデバイス２２１８の特定されたセクタにアクセスするための試行をトラップするよう構成されてもよく、セキュリティルール２２１６を利用して、試行が許可されているか判断してもよい。このようにして、ディスクマッピングビットマップ２２２０により特定されるプロテクトされたファイル２２２２は、未認証のアクセスからプロテクトされてもよい。
【０２９８】
他の実施例では、ディスクプロテクト手段２２３４の機能は、Ｏ／Ｓ内セキュリティエージェント２２０６のコンポーネントとして実現されてもよい。例えば、Ｏ／Ｓ内セキュリティエージェント２２０６は、ディスクプロテクト手段１１３の機能を実現するためのディスクフィルタドライバを有してもよい。フィルタドライバは、オペレーティングシステム２２０４の特定のデバイスの既存のドライバスタックに挿入され、以前から存在するディスクドライバの機能を補完してもよい。ディスクフィルタドライバは、プロテクトションを要求するストレージデバイス２２１８のセクタを特定するため、ディスクマッピングビットマップ２２２０を照会することによって、ディスクプロテクト手段１１３３の機能を実現してもよい。ディスクフィルタドライバは、その後、ストレージデバイス２２１８のプロテクトされるセクタにアクセスするための試行をインターセプトし、セキュリティルール２２１６を利用して、試行が許可されているか判断してもよい。このようにして、ディスクマッピングビットマップ２２２０により特定されるプロテクトされたファイル２２２２は、未許可のアクセスからプロテクトされてもよい。しかしながら、ディスクフィルタドライバがオペレーティングシステム２２０４の優先レベルにおいて又は上位で実行されるため、ディスクフィルタドライバ自体は、オペレーティングシステム２２０４上で実行されるマルウェアにより感染され、ディスクフィルタドライバのセーフガードが回避される可能性がある。従って、いくつかの実施例では、ディスクプロテクト手段２２３４の機能は、Ｏ／Ｓ下位セキュリティエージェント２２０８とＯ／Ｓ内セキュリティエージェント２２０６の双方により実現されてもよい。例えば、Ｏ／Ｓ内セキュリティエージェント２２０６は、上述されるようなディスクフィルタドライバを利用して、ストレージデバイス２２１８にアクセスするための未許可の試行をインターセプトするよう構成されてもよく、Ｏ／Ｓ下位セキュリティエージェント２２０８は、未許可の試行がメモリ又はストレージデバイス２２１８のディスクフィルタドライバイメージを修正することを阻止するよう実現されてもよく、これにより、オペレーティングシステム２２０４と同じ優先レベルで実行されるマルウェアによってディスクフィルタドライバが覆されることをプロテクトする。
【０２９９】
ディスクプロテクト手段２２３４はさらに、電子デバイス２２０１のシャットダウン前にＭＢＲのインテグリティを検証するよう構成されてもよい。例えば、電子デバイス２２０１のシャットダウンが開始されると、ディスクプロテクト手段２２３４は、ＭＢＲ２２２４のハッシュ値を計算するよう構成されてもよい。その後、ディスクプロテクト手段２２３４は、ＭＢＲ２２２４について以前に生成されたハッシュ値を取得するため、ディスクマッピングビットマップ２２２０を照会し、計算されたハッシュ値と以前に生成されたハッシュ値とを比較してもよい。これらのハッシュ値が異なる場合、ＭＢＲ２２２４は、おそらくマルウェアにより変更されており、ディスクプロテクト手段２２３４は、ＭＢＲ２２２４をバックアップコピーと置換するよう構成されてもよい。このようにして、電子デバイス２２０１の次のスタートアップにおいて、マルウェア感染したＭＢＲ２２２４はブートされない。
【０３００】
ＤＭＢ生成手段２２３２は、ディスクマッピングビットマップ２２２０を生成及び更新するよう構成されてもよい。例えば、ＤＭＢ生成手段２２３２は、プロテクトされた各ファイルが格納されるストレージデバイス２２１８上のセクタを決定するよう構成され、さらにプロテクトされた各ファイル２２２２についてハッシュ値を生成するよう構成されてもよい。ＤＭＢ生成手段２２３２は、プロテクトされた各ファイル２２２２の対応するセクタとハッシュ値とをディスクマッピングビットマップ２２２０に格納してもよい。ＤＭＢ生成手段２２２０は、何れか適切な方法により実現されてもよい。例えば、ＤＭＢ生成手段２２２０の機能は、Ｏ／Ｓ下位セキュリティエージェント２２０８又はＯ／Ｓ内セキュリティエージェント２２０６の一部として実現されてもよく、あるいは、ＤＭＢ生成手段２２２０の機能は、Ｏ／Ｓ下位セキュリティエージェント２２０８とＯ／Ｓ内セキュリティエージェント２２０６の双方により実現されてもよい。
【０３０１】
一実施例では、ＤＭＢ生成手段２２３２は、プロテクトされたファイル２２２２にアクセスするためのリクエストをインターセプトすることによって、ディスクマッピングビットマップ２２２０を生成してもよい。例えば、Ｏ／Ｓ内セキュリティエージェント２２０６は、プロテクトされたファイル２２２２にアクセスするためのリクエストをインターセプトするよう構成されるファイルシステムフィルタドライバを有してもよい。ファイルシステムフィルタドライバは、ファイルシステム又は他のファイルシステムフィルタドライバを対象としたリクエストをインターセプトする。それが意図したターゲットに到達する前にリクエストをインターセプトすることによって、フィルタドライバは、リクエストの元のターゲットにより提供される機能を拡張又は置換できる。Ｏ／Ｓ内セキュリティエージェント２２０６からのファイルシステムフィルタドライバは、プロテクトされたファイル２２２２に対するファイルＩ／Ｏリクエストをインターセプトしてもよい。フィルタドライバは、その後、プロテクトされたファイル２２２２のコンテンツがが格納されるストレージデバイス２２１８上のセクタを取得するため、ファイルシステムにクエリしてもよい。その後、フィルタドライバは、ファイルシステムのマスタフォーマットテーブル（ＭＦＴ）にアクセスし、プロテクトされたファイル２２２２のディスクセクタレイアウトを決定してもよい。ディスクマッピングビットマップ２２２０は、プロテクトされたファイル２２２２が格納される特定されたセクタを指定するよう更新されてもよい。プロテクトされたファイル２２２２についてハッシュ値が生成されていない場合、ハッシュ値が生成され、ディスクマッピングビットマップ２２２０が、新たなハッシュ値を含むよう更新されてもよい。新たなハッシュ値がまた生成され、プロテクトされたファイル２２２２が更新されている場合、ディスクマッピングビットマップ２２２０に格納されてもよい。例えば、ファイルシステムフィルタドライバがプロテクトされたファイル２２２２に書き込むためのリクエストをインターセプトした場合、プロテクトされたファイル２２２２の修正されたコンテンツを利用して、新たなハッシュ値が生成される必要があってもよい。
【０３０２】
図２３は、セキュアオペレーティングシステム実行環境を提供するシステム又は方法で利用されるディスクマッピングビットマップ２３０１の実施例である。ディスクマッピングビットマップ２３０１は、例えば、図２１のディスクマッピングビットマップ２１１８、図２２のディスクマッピングビットマップ２２２０又は図２６のディスクマッピングビットマップ２６２８の機能を実現するためなどに利用されてもよい。ディスクマッピングビットマップ２３０１は、ファイルであってもよく、プロテクトされた各種ファイル２３０２に関連する情報を含むものであってもよい。例えば、ディスクマッピングビットマップ２３０１は、プロテクトされた各ファイル２３０２が格納されるストレージデバイスのセクタ２３０４を特定し、プロテクトされた各ファイル２３０２のハッシュ値２３０６を有してもよい。ディスクマッピングビットマップ２３０１は、各種のプロテクトされたファイル２３０２のインテグリティを検証するのに利用されてもよい。例えば、図２１のセキュア起動エージェント２１１０及び／又はリカバリエージェント２１１２は、ディスクマッピングビットマップ２３０１からの情報を利用して、プロテクトされたファイル２３０２のインテグリティを検証してもよい。ディスクマッピングビットマップは、例えば、図２２からのＤＭＢ生成手段２２３２などによって生成されてもよい。
【０３０３】
ディスクマッピングビットマップ２３０１は、ストレージデバイス上の指定されたセクタに格納されてもよい。指定されたセクタは、オペレーティングシステムのファイルシステムを実現するのに利用されるストレージデバイスの同一部分にあってもよい。指定されたセクタは、セクタがオペレーティングシステムにより利用されることを阻止するため、占有されているとしてマーク付けされてもよい。ストレージデバイスはまた、オペレーティングシステムと異なるパーティションの指定されたセクタにディスクマッピングビットマップ２３０１が格納されることを可能にするため、パーティションされてもよい。ディスクマッピングビットマップ２３０１はまた、ネットワーク上にあるリモートストレージデバイスに格納されてもよい。例えば、ディスクマッピングビットマップ２３０１は、図２０からのプロテクションサーバ２０２２や図２６からのプロテクションサーバ２６０２などのプロテクションサーバに格納されてもよい。
【０３０４】
ディスクマッピングビットマップ２３０１は、プロテクトされた各ファイル２３０２、当該プロテクトされたファイル２３０２が格納されるストレージデバイスのセクタ２３０４、及びプロテクトされたファイル２３０２のハッシュ値を特定してもよい。ディスクマッピングビットマップ２３０１により特定されるプロテクトされたファイル２３０２は、コアセキュリティエージェントファイル２３０２、コアオペレーティングシステムファイル２３１０及びバックアップファイル２３１２を有してもよい。コアセキュリティエージェントファイル２３０８は、ＭＢＲ、Ｏ／Ｓ下位セキュリティエージェント及びＯ／Ｓ内セキュリティエージェントの実行可能ファイルを含むものであってもよい。コアオペレーティングシステムファイル２３１０は、オペレーティングシステムカーネルファイルと他のオペレーティングシステムファイルとを含むものであってもよい。例えば、オペレーティングシステムがＭｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ（登録商標）の変形である場合、コアオペレーティングシステムファイル２３１０は、ｎｔｏｓｋｒｎｌ．ｅｘｅ、ｈａｌ．ｓｙｓ、ｗｉｎ３２ｋ．ｓｙｓ、ｎｔｆｓ．ｓｙｓ、ｄｉｓｋ．ｓｙｓ及び／又はｔｃｐｉｐ．ｓｙｓを含むものであってもよい。コアオペレーティングシステムファイル２３１０は、特定のオペレーティングシステムに応じて変更されてもよい。バックアップファイル２３１２は、各コアセキュリティエージェントファイル２３０８と各コアオペレーティングシステムファイル２３１０のバックアップコピーを有してもよい。各種実施例において、バックアップファイル２３１２は、コアセキュリティエージェントファイル２３０８とコアオペレーティングシステムファイル２３１０と同じストレージデバイスに格納されなくてもよい。当該実施例では、ディスクマッピングビットマップ２３０１はまた、バックアップファイル２３１２が格納される特定のストレージデバイスを特定してもよい。あるいは、別のディスクマッピングビットマップ２３０１が、セクタ２３０４やハッシュ値２３０６などのバックアップファイル２３１２に関する情報を格納するため利用されてもよい。
【０３０５】
プロテクトされた各ファイル２３０２について、ディスクマッピングビットマップ２３０１は、暗号化ハッシュアルゴリズムを利用して生成されたハッシュ値２３０６を格納してもよい。ハッシュアルゴリズムは、入力としてデータブロックを受信し、ビット文字列又はハッシュ値を出力として生成するアルゴリズムを有してもよい。異なるデータセットに対するハッシュ値は、通常は異なるものになる。プロテクトされた各ファイル２３０２のハッシュ値２３０６は、ハッシュアルゴリズムへの入力としてプロテクトされた各ファイル２３０２のコンテンツを利用して生成される。例えば、Ｓｅｃｕｒｅ  Ｈａｓｈ  Ａｌｇｏｒｉｔｈｍ  ２（ＳＨＡ−２）又はＭｅｓｓａｇｅ−Ｄｉｇｅｓｔ  Ａｌｇｏｒｉｔｈｍ  ５（ＭＤ５）などを含む何れか適切な暗号化ハッシュアルゴリズムが利用されてもよい。
【０３０６】
ディスクマッピングビットマップ２３０１は、例えば、図２１のセキュア起動エージェント２１１０及び／又はリカバリエージェント２１１２、図２２のＯ／Ｓ下位セキュリティエージェント２２０８、Ｏ／Ｓ内セキュリティエージェント２２０６及び／又はディスクセキュリティエージェント２２１４、図２６のＯ／Ｓ下位セキュリティエージェント２６１６及び／又はＯ／Ｓ内セキュリティエージェント２６１８などによって、プロテクトされたファイル２３０１のマルウェア感染の可能性を検出するのに利用されてもよい。プロテクトされたファイル２３０２のマルウェア感染の可能性を検出するため、ハッシュアルゴリズムが、プロテクトされたファイル２３０２のインテグリティを検証するため利用されてもよい。ディスクマッピングビットマップ２３０４は、プロテクトされたファイル２３０２が格納されるストレージデバイス上のセクタ２３０４を特定するため照会されてもよく、その後、プロテクトされたファイルのコンテンツは、ストレージデバイスの適切なセクタ２３０４から抽出されてもよい。ＳＨＡ−２又はＭＤ５などの選択されたハッシュアルゴリズムは、その後、プロテクトされたファイル２３０２のコンテンツを利用してハッシュ値を生成するのに利用されてもよく、生成されたハッシュ値は、ディスクマッピングビットマップ２３０１からの対応するハッシュ値２３０６と比較されてもよい。これらのハッシュ値が異なる場合、プロテクトされたファイル２３０２は、おそらくマルウェアにより修正又は変更されている。
【０３０７】
ディスクマッピングビットマップ２３０１は、何れか適切な方法により生成されてもよい。一実施例では、ディスクマッピングビットマップ２３０１は、プロテクトされたファイル２３０２にアクセスするためのリクエストをインターセプトし、プロテクトされたファイル２３０２に関する情報を取得し、プロテクトされたファイルに関する情報によってディスクマッピングビットマップ２３０１を更新することによって生成されてもよい。いくつかの実施例では、リクエストは図２６からのＯ／Ｓ下位セキュリティエージェント２６１６などのオペレーティングシステムより下位の優先度のリングにおいて実行されるソフトウェアによりインターセプトされてもよい。他の実施例では、リクエストは、図２６からのＯ／Ｓ内セキュリティエージェント２６１８などのオペレーティングシステムと同じ優先度リングで実行されるソフトウェアによりインターセプトされてもよい。例えば、図２６からのＯ／Ｓ内セキュリティエージェント２６１８は、ファイルシステムフィルタドライバを有してもよい。ファイルシステムフィルタドライバは、プロテクトされたファイル２３０２に対するファイルＩ／Ｏリクエストをインターセプトしてもよい。ファイルドライバは、その後、プロテクトされたファイル２３０２のコンテンツが格納されるストレージデバイス上のセクタ２３０４を取得するため、ファイルシステムをクエリしてもよい。ファイルドライバは、その後、プロテクトされたファイル２３０２のディスクセクタレイアウトを決定するため、ファイルシステムのマスタファイルテーブル（ＭＦＴ）にアクセスしてもよい。ディスクマッピングビットマップ２３０１は、プロテクトされたファイル２３０２が格納される特定されたセクタ２３０４を指定するため更新されてもよい。ファイルシステムフィルタドライバがプロテクトされたファイル２３０２に書き込むためのリクエストをインターセプトする場合、プロテクトされたファイル２３０２の更新されたコンテンツを利用して、新たなハッシュ値が生成されてもよく、ディスクマッピングビットマップ２３０１は、新たなハッシュ値を格納するため更新されてもよい。
【０３０８】
図２４は、セキュアオペレーティングシステム実行環境を起動する方法の実施例である。ステップ２４１０において、ストレージデバイスの既存のＭＢＲが、セキュア起動環境をブートするよう構成される他のＭＢＲと置換されてもよい。ＭＢＲは、ストレージデバイスの第１セクタ（すなわち、セクタ０）に配置され、電子デバイスのスタートアップ時に実行されてもよい。このようにして、電子デバイスが開始されると、元のＭＢＲは実行されず、元のＭＢＲに関するオペレーティングシステム又は他のソフトウェアはロードされなくてもよい。代わりに、他のＭＢＲが実行され、セキュア起動環境をロードしてもよい。ステップ２４２０において、電子デバイスが開始され、ステップ２４１０からの他のＭＢＲが実行されてもよい。他のＭＢＲはセキュア起動環境のロードに進む。
【０３０９】
ステップ２４３０において、セキュリティルールが取得されてもよい。セキュリティルールは、ストレージデバイスにローカルに格納されてもよいし、あるいは、プロテクションサーバなどにリモートに格納されてもよい。当該セキュリティルールは、ステップ２４４０〜２４８０において判定を行うのに利用されてもよい。ステップ２４４０において、各種のプロテクトされたファイルのバックアップコピーが作成されたか判断されてもよい。バックアップを要求するプロテクトされたファイルは、セキュリティルールにおいて指定されてもよい。バックアップファイルは、例えば、代替的なＭＢＲ、セキュア起動環境に関するファイル、１以上のセキュリティエージェントに関するファイル及びコアオペレーティングシステムファイルなどを含むものであってもよい。バックアップコピーが作成されていない場合、ステップ２４５０において、バックアップコピーが作成される。バックアップコピーは、ストレージデバイスにローカルに格納されるか、又はプロテクションサーバなどにリモートに格納されてもよい。
【０３１０】
ステップ２４６０において、セキュリティエージェント又はオペレーティングシステムがマルウェアにより感染されているか判断されてもよい。セキュリティエージェントは、Ｏ／Ｓ下位セキュリティエージェント及び／又はＯ／Ｓ内セキュリティエージェントを有してもよい。一実施例では、セキュリティエージェント及びオペレーティングシステムは、セキュリティエージェント及びオペレーティングシステムに関連する各種のプロテクトされたファイルのインテグリティを検証することによって、マルウェアについてチェックされてもよい。ハッシュアルゴリズムが、プロテクトされたファイルのインテグリティを検証するのに利用されてもよい。例えば、ハッシュ値は、プロテクトされたファイルのコンテンツを利用して各プロテクトファイルについて計算されてもよく、計算されたハッシュ値は、プロテクトされたファイルについて以前に生成されたハッシュ値と比較されてもよい。プロテクトされたファイルのハッシュ値が異なる場合、プロテクトされたファイルは、おそらくマルウェアにより修正されている可能性がある。いくつかの実施例では、ディスクマッピングビットマップは、プロテクトされた各ファイルがストレージデバイス上で格納されるセクタを特定し、プロテクトされた各ファイルについて以前に生成されたハッシュ値を有してもよい。当該実施例では、ディスクマッピングビットマップは、プロテクトされたファイルのコンテンツが格納されるセクタを決定するため照会されてもよく、プロテクトされたファイルのコンテンツを利用して、ハッシュ値が計算されてもよい。ディスクマッピングビットマップはまた、以前に生成されたハッシュ値が計算されたハッシュ値と比較されるように、プロテクトされたファイルについて以前に生成されたハッシュ値を抽出するよう照会されてもよい。プロテクトされたファイルのハッシュ値が異なる場合、マルウェア感染が仮定され、ステップ２４７０において、プロテクトされたファイルはマルウェア感染の可能性から復元されてもよい。プロテクトされたハッシュ値が一致する場合、プロテクトされたファイルは変更されていないもしれず、マルウェアにより感染していないかもしれない。この場合、本方法はステップ２４８０に移行し、セキュリティエージェントとオペレーティングシステムとがロードされてもよい。
【０３１１】
ステップ２４７０において、マルウェア感染の可能性について復元が行われてもよい。当該復元は、感染している可能性のあるプロテクトされた各ファイルのバックアップコピーを抽出し、感染の可能性のあるプロテクトされたファイルを対応するバックアップファイルと置換することによって行われてもよい。バックアップコピーは、ローカルストレージデバイスに配置されてもよく、又はプロテクションサーバなどのリモートに配置されてもよい。バックアップコピーを利用して感染の可能性のあるプロテクトされたファイルを置換する前に、バックアップファイルのインテグリティがまた、バックアップファイルがマルウェアにより感染していないことを保証するため検証されてもよい。
【０３１２】
プロテクトされたファイルが対応するバックアップコピーを用いて復元された後、ステップ２４８０において、セキュリティエージェントとオペレーティングシステムとがロードされてもよい。セキュリティエージェントは、Ｏ／Ｓ下位セキュリティエージェント及び／又はＯ／Ｓ内セキュリティエージェントを含むものであってもよい。Ｏ／Ｓ下位セキュリティエージェントは、オペレーティングシステムの下位の優先度レベルで実行され、Ｏ／Ｓ内セキュリティエージェントは、オペレーティングシステムにおける又は上位の優先度レベルで実行されてもよい。Ｏ／Ｓ下位セキュリティエージェント及びＯ／Ｓ内セキュリティエージェントは、マルウェアから電子デバイスをプロテクトするよう連係してもよい。例えば、Ｏ／Ｓ下位セキュリティエージェント及び／又はＯ／Ｓ内セキュリティエージェントは、未認証のアクセスからストレージデバイスなどの電子デバイスのリソースをプロテクトしてもよい。いくつかの実施例では、Ｏ／Ｓ下位セキュリティエージェント、Ｏ／Ｓ内セキュリティエージェント及び／又はオペレーティングシステムのセキュアな起動を提供する電子デバイスのコンポーネントに対して、プロテクションが提供されてもよい。例えば、Ｏ／Ｓ下位セキュリティエージェント及び／又はＯ／Ｓ内セキュリティエージェントは、ステップ２４１０〜２４７０を実行するこれらのコンポーネントをプロテクトしてもよい。このようにして、電子デバイスが次に開始されると、ステップ２４２０においてロードされるセキュア起動環境がマルウェアにより制約されないかもしれない。
【０３１３】
図２４からの方法のステップは、連続的、定期的、要求に応答して、又はマルウェア及び／又は他の疑わしい動作の検出を含むものであってもよいイベントのトリガに応答して、ストレージデバイスをプロテクトするため、必要に応じて繰り返されてもよい。
【０３１４】
図２５は、オペレーティングシステムをセキュアに実行するためのオペレーティングシステム実行環境を提供する方法２５００の実施例である。ステップ２５０５において、Ｏ／Ｓ下位セキュリティエージェント、Ｏ／Ｓ内セキュリティエージェント及びプロテクションサーバの身元及びセキュリティが認証されてもよい。当該認証は、各コンポーネントのメモリのイメージを特定及び検証すること、暗号化ハッシュを利用すること、及び／又は秘密鍵を利用することを含む、何れか適切な方法を利用して実行されてもよい。ステップ２５０５が終了すると、他のステップの処理は保留されてもよい。ステップ２５１０において、セキュリティルールが取得されてもよい。セキュリティルールは、Ｏ／Ｓ下位セキュリティエージェント及び／又はＯ／Ｓ内セキュリティエージェントによってストレージデバイス上にローカルに格納されるか、あるいは、プロテクションサーバなどにリモートに格納されてもよい。当該セキュリティルールは、ステップ２５１５〜１４７５における判定を行うのに利用されてもよい。
【０３１５】
ステップ２５１５において、プロテクトされたファイルにアクセスするための試行がインターセプトされてもよい。インターセプトされた試行は、Ｏ／Ｓ内セキュリティエージェントなどによって、オペレーティングシステムレベルにおいて又は上位で行われてもよく、あるいは、Ｏ／Ｓ下位セキュリティエージェントなどによりオペレーティングシステムの下位のレベルで行われてもよい。プロテクトされたファイルは、ＭＢＲ、１以上のセキュリティエージェントに関するファイル、１以上のセキュリティエージェントを起動するのに利用されるファイル（図２１からのロードモジュール２１０２など）、及びコアオペレーティングシステムファイルを含むものであってもよい。プロテクトされたファイルは、セキュリティルールにより指定されてもよい。ステップ２５２０において、プロテクトされたファイルのエントリがディスクマッピングビットマップに追加される必要があるか判断されてもよい。ディスクマッピングビットマップは、ファイル又は他のデータ構造として実現されてもよく、プロテクトされた各ファイルが配置されるストレージデバイス上のセクタやプロテクトされた各ファイルに関連するハッシュ値などのプロテクトされたファイルに関する情報を格納してもよい。ディスクマッピングビットマップが、ステップ２５１５においてアクセスされているプロテクトされたファイルについて当該情報を有しない場合、プロテクトされたファイルのエントリがディスクマッピングビットマップに追加されてもよい。例えば、ディスクマッピングビットマップは、プロテクトされたファイルが格納されるセクタを指定しなくてもよく、あるいは、プロテクトされたファイルのハッシュ値を指定しなくてもよい。当該情報がディスクマッピングビットマップから欠落している場合、ステップ２５２５において、ディスクマッピングビットマップは、当該情報を含むよう更新されてもよい。ディスクマッピングビットマップを更新するため、プロテクトされたファイルのコンテンツを格納するセクタが特定され、プロテクトされたファイルのコンテンツを利用して、ハッシュ値が生成されてもよい。プロテクトされたファイルが格納されるストレージデバイス上のセクタの決定は、ファイルシステムをクエリし、プロテクトされたファイルのセクタレイアウトを決定するためマスタフォーマットテーブル（ＭＦＴ）にアクセスすることに関するものであってもよい。プロテクトされたファイルのコンテンツが、その後、ストレージデバイスの適切なセクタから抽出され、暗号化ハッシュアルゴリズムへの入力としてプロテクトされたファイルのコンテンツを利用して、ハッシュ値が計算されてもよい。プロテクトされたファイルの対応するセクタ及び計算されたハッシュ値が、その後、ディスクマッピングビットマップに格納されてもよい。
【０３１６】
ステップ２５３０において、プロテクトされたファイルへのアクセスが許可されているか判断されてもよい。当該判定は、Ｏ／Ｓ内セキュリティエージェントなどによりオペレーティングシステムのレベルにおいて又は上位で行われ、あるいは、Ｏ／Ｓ下位セキュリティエージェントなどによりオペレーティングシステムの下位のレベルで行われてもよい。プロテクトされたファイルにアクセスするための試行されたリクエストに関するコンテクスト情報は、要求元のエンティティがプロテクトされたファイルにアクセスするのに許可されているか決定するためのセキュリティルールに関して解析されてもよい。例えば、セキュリティルールは、オペレーティングシステム、特定のアプリケーション及び／又は特定のデバイスドライバがプロテクトされたファイルにアクセスすることが許可されているか否か指定してもよい。セキュリティルールはまた、プロテクトされたファイルにアクセスすることが許可されている要求元のエンティティについて、リード、ライト又は実行などのアクセスパーミッションを指定してもよい。プロテクトされたファイルへのアクセスが許可されていない場合、ステップ２５５５において、アクセスは拒絶されてもよい。プロテクトされたファイルへのアクセスが許可されている場合、ステップ２５３５において、プロテクトされたファイルは更新されているか判断されてもよい。プロテクトされたファイルが更新されている場合、ステップ２５４０において、ディスクマッピングビットマップがまた更新されてもよい。例えば、プロテクトされたファイルに対する更新が、ファイルを格納するのに利用されるストレージデバイス上のセクタを変更させる場合、ディスクマッピングビットマップは、プロテクトされたファイルを格納するのに利用される適切なセクタを特定するため更新されてもよい。さらに、プロテクトされたファイルに対する新たなハッシュ値がディスクマッピングビットマップにおいて生成及び格納されてもよい。ステップ２５４５において、プロテクトされたファイルのバックアップコピーがまた、プロテクトされたファイルに対する直近の更新を反映するよう更新されてもよい。
【０３１７】
プロテクトされたファイルへのアクセスが認証されている場合、ステップ２５５０において、プロテクトされたファイルへのアクセスは許可されてもよい。プロテクトされたファイルへのアクセスが認証されていない場合、ステップ２５５５において、アクセスは拒絶され、ステップ２５６０において、アクセス試行に関する疑わしい情報が、プロテクションサーバに報告されてもよい。
【０３１８】
ステップ２５６５において、電子デバイスのシャットダウンが検出されたか判断されてもよい。シャットダウンが検出されない場合、本方法はステップ２５１において再開され、プロテクトされたファイルにアクセスするための試行をインターセプトし続けてもよい。シャットダウンが検出された場合、ＭＢＲのインテグリティがステップ２５７０におうて検証され、電子デバイスの次のスタートアップ時には、マルウェア感染したＭＢＲはブートされないことを保証してもよい。ＭＢＲのインテグリティは、ＭＢＲのコンテンツを利用してハッシュ値を計算し、計算されたハッシュ値とディスクマッピングビットマップからの以前に生成されたハッシュ値とを比較することによって検証されてもよい。これらのハッシュが異なる場合、ＭＢＲは変更されている可能性があり、バックアップコピーと置換されてもよい。ＭＢＲのインテグリティが検証された後、ステップ２５７５において、電子デバイスがシャットダウンされてもよい。
【０３１９】
図２５からの方法のステップは、連続的、定期的、要求に応答して、又はイベントのトリガに応答してストレージデバイスをプロテクトするため、必要に応じて繰り返されてもよい。
【０３２０】
図２６は、未認証のアクセスからストレージデバイス２６０６をプロテクトするシステム９００の実施例である。システム９００は、トリガイベントハンドラ２６０８に通信接続されるＯ／Ｓ下位セキュリティエージェント２６１６を有してもよい。Ｏ／Ｓ下位セキュリティエージェント２６１６は、電子デバイス２６０１のストレージデバイス２６０６にアクセスするための試行をトラップするよう構成されるＯ／Ｓ下位トラップエージェント２６０４を有してもよい。Ｏ／Ｓ下位トラップエージェント２６０４は、トラップされたアクセスリクエストに関するトリガイベントを作成し、トリガイベントをトリガイベントハンドラ２６０８に送信するよう構成されてもよい。トリガイベントハンドラ２６０８は、トリガイベントをどのように処理するか判断するため、１以上のセキュリティルール２６１４又はプロテクションサーバ２６０２を照会するよう構成されてもよい。トリガイベントハンドラ２６０８はまた、ストレージデバイス２６０６を覆すためのマルウェア又は悪意ある試行の表示であるとトリガイベントの傾向を評価するよう構成されてもよい。さらに、トリガイベントハンドラ２６０８は、トリガイベントが許可又は拒絶されるべきかの判定をＯ／Ｓ下位トラップエージェント２６０４に提供するよう構成されてもよく、あるいは、他の訂正アクションを生成するよう構成されてもよい。Ｏ／Ｓ下位セキュリティエージェント２６１６は、オペレーティングシステム２６１２上で実行されるＯ／Ｓ内セキュリティエージェント２６１８に通信接続されてもよい。システム９００は、バックアップストレージデバイス２６２０を利用して、ストレージデバイス２６０６上でデータを復元するよう構成されてもよい。
【０３２１】
電子デバイス２６０１は、図１の電子デバイス１０３、図２の電子デバイス１０４、図４の電子デバイス４０４、図７の電子デバイス７０１及び／又はこれらの何れかの組み合わせの機能によって全体的若しくは部分的に実現されてもよく、又は当該機能を実現するよう構成されてもよい。電子デバイス２６０１は、メモリ１６０３に接続される１以上のプロセッサ２６０２を有してもよい。プロセッサ２６０２は、図２のプロセッサ２０８、図４のプロセッサ４０６、図７のプロセッサ７０２及び／又はこれらの何れかの組み合わせの機能によって全体的若しくは部分的に実現されてもよく、又は当該機能を実現するよう構成されてもよい。メモリ２６０３は、図２のメモリ２０７、図４のメモリ４０８、図７のメモリ７０３及び／又はこれらの何れかの組み合わせの機能によって全体的若しくは部分的に実現されてもよく、又は当該機能を実現するよう構成されてもよい。電子デバイス２６０１は、Ｏ／Ｓ内セキュリティエージェント２６１８を含むオペレーティングシステム２６１２を有してもよい。オペレーティングシステム２６１２は、図１のオペレーティングシステム１１２、図２のオペレーティングシステム２１２、図４のオペレーティングシステム４１２、図７のオペレーティングシステム７１３及び／又はこれらの何れかの組み合わせの機能によって全体的若しくは部分的に実現されてもよく、又は当該機能を実現するよう構成されてもよい。Ｏ／Ｓ内セキュリティエージェント２６１８は、図１のＯ／Ｓ内セキュリティエージェント２１８、図４のＯ／Ｓ内セキュリティエージェント４１８、図７のＯ／Ｓ内セキュリティエージェント７１９及び／又はこれらの何れかの組み合わせの機能によって全体的若しくは部分的に実現されてもよく、又は当該機能を実現するよう構成されてもよい。
【０３２２】
ストレージデバイス２６０６は、図１のリソース１０６、図２のシステムリソース２１４、図４のストレージ４２６又は図５のＩ／Ｏデバイス５０２の機能によって実現されるか、又は当該機能を実現するよう構成されてもよい。ストレージデバイス２６０６は、データ又は他の情報を格納するのに適した何れかのリソースを有してもよい。例えば、ストレージデバイス２６０６は、限定することなく、ダイレクトアクセスストレージデバイス（ハードディスクドライバ又はフロッピー（登録商標）ディスクなど）、シーケンシャルアクセスストレージデバイス（テープディスクドライブなど）、コンパクトディスク、ＣＤ−ＲＯＭ、ＤＶＤ、ＲＡＭディスク、及び／又はフラッシュメモリ（フラッシュベースソリッドステートドライブなど）を含むものであってもよい。ストレージデバイス２６０６は、マスストレージデバイスを有してもよい。ストレージデバイス２６０６は、限定することなく、ＰＣＩ、シリアルＡＴＡ、ＵＳＢ又はＦｉｒｅｗｉｒｅを含みうるシステムバスとの接続タイプ又はインタフェース方法に関係なく、電子デバイス２６０１に接続されるストレージデバイスを有してもよい。ストレージデバイス２６０６は、パーシスタントブロックデバイスを有してもよい。ストレージデバイス２６０６は、それぞれが固定量のデータを格納可能な１以上のセクタ９２４に分割されてもよい。例えば、ストレージデバイス２６０６は、何れか適切なセクタサイズが利用されてもよいが、それぞれが５１２バイトのセクタに分割されてもよい。ストレージデバイス２６０６上のセクタ９２４は、スタティック又はダイナミックであってもよい。スタティックセクタの位置は固定され、ダイナミックセクタは固定されない。例えば、マスタブートレコード２６２６（ＭＢＲ）はスタティックであり、ストレージデバイス２６０６の第１セクタであるセクタ０に配置される。プロテクションを要求するダイナミックセクタは、マスタファイルテーブル（すなわち、ファイルシステムに格納されるすべてのファイルに関するメタデータを含むファイル）、オペレーティングシステムカーネルファイル、デバイスドライバ、及びＯ／Ｓ下位セキュリティエージェント２６１６若しくはＯ／Ｓ内セキュリティエージェント２６１８などのアンチマルウェアアプリケーションを格納するセクタを含む。ダイナミックセクタは固定されていないため、ダイナミックセクタに格納されるファイルは、ファイルシステム上の概念的な存在から、ファイルからのデータがあるストレージデバイス２６０６の物理セクタにマッピングされる必要がある。
【０３２３】
Ｏ／Ｓ下位セキュリティエージェント２６１６は、図１のＯ／Ｓ下位トラップエージェント１０４、図２のＳＶＭＭ２１６、図４のファームウェアセキュリティエージェント４４０、４４２若しくはＰＣファームウェアセキュリティエージェント４４４、図５のファームウェアセキュリティエージェント５１６、又は図７のマイクロコードセキュリティエージェント７０８の機能によって実現されるか、又は当該機能を実現するよう構成されてもよい。図４のファームウェアセキュリティエージェント４４０若しくは４４２又は図５のファームウェアセキュリティエージェント５１６の機能によりＯ／Ｓ下位セキュリティエージェント２６１６を実現する実施例では、Ｏ／Ｓ下位セキュリティエージェント２６１６は、ストレージデバイス２６０６のファームウェアにより実現されてもよい。トリガイベントハンドラ２６０８は、図１のトリガイベントハンドラ１０８、図２のＳＶＭＭセキュリティエージェント２１７、図４のＯ／Ｓ下位エージェント４５０、又は図７のＯ／Ｓ下位エージェント７１２の機能により実現されてもよいし、又は当該機能を実現するよう構成されてもよい。図４のファームウェアセキュリティエージェント４４０若しくは４４２又は図５のファームウェアセキュリティエージェント５１６の機能によりトリガイベントハンドラ２６０８を実現する実施例では、トリガイベントハンドラ２６０８は、ストレージデバイス２６０６のファームウェアにより実現されてもよい。各種実施例では、Ｏ／Ｓ下位セキュリティエージェント２６１６の機能の一部は、トリガイベントハンドラ２６０８により実行されてもよく、あるいは、トリガイベントハンドラ２６０８の機能の一部は、Ｏ／Ｓ下位セキュリティエージェント２６１６により実行されてもよい。さらに、Ｏ／Ｓ下位セキュリティエージェント２６１６及びトリガイベントハンドラ２６０８は、同一のソフトウェアモジュールにより実現されてもよい。
【０３２４】
Ｏ／Ｓ下位セキュリティエージェント２６１６は、電子デバイス２６０１のオペレーティングシステム２６１２より下位の機能レベルにより実現されてもよい。例えば、Ｏ／Ｓ下位セキュリティエージェント２６１６は、オペレーティングシステム２６１２、ドライバ２６１１又はアプリケーション２６１０によりストレージデバイス２６０６の試行されたアクセスをインターセプトしてもよい。Ｏ／Ｓ下位セキュリティエージェント２６１６は、オペレーティングシステムを利用することなく電子デバイス２６０１のプロセッサ上で実行されてもよい。一実施例では、Ｏ／Ｓ下位セキュリティエージェント２６１６は、ベアメタル環境又は実行レベルで実行されてもよい。さらに、Ｏ／Ｓ下位セキュリティエージェント２６１６は、電子デバイス２６０１のすべてのオペレーティングシステム２６１２よりも、電子デバイス２６０１のプロセッサにより規定されるように上位の優先度リングで実行されてもよい。例えば、より小さな数字がより高い優先度を表すプロテクションリングを使用する階層的プロテクションドメインモデルに関して、オペレーティングシステム２６１２は“Ｒｉｎｇ０”で動作し、下位Ｏ／Ｓセキュリティエージェント２６１６は“Ｒｉｎｇ−１”で動作してもよい。ドライバ２６１１及びアプリケーション２６１０は、“Ｒｉｎｇ０”又は“Ｒｉｎｇ３”で動作してもよい。電子デバイス２６０１のオペレーティングシステムは、Ｒｉｎｇ０で実行されてもよい。
【０３２５】
“Ｒｉｎｇ−１”で実行されることによって、Ｏ／Ｓ下位セキュリティエージェント２６１６は、オペレーティングシステム２６１２などのオペレーティングシステムを完成居させるマルウェアの多くを回避してもよい。Ｏ／Ｓ下位セキュリティエージェント２６１６は、Ｒｉｎｇ０又はそれより上位で実行されるエンティティにトランスペアレントに実行されてもよい。従って、ストレージデバイス２６０６にアクセスする試行は、Ｏ／Ｓ下位セキュリティエージェント２６１６が存在するかにかからわず、同じ方法によりオペレーティングシステム２６１２又は他のエンティティによりリクエストされてもよい。ストレージデバイス２６０６にアクセスするリクエストを実行する際、Ｏ／Ｓ下位セキュリティエージェント２６１６は、当該リクエストを許可若しくは拒絶、ストレージデバイス２６０６上のデータを破壊、ストレージデバイス２６０６のメディアサーファスを破壊、ストレージデバイス上のデータを暗号化又は他の訂正アクションを実行してもよい。リクエストを拒絶するため、Ｏ／Ｓ下位セキュリティエージェント２６１６は、単に当該リクエストがストレージデバイス２６０６又はプロセッサ２６０２に到達することを阻止してもよく、又はオペレーティングシステム２６１２に当該アクションが行われたと確信させるため、当該リクエストに対してスプーフされた又はダミーリプライを提供してもよい。リクエストを許可するため、Ｏ／Ｓ下位セキュリティエージェント２６１６は、単に当該リクエストをストレージデバイス２６０６又はプロセッサ２６０２にわたしてもよい。データを破壊するため、Ｏ／Ｓ下位セキュリティエージェント２６１６は、ストレージデバイス２６０６上にデータを上書き又は削除するよう構成されてもよい。ストレージデバイス２６０６のメディアサーファスを破壊するため、Ｏ／Ｓ下位セキュリティエージェント２６１６は、ストレージデバイス２６０６をデータのリード又はライトを実行不可にするためのアクションを実行してもよい。ストレージデバイス２６０６上のデータを暗号化するため、Ｏ／Ｓ下位セキュリティエージェント２６１６は、何れか適切な暗号化アルゴリズムを利用して、ストレージデバイス２６０６上のデータを暗号化し、暗号化されたデータによってストレージデバイス２６０６上の未暗号データを置換してもよい。
【０３２６】
Ｏ／Ｓ下位セキュリティエージェント２６１６は、ストレージデバイス２６０６にアクセスするリクエストをトラップするよう構成されるＯ／Ｓ下位トラップエージェント２６０４を有してもよい。ストレージデバイス２６０６にアクセスするためのリクエストは、オペレーティングシステム２６１２、ドライバ２６１１又はアプリケーション２６１０により開始されてもよい。Ｏ／Ｓ下位トラップエージェント２６０４は、リクエストを開始する要求元のエンティティを特定するよう構成されてもよい。Ｏ／Ｓ下位トラップエージェント２６０４はさらに、トラップされたアクセス試行に関するトリガイベントを作成し、当該イベントに関して実行すべき適切なアクションを決定するため、トリガイベントをトリガイベントハンドラ２６０８に送信するよう構成されてもよい。トリガイベントは、リクエスト、要求元エンティティ及びリクエストされたアクセスのタイプに関するストレージデバイス２６０６のエリア（セクタ及び／又はファイルなど）などの情報を有してもよい。リクエストに関するストレージデバイス２６０６のエリアは、ストレージデバイス２６０６の１以上のセクタであってもよいし、又はストレージデバイス２６０６に格納されているファイルであってもよい。要求元エンティティは、オペレーティングシステム２６１２、ドライバ２６１１又はアプリケーション２６１０であってもよい。例えば、アプリケーション２６１０又はドライバ２６１１がストレージデバイス２６０６へのアクセスを要求する場合、トリガイベントは、アクセスを要求しているアプリケーション２６１０又はドライバ２６１１を示すものであってもよい。リクエストが特定のアプリケーション２６１０又はドライバ２６１１でなくオペレーティングシステム２６１２からのものである場合、トリガイベントは、当該リクエストがオペレーティングシステム２６１２からのものであることを示してもよい。リクエストされたアクセスのタイプは、ストレージデバイス２６０６からのリード、ストレージデバイス２６０６へのライト又はストレージデバイス２６０６上のコードの実行のためのリクエストを含むものであってもよい。
【０３２７】
一実施例では、Ｏ／Ｓ下位セキュリティエージェント２６０４は、システムに対する攻撃、マルウェア感染又は他の何れかのセキュリティの脅威の可能性などのイベントを検出した後にのみ、ストレージデバイス２６０６にアクセスするためのリクエストをトラップするよう構成されてもよい。当該実施例では、システム１００のリソースは、セキュリティの脅威の可能性が検出されるまで保全される。他の実施例では、Ｏ／Ｓ下位トラップエージェント２６０４は、セキュリティ脅威の可能性が検出されたかにかかわらず、いつでもストレージデバイス２６０６にアクセスするリクエストをトラップするよう構成されてもよい。
【０３２８】
他の実施例では、Ｏ／Ｓ下位セキュリティエージェント２６１６は、ファイルの入出力のためドライバ又はシステムのファンクションに対するコールの実行をトラップすることによって、ストレージデバイス２６０６の試行されたアクセスをトラップするよう構成されてもよい。当該コールのトラップは、当該ドライバ又はシステムファンクションを含むメモリページがＯ／Ｓ下位セキュリティエージェント２６１６により特定及びセキュアにされるバーチャルメモリページレベルで実行されてもよい。この場合、Ｏ／Ｓ下位セキュリティエージェント２６１６は、例えば、バーチャルマシーンモニタ又はマイクロコードによって部分的又は完全に実現されてもよい。当該コールのトラップは、ドライバ又はシステムファンクションのコードセクションのメモリアドレスが、Ｏ／Ｓ下位セキュリティエージェント２６１６により特定及びセキュアにされる物理メモリアドレスレベルで実行されてもよい。この場合、Ｏ／Ｓ下位セキュリティエージェント２６１６は、例えば、マイクロコードにより部分的又は完全に実現されてもよい。マルウェアは、当該ファンクションを直接コールしてもよく、この場合、Ｏ／Ｓ下位セキュリティエージェント２６１６は、コール元がストレージデバイス２６０６の特定部分にアクセスするためのパーミッションを有しているか特定するため、当該ファンクションのコール元を決定してもよい。マルウェアは、例えば、ファイルファンクションの未ドキュメント化ファンクションをコールするか、又はファンクションを全くコールすることなくファンクションのコードセクションに直接分岐することによって、間接的に当該ファンクションをコールしてもよい。当該試行は、コール元の身元を隠蔽するか、又はマルウェアによるファイルＩ／Ｏの使用をあいまいにするため利用されてもよい。この場合、Ｏ／Ｓ下位セキュリティエージェント２６１６は、サブファンクションの実行をトラップすることによって、又はファイルＩ／Ｏファンクションのコードセクションを導くＪＭＰ又は分岐命令をトラップすることによって、試行されたファイルＩ／Ｏをトラップしてもよい。当該動作自体は疑わしいものであり、コール元が知られていない場合、Ｏ／Ｓ下位セキュリティエージェント２６１６は、当該試行されたアクセスのホストが疑わしく、当該試行がマルウェアを示す可能性があることを決定するよう構成されてもよい。
【０３２９】
さらなる他の実施例では、Ｏ／Ｓ下位セキュリティエージェント２６１６は、ディスクにアクセスするため生成されるインタラプトをトラップすることによって、ストレージデバイス２６０６の試行されたアクセスをトラップするよう構成されてもよい。当該インタラプトは、ファイルＩ／Ｏのための通常のファンクションによりコールされてもよいし、又はマルウェアがファンクションの使用を回避し、ストレージデバイス２６０６に直接書き込みすることを試みることによって生成されてもよい。Ｏ／Ｓ下位セキュリティエージェント２６１６は、インタラプトのソースを決定し、インタラプトの性質を特定し、何れかのコンテクスト情報又はパラメータを特定し、インタラプトのターゲットを特定し、試行が疑わしいか判断するよう構成されてもよい。試行が疑わしいか否かの決定は、例えば、アクション自体が疑わしいか否かなど、コール元の身元を含むものであってもよい。例えば、マルウェアは、ある個数のセクタが書き込まれ（“ＭＯＶ  ａｌ，ｃｏｕｎｔ”など）、書き込まれるトラックの特定（“ＭＯＶ  ｃｈ，ｔｒａｃｋ”など）、書き込まれるセクタの特定（“ＭＯＶ  ｃｌ，ｓｅｃｔｏｒ”など）、書き込まれるヘッドの特定（“ＭＯＶ  ｄｈ，ｈｅａｄ”など）、書き込まれるボリュームの特定（“ＭＯＶ  ｄｌ，ｄｒｉｖｅ”など）、実行されるファイルＩ／Ｏのタイプの特定（“ＭＯＶ  ａｈ，０３ｈ”など）及びファイルに書き込まれるデータのメモリ位置（“ＭＯＶ  ｂｘ，ｂｕｆ”など）が汎用レジスタに移動される命令系列を実行するかもしれない。特定の汎用レジスタへの当該情報の割当ては、以降のファイルＩ／Ｏインタラプトのための情報をロードするための既知の方法であってもよい。これらの割当ては、“ＭＯＶ”命令により行われてもよい。その後、“ＩＮＴ  １３ｈ”などのインタラプト１３を生成する命令が実行されてもよい。Ｏ／Ｓ下位セキュリティエージェント２６１６は、コマンドをトラップし、ストレージデバイス２６０６の対象部分と共に、試行されたファイルＩ／Ｏの性質を決定するため、関連するレジスタのコンテンツを調べるよう構成されてもよい。Ｏ／Ｓ下位セキュリティエージェント２６１６は、当該処理のコール元がストレージデバイス２６０６の指定された部分にライトするパーミッションを有しているか判断するため、セキュリティルールを照会するよう構成されてもよい。Ｏ／Ｓ下位セキュリティエージェント２６１６は、コマンド系列が認証されたファイルＩ／Ｏドライバから発生したものであるか、又はそれらが未知の若しくは悪意あるプロセスにより直接実行されたか判断するため、実行履歴を調べるよう構成されてもよい。この場合、コール元は、それのステータスが当該動作に基づき悪意あると以前に知られていない場合でさえ、悪意あると判断されてもよい。最後に、標準的なファイルＩ／Ｏドライバのコールがインタラプトを実行するため行われたとしても、ドライバのコール元が特定され、Ｏ／Ｓ下位セキュリティエージェント２６１６は、コール元が対象となるストレージデバイス２６０６の部分にアクセスするためのパーミッションを有しているか判断するよう構成されてもよい。
【０３３０】
Ｏ／Ｓ下位セキュリティエージェント２６１６は、マッピングエージェント２６２２を有してもよい。マッピングエージェント２６２２は、ファイルシステム上の概念的存在からファイルが格納されているストレージデバイス２６０６のセクタに当該ファイルをマッピングするよう構成されてもよい。一実施例では、マッピングエージェント２６２２は、Ｏ／Ｓ下位セキュリティエージェント２６１６と同じ優先度リングで動作してもよい。他の実施例では、マッピングエージェント２６２２は、Ｏ／Ｓ内セキュリティエージェント２６１８の一部として実現されてもよく、オペレーティングシステム２６１２、ドライバ２６１１又はアプリケーション２６１０と同じ優先度リングで動作してもよい。さらなる他の実施例では、マッピングエージェント２６２２は、少なくとも１つのマッピングエージェントがＯ／Ｓ下位セキュリティエージェント２６１６と同じ優先度リングで動作し、少なくとも１つのマッピングエージェントがオペレーティングシステム２６１２、ドライバ２６１１又はアプリケーション２６１０の優先度リングで動作する２以上のマッピングエージェントにより実現されてもよい。マッピングエージェント２６２２は、Ｏ／Ｓ下位トラップエージェント２６０４又はトリガイベントハンドラ２６０８からファイルをマッピングするためのリクエストを受信し、ファイルが格納されるストレージデバイス２６０６上のセクタを提供することによって応答してもよい。当該実施例は、Ｏ／Ｓ下位トラップエージェント２６０４及び／又はトリガイベントハンドラ２６０８は、ストレージデバイス２６０６の同じセクタに常には格納されていなくてもよい動的に配置されたファイル又はデータにアクセスするためのリクエストを特定することを可能にしてもよい。例えば、マスタファイルテーブル、オペレーティングシステムカーネルファイル、デバイスドライバ及びアンチマルウェアソフトウェアの位置は、ストレージデバイス２６０６の同一セクタに常にあるとは限らず、マッピングエージェント２６２２は、これらのファイルが格納されているセクタを特定するのに利用されてもよい。いくつかの実施例では、マッピングエージェント２６２２は、プロテクトされたファイルが格納されているセクタを決定するため、ファイルシステムをクエリしてもよい。マッピングエージェント２６２２はまた、ディスクマッピングビットマップ２６２８を利用して、プロテクトされたファイルが格納されているストレージデバイス２６０６上のセクタを特定してもよい。ディスクマッピングビットマップ２６２８は、図２３のディスクマッピングビットマップ２３０１の機能により実現されてもよく、又は当該機能を実現するよう構成されてもよい。ディスクマッピングビットマップ２６２８は、例えば、プロテクトされた各ファイルが格納されるストレージデバイスのセクタなどを含む、各種のプロテクトされたファイルに関する情報を含むものであってもよい。プロテクトされたファイルが更新される場合、ディスクマッピングビットマップ２６２８からの情報もまた更新されてもよい。このようにして、マッピングエージェント２６２２がファイルシステム上の概念的存在から、ファイルがあるストレージデバイス２６０６のセクタ９２４にプロテクトされたファイルをマッピングするためのリクエストを受信すると、マッピングエージェント２６２２は、プロテクトされたファイルに対応するセクタ９２４を特定するため、ディスクマッピングビットマップ２６２８を照会してもよい。
【０３３１】
トリガイベントハンドラ２６０８は、相互に通信接続された１以上のイベントハンドラ又はセキュリティエージェントにより実現されてもよい。トリガイベントハンドラ２６０８及びＯ／Ｓ下位トラップエージェント２６０４は、同一のセキュリティエージェントにより実現されてもよい。一実施例では、トリガイベントハンドラ２６０８は、Ｏ／Ｓ下位トラップエージェント２６０４と同じ優先度リングにおいて動作してもよい。他の実施例では、トリガイベントハンドラ２６０８は、Ｏ／Ｓ内セキュリティエージェント２６１８の一部として実現されてもよく、オペレーティングシステム２６１２、ドライバ２６１１又はアプリケーション２６１０と同じ優先度リングで動作してもよい。さらなる他の実施例では、トリガイベントハンドラ２６０８は、少なくとも１つのトリガイベントハンドラがＯ／Ｓ下位セキュリティエージェント２６１６と同じ優先度リングで動作し、少なくとも１つのトリガイベントハンドラがオペレーティングシステム２６１２、ドライバ２６１１又はアプリケーション２６１０の優先度リングにおいて動作する２以上のトリガイベントハンドラにより実現されてもよい。Ｏ／Ｓ下位トラップエージェント２６０４の優先度リングで実行することによって、トリガイベントハンドラ２６０８は、“Ｒｉｎｇ０”又は“Ｒｉｎｇ３”がエージェント自体をマルウェア感染する問題を同様に回避するかもしれない。しかしながら、オペレーティングシステム２６１２、ドライバ２６１１又はアプリケーション２６１０と共に“Ｒｉｎｇ０”又は“Ｒｉｎｇ３”で実行されるトリガイベントハンドラ２６０８は、“Ｒｉｎｇ−１”のエージェントの観点から利用不可であるストレージデバイス２６０６の試行されたアクセスに関するコンテクスト情報を提供することが可能であってもよい。
【０３３２】
トリガイベントハンドラ２６０８は、Ｏ／Ｓ下位トラップエージェント２６０４からトリガイベントを受信及び処理するよう構成されてもよい。トリガイベントハンドラ２６０８はまた、Ｏ／Ｓ下位セキュリティエージェント２６１６及び／又は２６０４にセキュリティルール２６１４を提供するよう構成されてもよい。トリガイベントは、Ｏ／Ｓ下位トラップエージェント２６０４によりトラップされたストレージデバイス２６０６にアクセスするためのリクエストに関する情報を含むものであってもよい。トリガイベントハンドラ２６０８は、トリガイベントに関するコンテクスト情報と共に、１以上のセキュリティルール２６１４又はプロテクションサーバ２６０２を利用し、ストレージデバイス２６０６のプロテクトされたエリアにアクセスするための試行を特定し、適切なレスポンスを決定するよう構成されてもよい。例えば、トリガイベントハンドラ２６０８は、セキュリティルール２６１４を利用して、プロテクトされたセクタ及び／又はファイルなどのストレージデバイス２６０６のプロテクトされたエリアにアクセスするための試行を特定してもよい。トリガイベントハンドラ２６０８は、マッピングエージェント２６２２を利用して、プロテクトされたファイルにアクセスするためのリクエストを特定するのに使用してもよい。例えば、トリガイベントハンドラ２６０８は、ストレージデバイス２６０６上の対応するセクタにプロテクトされたファイルをマッピングするためのリクエストをマッピングエージェント２６２２に送信してもよい。マッピングエージェント２６２２は、マッピングエージェント２６２２は、プロテクトされたファイルに対応するセクタにより応答してもよい。トリガイベントハンドラ２６０８は、ファイルに対応するセクタにアクセスする試行を特定することによってｍプロテクトされたファイルにアクセスするための試行を特定してもよい。プロテクトされたセクタ及び／又はファイルなどのプロテクトされたエリアにアクセスするための試行を特定した後、トリガイベントハンドラ２６０８は、プロテクトされたエリアにアクセスするための試行が認証されているか判断するため、セキュリティルール２６１４を照会するよう構成されてもよい。トリガイベントハンドラ２６０８はさらに、適切なアクションの決定をＯ／Ｓ下位セキュリティエージェント２６１６に提供するよう構成されてもよい。例えば、トリガイベントハンドラ２６０８は、トリガイベントが許可若しくは拒絶されるべきか、特定のデータ又はメディアサーファスが破壊されるべきか、又はデータが暗号化されるべきかＯ／Ｓ下位セキュリティエージェント２６１６に通知してもよい。
【０３３３】
Ｏ／Ｓ下位セキュリティエージェント２６１６は、トリガイベントハンドラ２６０８又はＯ／Ｓ内セキュリティエージェント２６１８などのコンポーネントと共に又は単独で、ストレージデバイス２６０６にアクセスする典型的な信頼される方法を決定するよう構成されてもよい。例えば、ストレージデバイス２６２０のセクタに対するライト又はリードは、通常はファイルＩ／Ｏドライバによるコールを介し行われてもよい。従って、プロテクトされたセクタへのライトのトラップされた試行は、当該試行を行うのに利用された手順又はファンクションをＯ／Ｓ下位セキュリティエージェント２６１６が調べることによって評価されてもよい。セクａｔにアクセスする際に予想される動作からの乖離が観察され、マルウェアの徴候について評価されてもよい。例えば、Ｏ／Ｓ下位セキュリティエージェント２６１６が、プロテクトされたセクタに対する嗜好されたライトが、通常のファイルＩ／Ｏファンクション又はドライバを利用することなくインタラプト１３への直接的なコールを介し行われたと判断した場合、当該試行されたライトは疑わしいものであるかもしれない。
【０３３４】
バックアップストレージデバイス２６２０は、ストレージデバイス２６０６上のデータをバックアップ及び復元するのに利用されてもよい。例えば、Ｏ／Ｓ下位セキュリティエージェント２６１６及び／又はＯ／Ｓ内セキュリティエージェント２６１８は、ストレージデバイス２６０６からのデータをバックアップし、各種状況下で当該データを復元するよう構成されてもよい。セキュリティルール２６１４は、バックアップされることが認められているストレージデバイス２６０６の特定のセクタを指定してもよい。ストレージデバイス２６０６からのデータが復元を要求するとき、ストレージデバイス２６０６の適切なセクタが、バックアップストレージデバイス２６２０の対応するセクタからデータを用いて書き込まれてもよい。必要である場合、ストレージデバイス２６０６に対する複数のライトが復元プロセス中に利用されてもよい。いくつかの実施例では、ストレージデバイス２６０６からのデータは、当該データがコラプト又はマルウェア感染していると判断された場合、復元されてもよい。この判定は、マルウェアの存在を検出するため、ストレージデバイス２６０６のセクタをスキャンすることによって実行されてもよい。ストレージデバイス２６０６のセクタの実行中、マルウェアを有する又は関連すると知られているデータパターンを特定するため、ブラックリストが利用されてもよい。ブラックリストは、セキュリティルール２６１４により規定されてもよい。マルウェアに関連すると知られるデータパターンが検出された場合、感染したセクタがバックアップストレージデバイス２６２０から復元される。いくつかの実施例では、ディスクマッピングビットマップ２６２８が、各種のプロテクトされたファイルがマルウェアに感染しているか判断するため利用されてもよい。ディスクマッピングビットマップ２６２８の実施例の説明は、例えば、図２３のディスクマッピングビットマップ２３０１の説明などに見つけられてもよい。ディスクマッピングビットマップ２６２８は、ストレージデバイス２６０６上のプロテクトされたファイルの位置を指定し、プロテクトされたファイルについて以前に生成されたハッシュ値を提供してもよい。ディスクマッピングビットマップ２６２８は、プロテクトされたファイルの位置を特定するため照会され、プロテクトされたファイルのコンテンツを用いてハッシュが計算され、計算されたハッシュがディスクマッピングビットマップ２６２８からの以前に生成されたハッシュ値と比較されてもよい。これらのハッシュ値が一致しない場合、プロテクトされたファイルはおそらくマルウェアにより変更されており、当該ファイルは、バックアップストレージデバイス２６２０から復元される。いくつかの実施例では、バックアップストレージデバイス２６２０はまた、ストレージデバイス２６０６上のデータを復元するのに利用される前にマルウェアについてチェックされる。バックアップストレージデバイス２６２０が件センしている場合、バックアップストレージデバイス２６２０からのバックアップデータは利用されず、及び／又は古いバックアップが利用されてもよく、又はストレージデバイス２６０６にアクセスするためのリクエストは拒絶されてもよい。
【０３３５】
バックアップストレージデバイス２６２０からのデータは、マルウェアに感染している可能性のあるオペレーティングシステム２６１２のファイルシステム機構を利用することを回避するため、Ｏ／Ｓ下位セキュリティエージェント２６１６によってストレージデバイス２６０６に書き込みされてもよい。しかしながら、他の何れかセキュアなプロセスが、バックアップストレージデバイス２６２０からのデータによりストレージデバイス２６０６に対するデータを復元するのに利用されてもよい。各バックアップのメタデータが維持され、改訂番号、バックアップが作成された日時、及びバックアップに関連するアプリケーション２６１０若しくは他のエンティティを含むものであってもよい。バックアップストレージデバイス２６２０は、ネットワーク上などのストレージデバイス２６０６からリモートに配置されてもよい。例えば、バックアップストレージデバイス２６２０は、プロテクションサーバ２６０２に関連付けされてもよい。バックアップストレージデバイス２６２０がネットワーク上に配置されている場合、Ｏ／Ｓ下位セキュリティエージェント２６１６は、帯域外ネットワーク接続を利用して、マルウェア感染している可能性のあるオペレーティングシステムカーネルネットワークデバイスドライバを利用することを回避するため、バックアップストレージデバイス２６２０にアクセスしてもよい。この帯域外ネットワーク接続は、一実施例では、電子デバイス２６０１のネットワークカードに直接アクセスすることによって、バックアップストレージデバイス２６２０にアクセスするためのＨＴＴＰＳ、ｉＳＣＳＩ、ＮＦＳ又はＣＩＦＳクライアントの利用を可能にするＡｃｔｉｖｅ  Ｍａｎａｇｅｍｅｎｔ  Ｔｅｃｈｎｏｌｏｇｙ（ＡＭＴ）を利用して実現されてもよい。
【０３３６】
プロテクションサーバ２６０２は、ネットワーク上で動作し、クラウドコンピューティングスキームを実現してもよい。プロテクションサーバ２６０２は、セキュリティルール２６１４を格納し、Ｏ／Ｓ下位セキュリティエージェント２６１６、Ｏ／Ｓ内セキュリティエージェント２６１８及び／又はトリガイベントハンドラ２６０８などのシステム９００の要素と通信し、セキュリティルール２６１４及び他の情報を提供するよう構成されてもよい。プロテクションサーバ２６０２は、バックアップストレージデバイス２６２０を有してもよい。バックアップストレージデバイス２６２０は、セキュリティルール２６１４及び／又はストレージデバイス２６０６からのバックアップデータを格納するため利用されてもよい。
【０３３７】
セキュリティルール２６１４は、図１のセキュリティルール１１４、図２のセキュリティルール２２０、２２２、図４のセキュリティルール４２０、４２２、４３４、４３６、４３８、図５のセキュリティルール５１８、又は図７のセキュリティルール７０７、７２１、７２３の機能により実現されるか、又は当該機能を実現するよう構成されてもよい。セキュリティルール２６１４の実施例の説明は、以下の図２７の説明に見つけられてもよい。
【０３３８】
図２７は、未認証のアクセスからストレージデバイスをプロテクトするシステム又は方法により利用されるセキュリティルールの実施例である。セキュリティルール２７００は、各イベントについてトラップ及び適切なレスポンスを要求するイベントを指定するための何れか適切なルール、ロジック、コマンド、命令、フラグ又は他の機構を含むものであってもよい。例えば、セキュリティルール２７００は、トラップを要求するイベントを特定し、各イベントについて適切なレスポンスを決定するため、図２６からのＯ／Ｓ下位セキュリティエージェント２６１６、Ｏ／Ｓ内セキュリティエージェント２６１８及び／又はトリガイベントハンドラ２６０８により利用されてもよい。セキュリティルール２７００は、ストレージデバイスにアクセスするすべてのリクエストがトラップされることを要求してもよいし、又はリード、ライト及び／又は実行リクエストなどの特定タイプのリクエストのトラップのみを要求してもよい。セキュリティルール２７００はさらに、プロテクションを要求するストレージデバイスのファイル又は特定のセクタなど、ストレージデバイスのプロテクトされたエリア２７０２を指定するルールを含むものであってもよい。プロテクトされた各エリア２７０２について、セキュリティルール２７００は、プロテクトされた各エリア２７０２にアクセスすることが認証される又は認証されないオペレーティングシステム、アプリケーション又はドライバなどの要求元のエンティティ２７０４を指定してもよい。セキュリティルール２７００はまた、プロテクトされたエリア２７０２にアクセスすることが許可されている各エンティティ２７０４について、プロテクトされたエリア２７０２のリード２７０６ａ、ライト２７０６ｂ又は実行２７０６ｃなどのアクセスパーミッションを指定してもよい。
【０３３９】
特定のセキュリティルール２７００は、アプリケーション認知不能（ａｐｐｌｉｃａｔｉｏｎ  ａｇｎｏｓｔｉｃ）又はアプルケーション固有のものであってもよい。アプリケーション認知不能なルールは、ストレージデバイスのプロテクトされたエリア２７０２へのアクセスを要求しているアプリケーションにかかわらず適用される。アプリケーション固有のルールは、ストレージデバイスのプロテクトされたエリア２７０２へのアクセスを、当該リクエストの発信元のアプリケーションに応じて許可又は禁止してもよい。ルール２７１０ａは、マスタブートレコードに書き込むための何れかのエンティティによるリクエストが拒絶されるべきであることを指定するアプリケーション認知不可なルールの一例である。ルール２７１０ｂは、他の何れかのエンティティがストレージデバイス上のセキュリティエージェントのイメージへの書き込みを禁止しながら、セキュリティエージェントがストレージデバイス上の自らのイメージに書き込むことを許可するアプリケーション固有のルールの一例である。ルール２７１０ｃ及び２７１０ｄはまた、アプリケーション固有のルールの一例である。ルール２７１０ｃは、インターネットエクスプローラアプリケーションのコードページが何れかのエンティティにより書き込まれてはならないことを指定する。ルール２７１０ｄは、インターネットエクスプローラアプリケーションのデータページへのライトの他の何れかのエンティティからのリクエストが拒絶される一方、インターネットエクスプローラアプリケーションのデータページへのライトのリクエストが、当該リクエストがインターネットエクスプローラアプリケーションからのものである場合には許可されることを指定する。
【０３４０】
セキュリティルール２７００は、アプリケーション及びオペレーティングシステムがデータやコードページなどの各自の情報の必要なプロテクションを指定することを可能にするため、アプリケーション又はオペレーティングシステムにより規定されてもよい。セキュリティルール２７００はまた、アドミニストレータにより設定され、図２６からのプロテクションサーバ２６０２などにリモートに格納されてもよい。セキュリティルール２７００は、リモート位置から抽出及び／又は更新されてもよい。
【０３４１】
いくつかの実施例では、セキュリティルール２７００は、ストレージデバイスへのアクセスを許可する前に、図２６からのプロテクションサーバ２６０２などのプロテクションサーバとのネットワーク接続を要求してもよい。プロテクションサーバとの接続が利用不可である場合、セキュリティルール２７００は、ストレージデバイスへのアクセスを禁止し、ストレージデバイスのメディアサーファス又はデータを破壊してもよい。例えば、セキュリティルール２７００は、図２６からのＯ／Ｓ下位セキュリティエージェント２６１６などのセキュリティエージェントが、指定された日数の間にプロテクションサーバに接続できない場合、セキュリティエージェントは、ストレージデバイスのセキュリティが危険にさらされたと想定してもよいことを指定してもよい。当該実施例では、ストレージデバイス上のデータは、物理的に危険にされされた場合であってもセキュアにされる。
【０３４２】
図２８は、未認証のアクセスから電子デバイスのストレージデバイスをプロテクトする方法の実施例である。ステップ２８０５において、Ｏ／Ｓ下位セキュリティエージェント、Ｏ／Ｓ内セキュリティエージェント、トリガイベントハンドラ及びプロテクションサーバの身元及びセキュリティが認証されてもよい。当該認証は、各コンポーネントのメモリにおけるイメージの特定及び検証、暗号化ハッシュ又は秘密鍵を含む何れか適切な方法を利用して実行されてもよい。ステップ２８０５が終了すると、他のステップの処理は、特定の実施例では保留されてもよい。
【０３４３】
ステップ２８１０では、セキュリティルールが取得される。セキュリティルールは、Ｏ／Ｓ下位セキュリティエージェント、Ｏ／Ｓ内セキュリティエージェント若しくはトリガイベントハンドラによりローカルに格納されてもよく、あるいは、セキュリティルールは、例えば、プロテクションサーバなどにリモートに格納されてもよい。当該セキュリティルールは、ステップ２８１５〜２８６０における判定を行うのに利用されてもよい。ステップ２８１５において、セキュリティの脅威が検出されたか判断される。例えば、Ｏ／Ｓ下位セキュリティエージェント及び／又はＯ／Ｓ内セキュリティエージェントは、電子デバイス上でマルウェアを特定してもよく、又は電子デバイスを感染させるためのマルウェアによる試行を特定してもよい。セキュリティの脅威が検出されなかった場合、アクションは実行されなくてもよい。セキュリティの脅威が検出された場合、ステップ２８２０において、Ｏ／Ｓ下位セキュリティエージェントは、ストレージデバイスへのアクセスをトラップするよう命令される。いくつかの実施例では、Ｏ／Ｓ下位セキュリティエージェントは、セキュリティの脅威が検出されたかにかかわらず、認証プロセス後にストレージデバイスへのアクセスをトラップするよう命令される。
【０３４４】
ステップ２８２５において、ストレージデバイスにアクセスするためのリクエストがトラップされる。当該トラップは、電子デバイス上で実行されるオペレーティングシステムより下位の優先度リングにおいて実行されるソフトウェアにより実行されてもよい。例えば、Ｏ／Ｓ下位セキュリティエージェントは、トラップ機能を実行してもよい。ステップ２８３０において、トラップされたリクエストに関するストレージデバイスのセクタがマルウェアに感染したか判断される。この判定は、マルウェアの存在を検出するため、ストレージデバイスのセクタをスキャンすることによって実行されてもよい。ストレージデバイスのセクタのスキャン中、ブラックリストは、マルウェアを有するか又は関連すると知られるデータパターンを特定するのに利用されてもよい。マルウェアに関連すると知られるデータパターンが検出された場合、ステップ２８３５において、感染したセクタがバックアップストレージデバイスから復元される。いくつかの実施例では、バックアップストレージデバイスはまた、ストレージデバイスを復元するのに利用される前にマルウェアについてスキャンされる。バックアップストレージデバイスが感染している場合、バックアップは利用されず、及び／又は古いバックアップが利用されるか、又はストレージデバイスにアクセスするリクエストは拒絶されてもよい。
【０３４５】
ステップ２８４０において、ストレージデバイスのプロテクトされたセクタへのアクセスが要求されたか判断される。プロテクトされたセクタは、セキュリティルールにより規定されてもよい。セキュリティルールは、特定のセクタがプロテクトされることを要求するものであってもよいし、又は動的に配置される特定のファイル及び／又はデータがプロテクトされることを要求するものであってもよい。例えば、セキュリティルールは、スタティックであって、ストレージデバイスの第１セクタ（セクタ０）に配置されるマスタブートレコードのプロテクションを要求するものであってもよい。他の例として、セキュリティルールはまた、マスタファイルテーブル、オペレーティングシステムカーネルファイル、デバイスドライバ又はアンチマルウェアソフトウェアのプロテクションを要求するものであってもよい。これらのファイルは、動的な位置を有してもよく、常に同一のセクタに格納されるとは限らない。動的に格納されたファイル又はデータがプロテクションを要求する場合、ファイル又はデータは、ファイルシステムのそれの概念的な存在から、当該ファイル又はデータがあるストレージデバイスの実際のセクタにマッピングされる。ストレージデバイスにアクセスするリクエストがプロテクトされたセクタに関するものでない場合、ステップ２８５０において、ストレージデバイスにアクセスするリクエストは許可される。ストレージデバイスにアクセスするリクエストがプロテクトされたセクタに関するものである場合、ステップ２８４５において、プロテクトされたセクタへのアクセスが認証されているか判断される。ストレージデバイスにアクセスするための試行されたリクエストに関するコンテクスト情報がセキュリティルールに関して解析され、要求元のエンティティがプロテクトされたセクタにアクセスすることが許可されているか判断してもよい。例えば、セキュリティルールは、オペレーティングシステム、特定のアプリケーション又は特定のデバイスドライバがプロテクトされたセクタにアクセスすることが許可されているか否か指定してもよい。セキュリティルールはまた、プロテクトされたセクタにアクセスすることが許可されている要求元のエンティティについてリード、ライト又は実行などのアクセスパーミッションを指定してもよい。
【０３４６】
プロテクトされたセクタへのアクセスが許可されている場合、ストレージデバイスにアクセスするためのリクエストは許可される。プロテクトされたセクタへのアクセスが許可されていない場合、ステップ２８５５において、ストレージデバイスにアクセスするためのリクエストは拒絶される。いくつかの実施例では、他の訂正アクションが実行されてもよい。例えば、ストレージデバイス上のデータは破壊又は暗号化されてもよいし、又はストレージデバイスのメディアサーファスが破壊されてもよい。ストレージデバイスにアクセスするためのリクエストが許可されていない場合、ステップ２８６０において、ストレージデバイスにアクセスするための試行は、プロテクションサーバに報告される。当該報告は、関連する何れかのマルウェア又は疑わしい動作に関する情報を含むものであってもよい。
【０３４７】
図２８からの方法のステップは、連続的、定期的、要求に応答して、又はイベントのトリガに応答してストレージデバイスをプロテクトするため、必要に応じて繰り返されてもよい。
【０３４８】
図２９は、アプリケーションと入出力デバイスとの間のライトアクセスのための入出力パスをセキュアにするシステム２９００の実施例である。システム２９００は、電子デバイス２９０４のアプリケーションＩ／Ｏパスに対するマルウェアのｇこうげきに対してプロテクトされるべき電子デバイス２９０４を有してもよい。電子デバイス２９０４は、Ｏ／Ｓ下位セキュリティエージェント２９１６、Ｉ／Ｏデバイス２９２６、アプリケーション２９１０、オペレーティングシステム２９１２及びドライバ２９１１を有してもよい。電子デバイス２９０４は、図１の電子デバイス１０３、図２の電子デバイス２０４、図４の電子デバイス４０１、図７の電子デバイス７０１及び／又はこれらの何れかの組み合わせの機能によって全体的又は部分的に実現されてもよく、又は当該機能を実現するよう構成されてもよい。
【０３４９】
Ｏ／Ｓ下位セキュリティエージェント２９１６は、図１のＯ／Ｓ下位トラップエージェント１０４、図２のＳＶＭＭセキュリティエージェント２１７若しくはＳＶＭＭ２１６、図４のファームウェアセキュリティエージェント４４０、４４２、ＰＣファームウェアセキュリティエージェント４４４若しくはＯ／Ｓ下位システムエージェント４５０、図５のファームウェアセキュリティエージェント５１６、図７のマイクロコードセキュリティエージェント７０８、及び／又はこれらの何れかの組み合わせの機能により全体的若しくは部分的に実現されてもよく、又は当該機能を実現するよう構成されてもよい。Ｏ／Ｓ下位セキュリティエージェント２９１６は、マルウェアから電子デバイス２９０４のアプリケーションＩ／Ｏパスをセキュアにするよう構成されてもよい。Ｉ／Ｏデバイス２９２６は、図２のデバイス２２６、図４のディスプレイ４２４若しくはストレージ４２６、図５の入出力デバイス５０２、及び／又はこれらの何れかの組み合わせの機能により全体的若しくは部分的に実現されてもよく、又は当該機能を実現するよう構成されてもよい。アプリケーション２９１０は、図１のアプリケーション１１０、図２のアプリケーション２１０、図４のアプリケーション４１０、図７のアプリケーション７０９及び／又はこれらの何れかの組み合わせの機能により全体的若しくは部分的に実現されてもよく、又は当該機能を実現するよう構成されてもよい。ドライバ２９１１は、図１のドライバ１１１、図２のドライバ２１１、図４のドライバ４１１、図７のドライバ７１１及び／又はこれらの何れかの組み合わせの機能により全体的若しくは部分的に実現されてもよく、又は当該機能を実現するよう構成されてもよい。オペレーティングシステム２９１２は、図１のオペレーティングシステム１１２、図２のオペレーティングシステム２１２、図４のオペレーティングシステム４１２、図７のオペレーティングシステム７１３及び／又はこれらの何れかの組み合わせの機能により全体的若しくは部分的に実現されてもよく、又は当該機能を実現するよう構成されてもよい。
【０３５０】
図２９の矢印により示され、また以下の図３０に関して説明されるように、Ｏ／Ｓ下位セキュリティエージェント２９１６は、アプリケーションＩ／Ｏパスを介しデータの送信に対してトラップしてもよい。トラップすると、Ｏ／Ｓ下位セキュリティエージェント２９１６は、Ｉ／Ｏライトアクセスに関してアプリケーション２９１０からＩ／Ｏデバイス２９２６に配信されるコンテンツをインターセプトしてもよい。Ｏ／Ｓ下位セキュリティエージェント２９１６は、インターセプトされたＩ／Ｏコンテンツを修正し、修正されたコンテンツを通常のＩ／Ｏパスを介し（例えば、オペレーティングシステム３１１２及びドライバ３１１１などを介し）送信してもよい。当該修正されたコンテンツは、Ｉ／Ｏパスデータをインターセプト可能なマルウェアが実際のユーザデータの代わりにダミーデータをインターセプトするように、“スプーフ”又は“ダミー”コンテンツを有してもよい。Ｏ／Ｓ下位セキュリティエージェント２９１６は、それがＩ／Ｏデバイス２９２６のデバイスドライバに到着するとき、修正されたＩ／Ｏコンテンツをインターセプトし、それを元のコンテンツと置換し、マルウェア攻撃からＩ／Ｏ送信をセキュアにしてもよい。さらに、Ｏ／Ｓ下位セキュリティエージェント２９１６は、ルール（セキュリティルール１１４、２２０、２２２、４３８、４３４、４３６、５１８、７０７、７２１及び／又は７２３など）に基づき、通常のＩ／Ｏパスを介し送信される修正されたコンテンツがマルウェア的な動作（修正されたコンテンツがスニフ（ｓｎｉｆｆ）、フック（ｈｏｏｋ）及び／又は攻撃されたことを示す動作など）により影響を受けたか検出し、マルウェア的な動作が検出された場合、訂正アクションを実行してもよい。いくつかの実施例では、Ｏ／Ｓ下位セキュリティエージェント２９１６は、プロテクションサーバ２０２とマルウェア的な動作の発生に関する情報を通信してもよい。例えば、Ｏ／Ｓ下位セキュリティエージェント２９１６は、電子デバイス２９０４及び／又は他の電子デバイスに対するさらなる感染を阻止し、及び／又はマルウェア的動作を生じさせるマルウェアを特定するためプロテクションサーバ２０２を支援するフォレンジック情報をプロテクションサーバ２０２に通信してもよい。当該フォレンジック情報は、限定することなく、当該動作が行われた電子デバイスの身元、マルウェア的動作を特定するＯ／Ｓ下位セキュリティエージェント、マルウェア的動作が行われたデバイス２９２６及び／若しくはアプリケーションＩ／Ｏパス、Ｏ／Ｓ下位セキュリティエージェントによりＩ／Ｏパスに配置された修正されたコンテンツ、及び／又はインターセプトされた修正されたデータ（マルウェアの可能性により修正されたデータに行われる修正を示す）を含むものであってもよい。
【０３５１】
アプリケーション２９１０と入出力デバイス２９２６との間のパスが特定数の要素と共に示されるが、当該パスは、アプリケーション２９１０と入出力デバイス２９２６との間の入力又は出力パスを実現するのに必要とされる個数のコンポーネントを含むものであってもよい。例えば、オペレーティングシステム２９１２及びドライバ２９１０は、アプリケーション２９１０と入出力デバイス２９２６との間で情報をわたすための複数のサブコンポーネントを有してもよい。オペレーティングシステム２９１２、ドライバ１１１及びこれらのサブコンポーネントは、システム又はドライバにより規定されたファンクションを用いて互いにコールするよう構成されてもよい。Ｏ／Ｓ下位セキュリティエージェント２９１６は、アプリケーション２９１０と入出力デバイス２９２６との間の入出力パスに沿って何れかの通信又は処理をトラップするよう構成されてもよい。例えば、ＷｉｎｄｏｗｓＴＭ環境では、デバイス２９２６にイメージを配置するため、アプリケーション２９１０は、デバイス２９２６により実現されるディスプレイに対する入出力を処理するグラフィックＩ／Ｏドライバをコールするよう構成されるＮｔＧＤＩＢＢｉｔＢｌｔファンクションを利用してｗｉｎ３２ｋ．ｓｙｓをコールするよう構成されるＮｔＧＤＩＢＢｉｔＢｌｔファンクションを用いてｎｄｔｌｌ．ｄｌｌをコールするよう構成されるＢｉｔＢｌｔファンクションを用いてｇｄｉ３２．ｄｌｌをコールするよう構成されてもよい。Ｏ／Ｓ下位セキュリティエージェント２９１６は、例えば、当該ファンクションのコードセクションを含むメモリ位置の実行をトラップするなどによって、当該ファンクションコールの実行をトラップするよう構成されてもよい。メモリ位置は、例えば、バーチャルメモリページ又は物理メモリのアドレスレンジなどを含むものであってもよい。
【０３５２】
Ｏ／Ｓ下位セキュリティエージェント２９１６は、アプリケーション２９１０とデバイス２９２６との間のパスに沿ってコマンド又は情報を通信するためのファンクションのコール元を決定し、それらが認証されたエンティティにより実行されたものであるか判断するよう構成されてもよい。例えば、ドライバ２９１１のファンクションは、２９１１のファンクションにアクセスするためシステムにより提供される方法を利用する代わりに（オペレーティングシステム２９１２のファンクションなど）、悪意あるプロセスにより直接コールされる可能性がある。Ｏ／Ｓ下位セキュリティエージェント２９１６は、ドライバ２９１１のファンクションの実行をトラップし、当該アクセスの発信元のメモリアドレスに基づき、アプリケーション２９１０がドライバ２９１１を直接コールしたと判断し、当該コールがオペレーティングシステム２９１２内の認証されたエンティティからのものでなかったと判断するよう構成されてもよい。当該アクセスは、オペレーティングシステム２９１２内のセキュリティ手段を回避するよう実行されているかもしれない。Ｏ／Ｓ下位セキュリティエージェント２９１６は、当該アクセスがマルウェアを示していると判断し、試行されたアクセスを拒絶するよう構成されてもよい。
【０３５３】
さらに、Ｏ／Ｓ下位セキュリティエージェント２９１６は、入力及び出力バッファに対応するメモリ位置への情報の試行されたリード又はライトをトラップすることによって、アプリケーション２９１０とデバイス２９２６との間の情報の通信をトラップするよう構成されてもよい。例えば、オペレーティングシステム２９１２は、Ｉ／Ｏバッファに情報を書き込み、デバイス２９２６に送信すべきバッファ内の情報を抽出するため、ドライバ２９１１のファンクションをコールしてもよい。当該バッファは、情報のサイズのためパラメータとして情報を直接わたす代わりに利用されてもよい。従って、Ｏ／Ｓ下位セキュリティエージェント２９１６は、例えば、Ｉ／Ｏバッファのバーチャルメモリページ又は物理アドレスレンジなどへのリード又はライトアクセスをトラップするよう構成されてもよい。Ｏ／Ｓ下位セキュリティエージェント２９１６は、Ｉ／Ｏバッファにアクセスするエンティティの身元を、当該エンティティがＩ／Ｏバッファをリード又はライトすることが許可されているか判断するため決定するよう構成されてもよい。例えば、Ｏ／Ｓ下位セキュリティエージェント２９１６は、キーボードデータのバッファへの試行されたアクセスをトラップするよう構成されてもよい。アプリケーション２９１０がバッファから情報を直接リードすることを試行する場合（すなわち、オペレーティングシステム２９１２を介した通常のコールチェーンの範囲外）、Ｏ／Ｓ下位セキュリティエージェント２９１６は、バッファのキーボードデータの試行された直接的なアクセスがキーロガーなどのマルウェアを示すため、アクセスを拒絶するよう構成されてもよい。他の例では、ディスプレイデータのためのバッファが、スクリーンキャプチャマルウェアを阻止するためアクセスからプロテクトされてもよい。さらなる他の例では、ネットワーク出力のためのバッファは、ＤｏＳ攻撃の生成又はパケット修正を阻止するため、アクセスからプロテクトされてもよい。
【０３５４】
従って、いくつかの実施例では、Ｏ／Ｓ下位セキュリティエージェント２９１６は、バッファに対するリード又はライトが許可されていると知られていないＩ／Ｏバッファにアクセスするエンティティに対するすべてのアクセスをブロックするよう構成されてもよい。当該実施例では、エンティティが悪意あるシグネチャについて当該エンティティをスクＡＮすることによりマルウェアとして以前に特定されていなくても、マルウェアステータスが知られていないアプリケーション２９１０又は他のエンティティがブロックされてもよい。他の実施例では、Ｏ／Ｓ下位セキュリティエージェント２９１６は、バッファへのアクセスを既知のコールチェーン内のバッファの直接的な下位又は上位にあるドライバ、インタフェース、アプリケーション又は他のエンティティのみに許可するよう構成されてもよい。同様に、Ｏ／Ｓ下位セキュリティエージェント２９１６は、ドライバ２９１１又はオペレーティングシステム２９１２のファンクションへのアクセスを、既知のコールチェーン内のバッファの直接的な下位又は上位にあるドライバ、インタフェース、アプリケーション又は他のエンティティのみに許可するよう構成されてもよい。当該既知のコールチェーンは、既知の安全なシステムが理解する典型的な処理、プロファイル、及びアプリケーション２９１０とデバイス２９２６との間のパスに沿ってエンティティが相互にコールするベンチマークを観察することによって規定されてもよい。当該既知の安全な処理の特徴は、Ｏ／Ｓ下位セキュリティエージェント２９１６にアクセス可能なセキュリティルールに実現されてもよい。ドライバ２９１１などのドライバ若しくはオペレーティングシステム２９１２のコンポーネントへのコール、又は当該既知のチェーンの外部のＩ／Ｏバッファに対するコールが拒絶されてもよい。
【０３５５】
Ｏ／Ｓ下位セキュリティエージェント２９１６は、アプリケーション２９１０とデバイス２９２６との間のパス内のコールをトラップし、わたされるデータを読み、データを暗号化し、データをパスに再挿入し、及び処理の進捗を許可してもよい。一実施例では、デバイス２９２６は、当該データを解読するよう構成されるファームウェアセキュリティエージェントを有してもよい。当該ファームウェアセキュリティエージェントとＯ／Ｓ下位セキュリティエージェント２９１６とは、当該暗号化を連係するため通信接続され、及び／又は当該暗号化を連係するため同様のセキュリティルールをそれぞれ有してもよい。他方、Ｏ／Ｓセキュリティエージェント２９１６は、パス内のコールをトラップし、デバイスから到来したデータを解読し、当該データをパスに再挿入し、処理が進捗することを許可するよう構成されてもよい。他の実施例では、Ｏ／Ｓ下位セキュリティエージェント２９１６は、パスのさらなる上下のコールをトラップし、わたされるデータを読み、データを解読し、データをパスに再挿入し、処理が進捗することを許可するよう構成されてもよい。さらに、Ｏ／Ｓ下位セキュリティエージェント２９１６は、アプリケーション２９１０とデバイス２９２６との間のパスに沿ってわたされるデータを調べ、マルウェアの徴候について当該データをスキャンするよう構成されてもよい。Ｏ／Ｓ下位セキュリティエージェント２９１６は、パス内のエンティティの間でわたされたデータを制御し、又はパラメータとしてわたされたデータ（ダミーデータなど）を置換するよう構成されてもよい。
【０３５６】
図３０は、アプリケーションと入出力デバイスとの間のライトアクセスについて入出力パスをセキュアにする方法３０００の実施例である。ステップ３００２において、Ｏ／Ｓ下位セキュリティエージェントは、アプリケーションＩ／Ｏパスがマルウェア攻撃について脆弱であるか判断してもよい。アプリケーションＩ／Ｏパスのプロテクションについてここで開示されるシステム及び方法はかなりのプロセッサ、メモリ及び／又は他のリソースを消費するため、アプリケーションＩ／Ｏパスがマルウェア攻撃に特に影響を受ける可能性があるときのみ、当該システム及び方法を利用することが望ましい。アプリケーションＩ／Ｏパスは、アプリケーション又はオペレーティングシステムがセンシティブな可能性のある情報が通信されるＩ／Ｏ処理を実行しているとき、マルウェア攻撃に脆弱であるかもしれない。例えば、Ｏ／Ｓ下位セキュリティエージェントは、電子デバイスのユーザの金融データ、企業人事データ、アカウント番号、ユーザ名、パスワード、ソーシャルセキュリティ番号及び／又は他の識別データなど、アプリケーションＩ／Ｏパスに関するセンシティブ情報を公開するバンキング又は他の金融ウェブサイトにアプリケーションがアクセスしている場合、アプリケーションＩ／Ｏパスがマルウェア攻撃に脆弱であると判断してもよい。
【０３５７】
ステップ３００３において、アプリケーションＩ／Ｏパスが脆弱であると判断された場合、方法３０００はステップ３００５に移行してもよい。そうでない場合、方法３０００はステップ３００２に戻り、アプリケーションＩ／Ｏパスのプロテクションは、アプリケーションＩ／Ｏパスが脆弱であると判断されるまで利用されなくてもよい。
【０３５８】
ステップ３００５において、Ｏ／Ｓ下位セキュリティエージェントは、アプリケーションからデバイス（ディスプレイ、ディスクドライブ、キーボードなど）へのＩ／Ｏライトアクセスについてトラップしてもよい。例えば、Ｉ／ＯライトアクセスがＷｉｎｄｏｗｓオペレーティングシステムにおけるアプリケーションからディスプレイデバイスへのデータの送信を含む場合、Ｏ／Ｓ下位セキュリティエージェントは、ビットブロック転送処理（ＢｉｔＢｌｔなど）に対するアプリケーションのコール又はディスプレイＩ／Ｏファンクションのライブラリ（ｇｄｉ３２．ｄｌｌ、ｎｔｄｌｌ．ｄｌｌなど）に対するコールの実行についてトラップしてもよい。Ｉ／Ｏライト又はリードアクセスは、ドライバに対する及びドライバの間のコール及びエンドデバイスに到達するためのドライバのファンクションの系列又はチェーンを含むものであってもよい。例えば、ＷｉｎｄｏｗｓＴＭでは、アプリケーションは、ＢｉｔＢｌｔファンクションを用いてｇｄｉ３２．ｄｌｌをコールし、当該ファンクションはＮｔＧＤＩＢｉｔＢｌｔファンクションを用いてｎｔｄｌｌ．ｄｌｌをコールし、当該ファンクションは、ＮｔＧＤＩＢｉｔＢｌｔを用いてｗｉｎ３２ｋ．ｓｙｓをコールし、当該ファンクションは、ディスプレイデバイスにアクセス可能なグラフィックＩ／Ｏドライバをコールしてもよい。
【０３５９】
ステップ３０１０において、Ｏ／Ｓ下位セキュリティエージェントは、Ｉ／Ｏ処理のコンテンツをインターセプトしてもよい（例えば、ディスプレイデバイスに表示されるイメージ、ディスクドライブに書き込まれるデータなど）。
【０３６０】
ステップ３０１５において、Ｏ／Ｓ下位セキュリティエージェントは、Ｉ／Ｏコンテンツを修正してもよい。例えば、コンテンツは、アプリケーションＩ／Ｏパスを攻撃することを試みるマルウェアが、元のコンテンツを構成するセンシティブ情報の代わりに、修正されたコンテンツのみにアクセス可能であるように、“スプーフ”又は“ダミー”コンテンツにより修正されてもよい。Ｏ／Ｓ下位セキュリティエージェントは、何れか適切な方法によりＩ／Ｏコンテンツを修正してもよい。例えば、ディスプレイデバイスに表示されるイメージを置換するため、修正されたコンテンツは、元のコンテンツの代わりにビットブロック転送処理にパラメータとしてわたされてもよい。特定の具体例では、Ｏ／Ｓ下位セキュリティエージェントは、所定のダミーコンテンツによりセンシティブなファイル又は電子メールのテキストコンテンツを置換してもよい。
【０３６１】
ステップ３０２０において、Ｏ／Ｓ下位セキュリティエージェントは、アプリケーションが実行しているオペレーティングシステムによる処理と、オペレーティングシステムとデバイスとの間のドライバによる処理とを含む、アプリケーションＩ／Ｏパスを介し通常処理のための修正されたコンテンツを送信してもよい。当該ステップ中、アプリケーションＩ／Ｏパスに影響を与えるマルウェアは、Ｉ／Ｏコンテンツを利用することを試みるかもしれない。しかしながら、利用されるデータは、Ｏ／Ｓ下位セキュリティエージェントにより挿入された修正されたダミーコンテンツであってもよく、これにより、利用から元のコンテンツをプロテクトする。
【０３６２】
ステップ３０２５において、Ｏ／Ｓ下位セキュリティエージェントは、それがＩ／Ｏデバイス（Ｉ／Ｏデバイスを有する電子デバイス又はデバイスの通信ポートなど）に到着するとき、修正されたコンテンツをインターセプトしてもよい。ステップ３０３０において、Ｏ／Ｓ下位セキュリティエージェントは、修正されたコンテンツを元のコンテンツと置換してもよい。例えば、Ｉ／ＯライトアクセスがＷｉｎｄｏｗｓオペレーティングしすてむにおけるアプリケーションからディスプレイデバイスへのデータの送信を含む場合、イメージの置換は、ディスプレイデバイスを有する電子デバイスのＩ／Ｏポートのフック、グラフィックＩ／Ｏドライバのメモリフック、又はグラフィックＩ／Ｏドライバからのディスプレイコマンドの実行に対するフック若しくはトリガによって実現可能である。従って、元のコンテンツは、アプリケーションとデバイスとの間で帯域外で通信され、残りは、従来のアプリケーションＩ／Ｏパスにおいてコンテンツを利用することを試行するマルウェアからプロテクトされる。
【０３６３】
ステップ３０３５において、Ｏ／Ｓ下位セキュリティエージェントは、修正されたコンテンツがマルウェア的動作により影響を受けたか判断してもよい。例えば、ルール（セキュリティルール１１４、２２０、２２２、４３８、４３６、５１８、７０７、７２１及び／又は７２３など）に基づき、Ｏ／Ｓ下位セキュリティエージェントは、インターセプトされた修正されたコンテンツが、マルウェアにより影響を受けたことを示す特性を有しているか判断してもよい（例えば、修正されたデータが、アプリケーションＩ／Ｏにおいて修正されて、アプリケーションＩ／Ｏパスを介しわたされた場合など）。さらに、Ｏ／Ｓ下位セキュリティエージェントは、修正されたコンテンツがマルウェア的動作により影響を受けたと判断した場合、Ｏ／Ｓ下位セキュリティエージェントは、訂正アクション（マルウェアを削除、隔離及び／又は無力化するためのアクションなど）。さらに、いくつかの実施例では、Ｏ／Ｓ下位セキュリティエージェントは、プロテクションサーバにマルウェア的動作の発生に関する情報（フォレンジック情報など）を通信してもよい。
【０３６４】
図３１は、アプリケーションと入出力デバイスとの間のリードアクセスのための入出力パスをセキュアにするシステム３１００の実施例である。システム３１００は、電子デバイス３１０４のアプリケーション入出力（Ｉ／Ｏ）パスへのマルウェア攻撃に対してプロテクトされるべき電子デバイス３１０４を有してもよい。電子デバイス３１０４は、Ｏ／Ｓ下位セキュリティエージェント３１１６、Ｉ／Ｏデバイス３１２６、アプリケーション３１１０、オペレーティングシステム３１１２及びドライバ３１１１を有してもよい。システム３１００は、電子デバイス３１０４のアプリケーションＩ／Ｏパスへのマルウェア攻撃に対してプロテクトされる電子デバイス３１０４を有してもよい。電子デバイス３１０４は、Ｏ／Ｓ下位セキュリティエージェント３１１６、Ｉ／Ｏデバイス３１２６、アプリケーション３１１０、オペレーティングシステム３１１２及びドライバ３１１１を有してもよい。電子デバイス３１０４は、図１の電子デバイス１０３、図２の電子デバイス２０４、図４の電子デバイス４０１、図７の電子デバイス７０１、図２９の電子デバイス２９０４及び／又はこれらの何れかの組み合わせの機能により全体的若しくは部分的に実現されてもよく、又は当該機能を実現するよう構成されてもよい。
【０３６５】
Ｏ／Ｓ下位セキュリティエージェント３１１６は、図１のＯ／Ｓ下位トラップエージェント１０４、図２のＳＶＭＭセキュリティエージェント２１７若しくはＳＶＭＭ２１６、図４のファームウェアセキュリティエージェント４４０、４４２、ＰＣファームウェアセキュリティエージェント４４４若しくはＯ／Ｓ下位システムエージェント４５０、図５のファームウェアセキュリティエージェント５１６、図７のマイクロコードセキュリティエージェント７０８、図２９のＯ／Ｓ下位セキュリティエージェント２９１６及び／又はこれらの何れかの組み合わせの機能により全体的若しくは部分的に実現されてもよく、又は当該機能を実現するよう構成されてもよい。Ｏ／Ｓ下位セキュリティエージェント３１１６は、マルウェアから電子デバイス３１０４のアプリケーションＩ／Ｏパスをセキュアにするよう構成されてもよい。Ｉ／Ｏデバイス３１２６は、図２のデバイス２２６、図４のディスプレイ４２４若しくはストレージ４２６、図５の入出力デバイス５０２、図２９のＩ／Ｏデバイス２９２６及び／又はこれらの何れかの組み合わせの機能により全体的若しくは部分的に実現されてもよく、又は当該機能を実現するよう構成されてもよい。アプリケーション３１１０は、図１のアプリケーション１１０、図２のアプリケーション２１０、図４のアプリケーション４１０、図７のアプリケーション７０９、図２９のアプリケーション２９１０及び／又はこれらの何れかの組み合わせの機能により全体的若しくは部分的に実現されてもよく、又は当該機能を実現するよう構成されてもよい。ドライバ３１１１は、図１のドライバ１１１、図２のドライバ２１１、図４のドライバ４１１、図７のドライバ７１１、図２９のドライバ２９１１及び／又はこれらの何れかの組み合わせの機能により全体的若しくは部分的に実現されてもよく、又は当該機能を実現するよう構成されてもよい。オペレーティングシステム３１１２は、図１のオペレーティングシステム１１２、図２のオペレーティングシステム２１２、図４のオペレーティングシステム４１２、図７のオペレーティングシステム７１３、図２９のオペレーティングシステム２９１２及び／又はこれらの何れかの組み合わせの機能により全体的若しくは部分的に実現されてもよく、又は当該機能を実現するよう構成されてもよい。
【０３６６】
Ｏ／Ｓ下位セキュリティエージェント３１１６は、マルウェアから電子デバイス３１０４のアプリケーションＩ／Ｏパスをセキュアにするよう構成されてもよい。図３１の矢印により示され、以下の図３２に関して説明されるように、Ｏ／Ｓ下位セキュリティエージェント３１１６は、アプリケーションＩ／Ｏパスを介したデータの送信に対してトラップしてもよい。トラップすると、Ｏ／Ｓ下位セキュリティエージェント３１１６は、Ｉ／Ｏリードアクセスに関して、Ｉ／Ｏデバイス３１２６からアプリケーション３１１０に配信されるコンテンツをインターセプトしてもよい。Ｏ／Ｓ下位セキュリティエージェント３１１６は、インターセプトされたＩ／Ｏコンテンツを修正し、修正されたコンテンツを通常のＩ／Ｏパスを介し送信してもよい（オペレーティングシステム３１１２及びドライバ３１１１などを介し）。当該修正されたコンテンツは、Ｉ／Ｏパスデータをインターセプト可能な何れかのマルウェアが、実際のユーザデータの代わりにダミーデータをインターセプトするように、“スプーフ”又は“ダミー”コンテンツを含むものであってもよい。Ｏ／Ｓ下位セキュリティエージェント３１１６は、それがＩ／Ｏデバイス３１２６のデバイスドライバに到着するとき、修正されたＩ／Ｏコンテンツをインターセプトし、それを元のコンテンツと置換し、これにより、マルウェア攻撃からＩ／Ｏ送信をセキュアにする。さらに、Ｏ／Ｓ下位セキュリティエージェント３１１６は、ルール（セキュリティルール１１４、２２０、２２２、４３８、４３４、４３６、５１８、７０７、７２１及び／又は７２３など）に基づき、通常のＩ／Ｏパスを介し送信された修正されたコンテンツがマルウェア的動作により影響を受けたか検出し（例えば、修正されたコンテンツがスニフ、フック及び／又は攻撃されたことを示す動作など）、マルウェア的動作が検出された場合、訂正アクションを実行してもよい。例えば、Ｏ／Ｓ下位セキュリティエージェント３１１６は、マルウェア的動作を生じさせるマルウェアを特定し、及び／又は電子デバイス３１０４及び／又は他の電子デバイスに対するさらなる感染を阻止するため、プロテクションサーバ２０２を支援するフォレンジック情報をプロテクションサーバ２０２に通信してもよい。当該フォレンジック情報は、限定することなく、当該動作が行われた電子デバイスの身元、マルウェア的動作を特定したＯ／Ｓ下位セキュリティエージェント、マルウェア的動作が行われたデバイス３１２６及び／若しくはアプリケーションＩ／Ｏパス、Ｏ／Ｓ下位セキュリティエージェントによりＩ／Ｏパスに配置された修正されたコンテンツ、及び／又はインターセプトされた修正されたデータ（修正されたデータに対してマルウェアの可能性により行われた修正を示す）を含むものであってもよい。
【０３６７】
図３２は、アプリケーションと入出力デバイスとの間のリードアクセスについて入出力パスをセキュアにする方法３２００の実施例である。ステップ３２０２において、Ｏ／Ｓ下位セキュリティエージェントは、アプリケーションＩ／Ｏパスがマルウェア攻撃に対して脆弱であるか判断してもよい。ステップ３２０２は、方法３０００のステップ３００２と同様であってもよい。ステップ３２０３において、アプリケーションＩ／Ｏパスが脆弱であると判断された場合、方法３２００はステップ３２０５に移行してもよい。そうでない場合、方法３２００はステップ３２０２に戻り、アプリケーションＩ／Ｏパスが脆弱であると判断される時点まで、アプリケーションＩ／Ｏパスプロテクションは利用されなくてもよい。ステップ３２０３は、方法３０００のステップ３００３と同様であってもよい。
【０３６８】
ステップ３２０５において、Ｏ／Ｓ下位セキュリティエージェントは、デバイスからアプリケーションまでのＩ／Ｏリードアクセスについてトラップしてもよい（ディスプレイ、ディスクドライブ、キーボードなど）。ステップ３２１０において、Ｏ／Ｓ下位セキュリティエージェントは、Ｉ／Ｏ処理のコンテンツをインターセプトしてもよい（例えば、キーボードから受信したキーストローク、ディスクドライブから読み出されたデータなど）。
【０３６９】
ステップ３２１５において、Ｏ／Ｓ下位セキュリティエージェントは、Ｉ／Ｏコンテンツを修正してもよい。例えば、アプリケーションＩ／Ｏパスを攻撃することを試みるマルウェアが、元のコンテンツを構成するセンシティブ情報の代わりに、修正されたコンテンツのみにアクセス可能となるように、コンテンツは、“スプーフ”又は“ダミー”コンテンツにより修正されてもよい。Ｏ／Ｓ下位セキュリティエージェントは、何れか適切な方法によりＩ／Ｏコンテンツを修正してもよい。
【０３７０】
ステップ３２２０において、Ｏ／Ｓ下位セキュリティエージェントは、アプリケーションが実行されているオペレーティングシステムと、オペレーティングシステムとデバイスとの間のドライバとによる処理を含む、アプリケーションＩ／Ｏパスを介し通常の処理のための修正されたコンテンツを送信してもよい。当該ステップ中、アプリケーションＩ／Ｏパスに影響を与えるマルウェアは、Ｉ／Ｏコンテンツを利用することを試みるかもしれない。しかしながら、利用される何れのデータも修正され、ダミーコンテンツがＯ／Ｓセキュリティエージェントにより挿入されており、これにより、利用から元のコンテンツをプロテクトすることができる。
【０３７１】
ステップ３２２５において、Ｏ／Ｓ下位セキュリティエージェントは、それがアプリケーションに到着するときに修正されたコンテンツをインターセプトしてもよい。ステップ３２３０において、Ｏ／Ｓ下位セキュリティエージェントは、修正されたコンテンツを元のコンテンツと置換してもよい。従って、元のコンテンツは、アプリケーションとデバイスとの間で帯域外で通信され、残りは、従来のアプリケーションＩ／Ｏパスにおいてコンテンツを利用することを試みるマルウェアからプロテクトされる。
【０３７２】
ステップ３２３５において、Ｏ／Ｓ下位セキュリティエージェントは、修正されたコンテンツがマルウェア的動作により影響を受けたか判断してもよい（例えば、修正されたデータが、アプリケーションＩ／Ｏパスにおいて修正されたとき、アプリケーションＩ／Ｏパスを介しわたされた場合など）。例えば、Ｏ／Ｓ下位セキュリティエージェントは、ルール（セキュリティルール１１４、２２０、２２２、４３８、４３４、４３６、５１８、７０７、７２１及び／又は７２３など）に基づき、インターセプトされた修正されたコンテンツが、それがマルウェアにより影響を受けたことを示す特性を有するか判断してもよい。さらに、Ｏ／Ｓ下位セキュリティエージェントは、修正されたコンテンツがマルウェア的動作により影響を受けたと判断した場合、Ｏ／Ｓ下位セキュリティエージェントは、訂正アクションを実行してもよい（例えば、マルウェアを削除、隔離及び／又は無力化するアクションなど）。さらに、いくつかの実施例では、アプリケーションＩ／Ｏパスを介し送信されるダミーデータ（方法３０００のステップ３０１５、３０２０及び／又は方法３２００のステップ３２１５、３２２０など）は、電子デバイス２９０４及び／又は電子デバイス３１０４上のマルウェアの存在を追跡するのに利用されてもよい。例えば、第１デバイスのアプリケーションがネットワークを介し第２電子デバイスにセンシティブ情報を通信するとき（例えば、第２電子デバイスによりホストされるバンキング又は他の金融ウェブサイトなど）、Ｏ／Ｓ下位セキュリティエージェントは、第２電子デバイスへのアクセスをスプーフするＩ／Ｏパスにダミー情報を挿入してもよい（“フェイク”のユーザ名及びパスワードをバンキングウェブサイトに提供するダミー情報など）。第２電子デバイスは、このようにスプーフされると、第２電子デバイスのセキュリティエージェントがアクセス中に行われたアクションを追跡し（例えば、プロファイル情報の変更などのスプーフされたアクセス中にバンキングウェブサイトで行われたアクション又は他のアクションなど）、マルウェア的動作が発生したか判断するように、自らのセキュリティエージェントを有してもよい。第２電子デバイスのセキュリティエージェントが、マルウェア的動作が発生したと判断した場合、第２電子デバイスは、訂正アクションを実行してもよい。例えば、第２電子デバイスのセキュリティエージェントは、マルウェア的動作の存在を示すのに適したメッセージを通信してもよい（例えば、第２電子デバイスに通信接続されるプロテクションサーバ１０２などに）。当該メッセージは、例えば、マルウェア的動作の説明及び／又は第１電子デバイスの身元（インターネットプロトコルアドレス又は他の識別情報など）などを含むフォレンジックエビデンスを含むものであってもよい。
【０３７３】
図３３は、電子デバイス３３０４上の隠蔽されたプロセスを検出及び修復するシステム３３００の実施例である。Ｏ／Ｓ内セキュリティエージェント３３１８及び／又はＯＳ下位セキュリティエージェント３３１６は、電子デバイス３３０４上で実行されるプロセスの処理を隠蔽するよう構成されるマルウェアなどの悪意ある感染を検出及び修復するよう電子デバイス３３０４上で動作してもよい。電子デバイス３３０４は、メモリ３３０８に接続されるプロセッサ３３０６、オペレーティングシステム３３１２及び１以上のプロセス３３７３を有してもよい。電子デバイス３３０４は、図１の電子デバイス１０３、図２の電子デバイス２０４、図４の電子デバイス４０４、図７の電子デバイス７０１、及び／又はこれらの何れかの組み合わせの機能により全体的若しくは部分的に実現されるか、又は当該機能を実現するよう構成されてもよい。プロセッサ３３０６は、図２のプロセッサ２０８、図４のプロセッサ４０８、図７のプロセッサ７０２及び／又はこれらの何れかの組み合わせの機能により全体的若しくは部分的に実現されるか、又は当該機能を実現するよう構成されてもよい。メモリ３３０８は、図２のメモリ２０６、図４のメモリ４０６、図７のメモリ７０３、及び／又はこれらの何れかの組み合わせの機能により全体的若しくは部分的に実現されるか、又は当該機能を実現するよう構成されてもよい。オペレーティングシステム３３１２は、図１のオペレーティングシステム１１２、図２のオペレーティングシステム２１２、図４のオペレーティングシステム４１２、図７のオペレーティングシステム７１３及び／又はこれらの何れかの組み合わせの機能により全体的若しくは部分的に実現されるか、又は当該機能を実現するよう構成されてもよい。Ｏ／Ｓ内セキュリティエージェント３３１８は、図２のＯ／Ｓ内セキュリティエージェント２１８、図４のＯ／Ｓ内セキュリティエージェント４１８、図７のＯ／Ｓ内セキュリティエージェント７１９及び／又はこれらの何れかの組み合わせの機能により全体的若しくは部分的に実現されるか、又は当該機能を実現するよう構成されてもよい。Ｏ／Ｓ下位セキュリティエージェント３３１６は、図１のＯ／Ｓトラップエージェント１０４、図２のＳＶＭＭセキュリティエージェント２１７若しくはＳＶＭＭ２１６、図４のファームウェアセキュリティエージェント４４０、４４２、ＰＣファームウェアセキュリティエージェント４４４若しくはＯ／Ｓ下位システムエージェント４５０、図５のファームウェアセキュリティエージェント５１６、図７のマイクロコードセキュリティエージェント７０８及び／又はこれらの何れかの組み合わせの機能により全体的若しくは部分的に実現されるか、又は当該機能を実現するよう構成されてもよい。
【０３７４】
プロセス３３７３は、電子デバイス３３０４上で実行されるよう構成されてもよい。電子デバイス３３０４上で実行される１以上のプロセス３３７３は、マルウェアに関する悪意あるプロセスであってもよい。電子デバイス３３０４上のマルウェアは、アンチマルウェアソフトウェアによる検出を回避するため、プロセス３３７３の１以上の悪意あるプロセスの存在を偽装するよう動作する可能性がある。例えば、オペレーティングシステム３３１２は、オペレーティングシステムカーネルメモリ３３８０を有してもよい。オペレーティングシステムカーネルメモリ３３８０は、電子デバイス３３０４上のプロセスの実行を追跡するための１以上の機構を有してもよい。一例では、当該機構は、アクティブプロセスリスト３３８４を有してもよい。アクティブプロセスリスト３３８４は、電子デバイス３３０４上で実行されるプロセスを追跡するためのデータ構造、レコード、ファイル又は他の何れか適切な方法により実現されてもよい。例えば、プロセス３３７３ｂがマルウェアに関する悪意あるプロセスである場合、電子デバイス３３０４上のマルウェアは、プロセス３３７３ｂの参照を削除するため、アクティブプロセスリスト３３８４を修正してもよい。従って、何れのプロセスが電子デバイス３３０４上でアクティブに実行され、マルウェアについて調べられるべきであるか決定する際、電子デバイス３３０４上で実行されるセキュリティソフトウェアは、調査のためのアクティブなプロセスとしてプロセス３３７３ｂを認識しなくてもよい。
【０３７５】
オペレーティングシステム３３１２は、レディキュー（ｒｅａｄｙ  ｑｕｅｕｅ）３３２２２を有してもよい。レディキュー３３２２は、電子デバイス３３０４上で実行されるアクティブなスレッドを示す１以上の適切なデータ構造（アレイ、テーブル、リストなど）を有してもよい。アクティブプロセス３３７３は、１以上の個別のスレッドから構成されてもよい。スレッドは、電子デバイス３３０４による実行のためアクティブプロセス３３７３の他のスレッドから分離して独立にスケジューリングされるアクティブプロセス３３７３内の処理単位（１以上の命令など）とみなされてもよい。ＷｉｎｄｏｗｓＴＭオペレーティングシステムのレディキュー３３２２の例示的な具体例として、レディキュー３３２２は、ＫｉＤｉｓｐａｔｃｈｅｒＲｅａｄｙＬｉｓｔＨｅａｄとして知られる変数により実現されてもよい。レディキュー３３２２はまた、例えば、スレッドを含むプロセスの識別子、当該プロセスのイメージ名、スタートアドレス、ユーザモードアドレス、デバイスオブジェクト及び／又は他の適切な情報など、アクティブスレッドに関する各種メタデータを有してもよい。ＷｉｎｄｏｗｓＴＭオペレーティングシステムでは、当該アクティブプロセス情報は、スレッドに関するエグゼクティブスレッド（ＥＴＨＲＥＡＤ）データ構造に含まれてもよい。
【０３７６】
システム３３００の処理中、Ｏ／Ｓ内セキュリティエージェント３３１８及び／又はＯ／Ｓ下位セキュリティエージェント３３１６は、オペレーティングシステム３３１２上で実行されるセキュリティデバイスドライバ３３７０を起動してもよい。セキュリティデバイスドライバ３３７０は、ドライバ、モジュール、実行可能、ＤＬＬ又はカーネルモードデバイスドライバサービスを提供するのに適した他の何れかの機構により実現されてもよい。セキュリティデバイスドライバ３３７０は、電子デバイス３３０４上で実行されるプロセスを列挙するため、オペレーティングシステム３３１２の各種部分をコールするよう構成されてもよい。例えば、セキュリティデバイスドライバ３３７０は、カーネルメモリ３３８０又はアクティブプロセスリスト３３８４を調べるよう構成されてもよい。セキュリティデバイスドライバ３３７０は、セキュリティデバイスドライバ３３７０が検出可能なアクティブプロセス３３７３の第１リスト（アクティブプロセスリスト３３８３など）を通信するよう構成されてもよい。セキュリティデバイスドライバ３３７０は、Ｏ／Ｓ内セキュリティエージェント３３１８及び／又はＯ／Ｓ下位セキュリティエージェント３３１６とアクティブプロセスリスト３３８４を通信するよう構成されてもよい。一実施例では、セキュリティデバイスドライバ３３７０は、ハイパーコールを介しＯ／Ｓ下位セキュリティエージェント３３１６に所与の検出されたプロセスに関するエグゼクティブプロセス（ＥＰＲＯＣＥＳＳ）構造をわたすよう構成されてもよい。セキュリティデバイスドライバ３３７０はオペレーティングシステムと同じ又は下位の特権実行リングで実行されるため、セキュリティデバイスドライバ３３７０により列挙されるアクティブプロセスは、アクティブプロセスリスト３３８４上に出現するアクティブプロセスに限定されてもよく、これは、自らへの参照を削除するためアクティブプロセスリスト３３８４を修正した悪意あるプロセスがセキュリティデバイスドライバ３３７０により列挙されなくてもよいことを意味する。ＷｉｎｄｏｗｓＴＭオペレーティングシステムでは、セキュリティデバイスドライバ３３７０は、決定されるＳｙｓｔｅｍ＿Ｐｒｏｃｅｓｓ＿ｉｎｆｏｒｍａｔｉｏｎを特定するオペレーティングシステムからプロセスリストを要求するため、ＺｗＱｕｅｒｙＳｙｓｔｅｍＩｎｆｏｒｍａｔｉｏｎファンクションを利用するよう構成されてもよい。Ｏ／Ｓ下位セキュリティエージェント３３１６は、当該ファンクションもまた利用するよう構成され、当該アクションの実行においてよりセキュアであってもよい。セキュリティデバイスドライバ３３７０は、列挙されたプロセスをアクティブプロセスの第１リスト３３８５に配置してもよい。特定の実施例では、第１リスト３３８５は、アクティブプロセスリスト３３８４に実質的に等価であってもよい。他の実施例では、別の第１リスト３３８５は作成されず、セキュリティデバイスドライバ３３７０は、第１リスト３３８５の代わりにアクティブプロセスリスト３３８４を利用してもよい。
【０３７７】
他方、Ｏ／Ｓ内セキュリティエージェント３３１８及び／又はＯ／Ｓ下位セキュリティエージェント３３１６は、オペレーティングシステム３３１２と同じ又は上位の特権実行リングで実行されてもよく、電子デバイス３３０４上で実行される個別のスレッドを列挙することが可能であってもよい。このような列挙されたスレッドに少なくとも基づき、Ｏ／Ｓ内セキュリティエージェント３３１８及び／又はＯ／Ｓ下位セキュリティエージェント３３１６は、アクティブプロセスリスト３３８４から自らの参照を削除した悪意あるプロセスを含む、電子デバイス３３０４上で実行されるすべてのアクティブプロセスを決定してもよい。例えば、特定の実施例では、Ｏ／Ｓ内セキュリティエージェント３３１８及び／又はＯ／Ｓ下位セキュリティエージェント３３１６は、レディキュー３３２２をスキャンし、レディキュー３３２２のすべてのスレッドを列挙し、スレッドをリストに配置してもよい。各スレッドについて、Ｏ／Ｓ内セキュリティエージェント３３１８及び／又はＯ／Ｓ下位セキュリティエージェント３３１６は、スレッドを所有するプロセスと当該スレッドに関する他の情報（例えば、スレッドに関するＥＴＨＲＥＡＤ情報などのメタデータへの参照などにより）を特定し、Ｏ／Ｓ内セキュリティエージェント３３１８が、アクティブプロセスリスト３３８４から自らへの参照を削除した可能性のある悪意あるプロセスを含む、アクティブプロセス３３７３の第２リスト３３８６を列挙することを可能にしてもよい。
【０３７８】
さらに具体的な実施例を説明するため、スレッドに関するＥＴＨＲＥＡＤデータ構造は、いくつかのメタデータフィールドを含み、ＴｈｒｅａｄｓＰｒｏｃｅｓｓフィールド、ＳｔａｒｔＡｄｄｒｅｓｓフィールド、ＤｅｖｉｃｅＴｏＶｅｒｉｆｙフィールド、Ｗｉｎ３２ＳｔａｒｔＡｄｄｒｅｓｓフィールド及びＴｈｒｅａｄＬｉｓｔＥｎｔｒｙフィールドを含むものであってもよい。ＴｈｒｅａｄｓＰｒｏｃｅｓｓフィールドを解析することによって、Ｏ／Ｓ内セキュリティエージェント３３１８及び／又はＯ／Ｓ下位セキュリティエージェント３３１６は、スレッドを所有するプロセスを特定することが可能であってもよく、これから当該プロセスのプロセス識別子及びイメージ名が決定されてもよい。ＳｔａｒｔＡｄｄｒｅｓｓ及びＷｉｎ３２ＳｔａｒｔＡｄｄｒｅｓｓから、Ｏ／Ｓ内セキュリティエージェント３３１８及び／又はＯ／Ｓ下位セキュリティエージェント３３１６は、メモリの何れのコードがプロセスを実行しているか特定し、これにより、スレッドを所有するプロセスが疑わしいと検出された場合、疑わしいドライバ、アプリケーション及び／又は他のプログラムのさらなる特定を可能にしてもよい。ＤｅｖｉｃｅＴｏＶｅｒｉｆｙに基づき、Ｏ／Ｓ内セキュリティエージェント３３１８及び／又はＯ／Ｓ下位セキュリティエージェント３３１６は、デバイスオブジェクトがスレッドに関連しているか判断し、スレッドを所有するプロセスが疑わしいと検出された場合、ドライバオブジェクト及びマルウェアドライバを特定してもよい。ＴｈｒｅａｄＬｉｓｔＥｎｔｒｙは、同一プロセス内のスレッドの列挙を支援してもよい。
【０３７９】
Ｏ／Ｓ内セキュリティエージェント３３１８は、その後、アクティブプロセス３３７３の第１リスト３３８５とアクティブプロセス３３７３の第２リスト３３８６とを比較し、疑わしいプロセスとして第２リスト３３８６に現れ、第１リスト３３８５には現れないアクティブプロセス３３７３を特定してもよい。当該疑わしいプロセスの証拠は、オペレーティングシステム３３１２と共に、電子デバイス３３０４上で実行されるアンチウイルス又はアンチマルウェアソフトウェアから隠蔽されたマルウェアの証拠であってもよい。
【０３８０】
他の実施例では、Ｏ／Ｓ下位セキュリティエージェント３３１６は、スレッドを列挙すると共に、特定されたスレッドに少なくとも基づきアクティブプロセス３３７３の第２リスト３３８６を列挙するため、レディキュー３３２２をスキャンしてもよい（例えば、スレッドに関するＥＴＨＲＥＡＤ情報などのメタデータへの参照などにより）。当該実施例では、Ｏ／Ｓ下位セキュリティエージェント３３１６は、Ｏ／Ｓ内セキュリティエージェント３３１８からセキュリティデバイスドライバ３３７０により生成されたアクティブプロセスの第１リスト３３８５を受信してもよく、又はメモリから直接リードすることによって、アクティブプロセス３３７２の第１リスト３３８５にアクセスしてもよい。その後、Ｏ／Ｓ下位セキュリティエージェント３３１６は、アクティブプロセス３３７３の第１リスト３３８５と第２リスト３３８６とを比較し、疑わしいプロセスとして第２リスト３３８６に現れ、第１リスト３３８５には現れないアクティブプロセス３３７３を特定してもよい。当該疑わしいプロセスは、オペレーティングシステム３３１２と共に、電子デバイス３３０４上で実行されるアンチウイルス又はアンチマルウェアソフトウェアから隠蔽されてもよい。当該疑わしいプロセスの証拠は、オペレーティングシステム３３１２と共に、電子デバイス３３０４上で実行されるアンチウイルス又はアンチマルウェアソフトウェアから隠蔽されたマルウェアの証拠であってもよい。
【０３８１】
Ｏ／Ｓ内セキュリティエージェント３３１８及び／又はＯ／Ｓ下位セキュリティエージェント３３１６が、電子デバイス３３０４上で実行される隠蔽されたプロセスの証拠があると判断した場合、Ｏ／Ｓ内セキュリティエージェント３３１８及び／又はＯ／Ｓ下位セキュリティエージェント３３１６は、当該プロセスに関して修正が行われたか判断するため、オペレーティングシステム３３１２、オペレーティングシステムカーネルメモリ３３８０又は電子デバイス３３０４の他の要素をスキャンするよう構成されてもよい。例えば、Ｏ／Ｓ内セキュリティエージェント３３１８及び／又はＯ／Ｓ下位セキュリティエージェント３３１６は、マルウェアにより実行されると知られる何れかのメモリの修正についてスキャンするよう構成されてもよい。いくつかの実施例では、Ｏ／Ｓ内セキュリティエージェント３３１８又はＯ／Ｓ下位セキュリティエージェント３３１６は、アクティブプロセスリスト３３８４と共に、オペレーティングシステムコードセクション３３８２をスキャンするよう構成されてもよい。上記及び他の実施例では、Ｏ／Ｓ内セキュリティエージェント３３１８及び／又はＯ／Ｓ下位セキュリティエージェント３３１６は、疑わしいプロセスに関するスレッドのスレッドメタデータ（ＥＴＨＲＥＡＤ情報など）を利用して、修正についてスキャンすべき電子デバイス３３０４の要素及び／又はその部分を決定してもよい。
【０３８２】
悪意ある修正が検出された場合、Ｏ／Ｓ内セキュリティエージェント３３１８又はＯ／Ｓ下位セキュリティエージェント３３１６は、訂正アクションを実行してもよい。例えば、Ｏ／Ｓ内セキュリティエージェント３３１８又はＯ／Ｓ下位セキュリティエージェント３３１６は、オペレーティングシステムカーネルメモリ３３８０に検出された悪意ある修正を修復するよう構成されてもよい。他の例として、Ｏ／Ｓ内セキュリティエージェント３３１８又はＯ／Ｓ下位セキュリティエージェント３３１６は、オペレーティングシステムカーネルメモリ３８０におけるメモリ修正を調べることによって決定された検出されたルートキット感染を削除するよう構成されてもよい。さらなる例として、Ｏ／Ｓ内セキュリティエージェント３３１８又はＯ／Ｓ下位セキュリティエージェント３３１６は、内部のデータ構造又はコードセクションに対する感染を修復するよう構成されてもよい。上記及び他の実施例では、Ｏ／Ｓ内セキュリティエージェント３３１８及び／又はＯ／Ｓ下位セキュリティエージェント３３１６は、疑わしいプロセスに関するスレッドのスレッドメタデータ（ＥＴＨＲＥＡＤ情報など）を利用し、実行されるべき訂正アクションを決定してもよい（例えば、当該メタデータは、マルウェアプロセスの特定のメモリ位置、疑わしい動作に関係するドライバなどを特定してもよい）。Ｏ／Ｓ内セキュリティエージェント３３１８又はＯ／Ｓ下位セキュリティエージェント３３１６は、セキュリティデバイスドライバ３３７０により決定されるプロセスの第１リスト３３８５と、レディキュー３３２２にあるスレッドメタデータの解析から決定されるプロセスの第２リスト３３８６との間で検出されたすべての相違について隠蔽されたプロセスによる修正に関するスキャンプロセスを繰り返すよう構成されてもよい。
【０３８３】
図３４は、電子デバイス上の隠蔽されたプロセスを検出及び修復する方法の実施例である。ステップ３４０５において、１以上のセキュリティエージェント（Ｏ／Ｓ内セキュリティエージェント３３１８及び／又はＯ／Ｓ下位セキュリティエージェント３３１６など）は、電子デバイスのオペレーティングシステム上で実行されるセキュリティデバイスドライバを起動してもよい。ステップ３４１０において、セキュリティデバイスドライバは、電子デバイスのオペレーティングシステムに対する標準的なシステムコールを介し電子デバイス上で実行されるアクティブプロセスを列挙してもよい。セキュリティデバイスドライバは、アクティブプロセスの第１リストに列挙されたプロセスを配置してもよい。セキュリティデバイスドライバは、オペレーティングシステムと同じ又は下位の特権実行リングで実行されてもよいため、セキュリティデバイスドライバにより列挙されるアクティブプロセスは、オペレーティングシステムのアクティブプロセスリストに現れるアクティブプロセスに限定されてもよく、これは、自らへの参照を削除するためアクティブプロセスリストを修正した悪意あるプロセスがセキュリティデバイスドライバにより列挙されない可能性があることを意味する。
【０３８４】
ステップ３４１５において、１以上のセキュリティエージェントは、スレッドレディキューをスキャンし、当該スキャンに少なくとも基づき、電子デバイス上で実行される個別スレッドを列挙し、これらをスレッドリストに配置してもよい。ステップ３４２０において、スレッドに関するメタデータに少なくとも基づき（スレッドに関するＥＴＨＲＥＡＤ情報又はスレッドを所有するプロセスを示す他のメタデータなど）、１以上のセキュリティエージェントは、スレッドを所有するプロセスを特定し、アクティブプロセスの第２スレッドを生成してもよい。第２リストは、アクティブプロセスリストから自らへの参照を削除した可能性のある悪意あるプロセスを含むものであってもよい。
【０３８５】
ステップ３４２５では、１以上のセキュリティエージェントがアクティブプロセスの第１リストと第２リストとを比較してもよい。ステップ３４３０において、１以上のセキュリティエージェントは、疑わしいプロセスとして第２リストに現れ、第１リストに現れないアクティブプロセスを特定してもよい。当該疑わしいプロセスの証拠は、電子デバイス上で実行されるアンチウイルス若しくはアンチマルウェアソフトウェア及び／又は電子デバイス上で実行されるオペレーティングシステムから隠蔽されたマルウェアの証拠であってもよい。
【０３８６】
ステップ３４３５において、１以上のセキュリティエージェントが、電子デバイス上で実行される隠蔽されたプロセスの証拠があると判断した場合、１以上のセキュリティエージェントは、電子デバイスの一部に対する修正が疑わしいプロセスにより行われたか判断してもよい。修正が行われたか判断するため、１以上のセキュリティエージェントは、オペレーティングシステム及び／又はオペレーティングシステムカーネルメモリをスキャンし、当該プロセスに関する何れかの修正が行われたか判断してもよい。例えば、１以上のセキュリティエージェントは、マルウェアにより実行されていると知られるメモリ修正についてスキャンし、及び／又はオペレーティングシステムカーネルメモリのオペレーティングシステムコードセクション及び／又はアクティブプロセスリストをスキャンしてもよい。
【０３８７】
ステップ３４４０において、１以上のセキュリティエージェントは、修正が検出された場合、訂正アクションを実行してもよい。例えば、１以上のセキュリティエージェントは、オペレーティングシステムカーネルメモリにおいて検出された悪意ある修正を修復してもよい。他の例として、１以上のセキュリティエージェントは、オペレーティングシステムカーネルメモリにおけるメモリ修正を調べることによって決定された何れかの検出されたルートキット感染を削除してもよい。さらなる例として、１以上のセキュリティエージェントは、内部のデータ構造又はコードセクションに対する何れかの感染を修復してもよい。方法３４００の一部は、特定された各疑わしいプロセスについて繰り返されてもよい。従って、１以上のセキュリティエージェントは、セキュリティデバイスドライバにより決定されたプロセスの第１リストと、レディキューにあるスレッドメタデータの解析から決定されたプロセスの第２リストとの間に検出されたすべての相違のための隠蔽されたプロセスによる修正についてスキャンするプロセスを繰り返してもよい。
【０３８８】
効果的には、上述された方法及びシステムは、オペレーティングシステムカーネルのファンクションに対するフック又はトラップの要求なく、ルートキット及び／又は他のマルウェアの特定を提供してもよい。
【０３８９】
図３５は、電子デバイス３５０４上の隠蔽されたプロセスを検出及び修復するシステム３５００の実施例である。Ｏ／Ｓ下位セキュリティエージェント３５１６、セキュリティデバイスドライバ３５７０及びセキュリティダイナミックリンクライブラリ（ＤＬＬ）３５７２は、電子デバイス３５０４上で実行されるプロセスの処理を隠蔽するよう構成されるマルウェアなど、悪意ある感染を検出及び修復するため電子デバイス３５０４上で実行されてもよい。電子デバイス３５０４は、メモリ３５０４に接続されるプロセッサ３５０６、オペレーティングシステム３５１２、セキュリティＤＬＬ３５７２、Ｏ／Ｓ下位セキュリティエージェント３５１６、バーチャルマシーン制御構造３５５２（ＶＭＣＳ）、１以上のプロセス３５７３（プロセス３５７３ａ、３５７３ｂ、３５７３ｃなど）、当該プロセスに関するアドレススペース３５８７（アドエススペース３５８７ａ、３５８７ｂ、３５８７ｃなど）、及び制御レジスタと同様のＣＲ３制御レジスタ３５６０などの１以上のシステムリソースを有してもよい。プロセッサレジスタ３５３０は、ＣＲ３レジスタ３５６０や他の何れかのレジスタ３５６８などのレジスタを有してもよい。ＣＲ３はプロセスレジスタ３５３０の一例として与えられているが、何れか適切な制御レジスタが利用されてもよい。ＣＲ３レジスタ３５６０は、電子デバイス３５０４上のＣＰＵの全体的な動作を制御又は変更するよう構成されるプロセッサレジスタであってもよい。ＣＲ３レジスタ３５６０は、バーチャルメモリアドレスを物理メモリアドレスに変換するため、電子デバイス３５０４上で実行されるプロセッサ３５０６などのプロセッサをイネーブルにするよう構成されてもよい。ＣＲ３レジスタ３５６０は、Ｏ／Ｓスケジューラによる処理のため選択されてスタックにあるものなど、現在リクエストされているタスクについてページディレクトリ及びページテーブルを特定するよう構成されてもよい。ＣＲ３レジスタ３５６０は、何れか適切なバーチャルアドレッシング制御レジスタにより実現されてもよい。他のレジスタ２６８は、電子デバイス３５０４の特定の設計又は実装に従ってプロセッサレジスタ３５３０にあってもよい。プロセッサレジスタ３５３０は、プロセッサ３５０６又は電子デバイス３５０４の他のプロセッサと関連付けされてもよい。
【０３９０】
電子デバイス３５０４は、図１の電子デバイス１０３、図２の電子デバイス２０４、図４の電子デバイス４０４、図７の電子デバイス７０１、図３３の電子デバイス３３０４及び／又はこれらの何れかの組み合わせの機能により全体的若しくは部分的に実現されるか、又は当該機能を実現するよう構成されてもよい。プロセッサ３５０６は、図２のプロセッサ２０８、図４のプロセッサ４０８、図７のプロセッサ７０２、図３３のプロセッサ３３０６及び／又はこれらの何れかの組み合わせの機能により全体的若しくは部分的に実現されるか、又は当該機能を実現するよう構成されてもよい。メモリ３５０８は、図２のメモリ２０６、図４のメモリ４０６、図７のメモリ７０３、図３３のメモリ３３０８及び／又はこれらの何れかの組み合わせの機能により全体的若しくは部分的に実現されるか、又は当該機能を実現するよう構成されてもよい。オペレーティングシステム３５１２は、図１のオペレーティングシステム１１２、図２のオペレーティングシステム２１２、図４のオペレーティングシステム４１２、図７のオペレーティングシステム７１３、図３３のオペレーティングシステム３３１２及び／又はこれらの何れかの組み合わせの機能により全体的若しくは部分的に実現されるか、又は当該機能を実現するよう構成されてもよい。Ｏ／Ｓ下位セキュリティエージェント３５１６は、図１のＯ／Ｓ下位トラップエージェント１０４、図２のＳＶＭＭセキュリティエージェント２１７若しくはＳＶＭＭ２１６、図４のファームウェアセキュリティエージェント４４０、４４２、ＰＣファームウェアセキュリティエージェント４４４若しくはＯ／Ｓ下位システムエージェント４５０、図５のファームウェアセキュリティエージェント５１６、図７のマイクロコードセキュリティエージェント７０８、図３３のＯ／Ｓ下位セキュリティエージェント３３１６及び／又はこれらの何れかの組み合わせの機能により全体的若しくは部分的に実現されるか、又は当該機能を実現するよう構成されてもよい。
【０３９１】
電子デバイス３５０４は、バーチャルマシーン制御構造１１５２を有してもよい。一実施例では、バーチャルマシーン制御構造１１５２は、Ｏ／Ｓ下位セキュリティエージェント３５１６にあってもよい。他の実施例では、バーチャルマシーン制御構造１１５２は、Ｏ／Ｓ下位セキュリティエージェント３５１６に通信接続されてもよい。当該実施例では、バーチャルマシーン制御構造１１５２の機能の一部又はすべては、Ｏ／Ｓ下位セキュリティエージェント３５１６により実行されてもよい。さらに、当該実施例では、Ｏ／Ｓ下位セキュリティエージェント３５１６の機能の一部又はすべては、バーチャルマシーン制御構造１１５２により実行されてもよい。バーチャルマシーン制御構造１１５２は、図１のＯ／Ｓ下位トラップエージェント１０４、図２のＶＭＣＳ、図４のファームウェアセキュリティエージェント４４０、４４２若しくはＰＣファームウェアセキュリティエージェント４４４、図５のファームウェアセキュリティエージェント５１６、又は図７のマイクロコードセキュリティエージェント７０６により完全に又は部分的に実現されてもよい。バーチャルマシーン制御構造１１５２は、プロセッサレジスタ３５３０又は他のリソースなどのリソースに対するリクエストをトラップするためのデータ構造、レコード、ファイル、モジュール又は他の何れか適切なエンティティにより実現されてもよい。一実施例では、システム３５００が図２のシステム２００により完全に又は部分的に実現される場合など、バーチャルマシーン制御構造１１５２及びＯ／Ｓ下位セキュリティエージェント３５１６は、プロセッサレジスタ３５３０や他の何れか適切なシステムリソースなどの電子デバイス３５０４のシステムリソースへのアクセスを仮想化するよう構成されてもよい。
【０３９２】
バーチャルマシーン制御構造１１５２は、プロセッサレジスタ３５３０などのシステムリソースのオペレーティングシステム３５１２により要求された処理をトラップするための１以上のフラグ１１５４を有してもよい。フラグ１１５４は、例えば、プロセスコンテクストスイッチフラグ３５５６及び／又はリードファンクションフラグ３５５８などをトラップするためのフラグを有してもよい。フラグ１１５４は、プロセッサレジスタ３５３０などのシステムリソースへのアクセスをトラップするのに適した何れかのフラグを有してもよい。Ｏ／Ｓ下位セキュリティエージェント３５１６は、バーチャルマシーン制御構造１１５２の何れのフラグがシステムリソースへのアクセスをトラップするのに利用されるか設定するよう構成されてもよい。バーチャルマシーン制御構造１１５２及びＯ／Ｓ下位セキュリティエージェント３５１６によりトラップ及び／又はガードされるシステムリソースは、限定することなく、プロセッサレジスタ３５３０を含むものであってもよい。
【０３９３】
プロセッサ３５７３は、電子デバイス３５０４上で動作するよう構成されてもよい。電子デバイス３５０４上で動作する１以上のプロセスは、マルウェアに関する悪意あるプロセスであるかもしれない。電子デバイス３５０４上のマルウェアは、アンチマルウェアソフトウェアによる検出を回避するため、プロセス３５７３の１以上のプロセスの存在を偽装するよう動作する可能性がある。例えば、オペレーティングシステム３５１２は、オペレーティングシステムカーネルメモリ３５８０を有してもよい。オペレーティングシステムカーネルメモリ３５８０は、電子デバイス３５０４上のプロセスの実行を追跡するための１以上の機構を含むものであってもよい。一例では、当該機構は、アクティブプロセスリスト３５８４を有してもよい。アクティブプロセスリスト３５８４は、電子デバイス３５０４上で実行されるプロセスを追跡するためのデータ構造、レコード、ファイル又は他の何れか適切な方法により実現されてもよい。例えば、プロセス３５７３ｂがマルウェアに関する悪意あるプロセスである場合、電子デバイス３５０４上のマルウェアは、プロセス３５７３ｂへの参照を削除するため、アクティブプロセスリスト３５８４を修正してもよい。従って、何れのプロセスが電子デバイス３５０４上でアクティブ実行され、マルウェアについて調べられるべきか決定する際、電子デバイス３５０４上で実行されるセキュリティソフトウェアは、調査のためのアクティブなプロセスとしてプロセス３５７３ｂを認識しない。
【０３９４】
プロセス３５７３又は電子デバイス３５０４上で実行される他のエンティティは、仮想化メモリを利用する際に通常処理の一部として、プロセス３５７３の１つに関連するプロセスコンテクストスイッチの利用を要求するものであってもよい。仮想化メモリの利用を実現するため、オペレーティングシステム３５１２は、所与のプロセスに対するプロセスコンテクストスイッチ、リード又はアタッチメントを実行するよう構成されてもよい。当該アクションは、オペレーティングシステム３５１２がＣＲ３レジスタ３５６０などの制御レジスタを含むシステムリソースにアクセスすることを試みることを要求してもよい。オペレーティングシステム３５１２は、“ｍｏｖｅ  ｖａｌｕｅ，ＣＲ３”コマンドの形態によりＣＲ３レジスタ３５６０のリードを生成してもよい。オペレーティングシステム３５１２は、“ｍｏｖｅ  ＣＲ３，ｖａｌｕｅ”のコマンドの形態によりＣＲ３レジスタ３５６０の値を変更することを試みるよう構成されてもよい。
【０３９５】
バーチャルマシーン制御構造１１５２は、レジスタ３５３０を含む電子デバイス３５０４のシステムリソースにアクセスするため、オペレーティングシステム３５１２による試行をインターセプトするよう構成されてもよい。バーチャルマシーン制御構造１１５２は、電子デバイス３５０４のシステムリソースにアクセスするためオペレーティングシステム３５１２により試行された特定のコマンドをトラップすることを試みるよう構成されてもよい。バーチャルマシーン制御構造１１５２は、オペレーティングシステム３５１２のコマンドをインターセプトするためのフラグを利用するよう構成されてもよい。一実施例では、バーチャルマシーン制御構造１１５２は、ＣＲ３レジスタ３５６０に対するプロセスコンテクストスイッチ及びリードコマンドをインターセプトするためのフラグ３５５６〜３５５８を有してもよい。Ｏ／Ｓ下位セキュリティエージェント３５１６は、バーチャルマシーン制御構造１１５２内のフラグ３５５６〜３５５８を設定するよう構成されてもよい。バーチャルマシーン制御構造１１５２は、ＶＭイグジットを生成するよう構成されてもよく、当該イベントは、ＣＲ３レジスタ３５６０に関するリード又はプロセスコンテクストスイッチコマンドなど、フラグ付けされた処理のインターセプトに応答して生成される。一実施例では、バーチャルマシーン制御構造１１５２は、仮想化メモリに関する制御レジスタの何れか試行されたアクセスについてＶＭイグジットを生成するよう構成されてもよい。電子デバイス３５０４上で実行されるプロセスの１つがプロセスコンテクストスイッチを実行し、又はプロセスに関するプロセススペースを読むことを試行する毎に、バーチャルマシーン制御構造１１５２は、ＶＭイグジットを生成し、試行されたコマンドに関する情報をＯ／Ｓ下位セキュリティエージェント３５１６に転送するよう構成されてもよい。説明のため、Ｏ／Ｓ下位セキュリティエージェント３５１６は、レジスタ変更３５７６におけるＣＲ３レジスタ３５６０（又は他のレジスタ３５６８）に対するすべてのアクションを記録するよう構成されてもよい。レジスタ変更３５７６は、ＣＲ３レジスタ３５６０又は他のレジスタ３５６８に対する変更の履歴を格納するためのファイル、構造、データ構造、レコード又は他の何れか適切な機構により実現されてもよい。Ｏ／Ｓ下位セキュリティエージェント３５１６は、ＣＲ３レジスタ３５６０のすべてのアクセスを記録することによって、電子デバイス３５０４におけるプロセスコンテクストスイッチを試みたすべてのプロセス３５７３のレコードを有してもよい。レジスタ変更３５７６としての変更のレコードは、電子デバイス３５０４上で実行されるプロセスのレコードとして機能するよう構成されてもよい。Ｏ／Ｓ下位セキュリティエージェント３５１６は、電子デバイス３５０４上で実行されているすべてのプロセスを含む実行中のプロセス３５８６のリストをレジスタ変更３５７６から決定するよう構成されてもよい。
【０３９６】
ＣＲ３レジスタへのアクセスをインターセプトすることによって、Ｏ／Ｓ下位セキュリティエージェント３５１６は、実行の内外でスワップされるプロセスの可能性を拒絶することによって、実行をフリーズすることが可能であってもよい。実行をフリーズすることによって、Ｏ／Ｓ下位セキュリティエージェント３５１６は、訂正又は検出手段を回避又は覆すため動作しているマルウェアとのレース条件に入ることなく、実行中のプロセスのリストを収集するよう構成されてもよい。
【０３９７】
あるいは、Ｏ／Ｓ下位セキュリティエージェント３５１６は、コンテクストスイッチのためのオペレーティングシステムファンクション（ＷｉｎｄｏｗｓＴＭのファンクションＳｗａｐＣｏｎｔｅｘｔなど）をモニタすることによって、実行中のプロセス３５８６のリストを決定するよう構成されてもよい。オペレーティングシステムコンテクストスイッチファンクションのモニタは、ファンクションコールのコードセクションに関するメモリのプロセッサレベルモニタリングを介し、又は当該コードセクションを指し示す実行命令ポインタ（ＥＩＰ）の観察を介し実行されてもよい。例えば、ＳｗａｐＣｏｎｔｅｘｔがある物理的又は仮想的なメモリ位置がマッピングされ、セキュリティルールに記述されてもよい。ＳｗａｐＣｏｎｔｅｘｔがある物理的アドレス又はバーチャルメモリアドレスのフラグがトラップされてもよい。例えば、Ｏ／Ｓ下位セキュリティエージェント３５１６が図２のＳＶＭＭセキュリティエージェント２１７により完全に又は部分的に実現される場合、Ｏ／Ｓ下位セキュリティエージェント３５１６は、ＳｗａｐＣｏｎｔｅｘｔがあるバーチャルメモリページの試行された実行をトラップするためＶＭＣＳ１１５２を設定してもよい。他の例では、Ｏ／Ｓ下位セキュリティエージェント３５１６が図７のマイクロコードセキュリティエージェント７０８により完全に又は部分的に実現される場合、Ｏ／Ｓ下位セキュリティエージェント３５１６は、ＳｗａｐＣｏｎｔｅｘｔファンクションのコードセクションが始まる物理メモリアドレスの試行された実行をトラップするため、ＶＭＣＳ１１５２を設定してもよい。
【０３９８】
オペレーティングシステム３５１２は、セキュリティデバイスドライバ３５７０を有してもよい。セキュリティデバイスドライバ３５７０は、カーネルモードデバイスドライバサービスを提供するためのドライバ、モジュール、実行可能、ＤＬＬ又は他の何れか適切な機構により実現されてもよい。セキュリティデバイスドライバ３５７０は、電子デバイス３５０４上で実行されている実行中のプロセスを列挙するため、オペレーティングシステム３５１２の各種部分をコールするよう構成されてもよい。例えば、セキュリティデバイスドライバ３５７０は、カーネルメモリ３５８０又はアクティブプロセスリスト３５８４を調べるよう構成されてもよい。セキュリティデバイスドライバ３５７０は、セキュリティデバイスドライバ３５７０が検出可能な実行中プロセスリスト３５８０を通信するよう構成されてもよい。セキュリティデバイスドライバ３５７０は、Ｏ／Ｓ下位セキュリティエージェント３５１６に実行中プロセスリスト３５８０を通信するよう構成されてもよい。一実施例では、セキュリティデバイスドライバ３５７０は、ハイパーセルを介しＯ／Ｓ下位セキュリティエージェント３５１６に所与の検出されたプロセスに関するＥＰＲＯＣＥＳＳ構造をわたすよう構成されてもよい。セキュリティデバイスドライバ３５７０により検出されたアクティブプロセスのＥＰＲＯＣＥＳＳ構造を受信すると、Ｏ／Ｓ下位セキュリティエージェント３５１６は、セキュリティデバイスドライバ３５７０から受信した各ＥＰＲＯＣＥＳＳ構造に関するＣＲ３レジスタ３５６０の値（又は他のレジスタ３５６８の値）を計算するよう構成されてもよい。Ｏ／Ｓ下位セキュリティエージェント３５１６は、セキュリティデバイスドライバ３５７０から受信した実行中プロセスリスト３５８０と、レジスタ変更３５７６からＯ／Ｓ下位セキュリティエージェント３５１６が決定した実行中プロセスリスト３５８６とを比較するよう構成されてもよい。Ｏ／Ｓ下位セキュリティエージェント３５１６は、それがコンパイルしたレジスタ変更３５７６と比較して、セキュリティデバイスドライバ３５７０からの実行中プロセスリスト３５８０から導出されたＣＲ３値が欠落しているか判断するよう構成されてもよい。当該相違は、隠蔽されたプロセスを示す可能性がある。当該プロセスは、オペレーティングシステム３５１２と共に、電子デバイス３５０４上で実行されるセキュリティデバイスドライバ３５７０、アンチウイルス又はアンチマルウェアソフトウェアから隠蔽されてもよい。しかしながら、当該プロセスの証拠は、当該隠蔽されたプロセスが例えば、プロセスコンテクストスイッチ又はプロセスアドレススペースのリードなどを試みたため、Ｏ／Ｓ下位セキュリティエージェント３５１６に可視的であったかもしれない。隠蔽されるプロセスの証拠は、カーネルモードセキュリティデバイスドライバ３５７０が隠蔽されたプロセスを検出できないため、カーネルルートデバイスドライバを介したカーネルモード感染の証拠であってもよい。
【０３９９】
Ｏ／Ｓ下位セキュリティエージェント３５１６は、隠蔽されたプロセスではないが、リストがコンパイルされた時点の間の通常の実行中に削除されたプロセスである欠落プロセスを決定してもよい。隠蔽されたプロセスとしてスレッドを誤って特定することを回避するため、Ｏ／Ｓ下位セキュリティエージェント３５１６は、プロセスを作成及び削除するためのファンクションの実行をモニタするよう構成されてもよい。当該ファンクションは、例えば、ｐｓｐＰｒｏｃｅｓｓＣｒｅａｔｅ又はｐｓｐＴｅｒｍｉｎａｔｅＰｒｏｃｅｓｓなどを含むものであってもよい。Ｏ／Ｓ下位セキュリティエージェント３５１６は、それの列挙アクション及び作成又は削除ファンクションの観察のタイムスタンプレコードを生成するよう構成されてもよく、これにより、プロセスが欠落している場合、当該プロセスが目辛くしていると特定されるまでに削除ファンクションにより当該プロセスが削除されたか判断してもよい。
【０４００】
Ｏ／Ｓ下位セキュリティエージェント３５１６が、電子デバイス３５０４上で実行される隠蔽されたプロセスの証拠があると判断した場合、Ｏ／Ｓ下位セキュリティエージェント３５１６は、当該プロセスに関する修正が行われたか判断するため、オペレーティングシステム３５１２及びオペレーティングシステムカーネルメモリ３５８０をスキャンするよう構成されてもよい。Ｏ／Ｓ下位セキュリティエージェント３５１６は、マルウェアにより実行されていると知られるメモリ修正についてスキャンするよう構成されてもよい。いくつかの実施例では、Ｏ／Ｓ下位セキュリティエージェント３５１６は、アクティブプロセスリスト３５８４と共に、オペレーティングシステムコードセクション３５８２をスキャンするよう構成されてもよい。Ｏ／Ｓ下位セキュリティエージェント３５１６は、オペレーティングシステムカーネルメモリ３５８０に検出された悪意ある修正を修復するよう構成されてもよい。Ｏ／Ｓ下位セキュリティエージェント３５１６は、オペレーティングシステムカーネルメモリ３５８０におけるメモリ修正を調べることによって決定される何れかの検出されたルートキット感染を削除するよう構成されてもよい。Ｏ／Ｓ下位セキュリティエージェント３５１６は、何れか内部のデータ構造又はコードセクションに対する感染を修復するよう構成されてもよい。Ｏ／Ｓ下位セキュリティエージェント３５１６は、Ｏ／Ｓ下位セキュリティエージェント３５１６とセキュリティデバイスドライバ３５７０とにより決定されたプロセス間で検出されたすべての相違の隠蔽されたプロセスのメモリ修正についてスキャンするプロセスを繰り返すよう構成されてもよい。セキュリティデバイスドライバ３５７０は、実行中プロセスリスト３５８６などのＯ／Ｓ下位セキュリティエージェント３５１６から最終的なプロセスリストを受信するよう構成されてもよい。セキュリティデバイスドライバ３５７０は、ハイパーセルを介しＯ／Ｓ下位セキュリティエージェント３５１６に実行中プロセスリスト３５８６にアクセスするよう構成されてもよい。
【０４０１】
セキュリティＤＬＬ３５７２は、電子デバイス３５０４上で実行されるよう構成されてもよい。セキュリティＤＬＬ３５７２は、後述されるようなそれの機能を実行するため、ダイナミックリンクライブラリ（ＤＬＬ）、共有ライブラリ、実行可能又は他の何れか適切な機構により実現されてもよい。セキュリティデバイスドライバ３５７０は、セキュリティＤＬＬ３５７２又はセキュリティＤＬＬ３５７２への参照を、プロセスアドレススペース３５８７などの電子デバイス３５０４上で実行される各プロセスのアドレススペースに挿入するよう構成されてもよい。各プロセスアドレススペース３５８７は、セキュリティＤＬＬ３５７２へのポインタを含むものであってもよい。セキュリティＤＬＬ３５７２は、電子デバイス３５０４上で実行されるすべてのユーザモードプロセスを列挙するよう構成されてもよい。セキュリティＤＬＬ３５７２は、何れか適切な技術を利用してユーザモードプロセスを列挙するよう構成されてもよい。例えば、セキュリティＤＬＬ３５７２は、ＷｉｎｄｏｗｓＴＭオペレーティングシステムにおけるＮｔＱｕｅｒｙＳｙｓｔｅｍＩｎｆｏｒｍａｔｉｏｎファンクションを利用し、ＰｒｏｃｅｓｓＦｉｒｓｔ及びＰｒｏｃｅｓｓＮｅｘｔファンクションを利用してプロセスをナビゲートするよう構成されてもよい。当該ファンクションはまた、Ｏ／Ｓ下位セキュリティエージェントにより実行されてもよい。セキュリティＤＬＬ３５７２は、それの結果を実行中プロセスリスト３５８８にコンパイルするよう構成されてもよい。セキュリティＤＬＬ３５７２は、実行中プロセスリスト３５８８をセキュリティデバイスドライバ３５７０に送信するよう構成されてもよい。セキュリティＤＬＬ３５７２は、セキュアな入出力コールを介し実行中プロセスリスト３５８６を送信するよう構成されてもよい。セキュリティデバイスドライバ３５７０は、Ｏ／Ｓ下位セキュリティエージェント３５１６から受信した実行中プロセスリスト３５８６のリストと、受信した実行中プロセスリスト３５８８とを比較するよう構成されてもよい。セキュリティデバイスドライバ３５７０は、当該プロセスリストの相違がユーザモードルートキット攻撃を含みうると判断するよう構成されてもよい。セキュリティデバイスドライバ３５７０又はセキュリティＤＬＬ３５７２は、メモリ修正が行われたか判断するため、プロセスアドレススペースに関するメモリのプロセスコード及びデータセクションを調べるよう構成されてもよい。セキュリティデバイスドライバ３５７０は、プロセスアドレススペース３５８７において行われたメモリ修正を修復するよう構成されてもよい。セキュリティデバイスドライバ３５７０は、セキュリティＤＬＬ３５７２からの実行中プロセスリスト３５８８とＯ／Ｓ下位セキュリティエージェント３５１６からの実行中プロセスリスト３５８６との間で検出される各相違について、プロセスアドレススペース３５８７をスキャンし、メモリ修正を検出し、当該メモリ修正を修復するプロセスを繰り返すよう構成されてもよい。
【０４０２】
動作について、プロセス３５７３は、電子デバイス３５０４上で実行されてもよい。プロセス３５７３の１以上が隠蔽されてもよい。例えば、プロセス３５７３ｂは、マルウェアに関連付けされてもよく、電子デバイス３５０４上で実行されるアンチウイルス又はアンチマルウェアソフトウェアからそれの悪意ある処理を偽装するため隠蔽されてもよい。プロセス３５７３は、オペレーティングシステム３５１２を介しｄｅｎしデバイス３５０４のシステムリソースにアクセスしてもよい。プロセッサ３５７３は、メモリの異なる部分にアクセスするため、又はプロセッサ３５０８により実行されるため、電子デバイス３５０４の制御レジスタにアクセスすることを要求してもよい。当該アクセスは、プロセスコンテクストスイッチ又はプロセスアドレススペースの読み込みを生じさせることを含むものであってもよい。当該要求は、ＣＲ３レジスタ３５６０などのレジスタにアクセスするオペレーティングシステム３５１２により処理されてもよい。バーチャルマシーン制御構造１１５２は、当該リクエストをインターセプトし、当該リクエストについてＶＭイグジットを生成してもよい。バーチャルマシーン制御構造１１５２は、当該試行に関する情報をＯ／Ｓ下位セキュリティエージェント３５１６に提供してもよい。Ｏ／Ｓ下位セキュリティエージェント３５１６は、バーチャルマシーン制御構造１１５２上の命令“ｍｏｖｅ  ＣＲ３，ｖａｌｕｅ”３５５６又は“ｍｏｖｅ  ｖａｌｕｅ，ＣＲ３”３５５８をトラップするためのものなど、フラグを設定してもよい。Ｏ／Ｓ下位セキュリティエージェント３５１６は、ＣＲ３レジスタ３５６０及びレジスタ変更３５７６に対するすべての試行されたリード又は変更を記録してもよい。
【０４０３】
電子デバイス３５０４上で実行される１以上のプロセス３５７３が隠蔽されているか判断するため、セキュリティデバイスドライバ３５７０は、オペレーティングシステム３５１２から何れのカーネルモードプロセスがオペレーティングシステム３５１２上で実行されているか判断してもよい。セキュリティデバイスドライバ３５７０は、アクティブプロセスリスト３５８４などのオペレーティングシステムカーネルメモリ３５８０の一部をスキャンすることによって、当該プロセスを決定してもよい。セキュリティデバイスドライバ３５７０は、電子デバイス３５０４のカーネルモードによる動作を検出可能な実行中プロセスリスト３５８０のリストを有してもよい。セキュリティデバイスドライバ３５７０は、実行中プロセスリスト３５８０をＯ／Ｓ下位セキュリティエージェント３５１６に送信してもよい。セキュリティデバイスドライバ３５７０は、実行中プロセスリスト３５８０において検出される各プロセスのＥＰＲＯＣＥＳＳ構造をハイパーセルを介しＯ／Ｓ下位セキュリティエージェント３５１６にわたすことによって、実行中プロセスリスト３５８０をＯ／Ｓ下位セキュリティエージェント３５１６に送信してもよい。Ｏ／Ｓ下位セキュリティエージェント３５１６は、実行中プロセスリスト３５８０内に含まれる各ＥＰＲＯＣＥＳＳのＣＲ３値を計算してもよい。Ｏ／Ｓ下位セキュリティエージェント３５１６は、その後、実行中プロセスリスト３５８０においてセキュリティデバイスドライバ３５７０から生じたＣＲ３値と、電子デバイス３５０４の動作中にコンパイルしたレジスタ変更３５７６とを比較してもよい。実行中プロセスリスト３５８０とレジスタ変更３５７６との間の相違は、電子デバイス３５０４上で隠蔽されるプロセス３５７３の１以上の結果であってもよい。
【０４０４】
Ｏ／Ｓ下位セキュリティエージェント３５１６が、電子デバイス３５０４上で実行される隠蔽されたプロセスの証拠があると判断した場合、Ｏ／Ｓ下位セキュリティエージェント３５１６は、当該プロセスに関する修正が行われたか判断するため、オペレーティングシステム３５１２及びオペレーティングシステムカーネルメモリ３５８０をスキャンしてもよい。Ｏ／Ｓ下位セキュリティエージェント３５１６は、マルウェアにより行われたと知られるメモリ修正についてスキャンしてもよい。一実施例では、Ｏ／Ｓ下位セキュリティエージェント３５１６は、メモリ修正についてアクティブプロセスリスト３５８４と共にオペレーティングシステムコードセクション３５８２をスキャンしてもよい。Ｏ／Ｓ下位セキュリティエージェント３５１６は、オペレーティングシステムカーネルメモリ３５８０において検出された悪意ある修正を修復してもよい。Ｏ／Ｓ下位セキュリティエージェント３５１６は、オペレーティングシステムカーネルメモリ３５８０におけるメモリ修正を調べることによって決定された何れかの検出されたルートキット感染を削除するか、又は何れか内部のデータ構造又はコードセクションに対する感染を修復してもよい。Ｏ／Ｓ下位セキュリティエージェント３５１６は、Ｏ／Ｓ下位セキュリティエージェント３５１６及びセキュリティデバイスドライバ３５７０により決定されたプロセス間で検出された各相違の隠蔽されたプロセスのメモリ修正についてスキャンするプロセスを繰り返すよう構成されてもよい。Ｏ／Ｓ下位セキュリティエージェント３５１６は、実行中プロセスリスト３５８６などの最終的なプロセスリストを生成し、当該リストをセキュリティデバイスドライバ３５７０に送信してもよい。
【０４０５】
セキュリティデバイスドライバ３５７０は、実行中プロセスリスト３５８６などの電子デバイス３５０４上で実行される各プロセスのアドレススペースにセキュリティＤＬＬ３５７２又はセキュリティＤＬＬ３５７２への参照を挿入してもよい。各プロセスアドレススペース３５８７は、セキュリティＤＬＬ３５７２へのポインタを含むものであってもよい。セキュリティＤＬＬ３５７２は、電子デバイス３５０４上で実行されるすべてのユーザモードプロセスを列挙してもよい。セキュリティＤＬＬ３５７２は、それの結果を実行中プロセスリスト３５８８にコンパイルし、実行中プロセスリスト３５８８をセキュリティデバイスドライバ３５７０に送信してもよい。
【０４０６】
セキュリティデバイスドライバ３５７０は、Ｏ／Ｓ下位セキュリティエージェント３５１６から受信した実行中プロセスリスト３５８６のリストと、受信した実行中プロセスリスト３５８８とを比較してもよい。セキュリティデバイスドライバ３５７０は、当該プロセスリストの相違がユーザモードルートキット攻撃などのマルウェア感染を示すと判断してもよい。セキュリティデバイスドライバ３５７０は、メモリ修正が行われたか判断し、必要なリペアを行うため、プロセスアドレススペース３５８７に関するメモリにおいてプロセスコード及びデータセクションを調べてもよい。セキュリティデバイスドライバ３５７０は、プロセスアドレススペース３５８７をスキャンし、メモリ修正を検出し、当該メモリ修正を修復するプロセスを、セキュリティＤＬＬ３５７２からの実行中プロセスリスト３５８８とＯ／Ｓ下位セキュリティエージェント３５１６からの実行中プロセスリスト３５８６との間で検出された各相違について繰り返してもよい。
【０４０７】
図３６は、電子デバイス上で隠蔽されたプロセスを検出及び修復する方法３６００の実施例である。
【０４０８】
ステップ３６０５において、制御レジスタの試行されたアクセスがインターセプト及び記録されてもよい。当該制御レジスタは、ＣＲ３制御レジスタであってもよい。当該試行されたアクセスは、ＶＭイグジットをトラップすることによってインターセプトされてもよい。当該インターセプトは、バーチャルマシーン制御構造においてフラグを設定することによって実現されてもよい。ステップ３６０５は、所与の期間における制御レジスタにアクセスするすべてのプロセスのレコードを含むＯ／Ｓ下位レベルプロセスリストをステップ３６１０において構築するため繰り返されてもよい。バーチャルメモリを利用するシステムでは、制御レジスタは、当該バーチャルメモリをスイッチ及びアクセスするためアクセスされてもよい。ステップ３６０５〜３６１０は、Ｏ／Ｓ下位セキュリティエージェントの支援により実現されてもよい。ステップ３６０５〜３６１０は、方法３６００において各種比較が行われるように更新されたベースラインを提供するため、必要に応じて方法３６００の処理中に定期的又は必要に応じて繰り返されてもよい。
【０４０９】
ステップ３６１５において、電子デバイスのオペレーティングシステム上で実行されるプロセスは、オペレーティングシステムのカーネルモードの観点から決定されてもよい。当該プロセスは、オペレーティングシステムのカーネルモードの列挙ファンクションを利用することによって決定されてもよい。例えば、オペレーティングシステムのアクティブプロセスリストは、実行中のプロセスを決定するためアクセスされてもよい。ステップ３６２０において、当該プロセスは、Ｏ／Ｓレベルプロセスリストを構成するため利用されてもよい。ステップ３６２５において、Ｏ／Ｓレベルプロセスリストの各プロセスのＥＰＲＯＣＥＳＳ構造からの制御レジスタ値が計算されてもよい。当該レジスタ値は、プロセスがＯ／Ｓレベルプロセスリストにおいて相互参照されることを可能にするものであってもよい。
【０４１０】
ステップ３６３０において、Ｏ／Ｓ下位レベル及びＯ／Ｓレベルプロセスリストが、相違が存在するか決定するため比較されてもよい。Ｏ／Ｓ下位レベルプロセスリストにあって、Ｏ／Ｓレベルプロセスリストから欠落しているプロセスが存在する場合、ステップ３６３５において、当該プロセスが隠蔽され、悪意ある可能性があると判断されてもよい。
【０４１１】
ステップ３６４０において、オペレーティングシステム及びシステムメモリが、隠蔽されたプロセスに関するメモリ修正についてスキャンされてもよい。一実施例では、当該リソースは、プロセス列挙に関する変更についてスキャンされてもよい。例えば、オペレーティングシステムコードセクション及び／又はオペレーティングシステムアクティブプロセスリストがスキャンされてもよい。ステップ３６４５において、検出されたメモリ修正が修復されてもよい。ステップ３６５０において、ステップ３６０５〜３６４５が、Ｏ／Ｓ下位レベルプロセスリストとＯ／Ｓレベルプロセスリストとの要素間に相違が存在しなくなるまで、隠蔽されるすべてのプロセスについて繰り返されてもよい。
【０４１２】
図３７は、電子デバイス上の隠蔽されたプロセスを検出及び修復する方法３７００の実施例である。方法３７００は方法３６００と異なり、方法３６００はカーネルモードプロセスとユーザモードプロセスとの双方を含むリストを作成及び比較することに関し、方法３７００はカーネルモードプロセスリストとユーザモードプロセッサリストとの別々の作成及び比較に関する。一方のリストにあって、他方にないプロセスの存在を比較することによって、マルウェアがユーザモードルートキット又はカーネルモードルートキットであるかなど、マルウェアプロセスのクオリティが決定されてもよい。また、ルートキットは、１以上のプロセスを感染させている可能性がある。
【０４１３】
ステップ３７０５において、制御レジスタの試行されたアクセスがインターセプト及び記録されてもよい。当該制御レジスタは、ＣＲ３制御レジスタであってもよい。当該試行されたアクセスは、ＶＭイグジットをトラップすることによってインターセプトされてもよい。当該インターセプトは、バーチャルマシーン制御構造においてフラグを設定することによって実現されてもよい。ステップ３７０５は、所与の期間において制御レジスタにアクセスするすべてのプロセスのレコードを含みうるＯ／Ｓ下位レベルプロセスリストをステップ３７１０において構成するため繰り返されてもよい。バーチャルメモリを利用するシステムでは、制御レージスタは、バーチャルメモリをスイッチ及びアクセスするためアクセスされてもよい。ステップ３７０５〜３７１０は、Ｏ／Ｓ下位セキュリティエージェントの支援により実現されてもよい。ステップ３７０５〜３７１０は、方法３７００において行われる各種比較について更新されたベースラインを提供するため、必要に応じて方法３７００の処理中に定期的又は必要に応じて繰り返されてもよい。
【０４１４】
ステップ３７１５において、電子デバイスのオペレーティングシステムのカーネルモードで実行されるプロセスは、オペレーティングシステムのカーネルモードの観点から決定されてもよい。当該プロセスは、オペレーティングシステムのカーネルモードの列挙ファンクションを利用することによって決定されてもよい。例えば、オペレーティングシステムのアクティブプロセスリストは、カーネルモードで実行されるプロセスを決定するためアクセスされてもよい。ステップ３７２０において、当該プロセスは、Ｏ／Ｓレベルプロセスリストを構成するため利用されてもよい。ステップ３７２５において、Ｏ／Ｓレベルプロセスリストの各プロセスのＥＰＲＯＣＥＳＳ構造からの制御レジスタ値が計算されてもよい。当該レジスタ値は、当該プロセスがＯ／Ｓレベルプロセスリストにおいて相互参照されることを可能にするものであってもよい。
【０４１５】
ステップ３７３０において、Ｏ／Ｓ下位レベル及びＯ／Ｓレベルプロセスリストが、相違が存在するか判断するため比較されてもよい。Ｏ／Ｓ下位レベルプロセスリストにあって、Ｏ／Ｓレベルプロセスリストから欠落したプロセスがある場合、ステップ３７３５において、当該プロセスが隠蔽されて悪意があり、おそらくカーネルモードルートキットの形態をとりうると判断されてもよい。一実施例では、あるいは、Ｏ／Ｓレベルプロセスリストから欠落したプロセスは、実際にはユーザモードプロセスであると判断されてもよい。当該実施例では、ステップ３７１５は、電子デバイスのユーザモードプロセスを列挙していないかもしれない。
【０４１６】
ステップ３７４０において、オペレーティングシステム及びシステムメモリが、隠蔽されたプロセスに関するメモリ修正についてスキャンされてもよい。一実施例では、当該リソースは、プロセス列挙に関連する変更についてスキャンされてもよい。例えば、オペレーティングシステムコードセクション及び／又はオペレーティングシステムアクティブプロセスリストがスキャンされてもよい。ステップ３７４５において、何れか検出されたメモリ修正が修復されてもよい。ステップ３７５０において、ステップ３７３５〜３７４５が、Ｏ／Ｓ下位レベルプロセスリストとＯ／Ｓレベルプロセスリストとのカーネルモード要素間に相違がなくなるまで、すべての隠蔽されたカーネルモードプロセスについて繰り返されてもよい。
【０４１７】
ステップ３７５５において、電子デバイスのユーザモードプロセスが決定及び列挙されてもよい。ステップ３７５５は、実行中の各プロセスのアドレススペースに共有ライブラリを挿入することによって実現されてもよい。共有ライブラリは、オペレーティングシステムのユーザモードプロセス列挙ファンクションをコールしてもよい。ステップ３７６０において、ユーザレベルプロセスリストは、ステップ３７５５の結果により作成されてもよい。ステップ３７６５において、Ｏ／Ｓ下位レベルプロセスリストとユーザレベルプロセスリストとの間の相違が決定されてもよい。ユーザレベルプロセスリストに検出されず、またＯ／Ｓレベルプロセスリストに以前に検出されていないプロセスは、隠蔽されたユーザモードプロセスであるかもしれず、マルウェアに関連付けされてもよい。ステップ３７７０において、ユーザモードのアプリケーション及びプロセススペースは、メモリ修正についてスキャンされてもよい。共有ライブラリが挿入されたアドレススペースのプロセスコードは、当該メモリ修正について調べられてもよい。データセクションと共にユーザモードプロセスコードを収容するメモリの部分が、ステップ３７７５においてスキャンされてもよい。ステップ３７８０において、検出されたメモリ修正が修復されてもよい。ステップ３７８５において、Ｏ／Ｓ下位レベルプロセスリストとユーザレベルプロセスリストとのユーザモード要素の間に相違が存在しなくなるまで、ステップ３７５５〜３７８０が繰り返されてもよい。
【０４１８】
図３８は、電子デバイス３８０１上で実行されるオペレーティングシステム３８１３のシステムコールへのアクセスをセキュアにするシステム３８００の実施例である。システム３８００は、オペレーティングシステム３８１３などの電子デバイス３８０１のオペレーティングシステムにおいて実行されるソフトウェアベースエンティティからのシステムコール及び／又はシステムコールテーブルにアクセスする悪意ある試行を検出するため、電子デバイス３８０１上で動作するよう構成されるＯ／Ｓ下位トラップエージェント３８２０及びトリガイベントハンドラ３８２２を有してもよい。さらに、Ｏ／Ｓ下位トラップエージェント３８２０及びトリガイベントハンドラ３８２２は、システムコール及び／又はシステムコールテーブル３８０４へのアクセスをトラップすべき時点と、トラップ処理に関するトリガイベントをどのように処理するかとを決定するため、１以上のセキュリティルール３８０４を利用するよう構成されてもよい。Ｏ／Ｓ下位トラップエージェント３８２０及びトリガイベントハンドラ３８２２は、トリガイベントを許可、拒絶又は他の訂正アクションを実行するよう構成されてもよい。
【０４１９】
電子デバイス３８０１は、図１の電子デバイス１０３、図２の電子デバイス２０４、図４の電子デバイス４０４、図７の電子デバイス７０１、図９の電子デバイス９０１、図１２の電子デバイス１２０１及び／又はこれらの何れかの組み合わせの機能により全体的若しくは部分的に実現されるか、又は当該機能を実現するよう構成されてもよい。電子デバイス３８０１は、メモリ３８０３に接続される１以上のプロセッサ３８０２を有してもよい。プロセッサ３８０２は、図２のプロセッサ２０８、図４のプロセッサ４０８、図７のプロセッサ７０２、図９のプロセッサ９０２、図１２のプロセッサ１２０２及び／又はこれらの何れかの組み合わせの機能により全体的若しくは部分的に実現されるか、又は当該機能を実現するよう構成されてもよい。メモリ３８０３は、図２のメモリ２０６、図４のメモリ４０６、図７のメモリ７０３、図９のメモリ９０３、図１２のメモリ１２０３及び／又はこれらの何れかの組み合わせの機能により全体的若しくは部分的に実現されるか、又は当該機能を実現するよう構成されてもよい。電子デバイス３８０１は、システムコールテーブル３８０４、バーチャルメモリページテーブル３８０６及びＯ／Ｓ内セキュリティエージェント３８１９を含むオペレーティングシステム３８１３を有してもよい。オペレーティングシステム３８１３は、図１のオペレーティングシステム２１２、図４のオペレーティングシステム４１２、図７のオペレーティングシステム７１３、図９のオペレーティングシステム９１３、図１２のオペレーティングシステム１２１３及び／又はこれらの何れかの組み合わせの機能により全体的若しくは部分的に実現されるか、又は当該機能を実現するよう構成されてもよい。Ｏ／Ｓ内セキュリティエージェント３８１９は、図１のＯ／Ｓ内セキュリティエージェント２１８、図４のＯ／Ｓ内セキュリティエージェント４１８、図７のＯ／Ｓ内セキュリティエージェント７１９、図９のＯ／Ｓ内セキュリティエージェント９１９、図１２のＯ／Ｓ内セキュリティエージェント１２１９及び／又はこれらの何れかの組み合わせの機能により全体的若しくは部分的に実現されるか、又は当該機能を実現するよう構成されてもよい。セキュリティルール３８０８は、図１のセキュリティルール１１４、図２のセキュリティルール２２０、２２２、図４のセキュリティルール４２０、４３４、４３６、４３８、図５のセキュリティルール５１８、図７のセキュリティルール７０７、７２１、７２３、図９のセキュリティルール９０８、９２１、図１２のセキュリティルール１２０８、１２２１及び／又はこれらの何れかの組み合わせの機能により実現されるか、又は当該機能を実現するよう構成されてもよい。プロテクションサーバ３８１８は、図１のプロテクションサーバ１０２、図２のプロテクションサーバ２０２及び／又はこれらの何れかの組み合わせの機能により全体的若しくは部分的に実現されるか、又は当該機能を実現するよう構成されてもよい。
【０４２０】
Ｏ／Ｓ下位トラップエージェント３８２０は、図１のＯ／Ｓ下位トラップエージェント１０４、図２のＳＶＭＭ２１６、図４のファームウェアセキュリティエージェント４４０、４４２及び／若しくはＰＣファームウェアセキュリティエージェント４４４、図５のファームウェアセキュリティエージェント５１６、図７のマイクロコードセキュリティエージェント７０８、図９のＯ／Ｓ下位トラップエージェント９２０、図１２のＯ／Ｓ下位セキュリティエージェント１２２０及び／又はこれらの何れかの組み合わせの機能により実現されるか、又は当該機能を実現するよう構成されてもよい。トリガイベントハンドラ３８２２は、図１のトリガイベントハンドラ１０８、図２のＳＶＭＭセキュリティエージェント２１７、図４のＯ／Ｓ下位エージェント４５０、図７のＯ／Ｓ下位エージェント７１２、図９のトリガイベントハンドラ９２２及び／又はこれらの何れかの組み合わせの機能により実現されるか、又は当該機能を実現するよう構成されてもよい。各種実施例では、Ｏ／Ｓ下位トラップエージェント３８２０の機能の一部は、トリガイベントハンドラ３８２２により実行されてもよく、及び／又はトリガイベントハンドラ３８２２の機能の一部は、Ｏ／Ｓ下位トラップエージェント３８２０により実行されてもよい。さらに、Ｏ／Ｓ下位トラップエージェント３８２０及びトリガイベントハンドラ３８２２は、同一のソフトウェアモジュールにより実現されてもよい。
【０４２１】
ページテーブル３８０６は、データ構造として実現され、オペレーティングシステム３８１３のバーチャルメモリシステムを実現するのに利用されてもよい。バーチャルメモリシステムは、電子デバイス３８０１のメモリ３８０３へのアクセスを仮想化するメモリマネージメントシステムである。バーチャルメモリシステムでは、オペレーティングシステム３８１３上で実行されるソフトウェアプロセスには、プロセスがメモリの連続的なブロックとして扱うバーチャルアドレススペースが設けられる。実際には、バーチャルアドレススペースは、物理メモリの異なるエリアに分散されてもよい。プロセスがメモリへのアクセスをリクエストすると、オペレーティングシステム３８１３は、プロセスのバーチャルアドレスをデータが実際に格納されているメモリ３８０３の物理アドレスにマッピングしてもよい。バーチャルアドレススペースは、バーチャルメモリページと呼ばれる連続するバーチャルメモリアドレスの固定サイズのブロックに分割されてもよい。ページテーブル３８０６は、バーチャルメモリページからそれの対応する物理アドレスへのマッピングを、バーチャルメモリページが格納されるメモリ３８０３に格納するのに利用されてもよい。ページテーブル３８０６は、所与のバーチャルメモリページについて許可されているアクセスタイプを指定するため、リード、ライト及び／又は実行などの各種アクセスパーミッションを有してもよい。いくつかの実施例では、Ｏ／Ｓ下位トラップエージェント３８２０及び／又はトリガイベントハンドラ３８２２は、生成された例外又は試行されたリード、ライト若しくは実行処理を取得し、セキュリティルール３８０８を用いてメモリ３８０３にアクセスするための未認証のリクエストがマルウェアを示しているか判断するよう構成されてもよい。
【０４２２】
システムコールテーブル３８０４は、システムコールを実現するため、オペレーティングシステム３８１３により利用されるデータ構造であってもよい。システムコールは、オペレーティングシステム３８１３により提供されるルーチン及び／又はシステムサービスであってもよい。システムコールテーブル３８０４は、アプリケーション３８１０とオペレーティングシステム３８１３との間のインタフェースを提供し、アプリケーション３８１０がオペレーティングシステム３８１３に当該アプリケーション３８１０が実行することが許可されていないかもしれない処理を実行することを要求するのを可能にする。各システムコールは、特定のシステムコールのエントリが格納されるシステムコールテーブル３８０４へのインデックスを用いて特定されてもよい。システムコールテーブル３８０４の各エントリは、特定のシステムコールに対応するコードが格納可能なメモリ３８０３のアドレスを格納してもよい。当該エントリはポインタとして実現されてもよい。システムコールは、オペレーティングシステム３８１３に適切なインデックスを通知し、以降にオペレーティングシステム３８１３への制御を移転することによって実行されてもよい。オペレーティングシステム３８１３は、その後、特定のシステムコールに対応するコードが格納されるメモリ３８０３の位置を特定するため、システムコールテーブル３８０４を照会してもよい。オペレーティングシステム３８１３は、その後、当該コードを実行し、システムコールを要求するソフトウェアコンポーネントに制御を返してもよい。システムコールテーブル３８０４の実施例の説明は、以下の図３９のシステムコールテーブル３９０１の説明に見つけられてもよい。
【０４２３】
Ｏ／Ｓ下位トラップエージェント３８２０は、メモリ３８０３及び／又はプロセッサ３８０２などのシステムコールに関する何れか適切なリソース３８１６へのアクセス又はそこからの情報をインターセプトするよう構成されてもよい。例えば、リソース３８１６は、図１のリソース１０６、図２のシステムリソース２１４、図７のシステムリソース、図９のプロセッサリソース９２４、図１２のバーチャルメモリ１２０４及び／又は物理メモリ１２０３、及び／又はこれらの何れかの組み合わせの機能により実現されるか、又は当該機能を実現するよう構成されてもよい。リソース３８１６は、プロセッサが命令をロード及び実行することを可能にするため、プロセッサ３８０２などのプロセッサに利用可能なリソースを含むものであってもよい。当該リソースは、例えば、データレジスタ、制御レジスタ、キャッシュ、プロセッサフラグ、プロセッサコア、プロセッサ例外及び／又はプロセッサインタラプトなどを含むものであってもよい。リソース３８１６はまた、バーチャル及び／又は物理メモリ３８０３を有してもよい。当該リソースの試行されたアクセスは、オペランドを有するアセンブリ言語命令などの命令を含むものであってもよく、当該試行されたアクセスは命令の実行をトラップすることによってトリガされてもよい。
【０４２４】
Ｏ／Ｓ下位トラップエージェント３８２０は、メモリ３８０３などの何れか適切なリソース及び／又はプロセッサ３８０２のリソースへのアクセス又はそれからの情報をインターセプトするよう構成されてもよい。Ｏ／Ｓ下位トラップエージェント３８２０は、システムコール及び／又はシステムコールテーブル３８０４にアクセスするための試行をトラップするのに利用されてもよいシステムコールトラップ手段３８１４を有してもよい。システムコールトラップ手段３８１４及び／又はトリガイベントハンドラ３８２２は、その後、セキュリティルール３８０８に関連して、トラップされた試行に関するコンテクスト情報を利用して、１以上のサブスクライバ３８１２への試行を許可、拒絶及び／又は報告するか判断してもよい。コンテクスト情報は、トラップされたアクセス試行の要求元エンティティ、問題となっているシステムコール及び／又は試行されたアクセスのタイプを含むものであってもよい（例えば、システムコールを実行する試行、システムコールテーブル３８０４のエントリへのリード／ライトの試行など）。
【０４２５】
システムコールトラップ手段３８１４は、Ｏ／Ｓ下位トラップエージェント３８２０のモジュール及び／又はコンポーネントであってもよく、何れか適切な方法によりシステムコールへのアクセスをトラップするよう構成されてもよい。例えば、システムコールトラップ手段３８１４は、システムコールの実行のためオペレーティングシステム３８１３に制御を移転する命令など、システムコールを実現するのに利用されるアセンブリ言語命令の実行をトラップするよう構成されてもよい。トラップするための命令は、電子デバイス３８０１のオペレーティングシステム３８１３及び／又はプロセッサ３８０２に依存してもよい。例えば、ｘ８６命令セットアーキテクチャ（ＩＳＡ）をサポートするプロセッサ３８０２上で実行されるＭｉｃｒｏｓｏｆｔ  ＷｉｎｄｏｗｓＴＭの一変形を利用するとき、システムコールトラップ手段３８１４は、“ＳｙｓＥｎｔｅｒ”及び／又は“ＫｉＦａｓｔＳｙｓＣａｌｌ”命令を実行するための試行をトラップしてもよい。これらの命令は、システムコールを実行するため、オペレーティングシステム３８１３に制御を移転するよう機能する。“ＳｙｓＥｎｔｅｒ”命令を実行する試行のトラップは、“Ｒｉｎｇ３”優先度で実行されるソフトウェアからの試行のみをトラップし、“ＫｉＦａｓｔＳｙｓＣａｌｌ”命令を実行する試行のトラップは、“Ｒｉｎｇ０”又は“Ｒｉｎｇ３”優先度で実行されるソフトウェアからの試行をトラップしてもよい。いくつかの実施例では、“ＳｙｓＥｎｔｅｒ”及び／又は“ＫｉＦａｓｔＳｙｓＣａｌｌ”命令を実行する試行は、当該命令が格納可能な物理メモリ位置に対応するバーチャルメモリページを実行する試行をトラップすることによってトラップされてもよい。
【０４２６】
他の実施例では、システムコールトラップ手段３８１４は、システムコールテーブル３８０４にアクセスするための試行をトラップするよう構成されてもよい。システムコールテーブル３８０４にアクセスするための試行をトラップするのに利用される方法は、電子デバイス３８０１のプロセッサ３８０２及び／又はオペレーティングシステム３８１３に依存してもよい。ｘ８６ＩＳＡをサポートするプロセッサ３８０２を利用するとき、システムコールトラップ手段３８１４は、ＭＯＶ命令を実行するための試行をトラップすることによって、システムコールテーブル３８０４へのリード又はライトの試行をトラップしてもよい。例えば、システムコールトラップ手段３８１４は、“ＭＯＶ  ｓｙｓｃａｌｌ＿ｔａｂｌｅ＿ａｄｄｒｅｓｓ，ＥＡＸ”命令をトラップすることによって、システムコールテーブル３８０４へのライトの試行をトラップしてもよい。この命令は、ｓｙｓｃａｌｌ＿ｔａｂｌｅ＿ａｄｄｒｅｓｓにより指定されたメモリアドレスのシステムコールテーブルへのエントリに、ＥＡＸレジスタからの値を書き込むよう処理してもよい。システムコールテーブル３８０４へのライトの試行をトラップすることによって、システムコールトラップ手段３８１４は、悪意あるコードを含むメモリアドレスによってシステムコールテーブル３８１４のエントリをマルウェアが上書きすることを阻止してもよい。同様に、システムコールトラップ手段３８１４は、“ＭＯＶ  ＥＡＸ，ｓｙｓｃａｌｌ＿ｔａｂｌｅ＿ａｄｄｒｅｓｓ”命令をトラップすることによって、システムコールテーブル３８０４からのリードの試行をトラップしてもよい。当該命令は、ｓｙｓｃａｌｌ＿ｔａｂｌｅ＿ａｄｄｒｅｓｓにより指定されたメモリアドレスにおけるシステムコールテーブル３８０４のエントリから値をリードするよう処理してもよい。システムコールテーブル３８０４のエントリをリードする試行のトラップは、システムコールテーブル３８０４がシステムコールに対応するコードのメモリの位置をオペレーティングシステム３８１３が特定することを可能にするためリードされる必要があるため、システムコールテーブル３８０４のエントリに関するシステムコールを実行するすべての試行を効果的にトラップすることになる。さらに、システムコールテーブル３８０４のエントリへのリードの試行のトラップは、マルウェアなどによるシステムコールテーブル３８０４へのリードの直接的な試行をトラップすることになる。いくつかの実施例では、システムコールテーブル３８０４にアクセスするための試行は、システムコールテーブル３８０４が格納可能な物理メモリ位置に対応するバーチャルメモリページにアクセスするための試行をトラップすることによってトラップされてもよい。
【０４２７】
さらなる他の実施例では、システムコールトラップ手段３８１４は、システムコールのコードがあるメモリ位置におけるコードを実行する試行をトラップすることによって、システムコールを実行するための試行をトラップするよう構成されてもよい。システムコールテーブル３８０４は、特定のシステムコールのコードがあるメモリ位置を特定するため照会されてもよい。システムコールを実行する試行をトラップするのに利用される方法は、電子デバイス３８０１のプロセッサ３８０２のタイプに依存してもよい。一実施例では、システムコールを実行するための試行は、命令ポインタ（ＩＰ）レジスタなどの値に基づくトリガを利用してトラップされてもよい。いくつかの実施例では、ＩＰレジスタは、プログラムカウンタ（ＰＣ）レジスタとして知られてもよい。ＩＰレジスタは、特定のプロセッサに応じて現在実行中の命令のアドレス又は次に実行される命令のアドレスを格納するのに利用されてもよい。ｘ８６ＩＳＡをサポートするプロセッサ３８０２を利用するとき、システムコールトラップ手段３８１４は、ＩＰレジスタの値をモニタし、ＩＰレジスタの値がシステムコールのアドレスを含むときに実行をトラップすることによって、特定にシステムコールを実行するための試行をトラップしてもよい。他の実施例では、システムコールを実行するための試行は、システムコールのコードが格納可能な物理メモリ位置に対応するバーチャルメモリページを実行するための試行をトラップすることによってトラップされてもよい。システムコールテーブル３８０４は、システムコールに対応するコードのメモリにおける位置を特定するため、トラップされるシステムコールに対応するインデックスにおいて照会されてもよい。一実施例では、システムコールテーブル３８０４においてリンクされるルーチン及びファンクションを含むメモリ位置の実行は、システムコールテーブル３８０４内にあると知られている位置に対して導かれる“ＪＭＰ”ルーチンなど。制御を移転するための命令をトラップすることによってトラップされてもよい。
【０４２８】
システムコール及びシステムコールテーブル３８０４へのアクセスをトラップするための上記方法の具体的な実現は、Ｏ／Ｓトラップエージェント３８２０及び／又はシステムコールトラップ手段３８１４の特定の実現形態に依存してもよい、例えば、Ｏ／Ｓ下位トラップエージェント３８２０及び／又はシステムコールトラップ手段３８１４がバーチャルマシーンモニタにより実現される場合、メモリアドレスはバーチャルメモリアドレスから物理メモリアドレスに変換されていないかもしれないため、特定のメモリアドレスに基づくトラップは（例えば、システムコールテーブルのエントリへのリード／ライトのための試行に基づくトラップ、及び／又はシステムコールのコードを含むメモリ位置における実行に基づくトラップなど）、バーチャルメモリアドレスに基づくものであってもよい。他の例として、Ｏ／Ｓ下位トラップエージェント３８２０及び／又はシステムコールトラップ手段３８１４がマイクロコードセキュリティエージェントにより実現される場合、特定のメモリアドレスに基づくトラップは、物理メモリアドレスに基づくものであってもよい。これは、バーチャルアドレスから物理アドレスへの変換は、マイクロコードレベルにおいてすでに実行された可能性があるためである。
【０４２９】
システムコールテーブル３８０４に関するファンクション又はシステムコールテーブル３８０４にアクセスする試行を行う命令のメモリ位置が、当該試行のトラップ中に検出されてもよい。メモリ位置は、試行を行ったエンティティを決定するため解析されてもよい。
【０４３０】
特定の試行をトラップした後、システムコールトラップ手段３８１４は、当該試行に関するトリガイベントを作成し、トリガイベントハンドラ３８２２に送信してもよい。トリガイベントハンドラは、その後、セキュリティルール３８０８と共に、トラップされたイベントに関するコンテクスト情報を利用して、イベントを許可、拒絶及び／又は１以上のサブスクライバ３８１２に報告するか判断してもよい。コンテクスト情報は、トラップされたイベントの要求元エンティティ、問題となっている特定のシステムコール及び／又は要求されたアクションを含むものであってもよい（例えば、システムコールを実行する試行、及び／又はシステムコールテーブル３８０４のエントリに対するリード／ライトの試行など）。例えば、安全であってマルウェアがないと知られている特定のエンティティのみが、システムコールテーブル３８０４に書き込むことが許可されてもよい。以前に未知であったマルウェアステータスを有するエンティティは、システムコールテーブル３８０４へのライトの未認証の試行に基づき、マルウェアであると判断されてもよい。他の例では、システムコールテーブル３８０４においてリンクされるファンクションの実行はトラップされ、ファンクションへのコールをしたエンティティがシステムコールテーブル３８０４を介して当該試行を行った場合に限って、実行が許可されてもよい。マルウェアステータスが以前に未知であったエンティティによる試行は、ファンクションの実行への直接的なアクセスが拒絶されてもよい。さらに、ブラックリスト又は他の判定を介してシステムコールテーブル３８０４又はそれの関連するファンクションへのアクセスを試行するマルウェアであると判断されたエンティティは、アクセスが拒絶され、他の適切な訂正アクションが実行されてもよい。
【０４３１】
サブスクライバ（ｓｕｂｓｃｒｉｂｅｒ）３８１２は、システムコールテーブル３８０４にアクセスするためのトラップされた試行及び／又はシステムコールを実行するためのトラップされた試行に関する情報を利用する何れかのエンティティを含むものであってもよい。サブスクライバ３８１２は、電子デバイス３８０１上のアプリケーション３８１０及び／又はセキュリティエージェントを有し、及び／又はサードパーティアプリケーション又は他のソフトウェアを有してもよい。例えば、サブスクライバ３８１２は、マルウェアを検出するためトラップされた試行に関するコンテクスト情報を利用可能なＯ／Ｓ下位トラップエージェント３８２０、トリガイベントハンドラ３８２２及び／又はＯ／Ｓ内セキュリティエージェント３８１９などの電子デバイス３８０１上で実行されるセキュリティソフトウェアを有してもよい。いくつかの実施例では、各サブスクライバ３８１２は、例えば、ファームウェアセキュリティエージェントなどのＯ／Ｓ下位トラップエージェント３８２０と同じ優先度レベルで動作する自らのセキュリティエージェントを提供してもよい。サブスクライバ３８１２は、プロテクションサーバ３８１８上などリモートで実行されるセキュリティソフトウェアを有してもよい。他の例として、サブスクライバ３８１２は、電子デバイス３８０１により利用される何れかのＩ／Ｏデバイスなどの特定のリソースのメーカーを含むものであってもよい。メーカーは、リソースに関するシステムコールなどのシステムコールの実行及び／又はシステムコールテーブルへのアクセスを介しリソースを危険にさらす何れかの疑わしい試行に関心があるかもしれない。他の例として、サブスクライバ３８１２は、デジタル著作権管理（ＤＲＭ）システムのアドミニストレータを含むものであってもよい。ＤＲＭシステムは、デジタルコンテンツの使用を制限及び／又は制御してもよく、ビデオ及び／又は音楽コンテンツなど、著作権により保護されるデジタルコンテンツをプロテクトするのに通常利用される。ＤＲＭシステムのアドミニストレータは、各種のデジタルプロテクトされたファイルがどの時点でどのようにしてアクセスされるか知ることに興味があり、プロテクトされたファイルにアクセスするのに利用可能な各種システムコールを追跡することによってこれを実行してもよい。Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍｍｉｎｇ  Ｉｎｔｅｒｆａｃｅ（ＡＰＩ）は、サブスクライバ３８１２がシステムコールを実行するためのトラップされた試行及び／又はシステムコールテーブル３８０４にアクセスするためのトラップされた試行に関する情報にアクセスすることを可能にするため、サブスクライバ３８１２に備えられてもよい。
【０４３２】
図３９は、オペレーティングシステムのシステムコールへのアクセスをセキュアにするシステム及び／又は方法により利用されるシステムコールテーブル３９０１の実施例である。システムコールテーブル３９０１は、各システムコールのコードがあるメモリ３９０８のアドレス３９０６を格納するためオペレーティングシステムにより利用されてもよい。システムコールテーブル３９０１は、テーブル、レコード及び／又は他の適切なデータ構造により実現されてもよい。Ｍｉｃｒｏｓｏｆｔ  ＷｉｎｄｏｗｓＴＭオペレーティングシステムの変形による実施例では、システムコールテーブル３９０１は、Ｓｙｓｔｅｍ  Ｓｅｒｖｉｃｅ  Ｄｅｓｃｒｉｐｔｏｒ  Ｔａｂｌｅ（ＳＳＤＴ）により実現されてもよい。システムコール３９０４は、オペレーティングシステムにより提供されるルーチン及び／又はシステムサービスであってもよい。典型的なシステムコール３９０４は、例えば、ファイルを操作及び／又は実行するためのオープン、リード、ライト、クローズ及び／又は実行、新たなプロセスを作成するためのｎｔＣｒｅａｔｅＰｒｏｃｅｓｓ、及び／又は新たなドライバをロードするためのｎｔＬｏａｄＤｒｉｖｅｒ及びＺｗＬｏａｄＤｒｉｖｅｒなどを含むものであってもよい。
【０４３３】
システムコール３９０４は、アプリケーションが実行することが許可されていない処理を実行することをオペレーティングシステムに要求することを可能にするアプリケーションとオペレーティングシステムとの間のインタフェースを提供する。例えば、典型的には“Ｒｉｎｇ３”優先度で実行されるアプリケーションは、ディスク上のファイルにアクセスする必要があるが、ディスクＩ／Ｏ処理を実行するパーミッションを有していないかもしれない。アプリケーションは、リード又はライトファイルシステムコードなどのシステムコール３９０４を利用し、オペレーティングシステムがアプリケーションからのリクエストを充足することを可能にするため、制御をオペレーティングシステムに移転するようにしてもよい。“Ｒｉｎｇ０”優先度で実行されるオペレーティングシステムは、特定のシステムコール３９０４に関するサービスを提供し、その後、アプリケーションに制御を戻してもよい。例えば、オペレーティングシステムは、システムコール３９０４に対応するコードがあるメモリアドレス３９０６を特定するため、システムコールテーブル３９０１にアクセスしてもよい。オペレーティングシステムは、その後、メモリ３９０８の指定されたアドレス３９０６のコードを実行し、アプリケーションに制御を戻してもよい。このようにして、アプリケーションは、オペレーティングシステムなど“Ｒｉｎｇ０”優先度で実行されるソフトウェアのみに典型的には利用可能な特定のサービスを利用してもよい。
【０４３４】
各システムコール３９０４は、システムコール３９０４へのエントリが格納されるシステムコールテーブル３９０１へのインデックス３９０２を用いて参照されてもよい。例えば、システムコールテーブル３９０１は、合計でＮ個のエントリを有し、各エントリは、０〜Ｎ−１の範囲のインデックス３９０２を用いて参照されてもよい。システムコール３９０４は、適切なインデックス３９０２をオペレーティングシステムに通知し、オペレーティングシステムに制御を移転することによって実行されてもよい。いくつかの実施例では、ソフトウェアコンポーネントは、当該インデックスをプロセッサのレジスタに配置することによって適切なインデックス３９０２を指定してもよく、システムコール３９０４の実行のため、オペレーティングシステムに制御を移転するための命令を実行してもよい。例えば、ｘ８６命令セットアーキテクチャ（ＩＳＡ）を利用する一実施例では、以下の命令が、アプリケーションのシステムコールを実現するのに利用されてもよい。
【０４３５】
“ＭＯＶ  ＥＡＸ，ｉｎｄｅｘ”
“ＳｙｓＥｎｔｅｒ”
最初の命令は、“ｉｎｄｅｘ”をプロセッサのＥＡＸレジスタに移すものであり、“ｉｎｄｅｘ”は、特定のシステムコール３９０４のエントリがあるシステムコールテーブル３９０１のインデックス３９０２に対応する整数である。“ＳｙｓＥｎｔｅｒ”命令は、その後、オペレーティングシステムに制御を移転し、オペレーティングシステムは、ＥＡＸレジスタに指定されるインデックス３９０２においてシステムコールテーブル３９０１にアクセスしてもよい。システムコールテーブル３９０１の特定のインデックスのエントリは、特定のシステムコール３９０４のコードがあるメモリ３９０８の位置を指し示すメモリアドレス３９０６を指定してもよい。その後、プロセッサは、メモリ３９０８の指定されたアドレスにあるコードを実行してもよい。システムコール３９０４は、アプリケーション、オペレーティングシステム及び／又はドライバを含む何れかのソフトウェアコンポーネントにより実行されてもよい。ｘ８６ＩＳＡに関する具体例として、オペレーティングシステム及び／又はドライバは、“ＫｉＦａｓｔＳｙｓＣａｌｌ”命令を利用することを除き、アプリケーションと同様にしてシステムコール３９０４を実行してもよい。
【０４３６】
システムコール３９０４は、システムコールテーブル３９０１に追加及び／又は削除されてもよい。例えば、新たなデバイスが電子デバイスに追加された場合、当該新たなデバイスのデバイスドライバが、オペレーティングシステムによりロードされる必要があり、システムコール３９０４は、アプリケーションが新たなデバイスの機能を利用することを可能にするため、システムコールテーブル３９０１に追加されてもよい。新たなシステムコールのコードは、メモリ３９０８にロードされてもよく、新たなシステムコール３９０４のエントリが、システムコールのコードがあるメモリ３９０８のアドレス３９０６を指定するシステムコールテーブル３９０１のエンドに追加されてもよい。
【０４３７】
システムコール３９０４を実現するための上述された実施例は、多数の可能な実施例の単なる数例である。システムコール３９０４及び／又はシステムコールテーブル３９０１は、何れか適切な方法により実現されてもよい。システムコール３９０４及び／又はシステムコールテーブル３９０１の具体的な実現形態は、電子デバイスのプロセッサ及び／又はオペレーティングシステムに依存してもよい。
【０４３８】
図４０は、電子デバイス上で実行されるオペレーティングシステムのシステムコールへのアクセスをセキュアにする方法４００の実施例である。ステップ４００５において、Ｏ／Ｓ下位セキュリティエージェント、Ｏ／Ｓ内セキュリティエージェント、トリガイベントハンドラ及びプロテクションサーバの身元及びセキュリティが、認証されてもよい。当該認証は、各コンポーネントのメモリのイメージを特定及び検証することによって、暗号化ハッシュを利用することによって、及び／又は秘密鍵を利用することによってを含む何れか適切な方法を用いて実行されてもよい。ステップ４００５が終了するまで、他のステップの処理が保留されてもよい。ステップ４０１０において、セキュリティルールが取得される。セキュリティルールは、Ｏ／Ｓ下位セキュリティエージェント、Ｏ／Ｓ内セキュリティエージェント及び／又はトリガイベントハンドラによりローカルに格納されてもよく、及び／又はプロテクションサーバなどにリモートに格納されてもよい。当該セキュリティルールは、ステップ４０１５〜４０４０における判定を行うのに利用されてもよい。
【０４３９】
ステップ４０１５において、システムコールを実行するための試行及び／又はシステムコールテーブルにアクセスするための試行がインターセプトされてもよい。いくつかの実施例では、システムコールを実行するための試行は、システムコールを実現するのに利用される制御トランスファ命令を実行するための試行をトラップすることによってインターセプトされてもよい。例えば、いくつかのプロセッサ及び／又はオペレーティングシステムは、ＳｙｓＥｎｔｅｒ及び／又はＫｉＦａｓｔＳｙｓＣａｌｌ命令などの制御トランスファ命令を用いてシステムコールを実現してもよく、システムコールを実行するための試行は、適切な制御トランスファ命令の実行をトラップすることによってインターセプトされてもよい。システムコールを実行するための試行はまた、特定の制御トランスファ命令が格納される物理メモリ位置に対応するバーチャルメモリページを実行するための試行をトラップすることによってインターセプトされてもよい。いくつかの実施例では、システムコールを実行するための試行は、システムコールのコードを含むメモリ位置のコードを実行するための試行をトラップすることによってインターセプトされてもよい。当該実施例では、トラップは、ＩＰレジスタの値に基づくものであってもよい。例えば、システムコールテーブル又はメモリマップは、システムコールのコードを含むメモリ位置を特定するため照会されてもよく、ＩＰレジスタが特定のシステムコールのメモリ位置のアドレスを含むとき、トラップが実行されてもよい。他の実施例では、システムコールを実行するための試行は、特定のシステムコールのコードが格納されうる物理メモリ位置に対応するバーチャルメモリページを実行するための試行をトラップすることによってインターセプトされてもよい。いくつかの実施例では、システムコールテーブルをリード又はライとするための試行がまたインターセプトされてもよい。当該実施例では、試行は、システムコールテーブルのメモリ位置にリード又はライトするのに利用される命令の実行をトラップすることによってインターセプトされてもよい。例えば、ｘ８６命令セットアーキテクチャ上で、ＭＯＶ命令は、システムコールテーブルのある位置のリード又はライトを行うのに利用されるとき、トラップされてもよい。システムコールテーブルをリード又はライトするための試行がまた、いくつかの実施例では、システムコールテーブルが格納されうる物理メモリ位置に対応するバーチャルメモリページにアクセスするための試行をトラップすることによって、インターセプトされてもよい。
【０４４０】
ステップ４０２０において、試行されたアクセスのソースが特定される。例えば、試行されたアクセスは、アプリケーション、ドライバ、Ｏ／Ｓ内セキュリティエージェント、オペレーティングシステム及び／又は他のソフトウェアエンティティからのものであってもよい。ステップ４０２５において、試行が認証されているか判断される。セキュリティルールは、特定の試行が認証されてもよいか否か判断するため、試行に関するコンテクスト情報と共に利用されてもよい。コンテクスト情報は、試行されたアクセスのソース及び／又は特定タイプのアクセスを含むものであってもよい。例えば、セキュリティルールは、オペレーティングシステムのみがシステムコールテーブルに書き込み可能であることを指定してもよい。他の例として、セキュリティルールは、エントリに関する署名されたドライバ又は他のソフトウェアコンポーネントが自らのエントリに書き込む可能であることを指定してもよい。試行が認証された場合、ステップ４０３０において、アクセスが許可される。試行が認証されていない場合、ステップ４０３５において、アクセスが拒絶される。最後に、ステップ４０４０において、試行が１以上のサブスクライバに報告されるべきか判断される。試行が報告されるべきか否かは、問題となっている特定のシステムコール及び試行されたアクセスに関するコンテクスト情報に依存するものであってもよい。セキュリティルールは、システムコールを実行するための試行及び／又はシステムコールテーブルにアクセスするための試行が１以上のサブスクライバに報告されるべき時点を指定してもよい。
【０４４１】
図４０からの方法のステップは、連続的、定期的、要求に応答して、及び／又はイベントのトリガに応答して電子デバイスをプロテクトするため、必要に応じて繰り返されてもよい。
【０４４２】
図４１は、電子デバイス４１０４上の悪意ある又は悪意の可能性のあるコードの規制及び制御のためのシステム４１００の実施例である。例えば、システム４１００は、電子デバイス４１０４上の自己修正コードの規制及び制御のため利用されてもよい。システム４１００は、検出から逃れるため、自らを自己修正するためのマルウェアによる試行に対してプロテクトするように電子デバイス４１０４上で動作するよう構成されるＯ／Ｓ下位セキュリティエージェント４１１６を有してもよい。他の例として、システム４１００は、電子デバイス４１０４上の悪意あるコードを修正するのに利用されてもよい。システム４１００は、検出されたマルウェアを無力化するため、悪意あるコードを修正するため電子デバイス４１０４上で動作するよう構成されるＯ／Ｓ下位セキュリティエージェント４１１６を有してもよい。さらなる例として、システム４１００は、悪意の可能性のあるコードを含みうるスレッドファミリを特定するため、スレッドをモニタ及び追跡するのに利用されてもよい。システム４１００は、スレッド間の関係をモニタ及び追跡するため電子デバイス４１０４上で動作するよう構成されるＯ／Ｓ下位セキュリティエージェント４１１６を有してもよい。
【０４４３】
さらに、Ｏ／Ｓ下位セキュリティエージェント４１１６は、何れの試行された処理をトラップするか、また当該トラップされた処理にどのように応答するかを決定するため、１以上のセキュリティルール４１２２を利用するよう構成されてもよい。Ｏ／Ｓ下位セキュリティエージェント４１１６は、許可、拒絶又はトラップされた処理について他の訂正アクションを実行するよう構成されてもよい。
【０４４４】
図４１に示されるように、電子デバイス４１０４は、メモリ４１０８に接続されるプロセッサ４１０６、オペレーティングシステム４１１２、Ｏ／Ｓ下位セキュリティエージェント４１１６及びセキュリティルール４１２２を有してもよい。電子デバイス４１０４は、図１の電子デバイス１０３、図２の電子デバイス２０４、図４の電子デバイス４０４、図７の電子デバイス７０１、図９の電子デバイス９０１、図１２の電子デバイス１２０１及び／又はこれらの何れかの組み合わせの機能により全体的若しくは部分的に実現されるか、又は当該機能を実現するよう構成されてもよい。プロセッサ４１０６は、図２のプロセッサ２０８、図４のプロセッサ４０８、図７のプロセッサ７０２、図９のプロセッサ９０２、図１２のプロセッサ１２０２及び／又はこれらの何れかの組み合わせの機能により全体的若しくは部分的に実現されるか、又は当該機能を実現するよう構成されてもよい。メモリ４１０８は、図２のメモリ２０６、図４のメモリ４０６、図７のメモリ７０３、図９のメモリ９０３、図１２の物理メモリ１２０３若しくは仮想化メモリ及び／又はこれらの何れかの組み合わせの機能により全体的若しくは部分的に実現されるか、又は当該機能を実現するよう構成されてもよい。オペレーティングシステム４１１２は、図１のオペレーティングシステム１１２、図２のオペレーティングシステム２１２、図４のオペレーティングシステム４１２、図７のオペレーティングシステム７１３、図９のオペレーティングシステム９１３、図１２のオペレーティングシステム１２１３及び／又はこれらの何れかの組み合わせの機能により全体的若しくは部分的に実現されるか、又は当該機能を実現するよう構成されてもよい。Ｏ／Ｓ下位セキュリティエージェント４１１６は、図１のＯ／Ｓ下位トラップエージェント１０４、図２のＳＶＭＭセキュリティエージェント２１７若しくはＳＶＭＭ２１６、図４のファームウェアセキュリティエージェント４４０、４４２、ＰＣファームウェアセキュリティエージェント４４４、図７のマイクロコードセキュリティエージェント７０８、図９のＯ／Ｓ下位トラップエージェント９２０、図１２のＯ／Ｓ下位セキュリティエージェント１２２０及び／又はこれらの何れかの組み合わせの機能により全体的若しくは部分的に実現されるか、又は当該機能を実現するよう構成されてもよい。セキュリティルール４１２２は、図１のセキュリティルール１１４、図２のセキュリティルール２２２、図４のセキュリティルール４３４、４３６、４３８、図５のセキュリティルール５１８、図７のセキュリティルール７０７、７２３、図９のセキュリティルール９０８、図１２のセキュリティルール１２０８及び／又はこれらの何れかの組み合わせの機能により全体的若しくは部分的に実現されるか、又は当該機能を実現するよう構成されてもよい。セキュリティルール４１２２は、何れか適切な方法により決定されてもよい（例えば、電子デバイス４１０４のユーザにより設定されたポリシー、電子デバイス４１０４を含む企業のアドミニストレータにより設定されたポリシー、Ｏ／Ｓ下位セキュリティエージェント４１１６の作成者により設定されたポリシーなど）。いくつかの実施例では、Ｏ／Ｓ下位セキュリティエージェント４１１６は、ネットワーク２４４を介しプロテクションサーバ２０２からセキュリティルール４１２２に対する更新又は修正をリクエスト及び／又は受信してもよい（マルウェアの定義に対する更新などのため）。
【０４４５】
オペレーティングシステム４１１２は、Ｏ／Ｓ内セキュリティエージェント４１１８を有してもよい。Ｏ／Ｓ内セキュリティエージェント４１１８は、図２のＯ／Ｓ内セキュリティエージェント２１８、図４のＯ／Ｓ内セキュリティエージェント４１８、図７のＯ／Ｓ内セキュリティエージェント７１８、図９のＯ／Ｓ内セキュリティエージェント９１９、図１２のＯ／Ｓ内セキュリティエージェント１２１９及び／又はこれらの何れかの組み合わせの機能により全体的若しくは部分的に実現されるか、又は当該機能を実現するよう構成されてもよい。
【０４４６】
図４１に示されるように、メモリ４１０８は、パーミッションフラグ４１３６及び履歴４１４０を有してもよい。パーミッションフラグ４１３６は、メモリ４１０８に格納されているコンテンツに関するパーミッションを決定するフラグ、変数又は他のデータを維持してもよい。例えば、パーミッションフラグ４１３６は、メモリ４１０８の特定の位置（ページ又はアドレスなど）について、電子デバイス４１０４上で実行されるエンティティが当該位置に格納されているコンテンツをリード、ライト及び／又は実行してもよい。いくつかの実施例では、パーミッションフラグ４１３６は、メモリ４１０８のページテーブルエントリ（ＰＴＥ）及び／又はページディレクトリエントリ（ＰＤＥ）に実現されてもよい。パーミションフラグ４１３６は、特定のメモリ位置（ページ又はアドレスレンジなど）に格納されてもよい。
【０４４７】
履歴４１４０は、トラップされた試行されたアクセスと、当該トラップされた試行されたアクセスに関する情報とを記録するためのログ、リスト、キャッシュ及び／又は他の適切なデータ構造を含むものであってもよい（例えば、試行されたアクセスのタイプ、トラップされた試行されたアクセスに関するメモリ位置など）。履歴４１４０への試行された悪意あるアクセスを介しＯ／Ｓ下位セキュリティエージェント４１１６の効果を回避するためマルウェアによる試行を阻止するため、履歴４１４０のコンテンツは、メモリをセキュアにするためここで開示された方法の１以上に従って試行されたアクセスからプロテクトされてもよい。例えば、Ｏ／Ｓ下位セキュリティエージェント４１１６は、Ｏ／Ｓ下位セキュリティエージェント４１１６以外のエンティティからの履歴４１４０があるメモリページ又はメモリアドレスレンジへの試行されたアクセスをトラップし、当該トラップされた試行されたアクセスを拒絶してもよい。
【０４４８】
上述されるように、Ｏ／Ｓ下位セキュリティエージェント４１１６は、セキュリティルール４１２２に基づき悪意あるコードの存在を検出してもよい。Ｏ／Ｓ下位セキュリティエージェント４１１６は、上述されるような何れかの方法を介し、及び／又は他の何れか適切な方法により悪意あるコードの存在を検出してもよい。例えば、Ｏ／Ｓ下位セキュリティエージェント４１１６は、メモリ４１０８又は電子デバイス４１０４の他のリソースへのアクセスをトラップすることによって、悪意あるコードの存在を検出してもよい。他の例として、Ｏ／Ｓ下位セキュリティエージェント４１１６は、悪意あるコードについてメモリ４１０８及び／又はストレージ４１２６のページをスキャンすることによって、悪意あるコードの存在を検出してもよい。さらなる例として、Ｏ／Ｓ下位セキュリティエージェント４１１６は、Ｏ／Ｓ内セキュリティエージェント４１１８が悪意あるコードの存在を検出したという通信をＯ／Ｓ内セキュリティエージェント４１１８から受信することによって、メモリにおける悪意あるコードの存在を検出してもよい。
【０４４９】
特に、Ｏ／Ｓ下位セキュリティエージェント４１１６は、セキュリティルール４１２２に基づき、個別に又はまとめて自己修正したマルウェアの存在を示すメモリへの１以上の試行されたアクセスに対してトラップしてもよい。例えば、パーミッションフラグ４１３６に示されるようなメモリの位置のパーミッションへの変更は（例えば、リードからリード／ライト、リード／ライトからリード／ライト／実行など）、マルウェアの存在を示す可能性がある（例えば、他の試行されたメモリアクセスと個別に又はまとめて）。従って、Ｏ／Ｓ下位セキュリティエージェント４１１６は、パーミッションフラグ４１３６に対する検出された変更に応答してトラップしてもよい。例えば、いくつかの実施例では、Ｏ／Ｓ下位セキュリティエージェント４１１６は、セキュリティルール４１２２に従ってパーミッションフラグ４１３６を含むメモリ４１０６の位置（ページ又はアドレスなど）への試行されたアクセスに対してトラップしてもよい。同じ又は他の実施例では、Ｏ／Ｓ下位セキュリティエージェント４１１６は、セキュリティルール４１２２に従ってオペレーティングシステム４１１２の対応するパーミッションフラグを有するメモリ４１０８（例えば、ＮＴＰｒｏｔｅｃｔＶｉｒｔｕａｌＭｅｍｏｒｙ、ＺｗＰｒｏｔｅｃｔＶｉｒｔｕａｌＭｅｍｏｒｙ、ＰｒｏｔｅｃｔＶｉｒｔｕａｌＭｅｍｏｒｙ、及び／又はＷｉｎｄｏｗｓＴＭの他の適切なフラグなど）のメモリパーミッション（例えば、ＭｉＳｅｔＰｒｏｔｅｃｔｉｏｎＯｎＳｅｃｔｉｏｎ、ＡｌｌｏｃａｔｅＶｉｒｔｕａｌＭｅｍｏｒｙ（）、ＭｉＰｒｏｔｅｃｔＶｉｒｔｕａｌＭｅｍｏｒｙ（）、及び／又はＷｉｎｄｏｗｓＴＭの他の適切なファンクションコールなど）及び／又は位置（ページ又はアドレスなど）を修正するためオペレーティングシステム４１１２のコール及び／又はファンクションを含むメモリ４１０８の位置（ページ又はアドレスなど）に対する試行されたアクセスに対してトラップしてもよい。
【０４５０】
他の例として、メモリ４１０６のある位置から他の位置へのコンテンツのコピーは、マルウェアの存在を示すものであるかもしれない（個別に又は他の試行されたメモリアクセスと一緒になど）。従って、Ｏ／Ｓ下位セキュリティエージェント４１１６は、メモリ位置の間のコンテンツのコピーに関する試行されたアクセスに対してトラップしてもよい。例えば、いくつかの実施例では、Ｏ／Ｓ下位セキュリティエージェント４１１６は、セキュリティルール４１２２に従ってメモリのある位置から他の位置へのコンテンツのコピーのためのプロセッサファンクションに対してトラップしてもよい。同じ又は他の実施例では、Ｏ／Ｓ下位セキュリティエージェント４１１６は、セキュリティルール４１２２に従って、ＷｉｎｄｏｗｓＴＭのＭｅｍＵＩＣｏｐｙファンクションなどの、データをコピーするためのオペレーティングシステム４１１２のコール及び／又はファンクションを含むメモリ４１０８の位置（ページ又はアドレスなど）への試行されたアクセスに対してトラップしてもよい。
【０４５１】
さらなる例として、メモリ４１０６に格納されているコンテンツの修正又は“ｗｒｉｔｉｎｇ−ｉｎ−ｐｌａｃｅ”は、マルウェアの存在を示す可能性がある（個別に又は他の試行されたメモリアクセスと一緒になど）。従って、Ｏ／Ｓ下位セキュリティエージェント４１１６は、メモリ４１０８のコンテンツのｗｒｉｔｉｎｇ−ｉｎ−ｐｌａｃｅに関する試行されたアクセスに対してトラップしてもよい。例えば、いくつかの実施例では、Ｏ／Ｓ下位セキュリティエージェント４１１６は、セキュリティルール４１２２に従ってメモリ４１０８の所定の位置のコンテンツを修正するプロセッサファンクションに対してトラップしてもよい。同じ又は他の実施例では、Ｏ／Ｓ下位セキュリティエージェント４１１６は、セキュリティルール４１２２に従って所定の位置のコンテンツを修正するため、オペレーティングシステム４１１２のコール及び／又はファンクションを含むメモリ４１０８の位置（ページ又はアドレスなど）への試行されたアクセスに対してトラップしてもよい。
【０４５２】
さらなる例として、メモリに格納されるコピー又は修正されたコンテンツの実行は、マルウェアの存在を示す可能性がある（個別に又は他の試行されたメモリアクセスと一緒になど）。従って、Ｏ／Ｓ下位セキュリティエージェント４１１６は、メモリ４１０８のコンテンツの実行に関する試行されたアクセスに対してトラップしてもよい。例えば、いくつかの実施例では、Ｏ／Ｓ下位セキュリティエージェント４１１６は、セキュリティルール４１２２に従って、メモリ４１０８のコンテンツを実行するためプロセッサファンクションに対してトラップしてもよい。同一の又は他の実施例では、Ｏ／Ｓ下位セキュリティエージェント４１１６は、セキュリティルール４１２２に従ってコンテンツを実行するためのオペレーティングシステム４１１２のコール及び／又はファンクションを含むメモリ４１０８の位置（ページ又はアドレスなど）への試行されたアクセスに対してトラップしてもよい。
【０４５３】
さらなる例として、メモリへのコンテンツのロードは、マルウェアの存在を示す可能性がある（個別に又は他の試行されたメモリアクセスと一緒になど）。従って、Ｏ／Ｓ下位セキュリティエージェント４１１６は、メモリ４１０８へのコードのロードに関する試行されたアクセスに対してトラップしてもよい。例えば、いくつかの実施例では、Ｏ／Ｓ下位セキュリティエージェント４１１６は、セキュリティルール４１２２に従ってメモリ４１０８にコードをロードするためのプロセッサファンクション又はシステムファンクションに対してトラップしてもよい。Ｏ／Ｓ下位セキュリティエージェント４１１６は、オペレーティングシステムローダの使用など、メモリ４１０８にコードをロードするための安全な又は標準的な方法を決定するよう構成されてもよい。当該安全な又は標準的な方法は、オペレーティングシステム４１１２により実行されるロジック又はステップが知られてもよいように、ベンチマーク又はマッピングされてもよい。メモリ４１０８にコードをロードするための試行をトラップすると、Ｏ／Ｓ下位セキュリティエージェント４１１６は、当該試行がコードをロードするための既知の方法に一致するか判断してもよい。例えば、当該試行がメモリのすでに割り当てられた部分へのコードのロードに関するものであり、メモリへの直接的なライトによりオペレーティングシステムローダをバイパスすることにより実行するよう試みる場合、当該試行は悪意あると判断される可能性がある。
【０４５４】
コードを含むページ又はメモリレンジが修正された場合、Ｏ／Ｓ下位セキュリティエージェント４１１６は、当該修正を追跡するよう構成されてもよい。修正されたコードの以降の処理は、実行に進捗することが許可される場合、追跡及び記録されてもよい。しかしながら、Ｏ／Ｓ下位セキュリティエージェント４１１６は、例えば、他のカーネルモードエンティティ又はオペレーティングシステムを含むメモリである特権位置へのアクセスに対する修正されたコードにより試行をトラップ及び拒絶するなどによって、当該コードにより少ない特権を提供してもよい。修正されたコードのマルウェアステータスは未知である可能性があり、それが安全であると最終的に決定されるまで、Ｏ／Ｓ下位セキュリティエージェント４１１６は、カーネルファンクション又はルーチンへの修正されたコードアクセスを拒絶してもよい。
【０４５５】
Ｏ／Ｓ下位セキュリティエージェント４１１６は、履歴４１４０の１以上のトラップされた試行されたアクセスに関する情報を記録してもよい。時々、Ｏ／Ｓ下位セキュリティエージェント４１１６は、特定のメモリ位置に関して疑わしい動作が発生したか判断するため、履歴４１４０を解析してもよい。その解析中、Ｏ／Ｓ下位セキュリティエージェント４１１６は、履歴４１４０に実現されるような特定のメモリ位置の動作が、自己修正したマルウェアコードの存在の可能性を示しうる疑わしい動作を示すか判断するため、ルール４１２２を照会してもよい。例えば、履歴４１４０の解析が、第１メモリ位置のコンテンツが第２位置にコピーされ、第２位置で修正され、第２位置のコンテンツの試行された実行が行われたことを示す場合、当該表示は、自己修正するマルウェアコードの存在の可能性の証拠である可能性がある。他の例として、履歴４１４０の解析が、第３位置において共通の祖先（ａｎｃｅｓｔｏｒ）をそれぞれが有する第１及び第２メモリ位置の各コンテンツが試行された実行のターゲットであった場合、当該表示は、自己修正したマルウェアコードの存在の可能性の証拠である可能性がある。さらなる例として、履歴４１４０の解析が、特定の守り位置のコンテンツが他の複数のメモリ位置において祖先を有知ることを示す場合、当該表示は、自己修正したマルウェアコードの存在の可能性の証拠である可能性がある。さらに、履歴４１４０は、階層におけるレベルとエンティティとの間で行われる修正を記録してもよい。
【０４５６】
ここで用いられる特定のメモリ位置におけるコンテンツとは、他のメモリ位置におけるコンテンツが当該特定のメモリ位置のコンテンツのコピー又は修正版である場合、他のメモリ位置におけるコンテンツの“祖先”であり、他のメモリ位置におけるコンテンツが特定のメモリアドレスにおけるコンテンツに加えて、１以上の中間的な祖先の派生したものであるケースを含む。
【０４５７】
履歴４１４０の当該記録は、すべてのメモリ位置に適用される場合、電子デバイス４１０４の処理リソースのかなりの部分を使用する可能性があるため、Ｏ／Ｓ下位セキュリティエージェント４１１６は、特定のメモリ位置がマルウェアの影響を受けることを示す試行されたアクセスの発生に応答して、特定のメモリ位置についてのみ履歴４１４０を記録してもよい。例えば、Ｏ／Ｓ下位セキュリティエージェント４１１６は、特定のメモリ位置に対するパーミッション（パーミッションフラグ４１３６により実現される）の修正をトラップすると、特定のメモリ一日手履歴４１４０の記録を始めてもよい。
【０４５８】
さらに、疑わしい動作が発生したか判断するための履歴４１４０の解析は、すべてのメモリ位置及び／又は試行されたアクセスに適用される場合、電子デバイス４１０４の処理リソースのかなりの部分を消費しうるため、Ｏ／Ｓ下位セキュリティエージェント４１１６は、特定のメモリ位置に関する特定のトラップされた試行されたアクセスの発生に応答して、特定のメモリ位置に関してのみ履歴を解析してもよい。例えば、いくつかの実施例では、Ｏ／Ｓ下位セキュリティエージェント４１１６は、特定のメモリ位置におけるコンテンツへの試行されたアクセスをトラップすることに応答して、特定のメモリ位置に関する履歴４１４０の解析を開始してもよい。
【０４５９】
特定の実施例では、単一のトラップされた試行されたアクセスの発生は、履歴４１４０の解析なく疑わしい動作を示す可能性がある。例えば、パーミッションフラグ４１３６に示されるような特定のメモリ位置のパーミッションの変更は（例えば、リードからリード／ライト、又はリード／ライトからリード／ライト／実行など）、マルウェアの存在を示す可能性がある。例えば、オペレーティングシステムカーネル又はセキュリティアプリケーションを格納するメモリ位置に対するパーミッションの変更は、マルウェアの存在の可能性を示す疑わしい動作を示す可能性がある。
【０４６０】
Ｏ／Ｓ下位セキュリティエージェント４１１６が、マルウェアの存在の可能性を示す疑わしい動作を検出した場合（例えば履歴４１４０の解析又は単一のトラップされた試行されたアクセスなどに基づき）、Ｏ／Ｓ下位セキュリティエージェント４１１６は、訂正アクションを開始してもよい（例えば、セキュリティルール４１２２などに従って）。例えば、いくつかの実施例では、Ｏ／Ｓ下位セキュリティエージェント４１１６は、疑わしい動作を検出すると、検出された疑わしい動作に関する特定のメモリ位置に格納されているコンテンツと既知のマルウェア及び／又は既知の信頼された／真正のプロセスとを比較し、コンテンツが悪意あるか判断してもよい。当該比較は、コンテンツのハッシュ、フィンガープリント又はシグネチャと既知のプロセスのハッシュ、フィンガープリント又はシグネチャとを比較することによって実行されてもよい。
【０４６１】
あるいは又はさらに、Ｏ／Ｓ下位セキュリティエージェント４１１６が、マルウェアの存在の可能性を示す疑わしい動作を検出した場合（例えば、単一のトラップされた試行されたアクセス又は履歴４１４０の解析などに基づき）、Ｏ／Ｓ下位セキュリティエージェント４１１６は、以降の解析のためプロテクションサーバ２０２に疑わしい動作に関するフォレンジックな証拠を報告してもよい（例えば、メモリ位置に関する履歴４１４０、メモリ位置のコンテンツなど）。いくつかの実施例では、プロテクションサーバ２０２は、コンテンツに関するシグネチャ（ハッシュ又はフィンガープリントなど）を生成し、シグネチャに関するポリシー又はブラックリストエントリを生成し、他の電子デバイス上で実行されるセキュリティエージェントに当該情報を通信してもよい。同一の又は他の実施例では、プロテクションサーバ２０２はさらに、疑わしい動作が実際にマルウェアを示すか判断するため、疑わしい動作を解析し（他の電子デバイスから受信したフォレンジックエビデンスと共に）、マルウェアを示す場合、同様の動作がマルウェアの存在の証拠であるか否かに関する命令を電子デバイスに通信してもよい（例えば、セキュリティルール４１２２の形態などにより）。
【０４６２】
Ｏ／Ｓ下位セキュリティエージェント４１１６が、疑わしい動作に関するメモリ位置のコンテンツが悪意あると判断した場合（例えば、コンテンツと既知のプロセスとの比較、プロテクションサーバ２０２から受信した情報、セキュリティルール４１２２への参照、及び／又は他の判断などにより）、Ｏ／Ｓ下位セキュリティエージェント４１１６は、さらなる訂正アクションを実行してもよい（セキュリティルール４１２２などに従って）。当該訂正アクションは、限定することなく、コンテンツの実行の不許可、コンテンツに対する変更の不実行（履歴４１４０に示されるコンテンツの修正及びコピーなど）、コンテンツの修復、コンテンツと無害なコンテンツとの置換、及び／又はコンテンツに関するプロセスの非イネーブル化を含むものであってもよい。
【０４６３】
上述された各種実施例では、セキュリティルール４１２２及びメモリ４１０８の特定部分に適用されたプロテクションは、コンテンツがメモリ４１０８の異なる部分の間で転送されるとき、推移的に適用されてもよい。従って、例えば、セキュリティルール４１２２の特定のセットがメモリ４１０８の特定部分のコンテンツに適用される場合、当該コンテンツのメモリ４１０８の他の部分への移転に応答して、Ｏ／Ｓ下位セキュリティエージェント４１１６は、メモリ４１０８のデスティネーション部分に適用するセキュリティルール４１２２を更新してもよい。
【０４６４】
上述されるように、Ｏ／Ｓ下位セキュリティエージェント４１１６は、セキュリティルール４１２２に基づき、悪意あるコードの存在を検出してもよい。Ｏ／Ｓ下位セキュリティエージェント４１１６は、上述されたような何れかの方法を介し及び／又は他の何れか適切な方法により悪意あるコードの存在を検出してもよい。例えば、Ｏ／Ｓ下位セキュリティエージェント４１１６は、メモリ４１０８又は電子デバイス４１０４の他のリソースへのアクセスをトラップすることによって、悪意あるコードの存在を検出してもよい。他の例として、Ｏ／Ｓ下位セキュリティエージェント４１１６は、悪意あるコードについてメモリ４１０８及び／又はストレージ４１２６のページをスキャンすることによって、悪意あるコードの存在を検出してもよい。さらなる例として、Ｏ／Ｓ下位セキュリティエージェント４１１６は、Ｏ／Ｓ内セキュリティエージェント４１１８が悪意あるコードの存在を検出したという通信をＯ／Ｓ内セキュリティエージェント４１１８から受信することによって、メモリにおける悪意あるコードの存在を検出してもよい。
【０４６５】
電子デバイス４１０４上の悪意あるコードの検出に応答して（当該コードが自己修正コード又は他の悪意あるコードであるか）、Ｏ／Ｓ下位セキュリティエージェント４１１６は、悪意あるコードの修正を含む訂正アクションを実行してもよい。ここで用いられる悪意あるコードの“修正”とは、限定することなく、メモリ４１０８において実現されるような悪意あるコードの修正、ストレージ４１２６において実現されるような悪意あるコードの修正、及び／又はメモリ４１０８及び電子デバイス４１０４の他のリソースへの悪意あるコードのアクセスの修正を含むものであってもよい。悪意あるコードの修正は、悪意あるコードを含むメモリ４１０８の部分（ページなど）がマルウェア又は感染を認識していないプログラムに属する可能性があるため、効果的である。例えば、当該悪意あるコードは、ワープロドキュメント、オペレーティングシステムカーネルの一部又はマルウェア自体に実現される可能性がある。
【０４６６】
メモリ４１０８に実現されるような悪意あるコードの修正では、Ｏ／Ｓ下位セキュリティエージェント４１１６は、悪意あるコードを含むプログラムが自己終了するか、及び／又は悪意あるコードを無力化する信頼されたコードに実行を移転するように、悪意あるコードを修正してもよい（例えば、悪意あるコードセグメントに関するスレッド又はプロセスに関するすべてのコード及びデータを削除することなどによって）、例えば、Ｏ／Ｓ下位セキュリティエージェント４１１６は、悪意あるコードの実行が最終的に終了するように、オペレーティングシステム４１１２の“イグジット”ファンクションへのコールをメモリ４１０８の悪意あるコードに挿入してもよい。他の例として、Ｏ／Ｓ下位セキュリティエージェント４１１６は、悪意あるコードを無力化するコードの既知の信頼された部分を格納したメモリ４１０８の他の部分への悪意あるコードの実行のリダイレクトする命令（ＪＵＭＰ命令など）をメモリ４１０８の悪意あるコードに挿入してもよい（例えば、悪意あるコードセグメントに関するスレッド又はプロセスに関するすべてのコード及びデータの消去などによって）。さらなる例として、悪意あるコードが現在実行されている場合、Ｏ／Ｓ下位セキュリティエージェント４１１６は、実行の制御を悪意あるコードを無力化するコードの既知の信頼された部分に移転させるため、メモリ４１０８の命令ポインタ値を変更してもよい（例えば、悪意あるコードセグメントに関するスレッド又はプロセスに関するすべてのコード及びデータを消去するなどによって）。
【０４６７】
いくつかのインスタンスでは、悪意あるコードにより実現される悪意あるプロセスを単に終了することは、望ましくないかもしれない。例えば、削除又は終了が望ましくない副次的効果を有する可能性のあるオペレーティングシステムの感染部分からの信頼されたアプリケーションについて、終了及び削除は不適切であるかもしれない。従って、Ｏ／Ｓ下位セキュリティエージェント４１１６は、悪意あるコードが修復されるように悪意あるコードを修正し、感染したアプリケーションが感染がなかったかのように効果的に実行することを可能にする。例えば、Ｏ／Ｓ下位セキュリティエージェント４１１６は、既知の又は信頼されたコードにより悪意あるコードを置換してもよい。特定の例として、オペレーティングシステムの既知の部分が特定のメモリページにおいて感染している場合、Ｏ／Ｓ下位セキュリティエージェント４１１６は、オペレーティングシステムの当該部分の既知のコードによって、特定のメモリページを上書きしてもよい。一実施例では、Ｏ／Ｓ下位セキュリティエージェント４１１６は、プロテクションサーバから置換ページを取得してもよい。当該置換ページは、要求に応答して生成されてもよいし、又はオペレーティングシステムコンポーネント、ドライバ又は他のモジュールの既知の部分を置換するよう構成されてもよい。あるいは、Ｏ／Ｓ下位セキュリティエージェント４１１６は、実行が他のメモリ位置の感染したコードの復元されたバージョンにより継続されるように、メモリ４１０８の命令ポインタを修正してもよい。
【０４６８】
ストレージ４１２６において実現されるような悪意あるコードの修正では、悪意あるコードを変更又は削除してもよい。例えば、メモリ４１０８とストレージ４１２６との間のコンテンツの移転についてトラップすることによって、Ｏ／Ｓ下位セキュリティエージェント４１１６は、メモリ４１０８に格納されているコンテンツとストレージ３１２６に格納されている対応するコンテンツとの関係に関する情報をログ、リスト、キャッシュ又は他のデータ構造に収集及び格納してもよい。従って、Ｏ／Ｓ下位セキュリティエージェント４１１６がメモリ４１０８において悪意あるコードを特定した場合、それは、メモリ４１０８に格納されるコンテンツとストレージ４１２６に格納される対応するコンテンツとの関係に関する収集された情報を参照し、悪意あるコードを有するメモリ４１０８の位置に対応するストレージ４１２６の位置においてコンテンツを修正してもよい。当該修正は、限定することなく、ストレージ４１２６における対応するコンテンツの削除、又はストレージ４１２６及び／又はメモリ４１０８における悪意あるコードの自己終了又は削除を生じさせるコンテンツの修正を含むものであってもよい。
【０４６９】
メモリ４１０８及び電子デバイス４１０４の他のリソースへの悪意あるコードのアクセスを修正する際、Ｏ／Ｓ下位セキュリティエージェント４１１６は、悪意あるコードセグメントのメモリ４１０８又は電子デバイス４１０４の他のリソースへのアクセスを拒絶してもよい。メモリ４１０８及び他のリソースの拒絶は、悪意あるコードを含むプロセスをクラッシュ又は無効にする可能性がある。例えば、悪意あるコードが特定されると、Ｏ／Ｓ下位セキュリティエージェント４１１６は、電子デバイス４１０４のメモリ４１０８又はリソースへの悪意あるコードを含むプロセスによる試行されたアクセスに対してトラップし、当該アクセスを拒絶してもよい。
【０４７０】
上述された修正技術のいくつかに従って、Ｏ／Ｓ下位セキュリティエージェント４１１６は、悪意あるコードを手つかずにしたまま、悪意あるコードを無力化してもよい。当該シナリオでは、Ｏ／Ｓ下位セキュリティエージェントは、さらなる解析のため悪意あるコードを隔離し、フォレンジックエビデンスとしてプロテクションサーバ２０２に転送してもよい。プロテクションサーバ２０２は、その後、悪意あるコードに関するシグネチャ（ハッシュ又はフィンガープリントなど）を生成し、シグネチャに関するポリシー又はブラックリストエントリを生成し、他の電子デバイス上で実行されるセキュリティエージェントに当該情報を通信してもよい。
【０４７１】
いくつかの実施例では、メモリ４１０８の特定部分に存在する悪意あるコードの特定は、Ｏ／Ｓ下位セキュリティエージェント４１１６が悪意あるコードを有するメモリ４１０８の他の部分を特定することを可能にしてもよい。例えば、マルウェア的動作を示すスレッドを検出すると、Ｏ／Ｓ下位セキュリティエージェント４１１６は、当該スレッドの実行アドレス及び／又は悪意あるコードのメモリページ内の位置を決定してもよい。バーチャルメモリ構成では、アプリケーションコードは連続的にリストされ、物理メモリでは、アプリケーションコードは実質的に不連続であってもよい。従って、メモリ４１０８の物理メモリアドレスとストレージ４１２６のバーチャルメモリアドレスとの間のオペレーティングシステムにより維持されるマッピングを利用することによって、Ｏ／Ｓ下位セキュリティエージェント４１１６は、悪意あるコードを含む特定された悪意あるコードに連続するバーチャルメモリの部分を特定し、当該バーチャルメモリ部分を感染している可能性のある物理メモリアドレスにマッピングしてもよい。従って、当該物理メモリアドレスにおけるコードの実行はさらに、悪意あるコードの存在についてＯ／Ｓ下位セキュリティエージェントによりモニタされてもよい。
【０４７２】
さらに、Ｏ／Ｓ下位セキュリティエージェント４１１６はまた、スレッドによるリソースの実行及び／又は使用に関するアクティビティをモニタし、当該モニタリングに基づき各種スレッド間の関係を決定するよう構成されてもよい。従って、特定のスレッドが悪意あると特定されると、Ｏ／Ｓ下位セキュリティエージェント４１１６は、悪意あるスレッドに関するスレッドを決定し（例えば、祖先スレッド、子孫スレッド、兄弟スレッドなど）、悪意あるスレッドに加えて関連するスレッドに関して訂正アクションを実行してもよい。
【０４７３】
当該モニタリング及び追跡を実行するため、Ｏ／Ｓ下位セキュリティエージェント４１１６は、メモリ４１０８、ストレージ４１２６、ネットワーク２４４及び／又は電子デバイス４１０４の他のリソースへのアクセスをモニタし、スレッドによりリソースの利用及び／又はスレッドの実行に関するオペレーティングシステムサービス、コール及び／又はファンクションをモニタし、及び／又は疑わしい動作を検出するためここに開示される技術の１以上を利用してもよい。例えば、Ｏ／Ｓ下位セキュリティエージェント４１１６は、メモリ４１０８、ストレージ４１２６及び／又は電子デバイス４１０４の他のコンポーネントにおけるリード、ライト及び／又は実行コードへの試行されたアクセス、パーミッションフラグ４１３６に対する試行された変更、及び／又は疑わしい動作を示し、履歴４１４０への試行されたアクセスに関する情報を記録する他の試行されたアクセス（個別に又は他のメモリアクセスと一緒に）をトラップするため、図１２のＯ／Ｓ下位セキュリティエージェント４１１６の機能を実現してもよい（例えば、セキュリティルール４１２２に基づき）。
【０４７４】
さらなる例として、Ｏ／Ｓ下位セキュリティエージェント４１１６は、疑わしい動作を示すスレッドによりリソースの利用及び／又はスレッドの実行に関する試行されたオペレーティングシステムサービス、コール及び／又はファンクションをトラップし（セキュリティルールなどに基づき）、履歴４１４０への試行されたアクセスに関する情報を記録するため、Ｏ／Ｓ下位セキュリティエージェント７１２、マイクロコードセキュリティエージェント７０８及び／又はＯ／Ｓ下位トラップエージェント９２０の機能を実現してもよい。さらに、いくつかの実施例では、Ｏ／Ｓ内セキュリティエージェント４１１８は、疑わしい動作を示すスレッドによりリソースの利用及びスレッドの実行に対するオペレーティングシステム４１１２のユーザ又はカーネルモードファンクションに対してトラップし、履歴４１４０への試行されたアクセスに関する情報を記録し、及び／又はＯ／Ｓ下位セキュリティエージェント４１１６に当該情報を通信するよう構成されてもよい。
【０４７５】
スレッド間の関係を決定するため、Ｏ／Ｓ下位セキュリティエージェント４１１６は、メモリの観点からオペレーティングシステムのスレッド同期オブジェクトへの試行されたアクセスをモニタしてもよい。説明のため、初期的なスレッドは、第２スレッドを生成し、その後、初期的なスレッドは終了しながら第２スレッドは処理を開始する（プロセスのメインスレッドになる）。他の例では、スレッドは、プロセス間通信（ＩＰＣ）コールを介し互いに生成、終了又はサスペンドするよう動作してもよい。従って、スレッドは、複数のプロセスを発生差し、１つのプロセスのスレッドは、生成、終了又はサスペンドする他のプロセスにおけるスレッドに対するＩＰＣコールを実行してもよい。Ｏ／Ｓ内セキュリティエージェント４１１８は、当該ＩＰＣコールを開始するため、オペレーティングシステムコール（例えば、ＷｉｎｄｏｗｓＴＭの実施例では、ＮＴＣｒｅａｔｅＴｈｒｅａｄ、ＮＴＳｕｓｐｅｎｄＴｈｒｅａｄ、又はＮＴＴｅｒｍｉｎａｔｅＴｈｒｅａｄなどのコール）に対してトラップすることによって、ＩＰＣコールを追跡してもよい。
【０４７６】
しかしながら、Ｏ／Ｓ内セキュリティエージェントを利用したＩＰＣコールに対するトラップは、マルウェアにより危険にさらされるか、又は回避されてもよい。従って、Ｏ／Ｓ下位セキュリティエージェント４１１８は、ＩＰＣコールの開始に関するメモリ又はプロセッサリソースへの試行されたアクセスに対してトラップすることによって、試行されたアクセスをモニタしてもよい。例えば、Ｏ／Ｓ下位セキュリティエージェント４１１６は、ＩＰＣコールの開始に関するプロセッサリソースへの試行されたアクセスをトラップするため、図９のＯ／Ｓ下位トラップエージェント９２０の機能を実現してもよい。他の例として、Ｏ／Ｓ下位セキュリティエージェント４１１６は、当該ＩＰＣコールの実行可能コードが格納されるメモリ位置（ページ又はアドレスなど）への試行されたアクセスをトラップするため、図１２のＯ／Ｓ下位セキュリティエージェント１２２０の機能を実現する。ＩＰＣコールに関するイベントによるトラップによって、Ｏ／Ｓ下位セキュリティエージェント４１１６は、履歴９４０に当該イベントに関する情報（スレッド識別子など）を記録してもよい。
【０４７７】
ＩＰＣコールに関するスレッドを特定するため、Ｏ／Ｓ下位セキュリティエージェント４１１６は、特定のスレッドに関する情報を取得する１以上のプロセッサリソース（例えば、システムリソース７２４として図７に特定されたものなど）にアクセスしてもよい。例えば、ＷｉｎｄｏｗｓＴＭオペレーティングシステムで実行されるスレッドについて、プロセッサレジスタ（ＦＳレジスタなど）は、プロセッサ制御ブロック（ＰＣＢ）と呼ばれる各プロセッサのメモリにおける構造を指し示してもよい。ＰＣＢは、スケジューリングされたスレッドのＥＴＨＲＥＡＤリストと共に、プロセッサ上で現在実行されているスレッドのＥＴＨＲＥＡＤデータ構造を含むプロセッサ上のスレッドを管理するため、スレッドスケジューラにより利用される情報を含む。スレッドに関するＥＴＨＲＥＡＤデータ構造は、スレッドの識別子を含むいくつかのメタデータフィールドを含むものであってもよい。従って、Ｏ／Ｓ下位セキュリティエージェント４１１６は、ＷｉｎｄｏｗｓＴＭにセキュリティを適用する際、プロセッサのＰＣＢのメモリ位置を決定するため、プロセッサリソースの情報にアクセスし、特定のスレッドについてＥＴＨＲＥＡＤ情報を取得するため、ＰＣＢにアクセスしてもよい。
【０４７８】
ＩＰＣコールに関する履歴４１４０に格納されている情報に基づき、Ｏ／Ｓ下位セキュリティエージェント４１１６は、各種スレッド間の関係を決定するため、履歴４１４０を解析してもよい。それの解析中、Ｏ／Ｓ下位セキュリティエージェント４１１６は、履歴４１４０に示されるスレッド動作が２以上のスレッド間の関係を示すか判断するため、ルール４１２２を照会してもよい。他方、特定のスレッド又はそれのホストアプリケーションが悪意あると判断された場合、Ｏ／Ｓ下位セキュリティエージェント４１１６は、特定のスレッドに関する１以上のスレッドを決定し、当該関連するスレッドに関して訂正アクションを実行することが可能であってもよい。例えば、訂正アクションは、当該関連するスレッドが悪意あるコードを含むか判断するため、Ｏ／Ｓ下位セキュリティエージェント４１１６が当該スレッドを調査、スキャン及び／又は解析することを含むものであってもよい（例えば、本明細書の何れで記載された１以上の技術を利用するなど）。さらなる例として、訂正アクションは、Ｏ／Ｓ下位セキュリティエージェント４１１６がさらなる解析のため特定のスレッド及びそれの関連するスレッドに関するフォレンジックエビデンスをプロテクションサーバ２０２に通信することを含むものであってもよい。プロテクションサーバ２０２は、当該情報を解析し、実行されるべき何れか追加的な訂正アクションに関する命令を電子デバイス４１０４に通信してもよい（セキュリティルール４１２２の形態などにより）、さらなる例として、Ｏ／Ｓ下位セキュリティエージェント４１１６は、悪意あるスレッドを含むメモリの部分を修復することを試みてもよい（ページ、メモリアドレスなど）。
【０４７９】
当該修復を実行するため、Ｏ／Ｓ下位セキュリティエージェント４１１６は、時々メモリ４１０６のスナップショット又はその特定部分（オペレーティングシステム、セキュリティアプリケーション又は重要なドライバを格納したメモリ部分など）を生成し、当該スナップショットを（履歴４１４０などに）格納してもよい。スナップショットは、スナップショットの日時、スナップショットに関するエンティティ（オペレーティングシステム、アプリケーション又はドライバなど）、メモリページに関するスレッド識別子、バーチャルメモリのメモリのアドレス位置などのコンテクスト情報と共に格納されてもよい。悪意あるスレッド又はスレッドファミリが特定された場合、当該スレッドを含むメモリ部分が、スナップショットに関するコンテクスト情報に少なくとも部分的に基づき、悪意あるスレッドを有するメモリ部分を適切なスナップショットにより置換することによって修復されてもよい。いくつかの実施例では、Ｏ／Ｓ下位セキュリティエージェント４１１６はまた、マルウェアの検出に応答したスナップショットの改訂が正当な変更を取り消さないように、スナップショットの生成後にメモリ位置に信頼されたエンティティにより行われた変更を記録してもよい（履歴４１４０に）。
【０４８０】
関連するスレッドとスレッドによる悪意の可能性のある動作のモニタリングは、すべてのスレッドに適用された場合、電子デバイスの処理リソースのかなりの部分を消費するため、Ｏ／Ｓ下位セキュリティエージェント４１１６は、特定のメモリ位置がマルウェアの影響を受け、及び／又は特定のメモリが重要なコード又はデータを格納していることを示す試行されたアクセスの発生にのみ応答して、当該モニタリングを実行してもよい（オペレーティングシステム又はセキュリティアプリケーションなど）、例えば、Ｏ／Ｓ下位セキュリティエージェント４１１６は、（パーミッションフラグ４１３６において実現されるような）特定のメモリ位置のパーミッションの変更をトラップすると、特定のメモリ位置のついてスレッド動作とスレッド関係とのモニタリングを開始してもよい。
【０４８１】
図４２は、電子デバイス上の自己修正コードの規制及び制御のための方法４２００の実施例である。ステップ４２０５において、Ｏ／Ｓ下位セキュリティエージェントは、メモリへの試行されたアクセスに対してトラップしてもよく、当該試行されたアクセスのそれぞれは、個別に又はまとめて自己修正マルウェアの存在を示すものであってもよい。トラップされる試行されたアクセスは、セキュリティルールに従って決定されてもよい。マルウェアの可能性を示す試行されたアクセスは、限定することなく、メモリパーミッションへの変更、あるメモリ位置のコンテンツの他のメモリ位置へのコピー、メモリ位置のコンテンツの修正及びメモリ位置の実行を含むものであってもよい。
【０４８２】
ステップ４２１０において、Ｏ／Ｓ下位セキュリティエージェントは、履歴にトラップされる試行されたアクセスに関する情報を記録してもよい（例えば、試行されたアクセスのタイプ、トラップされる試行されたアクセスに関するメモリ位置など）。当該履歴の記録は、すべてのメモリ位置に適用される場合、電子デバイスの処理リソースのかなりの部分を消費するため、Ｏ／Ｓ下位セキュリティエージェントは、特定のメモリ位置がマルウェアの影響を受けていることを示す試行されたメモリアクセスの発生により、特定のメモリ位置について履歴への記録を開始してもよい（例えば、特定のメモリアドレスについて履歴の記録を開始するためのトリガイベントを決定するセキュリティルールなどに基づき）。例えば、Ｏ／Ｓ下位セキュリティエージェントは、特定のメモリ位置についてのパーミッションの修正をトラップすると（メモリ位置のパーミッションフラグにより実現される）、特定のメモリ位置の履歴の記録を開始してもよい。
【０４８３】
ステップ４２１５において、Ｏ／Ｓ下位セキュリティエージェントは、特定のメモリ位置の履歴の解析の開始をトリガする（セキュリティルールなどに従って）試行されたアクセスをモニタしてもよい。疑わしい動作が行われたかを決定するための履歴の解析は、すべてのメモリ位置及び／又は試行されたアクセスに適用された場合、電子デバイスの処理リソースのかなりの部分を消費するため、Ｏ／Ｓ下位セキュリティエージェントは、特定のメモリ位置に関する特定のトラップされる試行されたアクセスに関する履歴の解析を開始してもよい（以下のステップ４２２０などにおいて）。例えば、いくつかの実施例では、Ｏ／Ｓ下位セキュリティエージェントは、特定のメモリ位置におけるコンテンツへの試行されたアクセスをトラップすると、特定のメモリ位置に関する履歴の解析の開始をトリガしてもよい。
【０４８４】
ステップ４２２０において、Ｏ／Ｓ下位セキュリティエージェントは、特定のメモリ位置に関して疑わしい動作が行われたか判断するため、履歴を解析してもよい。その解析中、Ｏ／Ｓ下位セキュリティエージェントは、履歴に実現されるような特定のメモリ位置の動作が自己修正するマルウェアコードの存在の可能性を示す疑わしい動作を示すか判断するため、セキュリティルールを照会してもよい。例えば、履歴の解析が第１メモリ位置におけるコンテンツが第２位置にコピーされ、第２位置において修正され、その後、第２位置のコンテンツの試行された実行が行われたことを示す場合、当該表示は、自己修正したマルウェアコードの存在の可能性の証拠であるかもしれない。他の例として、履歴の開成が、第３位置における共通の祖先をそれぞれ有する第１及び第２メモリ位置におけるコンテンツがそれぞれ試行された実行のターゲットであったことを示す場合、当該表示は、自己修正するマルウェアコードの存在の可能性の証拠であるかもしれない。さらなる例として、履歴の解析が特定のメモリ位置におけるコンテンツが他の複数のメモリ位置における祖先を有することを示す場合、当該表示は、自己修正するマルウェアコードの存在する可能性の証拠であるかもしれない。
【０４８５】
ステップ４２２５において、Ｏ／Ｓ下位セキュリティエージェントが、マルウェアの存在の可能性を示す疑わしい動作が検出されたか判断してもよい（例えば、単一のトラップされた試行されたアクセス又は履歴の解析などに基づき）。疑わしい動作が検出された場合、方法４２００はステップ４２３０に移行してもよい。検出されなかった場合、方法４２００は、再びステップ４２０５に移行してもよい。ステップ４２３０において、マルウェアの存在の可能性を示す疑わしい動作の検出に応答して（例えば、単一のトラップされた試行されたアクセス又は履歴の解析などに基づき）、Ｏ／Ｓ下位セキュリティエージェントは訂正アクションを開始してもよい（セキュリティルール４１２２などに従って）。例えば、いくつかの実施例では、Ｏ／Ｓ下位セキュリティエージェントは、疑わしい動作を検出すると、コンテンツが悪意あるか判断するため、既知のマルウェア及び／又は既知の信頼された／真正なプロセスと、検出された疑わしい動作に関する特定のメモリ位置に格納されているコンテンツを比較してもよい。当該比較は、コンテンツのハッシュ、フィンガープリント又は他のシグネチャと、既知のプロセスのハッシュ、フィンガープリント又は他のシグネチャとを比較することによって実行されてもよい。他の例として、Ｏ／Ｓ下位セキュリティエージェントは、疑わしい動作を検出すると、疑わしい動作に関するフォレンジックエビデンス（メモリ位置のコンテンツ、メモリ位置に関する履歴など）をさらなる解析のためプロテクションサーバに報告してもよい。
【０４８６】
ステップ４２３５において、Ｏ／Ｓ下位セキュリティエージェントは、疑わしい動作に関するメモリ位置のコンテンツが悪意あるか判断してもよい（例えば、既知のプロセスとコンテンツの比較、プロテクションサーバから受信した情報、セキュリティルールの参照及び／又は他の判断などによって）。コンテンツが悪意ある場合、方法４２００はステップ４２４０に移行してもよい。悪いない場合、方法４２００は、ステップ４２０５に再び移行してもよい。ステップ４２４０において、コンテンツが悪意あると判断したことに応答して、Ｏ／Ｓ下位セキュリティエージェントは、さらなる訂正アクションを実行してもよい（例えば、セキュリティルールなどに従って）。当該訂正アクションは、限定することなく、コンテンツの実行の不許可、コンテンツへの変更の不実行（履歴に示されるコンテンツの修正及びコピーなど）、コンテンツの修復、コンテンツの無害なコンテンツへの置換及び／又はコンテンツに関するプロセスの非イネーブル化を含むものであってもよい。ステップ４２４０の終了後、方法４２００はステップ４２０５に再び移行する。
【０４８７】
図４３は、電子デバイス上の悪意あるコードを修正する方法４３０５の実施例である。ステップ４３０５において、Ｏ／Ｓ下位セキュリティエージェントは、電子デバイス上で悪意あるコードの存在を検出してもよい。例えば、Ｏ／Ｓ下位セキュリティエージェントは、電子デバイスのメモリ又は他のリソースへのアクセスをトラップすることによって、悪意あるコードの存在を検出してもよい。他の例として、Ｏ／Ｓ下位セキュリティエージェントは、悪意あるコードについて電子デバイスのメモリ及び／又はストレージのページをスキャンすることによって、悪意あるコードの存在を検出してもよい。さらなる例として、Ｏ／Ｓ下位セキュリティエージェントは、悪意あるコードの存在を検出したＯ／Ｓ内セキュリティエージェントから通信を受信することによって、メモリにおける悪意あるコードの存在を検出してもよい。
【０４８８】
ステップ４３１０〜４３２０において、電子デバイス上の悪意あるコードの検出に応答して、Ｏ／Ｓ下位セキュリティエージェントは、悪意あるコードを修正することを含む、訂正アクションを実行してもよい。例えば、ステップ４３１０において、Ｏ／Ｓ下位セキュリティエージェントは、悪意あるコードを含むプログラムが自己終了するか、及び／又は悪意あるコードを無力化する信頼差エッ留コードに実行を移転するように、悪意あるコードを修正してもよい（例えば、悪意あるコードセグメントに関するスレッド又はプロセスに関するすべてのコード及びデータを消去するなどによって）。例えば、Ｏ／Ｓ下位セキュリティエージェントは、悪意あるコードの実行が最終的に終了するように、オペレーティングシステムの“イグジット”ファンクションに対するコールを電子デバイスのメモリの悪意あるコードに挿入してもよい。他の例として、Ｏ／Ｓ下位セキュリティエージェントは、悪意あるコードを無効化するコードの既知の信頼された部分を格納したメモリの他の部分に悪意あるコードの実行をリダイレクトする命令（ＪＵＭＰ命令など）を電子デバイスのメモリの悪意あるコードに挿入してもよい（例えば、悪意あるコードセグメントに関するスレッド又はプロセスに関するすべてのコード及びデータを消去するなどによって）。さらなる例として、悪意あるコードが現在実行されている場合、Ｏ／Ｓ下位セキュリティエージェントは、悪意あるコードを無力化する既知の信頼されたコード部分に実行の制御を移転させるためのメモリにおける命令ポインタ値を変更してもよい（例えば、悪意あるコードセグメントに関するスレッド又はプロセスに関するすべてのコード及びデータを消去するなどによって）。あるいは、Ｏ／Ｓ下位セキュリティエージェントは、悪意あるコードが修復されるように悪意あるコードを修正してもよく、これにより、実行が他のメモリ位置における感染したコードの復元されたバージョンにより継続されるように、悪意あるコードを既知の又は信頼されるコードにより置換するか、又はメモリの命令ポインタを修正することによって感染が起こらなかったかのように感染したアプリケーションが効果的に実行することを可能にする。
【０４８９】
ステップ４３１５において、Ｏ／Ｓ下位セキュリティエージェントは、ストレージに実現される悪意あるコードを修正してもよい。例えば、電子デバイスのメモリとストレージとの間のコンテンツの移転に対してトラップすることによって、Ｏ／Ｓ下位セキュリティエージェントは、メモリに格納されるコンテンツとストレージに格納される対応するコンテンツとの関係に関する情報をログ、リスト、キャッシュ又は他のデータ構造に収集及び格納してもよい。従って、Ｏ／Ｓ下位セキュリティエージェントは、メモリにおいて悪意あるコードを特定した場合、メモリに格納されているコンテンツとストレージに格納されている対応するコンテンツとの関係に関する収集された情報を参照し、悪意あるコードを有するメモリ位置に対応するストレージ位置のコンテンツを修正してもよい。当該修正は、限定することなく、ストレージにおける対応するコンテンツの消去、又はストレージ及び／又はメモリの悪意あるコードの自己終了又は削除を行わせるコンテンツの修正を含むものであってもよい。
【０４９０】
ステップ４３２０において、Ｏ／Ｓ下位セキュリティエージェントは、例えば、電子デバイスのメモリ又は他のリソースへのアクセスを悪意あるコードセグメントに拒絶するため、電子デバイスのメモリ及び他のリソースへの悪意あるコードのアクセスを修正してもよい。当該メモリ及び他のリソースの拒絶は、悪意あるコードを含むプロセスをクラッシュさせるか、又は無効化させてもよい。例えば、悪意あるコードが特定されると、Ｏ／Ｓ下位セキュリティエージェントは、電子デバイスのメモリ又はリソースに悪意あるコードを含むプロセスにより試行されたアクセスに対してトラップし、当該アクセスを拒絶してもよい。
【０４９１】
ステップ４３２５において、Ｏ／Ｓ下位セキュリティエージェントは、検出された悪意あるコードの物理メモリアドレスに基づき、悪意あるコードを有する可能性のあるメモリの他の部分を特定してもよい。例えば、マルウェア的動作を示すスレッドを検出すると、Ｏ／Ｓ下位セキュリティエージェントは、悪意あるコードのメモリページ内の位置及び／又はスレッドの実行アドレスを決定してもよい。バーチャルメモリ構成では、アプリケーションコードは連続的にリストされるが、物理メモリでは、アプリケーションコードは実質的に不連続である可能性がある。従って、メモリの物理メモリアドレスをストレージのバーチャルメモリアドレスにマッピングするオペレーティングシステムにより維持されるマッピングを利用することによって、Ｏ／Ｓ下位セキュリティエージェントは、悪意あるコードを含む特定された悪意あるコードに対応するバーチャルメモリの部分を特定し、当該バーチャルメモリ部分を感染の可能性のある物理メモリアドレスにマッピングしてもよい。従って、当該物理メモリアドレスにおけるコードの実行はさらに、悪意あるコードの損座についてＯ／Ｓ下位セキュリティエージェントによりモニタされてもよい。
【０４９２】
ステップ４３０において、Ｏ／Ｓ下位セキュリティエージェントは、悪意あるコードを隔離し、さらなる解析のためフォレンジックエビデンスとしてプロテクションサーバに転送してもよい。
【０４９３】
図４４は、電子デバイス上の関連するスレッドをモニタリング及び追跡する方法４４００の実施例である。ステップ４４０５において、Ｏ／Ｓ下位セキュリティエージェントは、他のスレッドによるあるスレッドの生成、サスペンド又は終了に関するスレッド同期オブジェクトのファンクションコールに関するメモリ又はプロセッサリソースへの試行されたアクセスに対してトラップしてもよい。例えば、Ｏ／Ｓ下位セキュリティエージェントは、プロセス間通信（ＩＰＣ）コールに関するプロセッサリソースのメモリへの試行されたアクセスに対してトラップしてもよい。ステップ４４１０において、Ｏ／Ｓ下位セキュリティエージェントは、履歴へのトラップされた試行されたアクセスに関する情報（スレッド識別子など）を格納してもよい。
【０４９４】
ステップ４４１５において、Ｏ／Ｓ下位セキュリティエージェントは、メモリ又はプロセッサリソースへの試行されたアクセスに対してトラップしてもよく、当該試行されたアクセスのそれぞれは、マルウェアの存在を個別に又はまとめて示すものであってもよい。トラップされた試行されたアクセスは、セキュリティルールに従って決定されてもよい。マルウェアの可能性を示す試行されたアクセスは、限定することなく、メモリパーミッションへの変更、あるメモリ位置のコンテンツの他のメモリ位置へのコピー、メモリ位置のコンテンツの修正及びメモリ位置の実行を含むものであってもよい。ステップ４４２０において、Ｏ／Ｓ下位セキュリティエージェントは、履歴へのトラップされた試行されたアクセスに関する情報（スレッド識別子など）を格納してもよい。ステップ４４１０及び４４２０において、Ｏ／Ｓ下位セキュリティエージェントは、スレッドメタデータについてメモリ位置を決定し、スレッドメタデータに基づき、履歴の情報の一部として格納するため特定のスレッドのスレッド識別子を取得するため、プロセッサリソースの情報にアクセスしてもよい。
【０４９５】
ステップ４４２５において、Ｏ／Ｓ下位セキュリティエージェントは、マルウェア感染に一致した動作が特定のスレッドに関して発生したか判断するため、履歴を解析してもよい（例えば、セキュリティルールなどに従って）。ステップ４４３０において、マルウェア感染に一致した動作が行われた場合、Ｏ／Ｓ下位セキュリティエージェントは、マルウェアアクティビティが特定されたスレッドに関する１以上のスレッドを決定するため、履歴を解析してもよい。
【０４９６】
ステップ４４３５において、Ｏ／Ｓ下位セキュリティエージェントは、特定のスレッド及び１以上の関連するスレッドに関して訂正アクションを実行してもよい。例えば、訂正アクションは、関連するスレッドが悪意あるコードを含むか判断するため、Ｏ／Ｓ下位セキュリティエージェントが当該スレッドを調査、スキャン及び／又は解析することを含むものであってもよい。他の例として、訂正アクションは、当該スレッドが悪意あると判断された場合、Ｏ／Ｓ下位セキュリティエージェントが１以上の関連するスレッドを終了、削除、修正又は無効化することを含むものであってもよい。さらなる例として、訂正アクションは、Ｏ／Ｓ下位セキュリティエージェントが特定のスレッド及びそれに関連するスレッドに関するフォレンジックエビデンスをさらなる解析のためプロテクションサーバに通信することを含むものであってもよい。
【０４９７】
図４５は、電子デバイス４５０４のメモリ及びストレージをセキュアにするシステム４５００の実施例である。システム４５００は、電子デバイス４５０４のメモリ４５０８及びストレージ４５２６にアクセスする悪意ある試行に対してプロテクトするため電子デバイス４５０４上で実行されるよう構成されるＯ／Ｓ下位セキュリティエージェント４５１６を有してもよい。さらに、Ｏ／Ｓ下位セキュリティエージェント４５１６は、何れの試行される処理をトラップするか、当該トラップされた処理をどのように応答するかを決定するため、１以上のセキュリティルール４５２２を利用するよう構成されてもよい。Ｏ／Ｓ下位セキュリティエージェントは、許可、拒絶又はトラップされた処理の他の訂正アクションを実行するよう構成されてもよい。
【０４９８】
図４５に示されるように、電子デバイス４５０４は、メモリ４５０８に接続されるプロセッサ４５０６、アプリケーション４５１０、ドライバ４５１１、オペレーティングシステム４５１２、Ｏ／Ｓ下位セキュリティエージェント４５１６、ストレージ４５２６及びアプリケーションアセット４５４８を有してもよい。電子デバイス４５０４は、図１の電子デバイス１０３、図２の電子デバイス２０４、図４の電子デバイス４０４、図７の電子デバイス７０１、図９の電子デバイス９０１、図１２の電子デバイス１２０１及び／又はこれらの何れかの組み合わせの機能により全体的若しくは部分的に実現されてもよく、又は当該機能を実現するよう構成されてもよい。プロセッサ４５０６は、図２のプロセッサ２０８、図４のプロセッサ４０８、図７のプロセッサ７０２、図９のプロセッサ９０２、図１２のプロセッサ１２０２、及び／又はこれらの何れかの組み合わせの機能により全体的若しくは部分的に実現されてもよく、又は当該機能を実現するよう構成されてもよい。メモリ４５０８は、図２のメモリ２０６、図４のメモリ４０６、図７のメモリ７０３、図９のメモリ９０３、図１２の物理メモリ１２０３若しくは仮想化メモリ及び／又はこれらの何れかの組み合わせの機能により全体的若しくは部分的に実現されてもよく、又は当該機能を実現するよう構成されてもよい。アプリケーション４５１０は、図１のアプリケーション１１０、図２のアプリケーション２１０、図４のアプリケーション４１０、図７のアプリケーション７０９、図９のアプリケーション９１０、図１２のアプリケーション１２１０及び／又はこれらの何れかの組み合わせの機能により全体的若しくは部分的に実現されてもよく、又は当該機能を実現するよう構成されてもよい。ドライバ４５１１は、図１のドライバ１１１、図２のドライバ２１１、図４のドライバ４１１、図７のドライバ７１１、図９のドライバ９１１、図１２のドライバ１２１１及び／又はこれらの何れかの組み合わせの機能により全体的若しくは部分的に実現されてもよく、又は当該機能を実現するよう構成されてもよい。オペレーティングシステム４５１２は、図１のオペレーティングシステム１１２、図２のオペレーティングシステム２１２、図４のオペレーティングシステム４１２、図７のオペレーティングシステム７１３、図９のオペレーティングシステム９１３、図１２のオペレーティングシステム１２１３及び／又はこれらの何れかの組み合わせの機能により全体的若しくは部分的に実現されてもよく、又は当該機能を実現するよう構成されてもよい。Ｏ／Ｓ下位セキュリティエージェント４５１６は、図１のＯ／Ｓ下位トラップエージェント１０４、図２のＳＶＭＭセキュリティエージェント２１７若しくはＳＶＭＭ２１６、図４のファームウェアセキュリティエージェント４４０、４４２、ＰＣファームウェアセキュリティエージェント４４４若しくはＯ／Ｓ下位システムエージェント４５０、図５のファームウェアセキュリティエージェント５１６、図７のマイクロコードセキュリティエージェント７０８、図９のＯ／Ｓ下位トラップエージェント９２０、図１２のＯ／Ｓ下位セキュリティエージェント１２２０及び／又はこれらの何れかの組み合わせの機能により全体的若しくは部分的に実現されてもよく、又は当該機能を実現するよう構成されてもよい。Ｏ／Ｓ内セキュリティエージェント４５１８は、図２のＯ／Ｓ内セキュリティエージェント２１８、図４のＯ／Ｓ内セキュリティエージェント４１８、図７のＯ／Ｓ内セキュリティエージェント７１８、図９のＯ／Ｓ内セキュリティエージェント９１９、図１２のＯ／Ｓ内セキュリティエージェント１２１９及び／又はこれらの何れかの組み合わせの機能により全体的若しくは部分的に実現されてもよく、又は当該機能を実現するよう構成されてもよい。ストレージ４５２６は、図４のストレージの機能により全体的若しくは部分的に実現されるか、又は当該機能を実現するよう構成されてもよい。
【０４９９】
セキュリティルール４５２２は、図１のセキュリティルール１１４、図２のセキュリティルール２２２、図４のセキュリティルール４３４、４３６、４３８、図５のセキュリティルール５１８、図７のセキュリティルール７０７、７２３、図９のセキュリティルール９０８、図１２のセキュリティルール１２０８及び／又はこれらの何れかの組み合わせの機能により全体的若しくは部分的に実現されてもよく、又は当該機能を実現するよう構成されてもよい。セキュリティルール４５２２は、何れか適切な方法により決定されてもよい（例えば、電子デバイス４５０４のユーザにより設定されたポリシー、電子デバイス４５０４を含む企業のアドミニストレータにより設定されたポリシー、Ｏ／Ｓ下位セキュリティエージェント４５１６の作成者により設定されたポリシーなど）。いくつかの実施例では、Ｏ／Ｓ下位セキュリティエージェント４５１６は、ネットワーク２４４を介しプロテクションサーバ２０２からセキュリティルール４５２２に対する更新又は修正を要求及び／又は受信してもよい（例えば、マルウェア定義に対する更新のためなど）。
【０５００】
Ｏ／Ｓ下位セキュリティエージェント４５１６は、メモリトラッキングファシリティ４５４２、ストレージトラッキングファシリティ４５４４及びメモリ／ストレージセキュリティレイヤ４５４６を含むものであってもよい。メモリトラッキングファシリティ４５４２は、メモリ４５０８へのアクセスをモニタするため、メモリ４５０８とインタフェースをとってもよい。例えば、メモリトラッキングファシリティ４５４２は、メモリ４５０８における特定のページをリード、ライト又は実行するため、アプリケーション４５１０、ドライバ４５１１及び／又はオペレーティングシステム４５１２による試行されたアクセスをトラップ又はトリガするため‘ページテーブルフラグ及び／又はビットフラグにより示されるような）、図１のＯ／Ｓ下位トラップエージェント１０４、図２のＳＶＭＭセキュリティエージェント２１７若しくはＳＶＭＭ２１６、図４のファームウェアセキュリティエージェント４４２、図７のマイクロコードセキュリティエージェント７０８、図９のＯ／Ｓ下位セキュリティエージェント９２０、及び／又は図１２のＯ／Ｓ下位セキュリティエージェント１２２０の機能により全体的若しくは部分的に実現されてもよく、又は当該機能を実現するよう構成されてもよい。他の例として、メモリトラッキングファシリティ４５４２は、メモリ４５０８の特定のアドレスをリード、ライト又は実行するため、アプリケーション４５１０、ドライバ４５１１及び／又はオペレーティングシステム４５１２による試行されたアクセスをトラップ又はトリガするため、Ｏ／Ｓ下位セキュリティエージェント７１２及び／又はマイクロコードセキュリティエージェント７０８の機能により全体的若しくは部分的に実現されてもよく、又は当該機能を実現するよう構成されてもよい。従って、メモリトラッキングファシリティ４５４２は、メモリ４５０８におけるある位置から他の位置へのコンテンツの移動（例えば、あるページから他のページ、あるアドレスから他のアドレスなど）、又はメモリ４５０８とストレージ４５２６との間の移動（例えば、ストレージ４５２６からの実行可能コードのバーチャルメモリコンテクストスワップ又はロードに関して）を追跡してもよい。さらに、メモリトラッキングファシリティ４５４２は、メモリトラッキングファシリティ４５４２及び／又はメモリ／ストレージセキュリティレイヤ４５４６によりアクセス可能なログ、リスト、キャッシュ又は他の適切なデータ構造に追跡された移動に関する情報を格納してもよい。
【０５０１】
ストレージトラッキングファシリティ４５４４は、ストレージ４５２６におけるある位置から他の位置へのコンテンツの移動、又はメモリ４５０８とストレージ４５２６との間の移動をモニタリングするため、ストレージ４５２６とインタフェースをとってもよい。例えば、ストレージトラッキングファシリティ４５４４はストレージ４５２６の特定のセクタをリード、ライト又は実行するため、アプリケーション４５１０、ドライバ４５１１及び／又はオペレーティングシステム４５１２により試行されたアクセスをトラップ又はトリガするため、図１のＯ／Ｓ下位トラップエージェント１０４、図２のＳＶＭＭセキュリティエージェント２１７若しくはＳＶＭＭ２１６、図４のファームウェアセキュリティエージェント４４２、図７のマイクロコードセキュリティエージェント７０８、図９のＯ／Ｓ下位セキュリティエージェント９２０及び／又は図１２のＯ／Ｓ下位セキュリティエージェント１２２０の機能により全体的若しくは部分的に実現されてもよく、又は当該機能を実現するよう構成されてもよい。他の例として、ストレージトラッキングファシリティ４５４４は、ストレージ４５２６の特定のアドレスをリード、ライト又は実行するため、アプリケーション４５１０、ドライバ４５１１及び／又はオペレーティングシステム４５１２により試行されたアクセスをトラップ又はトリガするため、Ｏ／Ｓ下位セキュリティエージェント７１２及び／又はマイクロコードセキュリティエージェント７０８の機能により全体的若しくは部分的に実現されてもよく、又は当該機能を実現するよう構成されてもよい。従って、ストレージトラッキングファシリティ４５４４は、ストレージ４５２６におけるある位置から他の位置へのコンテンツの移動（例えば、あるセクタから他のセクタ、又はあるアドレスから他のアドレスなど）、又はメモリ４５０８とストレージ４５２６との間の移動（例えば、ストレージ４５２６からの実行可能コードのロード又はバーチャルメモリコンテクストスワップと共に）を追跡してもよい。
【０５０２】
動作について、メモリ／ストレージセキュリティレイヤ４５４６は、セキュリティルール４５２２を受信し、セキュリティルール４５２２をメモリトラッキングファシリティ４５４２及びストレージトラッキングファシリティ４５４４に通信してもよい。従って、メモリトラッキングファシリティ４５４２及びストレージトラッキングファシリティ４５４４によるモニタリングは、モニタリングがイネーブルであるか示し、及び／又はメモリ４５０８及び／又はストレージ４５２６の何れの部分がモニタリングされるべきか特定するセキュリティルール４５２２に基づくものであってもよい。
【０５０３】
メモリトラッキングファシリティ４５４２及びストレージトラッキングファシリティ４５４４は、メモリ４５０８及び／又はストレージ４５２６の試行されたアクセスをメモリ／ストレージセキュリティレイヤ４５４６に通知してもよい（例えば、メモリ４５０８又はストレージ４５２６内又はメモリとストレージとの間のコンテンツの試行された移動など）。メモリ／ストレージセキュリティレイヤ４５４６は、図１のＯ／Ｓ下位トラップエージェント１０４、図２のＳＶＭＭセキュリティエージェント２１７若しくはＳＶＭＭ２１６、図４のファームウェアセキュリティエージェント４４０、４４２、ＰＣファームウェアセキュリティエージェント４４４若しくはＯ／Ｓ下位システムエージェント４５０、図５のファームウェアセキュリティエージェント５１６、図７のマイクロコードセキュリティエージェント７０８、図９のＯ／Ｓ下位トラップエージェント９２０、図１２のＯ／Ｓ下位セキュリティエージェント１２２０及び／又はこれらの何れかの組み合わせの機能により全体的若しくは部分的に実現されてもよく、又は当該機能を実現するよう構成されてもよい。メモリ／ストレージセキュリティレイヤ４５４６は、以下でより詳細に説明されるように、試行されたアクセスがマルウェア攻撃を示すか判断するため、セキュリティルール４５２２及び／又はアプリケーションアセット４５４８に従って、メモリトラッキングファシリティ４５４及び／又はストレージトラッキングファシリティ４５４４により報告されるメモリ４５０８及び／又はストレージ４５２６の試行されたアクセスを解析してもよい。いくつかの実施例では、メモリ／ストレージセキュリティレイヤ４５４６は、図４５のアクティビティ４５３２、４５３４により示されるように、メモリトラッキングファシリティ４５４２及びストレージトラッキングファシリティ４５４４により報告されるアクセスのログ、リスト又は他の表示をメモリ４５０８及び／又はストレージ４５２６に格納してもよい。従って、メモリ４５０８及び／又はストレージ４５２６への個別の試行されたアクセスを解析することに加えて、メモリ／ストレージセキュリティレイヤ４５４６は、アクセス動作履歴がマルウェアの存在を示すか判断するため、セキュリティルール４５２２に基づきアクティビティ４５３２，４５３４に実現されるアクティビティの履歴を解析してもよい。
【０５０４】
特定の実施例では、メモリ／ストレージセキュリティレイヤ４５４６は、図２のＳＶＭＭ２１６の機能により全体的若しくは部分的に実現されてもよく、又は当該機能を実現するよう構成されてもよく、メモリトラッキングファシリティ４５４２は、図７のマイクロコードセキュリティエージェント７０８の機能により全体的若しくは部分的に実現されてもよく、又は当該機能を実現するよう構成されてもよく、ストレージトラッキングファシリティ４５４４は、図４のファームウェアセキュリティエージェント４４２の機能により全体的若しくは部分的に実現されてもよく、又は当該機能を実現するよう構成されてもよい。当該実施例では、メモリトラッキングファシリティ４５４２は、特定のメモリアクセスに対してトラップし、ストレージトラッキングファシリティ４５４４は、特定のストレージアクセスに対してトラップし、それぞれは、当該トラップイベントをメモリ／ストレージセキュリティレイヤ４５４６に通知してもよい。メモリ／ストレージセキュリティレイヤ４５４６は、アクセス動作履歴がマルウェアの存在を示すか判断するため、セキュリティルール４５２２に基づきアクティビティの履歴を解析し、及び／又はメモリ及び／又はストレージへの個々の試行されたアクセスを解析してもよい。
【０５０５】
他の特定の実施例では、メモリ／ストレージセキュリティレイヤ４５４６、メモリトラッキングファシリティ４５４２及びストレージトラッキングファシリティ４５４４のそれぞれは、図２の単一のＳＶＭＭ２１６の機能により全体的若しくは部分的に実現されてもよく、又は当該機能を実現するよう構成されてもよい。当該実施例では、ＳＶＭＭ２１６は、アクセス動作履歴がマルウェアの存在を示すか判断するため、特定のメモリアクセスに対してトラップし、特定のストレージアクセスに対してトラップし、メモリ及び／又はストレージへの個別の試行されたアクセスを解析し、及び／又はセキュリティルール４５２２に基づきアクティビティ履歴を解析してもよい。
【０５０６】
アプリケーション４５１０、ドライバ４５１１，オペレーティングシステム４５１２及び／又は他のエンティティのアプリケーションアセット４５４８は、当該エンティティ及びそれのコンポーネントがメモリ４５０８及び／又はストレージ４５２６内にどのようにあるか示すマップ、テーブル、リスト及び／又は他のデータ構造を表すものであってもよい。アプリケーションアセット４５４８は、エンティティが格納されるメモリ４５０８及び／又はストレージ４５２６の部分を特定してもよい（例えば、メモリページ、メモリアドレスレンジ、ディスクセクタ、ディスクアドレスランクなど）。上述されるように、アプリケーションアセット４５４８及び／又はセキュリティルール４５２２に基づき、メモリ／ストレージセキュリティエージェント４５１６は、メモリ４５０８及び／又はストレージ４５２６の試行されたアクセスに関するメモリトラッキングファシリティ４５４２及び／又はストレージトラッキングファシリティ４５４４からの通知がマルウェア攻撃を示すか判断してもよい。例えば、アプリケーション４５１０がポータブル実行可能ファイルである実施例では、アプリケーション４５４８は、アプリケーション４５１０の実行可能コードを有するメモリ４５０８及び／又はストレージ４５２６に格納されているアプリケーション４５１０の部分を特定し、及び／又はアプリケーション４５１０のコンポーネントが格納されるメモリ４５０８及び／又はストレージ４５２７の位置を含む、アプリケーション４５１０のデータを有するメモリ４５０８及び／又はストレージ４５２６に格納されているアプリケーション４５１０の部分を特定してもよい。セキュリティルール４５２２は、アプリケーションの具体例について、アプリケーション４５１０以外のプログラムからアプリケーション４５１０の実行可能コードを有するメモリ４５０８及び／又はストレージ４５２６の部分へのライトアクセスがマルウェア攻撃を示すことを指示してもよい。さらに又はあるいは、セキュリティルール４５２２は、アプリケーション４５１０の具体例について、アプリケーション４５１０以外のプログラムからアプリケーション４５１０のデータを有するメモリ４５０８及び／又はストレージ４５２６の部分へのリード又はライトアクセスがマルウェア攻撃を示すことを指示してもよい。
【０５０７】
他の例として、アプリケーション４５１０がワープロプログラムである実施例では、アプリケーションアセット４５４８は、アプリケーション４５１０の実行可能コードを有するメモリ４５０８及び／又はストレージ４５２６に格納されているアプリケーション４５１０の部分を特定し、アプリケーション４５１０のコンポーネントが格納されているメモリ４５０８及び／又はストレージ４５２６の位置を含む、アプリケーション４５１０のスクリプト、イメージ、フォーマット化されたテキスト、ノート及び他のデータを有するメモリ４５０８及び／又はストレージ４５２６に格納されているアプリケーション４５１０の部分を特定してもよい。セキュリティルール４５２２は、アプリケーション４５１０の当該例について、アプリケーション４５１０以外の特定のプログラムセットからアプリケーション４５１０のデータを有するメモリ４５０８及び／又はストレージ４５２６の部分へのリード又はライトアクセスが許可されることを指示するものであってもよく（例えば、オペレーティングシステム、アンチマルウェアアプリケーションからのアクセスなど）、当該プログラムセット以外のプログラムによるアクセスは、マルウェアの攻撃を示すものであってもよい。
【０５０８】
アプリケーションアセット４５４８は、アプリケーション４５１０、ドライバ４５１１、オペレーティングシステム４５１２及び／又は他のプログラムの作成者によって（例えば、アプリケーションベンダ、プログラマ、作成者など）、電子デバイス４５０４のユーザによって、電子デバイス４５０４を含む企業のアドミニストレータによって、Ｏ／Ｓ下位セキュリティエージェント４５１６の作成者によって、及び／又は他の適切な個人によって作成又は定義されてもよい。いくつかの実施例では、アプリケーションアセット４５４８は、プログラムについて、当該プログラムのオンストレージ構造とインメモリ構造との間の関係を含むものであってもよい（例えば、メモリ４５０８とストレージ４５２６とにおけるプログラムのコンポーネント間のマッピングなど）。
【０５０９】
アプリケーションアセット４５４８を構成するため、Ｏ／Ｓ内セキュリティエージェント４５１８及び／又はＯ／Ｓ下位セキュリティエージェント４５１６は、何れかの個数の適切な技術を利用してもよい。例えば、Ｏ／Ｓ内セキュリティエージェント４５１８及び／又はＯ／Ｓ下位セキュリティエージェント４５１６は、バーチャルメモリ処理に関してオペレーティングシステム４５１２により生成されるバーチャルメモリページスワップに関する情報を収集してもよい。例えば、ＷｉｎｄｏｗｓＴＭでは、Ｏ／Ｓ内セキュリティエージェント４５１８は、プロトタイプページテーブルエントリ（ＰＴＥ）にアクセスし、Ｏ／Ｓ下位セキュリティエージェント４５１６と当該情報を通信してもよい。他の実施例では、Ｏ／Ｓ下位セキュリティエージェント４５１６は、アクセスが実行されるときはいつでも、メモリ４５０８のページ及び／又はディスクのセクタ４５２６についてハッシュ、フィンガープリント又は他の一意的な識別子を生成し、当該識別子のキャッシュを維持するようにしてもよい（例えば、当該キャッシュはメモリ４５０８及び／又はストレージ４５２６に格納される）。当該シナリオでは、Ｏ／Ｓ下位セキュリティエージェント４５１６は、ストレージ４５２６の何れのセクタがメモリ４５０８の何れのページにロードされるか、またその逆を決定するため、シンプルな比較を適用してもよい。当該マッピングは、セキュリティエージェント４５１６及び／又は４５１８がメモリ４５０８及び／又はストレージ４５２６におけるエンティティの特定の情報の位置を追跡することを可能にするものであってもよい。
【０５１０】
メモリ／ストレージセキュリティレイヤ４５４６、メモリトラッキングファシリティ４５４２及び／又はストレージトラッキングファシリティ４５４４により実行されるモニタリング及び解析は、メモリ４５０８及びストレージ４５２６のすべてのアクセスに適用される場合、電子デバイス４５０４の処理リソースのかなりの部分を消費するため、メモリ４５０８及びストレージ４５２６のモニタリング及び解析は、特定の定義された状況においてのみイネーブルとされてもよい。例えば、いくつかの実施例では、セキュリティルール４５２２は、メモリトラッキングファシリティ４５４２及び／又はストレージトラッキングファシリティ４５４４がメモリ４５０８及び／又はストレージ４５２６の特定部分のみをモニタすることを提供してもよい（オペレーティングシステム、重要なドライバ又はアプリケーションを有するものなど）。他の例として、同一の又は他の実施例では、セキュリティルール４５２２は、メモリトラッキングファシリティ４５４２及び／又はストレージトラッキングファシリティ４５４４が、メモリ４５０８及び／又はストレージ４５２６の特定部分におけるプログラムを、当該プログラムが疑わしいと他の表示が示す場合、及び／又はマルウェア攻撃が行われたことを他の表示が示す場合にモニタリングすることを提供してもよい。さらなる例として、メモリトラッキングファシリティ４５４２及び／又はストレージトラッキングファシリティ４５４４は、ストレージ４５２６からの実行可能コードのロード又はバーチャルメモリコンテクストスワップのケースと同様に、コンテンツがメモリ４５０８からストレージ４５２６にロードされるとき、又はその逆のときを除き、メモリトラップ及びストレージトラップを見合わせるようにしてもよい。
【０５１１】
動作について、上述されるように、メモリ／ストレージセキュリティレイヤ４５４６は、セキュリティルール４５２２及び／又はアプリケーションアセット４５４８に基づき、メモリ４５０８及び／又はストレージ４５２６への報告されたアクセスを解析することによって、メモリ４５０８及び／又はストレージ４５２６をセキュアにしてもよい。メモリ４５０８及び／又はストレージ４５２６への試行されたアクセスの通知を受信した後、メモリ／ストレージセキュリティレイヤ４５４６は、試行されたアクセスを要求したエンティティ（オペレーティングシステム４５１２、ドライバ４５１１又はアプリケーション４５１０など）の身元を決定してもよい。例えば、Ｏ／Ｓ内セキュリティエージェント４５１８は、特定のメモリ４５０８及び／又はストレージリクエスト４５２６の要求元のエンティティに関するコンテクスト情報をオペレーティングシステム４５１２から収集し、当該情報をメモリ／ストレージセキュリティレイヤ４５４６に通信してもよい。さらに、メモリ／ストレージセキュリティレイヤ４５４６は、要求元のエンティティの身元を検証し、当該エンティティがマルウェアにより危険にさらされたか判断してもよい（例えば、メモリに格納されているエンティティのマップ又はハッシュとエンティティの既知の予想されるマップ又はハッシュとを比較することによって、又はマルウェアの存在についてメモリに格納されているエンティティをスキャンすることなどによって）。さらに、メモリ／ストレージセキュリティレイヤ４５４６は、エンティティがリクエストを行うことが認証されているか判断してもよい（例えば、エンティティがメモリ４５０８又はストレージ４５２６の特定部分にアクセスすることが認証されているかに関するセキュリティルール４５２２及び／又はアプリケーションアセット４５４８に基づく判定など）。さらに、メモリ／ストレージセキュリティレイヤ４５４６は、コンテンツがマルウェアを含むか判断するため、試行されたアクセスに関するコンテンツをスキャンしてもよい（例えば、データ又は実行可能コードがリード、ライト又は実行されるなど）。また、メモリ／ストレージセキュリティレイヤ４５４６は、アクセス履歴の動作解析（アクティビティ４５３２及び／又は４５３４に格納されるなど）がマルウェアの存在を示しているか判断してもよい（例えば、未認証エンティティによるＯ／Ｓ４５１２のプロテクトされた部分の試行されたアクセスなど）。メモリ／ストレージセキュリティレイヤ４５４６は、試行されたアクセスがマルウェアに関するものであると判断された場合、訂正アクションを実行してもよい。訂正アクションは、試行されたアクセスの阻止、要求元エンティティの終了、要求元エンティティの修復、プロテクションサーバ２０２へのマルウェア関連イベントの発生の通信及び／又は他の何れか適切なアクションを含むものであってもよい。
【０５１２】
具体例として、ストレージ４５２６の特定のセクタへに対するリクエストに応答して（ストレージトラッキングファシリティ４５４４からの通知により示されるように）、メモリ／ストレージセキュリティレイヤ４５４６は、特定のセクタがセキュリティルール４５２２に少なくとも基づきアクセスされるべきか判断してもよい。さらに、メモリ／ストレージセキュリティレイヤ４５４６は、試行されたアクセスに関するコンテンツ（例えば、試行されたアクセスに関してリード、ライト又は実行されるデータ又は実行可能コードなど）がマルウェアの感染の可能性がないか判断するため、当該コンテンツをスキャンしてもよい。さらに、メモリ／ストレージセキュリティレイヤ４５４６は、セキュリティルール４５２２に少なくとも基づき、試行されたアクセスを要求したエンティティが特定のセクタにアクセスすることが認証されているか判断してもよい。当該判定が、試行されたアクセスがマルウェアに関するものでないことを示す場合、メモリ／ストレージセキュリティレイヤ４５４６は、試行されたアクセスを許可してもよい。
【０５１３】
他の具体例として、メモリの特定のページに対するリクエストに応答して（メモリトラッキングファシリティ４５４２からの通知により示されるように）、メモリ／ストレージセキュリティレイヤ４５４６は、試行されたアクセスに関するコンテンツ（例えば、試行されたアクセスに関してリード、ライト又は実行されるデータ又は実行可能コードなど）マルウェアの感染の可能性がないか判断するため、当該コンテンツをスキャンしてもよい。さらに、メモリ／ストレージセキュリティレイヤ４５４６は、セキュリティルール４５２２に少なくとも基づき、試行されたアクセスを要求したエンティティが特定のページにアクセスすることが認証されているか判断してもよい。さらに、試行されたアクセスがストレージ４５２６からメモリ４５０８への移転である場合、メモリ／ストレージセキュリティレイヤ４５４６は、セキュリティルール４５２２に少なくとも基づき、コンテンツが移転されるべき移転元のストレージ４５２６の特定部分が信頼されたソースであるか判断してもよい。当該判定は、試行されたアクセスがマルウェアに関するものでないと示す場合、メモリ／ストレージセキュリティレイヤ４５４６は、試行されたアクセスを許可してもよい。
【０５１４】
さらに、セキュリティルール４５２２及びメモリ４５０８又はストレージ４５２６の特定部分に適用されるプロテクションは、コンテンツがメモリ４５０８とストレージ４５２６との間で、メモリ４５０８の異なる部分の間で、又はストレージ４５２６の異なる部分の間で移転されるとき、推移的に適用されてもよい。従って、例えば、セキュリティルール４５２２の特定セットがメモリ４５０８の特定部分のコンテンツに適用される場合、当該コンテンツのメモリ４５０８又はストレージ４５２６の他の部分への移転に応答して、メモリ／ストレージセキュリティレイヤ４５４６は、メモリ４５０８又はストレージ４５２６のデスティネーション部分に適用するため、セキュリティルール４５２２を更新してもよい。
【０５１５】
図４６は、電子デバイスのメモリ及びストレージをセキュアにする方法４６００の実施例である。ステップ４６０５において、メモリ／ストレージセキュリティレイヤは、メモリトラッキングファシリティ及びストレージトラッキングファシリティにセキュリティルールを通信してもよい。マルウェアからのメモリ及びストレージのプロテクションのためここに開示されるシステム及び方法は、かなりのプロセッサ、メモリ及び／又は他のリソースを消費するため、メモリ又はストレージの特定位置が特にマルウェア攻撃の影響を受けやすいときに限って当該システム及び方法を利用することが望ましいかもしれない。メモリ又はストレージの一部は、例えば、それがオペレーティングシステム又はセキュリティアプリケーションの一部を含む場合、又は以前の攻撃の徴候が電子デバイス上で観察又は検出された場合、マルウェア攻撃の影響を受けやすいものである可能性がある。
【０５１６】
ステップ４６１０において、メモリトラッキングファシリティ及びストレージトラッキングファシリティは、セキュリティルールに従ってアクセスをモニタしてもよい。モニタのため、メモリトラッキングファシリティ及びストレージトラッキングファシリティは、メモリ／ストレージセキュリティレイヤから受信されたセキュリティルールにより特定されるメモリ又はストレージの特定部分への試行されたアクセス（試行されたリード、ライト又は実行など）をトラップ又はトリガしてもよい。
【０５１７】
ステップ４６１５において、メモリトラッキングファシリティ及び／又はストレージトラッキングファシリティは、メモリ及び／又はストレージへの試行されたアクセスの通知をメモリ／ストレージセキュリティレイヤに通信してもよい。
【０５１８】
ステップ４６２０において、メモリ／ストレージセキュリティレイヤは、メモリ／ストレージセキュリティレイヤへの通知で特定される試行されたアクセスを要求するエンティティ（オペレーティングシステム、ドライバ又はアプリケーションなど）の身元を決定してもよい。例えば、メモリ／ストレージセキュリティレイヤと通信するＯ／Ｓ内セキュリティエージェントは、特定のメモリ及び／又はストレージリクエストの要求元エンティティに関するオペレーティングシステムからのコンテクスト情報を収集し、当該情報をメモリ／ストレージセキュリティレイヤに通信してもよい。
【０５１９】
ステップ４６２５において、メモリ／ストレージセキュリティレイヤは、要求元のエンティティの身元を検証し、当該エンティティがマルウェアによる危険にさらされたか判断してもよい。例えば、メモリ／ストレージセキュリティレイヤは、メモリに格納されているエンティティのマップ又はハッシュと、エンティティの既知の予想されるマップ又はハッシュとを比較してもよい。他の例として、メモリ／ストレージセキュリティレイヤは、マルウェアの存在についてメモリに格納されているエンティティをスキャンしてもよい。
【０５２０】
ステップ４６３０において、メモリ／ストレージセキュリティレイヤは、エンティティがリクエストを行うことが認証されているか判断してもよい。例えば、メモリ／ストレージセキュリティレイヤは、エンティティがメモリ４５０８又はストレージ４５２６の特定部分にアクセスすることが認証されているか判断するため、セキュリティルール及び／又はアプリケーションアセットを照会してもよい。ステップ４６３５において、メモリ／ストレージセキュリティレイヤは、試行されたアクセスに関するコンテンツを解析してもよい（例えば、リード、ライト又は実行されるデータ又は実行可能コードなど）。例えば、メモリ／ストレージセキュリティレイヤは、コンテンツがマルウェアを有するか判断するため、試行されたアクセスに関するコンテンツをスキャンしてもよい。
【０５２１】
ステップ４６４０において、メモリ／ストレージセキュリティレイヤは、メモリ及び／又はストレージへのアクセス履歴を解析してもよい。当該履歴は、電子デバイスのメモリ及び／又はストレージにログ又はリストとして格納されてもよい。当該解析は、履歴がマルウェアの存在を示すか判断するため、メモリ及び／又はストレージへのアクセスの履歴の動作解析を含むものであってもよい。
【０５２２】
ステップ４６４５において、メモリ／ストレージセキュリティレイヤは、メモリトラッキングファシリティ及び／又はストレージトラッキングファシリティにより報告されたメモリ及び／又はストレージへの試行されたアクセスが、試行されたアクセスがマルウェアにより影響を受けていることを示すか判断してもよい（例えば、ステップ４６２０〜４６４０の１以上の解析及び判定などに基づき）。さらに、メモリ／ストレージセキュリティレイヤは、修正されたコンテンツがマルウェア的動作により影響を受けた場合、メモリ／ストレージセキュリティレイヤは、訂正アクション（マルウェアを削除、隔離及び／又は無力化するアクションなど）を実行してもよい。さらに、いくつかの実施例では、メモリ／ストレージセキュリティレイヤは、マルウェア的動作の発生に関する情報（フォレンジック情報など）をプロテクションサーバに通信してもよい。
【０５２３】
ステップ４６５０において、メモリ／ストレージセキュリティレイヤは、電子デバイスのメモリ及び／又はストレージに格納されているアクセスのログ又はリストへのアクセスの通知を追加してもよい。アクセス履歴の動作解析を実行するため、メモリ／ストレージセキュリティレイヤは、格納されているログ又はリストに以降にアクセスしてもよい。ステップ４６５０の終了後、方法４６００はステップ４６０５に再び戻ってもよい。
【０５２４】
図４７は、電子デバイス４７０１上で実行されるオペレーティングシステム４７１０のオブジェクトへのアクセスをセキュアにするシステム４７００の実施例である。システム４７００は、オペレーティングシステム４７１３上で実行されるソフトウェアベースエンティティによるオブジェクト４７０６及び／又はオブジェクトマネージャ４７０４にアクセスする悪意ある試行を検出するため、電子デバイス４７０１上で動作するよう構成されるＯ／Ｓ下位トラップエージェント４７２０及びトリガイベントハンドラ４７２２を有してもよい。さらに、Ｏ／Ｓ下位トラップエージェント４７２０及びトリガイベントハンドラ４７２２は、オブジェクト４７０６及び／又はオブジェクトマネージャ４７０４へのアクセスをトラップする時点と、トラップされた処理に関するトリガイベントをどのように処理するかを決定するため、１以上のセキュリティルール４７０８を利用するよう構成されてもよい。Ｏ／Ｓ下位トラップエージェント４７２０及びトリガイベントハンドラ４７２２は、許可、拒絶又はトリガイベントの他の訂正アクションを実行するよう構成されてもよい。
【０５２５】
電子デバイス４７０１は、図１の電子デバイス１０３、図２の電子デバイス２０４、図４の電子デバイス４０４、図７の電子デバイス７０１、図９の電子デバイス９０１、図１２の電子デバイス１２０１及び／又はこれらの何れかの組み合わせの機能によって全体的若しくは部分的に実現されるか、又は当該機能を実現するよう構成されてもよい。電子デバイス４７０１は、メモリ４７０３に接続される１以上のプロセッサ４７０２を有してもよい。プロセッサ４７０２は、図２のプロセッサ２０８、図４のプロセッサ４０８、図７のプロセッサ７０２、図９のプロセッサ９０２、図１２のプロセッサ１２０２及び／又はこれらの何れかの組み合わせの機能によって全体的若しくは部分的に実現されるか、又は当該機能を実現するよう構成されてもよい。電子デバイス４７０１は、Ｏ／Ｓ内セキュリティエージェント４７１９及びオブジェクト４７０６を管理するオブジェクトマネージャ４７０４を含むオペレーティングシステム４７１３を有してもよい。オペレーティングシステム４７１３は、図１のオペレーティングシステム１１２、図２のオペレーティングシステム２１２、図４のオペレーティングシステム４１２、図７のオペレーティングシステム７１３、図９のオペレーティングシステム９１３、図１２のオペレーティングシステム１２１３及び／又はこれらの何れかの組み合わせの機能によって全体的若しくは部分的に実現されるか、又は当該機能を実現するよう構成されてもよい。Ｏ／Ｓ内セキュリティエージェント４７１９は、図１のＯ／Ｓ内セキュリティエージェント２１８、図４のＯ／Ｓ内セキュリティエージェント４１８、図７のＯ／Ｓ内セキュリティエージェント７１９、図９のＯ／Ｓ内セキュリティエージェント９１９、図１２のＯ／Ｓ内セキュリティエージェント１２１９及び／又はこれらの何れかの組み合わせの機能によって全体的若しくは部分的に実現されるか、又は当該機能を実現するよう構成されてもよい。セキュリティルール４７０８は、図１のセキュリティルール１１４、図２のセキュリティルール２２０、２２２、図４のセキュリティルール４２０、４３４、４３６、４３８、図５のセキュリティルール５１８、図７のセキュリティルール７０７、７２１、７２３、図９のセキュリティルール９０８、９２１、図１２のセキュリティルール１２０８、１２２１及び／又はこれらの何れかの組み合わせの機能によって実現されるか、又は当該機能を実現するよう構成されてもよい。プロテクションサーバ４７１４は、図１のプロテクションサーバ１０２、図２のプロテクションサーバ２０２及び／又はこれらの何れかの組み合わせの機能によって全体的若しくは部分的に実現されるか、又は当該機能を実現するよう構成されてもよい。
【０５２６】
メモリ４７０３は、図２のメモリ２０６、図４のメモリ４０６、図７のメモリ７０３、図９のメモリ９０３、図１２のメモリ１２０３及び／又はこれらの何れかの組み合わせの機能によって全体的若しくは部分的に実現されるか、又は当該機能を実現するよう構成されてもよい。メモリ４７０３は、メモリ４７０３へのアクセスを仮想化するよう構成されるバーチャルメモリシステムを用いて実現されてもよい。バーチャルメモリシステムでは、オペレーティングシステム４７１３上で実行されるソフトウェアプロセスには、メモリの連続するブロックとしてプロセスが処理するバーチャルアドレススペースが設けられてもよい。実際、バーチャルアドレススペースは、物理メモリの異なるエリアに分散されてもよい。プロセスがメモリへのアクセスをリクエストするとき、オペレーティングシステム４７１３は、当該プロセスのバーチャルメモリアドレスを、データが実際に格納されるメモリ４７０３の物理アドレスにマッピングしてもよい。バーチャルアドレススペースは、バーチャルメモリページと呼ばれる連続するバーチャルメモリアドレスの固定サイズのブロックに分割されてもよい。ページテーブルは、バーチャルメモリページからバーチャルメモリページが格納されるメモリ４７０３の対応する物理アドレスへのマッピングを格納するのに利用されてもよい。ページテーブルは、所与のバーチャルメモリページについて認証されたアクセスのタイプを指定するリード、ライト及び／又は実行などの各種アクセスパーミッションを含むものであってもよい。プロセスが関連するバーチャルメモリページのアクセスパーミッションにより認証されない方法によりバーチャルメモリアドレスにアクセスしようとするとき、当該試行は拒絶されてもよい。
【０５２７】
Ｏ／Ｓ下位トラップエージェント４７２０は、図１のＯ／Ｓ下位トラップエージェント１０４、図２のＳＶＭＭ２１６、図４のファームウェアセキュリティエージェント４４０、４４２及び／又はＰＣファームウェアセキュリティエージェント４４４、図５のファームウェアセキュリティエージェント５１６、図７のマイクロコードセキュリティエージェント７０８、図９のＯ／Ｓ下位トラップエージェント９２０、図１２のＯ／Ｓ下位セキュリティエージェント１２２０及び／又はこれらの何れかの組み合わせの機能によって実現されるか、又は当該機能を実現するよう構成されてもよい。トリガイベントハンドラ４７２２は、図１のトリガイベントハンドラ１０８、図２のＳＶＭＭセキュリティエージェント２１７、図４のＯ／Ｓエージェント４５０、図７のＯ／Ｓ下位エージェント７１２、図９のトリガイベントハンドラ９２２及び／又はこれらの何れかの組み合わせの機能によって実現されるか、又は当該機能を実現するよう構成されてもよい。各種実施例では、Ｏ／Ｓ下位トラップエージェント４７２０の機能の一部は、トリガイベントハンドラ４７２２により実行されてもよく、トリガイベントハンドラ４７２２の機能の一部は、Ｏ／Ｓ下位トラップエージェント４７２０により実行されてもよい。さらに、Ｏ／Ｓ下位トラップエージェント４７２０及びトリガイベントハンドラ４７２２は、同一のソフトウェアモジュールにより実現されてもよい。
【０５２８】
オペレーティングシステム４７１３は、オペレーティングシステム４７１３に関する各リソースを表すため、オブジェクト４７０３を用いてオブジェクト指向環境として実現されてもよい。例えば、オペレーティングシステム４７１３は、ドライバ４７１１、アプリケーション４７１０、プロセス、メモリ４７０３、ファイル及び／又はフォルダ、物理デバイス及び／又はオペレーティングシステム４７１３により使用される他の何れかのリソースを表すオブジェクトを有してもよい。さらに、各アプリケーション４７１０及び／又はオペレーティングシステム４７１３上で実行される他のソフトウェアプロセスはまた、オブジェクト４７０６を利用して、特定のアプリケーション４７１０又はソフトウェアプロセスにより使用されるリソースを表してもよい。オブジェクト４７０６は、特定タイプのオブジェクト４７０６に一意的であってもよいオブジェクトファンクション４７３０を有し、特定のオブジェクト４７０６のデータを操作するのに利用されてもよい。オブジェクト４７０６は、ヘッダとボディとを有するデータ構造により表されてもよい。オブジェクト４７０６のヘッダは、すべてのオブジェクトに共通の管理フィールドを有してもよい。これらのフィールドは、オブジェクト４７０６を管理するためオブジェクトマネージャ４７０４により利用されてもよい。オブジェクト４７０６のヘッダは、例えば、オブジェクト４７０６を特定するためのオブジェクト名、及び／又はオブジェクト４７０６に関するアクセスパーミッションを指定する記述子とを有してもよい。オブジェクト４７０６のボディは、特定タイプのオブジェクト４７０６に一意的なオブジェクトに固有のデータフィールドを有してもよい。
【０５２９】
オブジェクトマネージャ４７０４は、オペレーティングシステム４７１３のオブジェクト４７０６を管理するため、オペレーティングシステム４７１３において実行されるよう構成されてもよい。オブジェクトマネージャ４７０４は、オブジェクト４７０６を管理するため利用可能な各種オブジェクトマネージャファンクション４７２６を用いて実現されてもよい。例えば、オブジェクトマネージャファンクション４７２６は、データを生成、削除、修正し、及び／又はオブジェクト４７０６の設定をしゅうせいするのに利用されるファンクションを含むものであってもよい。Ｍｉｃｒｏｓｏｆｔ  ＷｉｎｄｏｗｓＴＭオペレーティングシステムのオブジェクトマネージャ４７０４により使用されるオブジェクトマネージャファンクション４７２６の具体例が、テーブル１に見つけられてもよい。
【０５３０】
【表１】
2015212979.tif 000003
メモリマップ４７１８は、図１２のメモリマップ１２０６の機能により実現されるか、又は当該機能を実現するよう構成されてもよい。メモリマップ４７１８は、ファイル、レコード、データ構造又は他の何れか適切なエンティティにより実現されてもよい。メモリマップ４７１８は、Ｏ／Ｓ下位トラップエージェント４７２０の一部として含まれてもよく、又はＯ／Ｓ下位トラップエージェント４７２０に通信接続されてもよい。メモリマップ４７１８は、各種オブジェクトリソース４７３４のメモリ４７０３の位置に関する情報を有してもよい。オブジェクトリソース４７３４は、例えば、オブジェクトマネージャ４７０４、オブジェクトマネージャファンクション４７２６及び／又はサブファンクション４７２８、オブジェクト４７０６及び／又はオブジェクトファンクション４７３０などを有してもよい。メモリマップ４７１８は、バーチャルメモリのメモリページ、物理メモリのアドレスレンジ及び／又は特定のオブジェクトリソース４７３４が格納されるディスク上の位置に関する情報を有してもよい。Ｏ／Ｓ下位トラップエージェント４７２０は、バーチャルメモリページ又は物理メモリアドレスにおける何れか所与のコンテンツの身元又はオーナーを決定するため、メモリマップ４７１８を利用するよう構成されてもよい。
【０５３１】
Ｏ／Ｓ下位トラップエージェント４７２０は、メモリマップ４７１８のコンテンツを決定、展開及び／又は投入してもよい。これを実行するため、Ｏ／Ｓ下位トラップエージェント４７２０は、セキュリティルール４７０８、プロテクションサーバ４７１４又はメモリマップ４７１８に情報を投入するための情報の他の何れか適切なソースにアクセスしてもよい。Ｏ／Ｓ下位トラップエージェント４７２０は、例えば、オペレーティングシステム４７１３の処理をプロファイルし、その後、各種オブジェクトリソース４７３４がメモリの何れに配置されているか決定することによって、メモリマップ４７１８を構成してもよい。Ｏ／Ｓ下位トラップエージェント４７２０は、Ｏ／Ｓ内セキュリティエージェント４７１９に関して、各ファンクションの実行スタックをトラバースすることによって、オブジェクトファンクション４７３０、オブジェクトマネージャファンクション４７２６及び／又はオブジェクトマネージャサブファンクション４７２８のメモリにおける位置を特定してもよい。Ｏ／Ｓ下位トラップエージェント４７２０は、メモリマップ４７１８のメモリのオーナーシップ及びコンテンツをマッピングするため、オペレーティングシステム４７１３、アプリケーション４７１０又はドライバ４７１１などのオペレーティングシステムレベルにおけるエンティティからの物理メモリ又はバーチャルメモリのリクエストをインターセプトしてもよい。例えば、オブジェクトリソース４７３４にアクセスするための試行がトラップされると、Ｏ／Ｓ下位トラップエージェント４７２０は、何れのオブジェクトリソース４７３４がアクセスされているか、及び／又は何れのエンティティが特定のオブジェクトリソース４７３４のアクセスを担当しているか決定するため、Ｏ／Ｓ内セキュリティエージェント４７１９と通信するよう構成されてもよい。Ｏ／Ｓ下位トラップエージェント４７２０は、メモリマップ４７１８が投入されるように、何れのエンティティがメモリにロードされるか判断するため、Ｏ／Ｓ内セキュリティエージェント４７１９と通信してもよい。メモリマップ４７１８は、物理メモリ、バーチャルメモリのためのメモリマッピング及び／又はこれら２つの間のマッピングを含むものであってもよい。
【０５３２】
オブジェクト指向オペレーティングシステム４７１３の実質的にすべてのリソースがオブジェクト４７０６により表される可能性があるため、マルウェアは、オブジェクト４７０６を攻撃することによって、オペレーティングシステム４７１３のセキュリティを危険にさらすことを試みる。Ｏ／Ｓ下位トラップエージェント４７２０及び／又はトリガイベントハンドラ４７２２は、マルウェアからオブジェクト４７０６をプロテクトするよう構成されてもよい。マルウェアによるオブジェクト４７０６に対する攻撃は、オブジェクト４７０６及び／又はオブジェクトマネージャ４７０４を操作するための未認証の試行など、不適切なオブジェクトリソース４７３４に対する何れかの試行を含むものであってもよい。例えば、オペレーティングシステム４７１３は、オペレーティングシステム上で実行される各ソフトウェアプロセスを表すオブジェクト４７０６を有し、マルウェアは、オペレーティングシステム４７１３上で実行されるセキュリティアプリケーションに関する特定のプロセスオブジェクト４７０６を削除してもよい。このようにして、セキュリティアプリケーションの実行は停止し、セキュリティソフトウェアのセーフガードをマルウェアが覆し、さらなる悪意あるアクティビティを実行することを可能にする。他の例として、マルウェアは、マルウェアスキャナから自らを偽装するため、オブジェクト名などの自らのオブジェクト４７０６のフィールドを編集してもよい。マルウェアはまた、オブジェクト４７０６のセキュリティ設定を修正することを試行する可能性がある。例えば、マルウェアは、コアオペレーティングシステムファイルが何れかのエンティティによりアクセスされることを可能にするため、コアオペレーティングシステムファイルを表すオブジェクト４７０６のアクセスパーミッションを修正することを試みる可能性がある。マルウェアは、オブジェクトマネージャファンクション４７２６、オブジェクトマネージャサブファンクション４７２８及び／又はオブジェクトファンクション４７３０をコールすることによって、上述された攻撃を間接的に実行してもよい。マルウェアは、特定のファンクションのコール元として自らを隠蔽するため、ファンクションのコール前にオブジェクトのセキュリティ設定を変更してもよい。マルウェアは、オブジェクトまねージャファンクション４７２６が未認証の実行からプロテクトされるが、１以上のサブファンクション４７２６はプロテクトされない場合、オブジェクトマネージャファンクション４７３０に反対するように、オブジェクトマネージャサブファンクション４７２８をコールしてもよい。このようにして、マルウェアは、オブジェクトマネージャファンクション４７２６の１以上のプロテクトされていないサブファンクション４７２８をコールすることによって、オブジェクトマネージャファンクション４７２６のプロテクションを回避することが可能である可能性がある。マルウェアはまた、オブジェクト４７０６及び／又はオブジェクトマネージャ４７０４が格納されるメモリ４７０３の位置にアクセスすることによって、オブジェクト４７０６を直接的に攻撃してもよい。
【０５３３】
Ｏ／Ｓ下位トラップエージェント４７２０及び／又はトリガイベントハンドラ４７２２は、オブジェクトリソース４７３４にアクセスするための試行をプロテクトすることによって、オブジェクト４７０６に対するマルウェア攻撃を阻止するよう構成されてもよい。例えば、Ｏ／Ｓ下位トラップエージェント４７２０は、オブジェクトリソース４７３４をリード、ライト又は実行するための試行をトラップするよう構成されてもよく、トリガイベントハンドラ４７２２は、トラップされた試行がマルウェアを示すか判断するよう構成されてもよい。オブジェクトリソース４７３４にアクセスするためのトラップされた試行は、オブジェクトマネージャ４７０４のファンクション４７２６及び／又はサブファンクション４７２８を実行するための試行、オブジェクト４７０６のファンクション４７３０を実行するための試行、及び／又はオブジェクトリソース４７３４が格納されるメモリ４７０３の位置に直接アクセスするための試行を含むものであってもよい。Ｏ／Ｓ下位トラップエージェント４７２０のメモリトラップ機能は、図１２のＯ／Ｓ下位セキュリティエージェントの機能により実現されるか、又は当該機能を実現するよう構成されてもよい。Ｏ／Ｓ下位トラップエージェント４７２０は、オブジェクトファンクション４７３０、オブジェクトマネージャファンクション４７２６及び／又はオブジェクトマネージャサブファンクション４７２８のコードを何れか適切な方法により実行するための試行をトラップするよう構成されてもよい。例えば、Ｏ／Ｓ下位トラップエージェント４７２０は、特定のファンクションのコードが格納されるメモリ位置におけるコードを実行するための試行をトラップするよう構成されてもよい。Ｏ／Ｓ下位トラップエージェント４７２０は、トラップを要求するファンクションのメモリ４７０３の位置を特定するため、メモリマップ４７１８を照会するよう構成されてもよい。コードを実行するためのトラップされる試行は、物理メモリレベル又はバーチャルメモリレベルでトラップされてもよい。例えば、Ｏ／Ｓ下位トラップエージェント４７２０は、特定のファンクションのコードに関するバーチャルメモリページを実行するための試行をトラップするよう構成されてもよい。Ｏ／Ｓ下位トラップージェント４７２０はまた、特定のファンクションのコードが格納されている物理メモリアドレスに対応するバーチャルメモリアドレスにおけるコードを実行するための試行をトラップするよう構成されてもよい。当該トラップは、バーチャルメモリアドレスから物理メモリアドレスへの変換前に実行されてもよい。さらなる他の実施例では、Ｏ／Ｓ下位トラップエージェント４７２０は、特定のファンクションのコードが格納される物理メモリアドレスにおけるコードを実行するための試行をトラップするよう構成されてもよい。当該トラップは、バーチャルメモリアドレスから物理メモリアドレスへの変換後に実行されてもよいし、又はバーチャルメモリを介し最初に変換されることなく、物理メモリアドレスにおけるコードを実行するための直接的な試行の後に実行されてもよい。オブジェクトファンクション４７３０、オブジェクトマネージャファンクション４７２６及び／又はオブジェクトマネージャサブファンクション４７２８を実行するための試行をトラップした後、Ｏ／Ｓ下位トラップエージェント４７２０は、トラップされた試行を処理するため、トラップされた試行に関するトリガイベントを生成し、トリガイベントハンドラ４７２２に送信してもよい。
【０５３４】
Ｏ／Ｓ下位トラップエージェント４７２０は、メモリ４７０３のオブジェクトリソース４７３４にアクセスするための試行をトラップするよう構成されてもよい。例えば、Ｏ／Ｓ下位トラップエージェント４７２０は、オブジェクト４７０６及び／又はオブジェクトマネージャ４７０３を格納するのに利用されるメモリ位置にアクセスするための試行をトラップするよう構成されてもよい。Ｏ／Ｓ下位トラップエージェント４７２０はまた、オブジェクトファンクション４７３０、オブジェクトマネージャファンクション４７２６及び／又はオブジェクトマネージャサブファンクション４７２８のコードを格納するのに利用されるメモリ位置に書き込むための試行をトラップするよう構成されてもよい。当該トラップは、悪意あるコードによりオブジェクトファンクション４７３０、オブジェクトマネージャファンクション４７２６及び／又はオブジェクトマネージャサブファンクション４７２８のコードをマルウェアが上書きすることを阻止する。いくつかの実施例では、Ｏ／Ｓ下位トラップエージェント４７２０は、メモリマップ４７１８を利用して、オブジェクトリソース４７３４のメモリ４７０３における位置を特定してもよい。一実施例では、Ｏ／Ｓ下位トラップエージェント４７２０は、オブジェクトリソース４７３４のバーチャルメモリアドレスに対応するバーチャルメモリページにアクセスするための試行をトラップするよう構成されてもよい。他の実施例では、Ｏ／Ｓ下位トラップエージェント４７２０は、オブジェクトリソース４７３４が格納される物理メモリアドレスに対応するバーチャルメモリアドレスにアクセスするための試行をトラップするよう構成されてもよい。当該トラップは、バーチャルメモリアドレスから物理メモリアドレスへの変換前に実行されてもよい。さらなる他の実施例では、Ｏ／Ｓ下位トラップエージェント４７２０は、オブジェクトリソース４７３４が格納される物理メモリアドレスにアクセスするための試行をトラップするよう構成されてもよい。当該トラップは、バーチャルメモリアドレスから物理メモリアドレスへの変換後に実行されてもよいし、又はバーチャルメモリを介して最初に変換されることなく物理メモリアドレスにアクセスするための直接的な試行の後に実行されてもよい。
【０５３５】
一実施例では、Ｏ／Ｓ下位トラップエージェント４７２０は、特定のオブジェクトリソース４７３４にアクセスするためのリクエストの要求元のエンティティを決定するため、Ｏ／Ｓ内セキュリティエージェント４７１９を照会するよう構成されてもよい。他の実施例では、Ｏ／Ｓ下位トラップエージェント４７２０は、リクエストの発信元のバーチャルメモリページを決定し、当該メモリページがそこにマッピングされた何れかの要素に関連付けされているか決定するため、メモリマップ４７１８を照会するよう構成されてもよい。さらなる他の実施例では、Ｏ／Ｓ下位トラップエージェント４７２０は、要求元の要素のバーチャルメモリページのハッシュ又はシグネチャを決定し、それを既知のエンティティのハッシュ及びシグネチャと比較するよう構成されてもよい。オブジェクトリソース４７３４にアクセスするための試行をトラップし、要求元のエンティティを特定した後、Ｏ／Ｓ下位トラップエージェント４７２０は、リクエストの特定のオブジェクトリソース４７３４、アクセスタイプ及び要求元のエンティティを含むトラップされた試行に関する情報を含むトリガイベントを生成してもよい。Ｏ／Ｓ下位トラップエージェント４７２０は、トラップされた試行を処理するため、トリガイベントをトリガイベントハンドラ４７２２に送信してもよい。
【０５３６】
トリガイベントハンドラ４７２２は、Ｏ／Ｓ下位トラップエージェント４７２０からのトラップされた試行に関するトリガイベントを受信するよう構成されてもよい。トリガイベントハンドラ４７２２は、セキュリティルール４７０８に関して、トリガイベントに関するコンテクスト情報を利用して、トリガイベントに関して実行するのに適切なアクションを決定してもよい。いくつかの実施例では、トリガイベントハンドラ４７２２は、トリガイベントに関するコンテクスト情報を特定するため、Ｏ／Ｓ内セキュリティエージェント４７１９と連係してもよい。コンテクスト情報は、トラップされた試行の要求元のエンティティ、トラップされた試行に関する特定のオブジェクト４７０６、及び／又は特定のオブジェクト４７０６に関して要求されたアクセスタイプを含むものであってもよい。セキュリティルール４７０８は、例えば、セキュリティアプリケーションに関するプロセスオブジェクトがセキュリティアプリケーション自体によってのみ削除されてもよいことを指示してもよい。他の例として、セキュリティルール４７０８は、新たなオブジェクト４７０６を作成するため、オペレーティングシステム４７１３からの試行を認証し、Ｏ／Ｓ下位トラップエージェント４７２０が新たに生成されたオブジェクト４７０６にアクセスするための以降の試行をトラップすることを要求してもよい。
【０５３７】
Ｏ／Ｓ下位トラップエージェント４７２０は、オペレーティングシステム４７１３の動作を表す動作状態マップ４７３２を生成するため、オブジェクトリソース４７３４へのアクセスをモニタするよう構成されてもよい。例えば、Ｏ／Ｓ下位トラップエージェント４７２０は、オブジェクトリソース４７３４にアクセスするための試行をトラップし、トラップされた各処理を表すため動作状態マップ４７３２を更新することによって、動作状態マップ４７３２を生成してもよい。動作状態マップ４７３２は、未知のゼロデイ（ｚｅｒｏ−ｄａｙ）マルウェアにより攻撃を予防的に検出及び阻止するため、動作解析システム４７１６を実現するため利用されてもよい。動作状態マップ４７３２及び動作解析システム４７１６の実施例の説明は、以下の図４８の動作状態マップ４８０２及び動作解析システム４８０４の説明に見つけられてもよい。
【０５３８】
図４８は、オペレーティングシステムのオブジェクトへのアクセスをセキュアにするシステム又は方法により利用される動作状態マップ４８０２の実施例である。例えば、動作状態マップ４８０２は、図４７の動作状態マップ４７３２として実現され、図４７の動作解析システム４７１６、Ｏ／Ｓ下位トラップエージェント４７２０及び／又はトリガイベントハンドラ４７２２により生成及び／又は利用されてもよい。オブジェクト指向環境では、オペレーティングシステム及びファイル、アプリケーション、プロセッサ、ドライバ及び／又はデバイスを含むそれのリソースのすべてが、オブジェクトとして実現されてもよい。動作状態マップ４８０２は、オペレーティングシステムのオブジェクト間の処理及び／又はやりとりに基づき、オブジェクト指向オペレーティングシステムの動作の表現を提供してもよい。動作状態マップ４８０２は、マルウェアに通常関連するオブジェクトのインタラクションのパターンを特定するため利用されてもよい。
【０５３９】
動作状態マップ４８０２は、グラフ及び／又はマップを含む何れか適切なデータ構造を利用して実現されてもよい。グラフを利用した実施例では、各ノードは、オペレーティングシステムのオブジェクトを表し、各ノード間のエッジは、オブジェクト間の処理及び／又はやりとりを表すものであってもよい。例えば、オペレーティングシステムによるプロセスの実行は、オペレーティングシステムオブジェクトを表すノードと、プロセスオブジェクトを表すためのノードとを利用して、動作状態マップにより表されてもよい。動作状態マップは、オペレーティングシステムオブジェクトから、当該プロセスがオペレーティングシステムにより実行されたことを表すプロセスオブジェクトへのエッジを含むものであってもよい。プロセスがファイルを開く場合、動作状態マップは、特定のファイルオブジェクトを表すノードを含むよう更新され、プロセスオブジェクトから、特定のファイルがプロセスにより開かれたことを表すファイルオブジェクトまでのエッジを含むものであってもよい。動作状態マップは、オブジェクト間で実行される各処理について、このようにして連続的に更新されてもよい。いくつかの実施例では、動作状態マップは、オペレーティングシステム全体の動作を表すよう実現されてもよく、又は特定のアプリケーション、ドライバ及び／又はオペレーティングシステム上で実行されるプロセスなどのオペレーティングシステムの特定のコンポーネントの動作のみを表すよう実現されてもよい。
【０５４０】
動作状態マップ４８０２は、マルウェアに感染したオペレーティングシステムに関する動作状態マップの実施例である。動作状態マップ４８０２は、オペレーティングシステムのオブジェクト、オブジェクトマネージャ４８１６、セキュリティアプリケーション４８０８及びマルウェア４８１０を表すノードを含む。オペレーティングシステム４８０６からセキュリティアプリケーション４８０８へのエッジは、オペレーティングシステムによるセキュリティアプリケーション４８０８の実行を表し、オペレーティングシステム４８０６からマルウェア４８１０へのエッジは、オペレーティングシステム４８０６によるマルウェア４８１０の実行を表す。オペレーティングシステム４８０６からオブジェクトマネージャ４８１６へのエッジは、オペレーティングシステム４８０６によるオブジェクトマネージャ４８１６の生成を表す。マルウェア４８１０は、マルウェア４８１０により実行される悪意あるアクティビティを表す複数のエッジに関連付けされる。マルウェア４８０６からオペレーティングシステム４８１４への２つのエッジは、マルウェア４８１０がオペレーティングシステムファイル４８１４を開き、オペレーティングシステムファイル４８１４に書き込むことを表す。例えば、オペレーティングシステムファイル４８１４は、オペレーティングシステム４８０６が初期化されると実行されるアプリケーションを指定するのに利用されてもよく、マルウェア４８１０は、これらのアプリケーションの１つとして自らを含むようこれらのファイルに書き込むようにしてもよい。マルウェア４８１０からセキュリティアプリケーション４８０８へのエッジは、マルウェア４８１０がセキュリティアプリケーション４８０８を終了することを試行していることを表す。マルウェア４８１０からシステムコールテーブル４８１２へのエッジは、マルウェア４８１０がシステムコールテーブル４８１２に書き込むことを表す。マルウェア４８１０は、例えば、特定のシステムコールについてエントリを修正するため、システムコールテーブル４８１２に書き込みしてもよい。このようにして、システムコールが実行されるときは常に、マルウェア４８１０の悪意あるコードが、意図されたシステムコールの代わりに実行される可能性がある。マルウェア４８１０からオブジェクトマネージャ４８１６へのエッジは、マルウェアがオブジェクトマネージャ４８１０の特定のファンクションをコールすることを試行していることを表す。例えば、マルウェア４８１０は、オブジェクトマネージャ４８１６の削除オブジェクトファンクションをコールすることによって、オペレーティングシステム４７１６のオブジェクトを削除すすることを試行してもよい。動作状態マップ４８０２は、動作状態マップの可能性のある１つのみの実施例を表す。動作状態マップ４８０２は、オペレーティングシステムのオブジェクトの処理及び／又はやりとりを示すのに適した何れかの方法により実現されてもよい。
【０５４１】
図４７に戻って、いくつかの実施例では、動作状態マップ４７３２は、Ｏ／Ｓ下位トラップエージェント４７２０により生成されてもよい。他の実施例では、動作状態マップ４７３２は、以前に生成されており、未知のゼロデイマルウェアによる攻撃を予防的に検出及び阻止するのに利用されてもよい。
【０５４２】
動作状態マップ４７３２は、オペレーティングシステム４７１３のオブジェクト４７０６の間の処理及び／又はやりとりをモニタリングすることによって生成されてもよい。例えば、Ｏ／Ｓ下位トラップエージェント４７２０は、オブジェクトリソース４７３４にアクセスするための試行をトラップし、トラップされた各処理を反映させるため、動作状態マップ４７３２を更新してもよい。いくつかの実施例では、動作状態マップ４７３２は、マルウェアに感染したオペレーティングシステム４７１３を用いて生成される可能性がある。他の実施例では、動作状態マップ４７３２は、マルウェアのないオペレーティングシステム４７１３を用いて生成されるかもしれない。いくつかの実施例では、動作状態マップ４７３２が生成された後、それは、マルウェアに関する動作パターンを隔離し、及び／又は安全な動作パターンを隔離するため解析されてもよい。当該実施例では、動作状態マップ４７３２は、隔離された動作を表すためだけに更新されてもよく、又は新たな動作状態マップが、隔離された動作のみを表すのに生成されてもよい。このようにして、動作状態マップ４７３２は、マルウェアに関連すると知られているオブジェクトの動作のモデル、及び／又は安全であると知られているオブジェクトの動作のモデルを提供してもよい。例えば、動作状態マップ４７３２が、マルウェアに感染したオペレーティングシステム４７１３上で生成された場合、動作状態マップ４７３２は、悪意ある動作を隔離するよう解析されてもよい。マルウェアにより通常実行される悪意ある動作は、コアオペレーティングシステムファイルの修正、システムコールテーブルのアクセス及び／又はセキュリティアプリケーションに関するプロセスのキルなどを含む。マルウェアに感染したオペレーティングシステム４７１３の動作状態マップ４７３２を解析することによって、悪意ある動作がオブジェクトレベルで解析されてもよい。オブジェクトレベルの悪意ある動作の解析は、特定の悪意あるアクティビティが、悪意あるアクティビティを実行するオブジェクト４７０６の間の処理パターンと相互関連付けされることを可能にする。同様に、動作状態マップ４７３２がマルウェアのないオペレーティングシステム４７１３上で生成された場合、動作状態マップ４７３２は、既知の安全な動作とオブジェクト処理パターンとを相互関連付けするため、オブジェクトレベルでの安全な動作を解析するのに利用されてもよい。
【０５４３】
いくつかの実施例では、動作状態マップ４７３２は、未知のゼロデイマルウェアによる攻撃を予防的に検出及び阻止するのに利用されてもよい。当該実施例では、動作状態マップ４７３２は、以前に生成され、マルウェアに通常関連付けされる動作のモデル及び／又は安全であると知られた動作のモデルを提供してもよい。当該実施例では、動作状態マップ４７３２は、マルウェアに通常関連付けされるオペレーティングシステム４７１３の動作を特定するため、動作解析システム４７１６により利用されてもよい。動作解析システム４７１６は、Ｏ／Ｓ下位トラップエージェント４７２０により実現されてもよく、又はトリガイベントハンドラ４７２２により実現されてもよく、いくつかの実施例では、動作解析システム４７１６の機能は、部分的にＯ／Ｓ下位トラップエージェント４７２０及びトリガイベントハンドラ４７２２により実現されてもよい。Ｏ／Ｓ下位トラップエージェント４７２０は、オブジェクトリソース４７３４にアクセスするための試行をトラップするよう構成されてもよく、動作解析システム４７１６は、トラップされた試行がマルウェアを示すか判断するため利用されてもよい。動作解析システム４７１６は、動作状態マップ４７３２への試行されたアクセスを比較してもよい。動作状態マップ４７３２が既知の安全な動作を表す実施例では、動作解析システム４７１６は、トラップされた試行が動作状態マップ４７３２からの何れかの安全な動作に一致するか判断してもよい。一致が検出された場合、動作解析システムは、トラップされた試行が安全であると判断し、当該試行を許可することを決定してもよい。動作状態マップ４７３２がマルウェアに関する動作を表す実施例では、動作解析システム４７１６は、トラップされた試行が動作状態マップ４７３２からのマルウェアに関する動作に一致するか判断してもよい。一致が検出された場合、動作解析システム４７１６は、トラップされた試行が安全でないと判断し、当該試行を拒絶することを決定してもよい。
【０５４４】
いくつかの実施例では、複数の動作状態マップ４７３２が利用されてもよい。例えば、Ｏ／Ｓ下位トラップエージェント４７２０は、現在の動作状態マップとモデル動作状態マップとを含むものであってもよい。現在の動作状態マップは、オペレーティングシステム４７１３の現在の状態を表すものであってもよい。モデル動作状態マップは、マルウェアに通常関連付けされるモデル動作及び／又は安全であると知られるモデル動作を提供する以前に生成された状態マップであってもよい。Ｏ／Ｓ下位トラップエージェント４７２０は、オブジェクトリソース４７３４の試行されたアクセスをトラップし、試行されたアクセスを反映するため、現在動作状態マップを更新してもよい。動作解析システム４７１６は、モデル動作状態マップと現在動作状態マップとを比較してもよい。このようにして、動作解析システム４７１６は、トラップされた試行がマルウェアに関するものであるか判断するため、現在動作状態マップからの以前の動作に関して、トラップされた試行を解析してもよい。これは、動作解析システム４７１６がトラップされた試行をより効果的に評価することを可能にするものであってもよい。
【０５４５】
図４９は、オペレーティングシステムのオブジェクトへのアクセスをセキュアにする方法４９００の実施例である。ステップ４９０５において、Ｏ／Ｓ下位セキュリティエージェント、Ｏ／Ｓ内セキュリティエージェント、トリガイベントハンドラ及びプロテクションサーバの身元及びセキュリティが認証されてもよい。当該認証は、各コンポーネントのメモリにおけるイメージの特定及び検証、暗号化ハッシュの利用及び／又は秘密鍵の利用によることを含む何れか適切な方法を利用して実行されてもよい。ステップ４９０５が終了するまで、他のステップの処理は保留されてもよい。ステップ４９１０において、セキュリティルールが取得される。セキュリティルールは、Ｏ／Ｓ下位セキュリティエージェント、Ｏ／Ｓ内セキュリティエージェント及び／又はトリガイベントハンドラによりローカルに格納されてもよく、及び／又はプロテクションサーバ上などのリモートに格納されてもよい。当該セキュリティルールは、ステップ４９１５〜４９４５における判定を行うのに利用されてもよい。
【０５４６】
ステップ４９１５において、オペレーティングシステムのオブジェクトに関するリソースにアクセスするための試行がインターセプトされてもよい。オペレーティングシステムのオブジェクトに関するリソースは、例えば、オブジェクトマネージャ、オブジェクトマネージャファンクション及び／又はサブファンクション、オブジェクト自体及び／又は当該オブジェクトのファンクションなどを含むものであってもよい。インターセプトされた試行は、オブジェクトファンクション、オブジェクトマネージャファンクション、及び／又はオブジェクトマネージャファンクションのサブファンクションを格納するメモリにおける位置のコードを実行するための試行を含むものであってもよい。インターセプトされた試行はまた、オブジェクト及び／又はオブジェクトマネージャが格納されるメモリにおける位置にアクセスするための試行を含むものであってもよい。いくつかの実施例では、当該試行は、バーチャルメモリアドレスから物理メモリアドレスへの変換前にバーチャルメモリレベルにおいてインターセプトされてもよい。他の実施例では、当該試行は物理アドレスレベルでインターセプトされてもよい。いくつかの実施例では、メモリマップは、プロテクトされるオブジェクトリソースのメモリにおける位置を指定するのに利用されてもよい。
【０５４７】
ステップ４９２０において、インターセプトされた試行の要求元のエンティティが特定される。例えば、インターセプトされた試行は、アプリケーション、ドライバ、Ｏ／Ｓ内セキュリティエージェント、オペレーティングシステム及び／又は他のソフトウェアエンティティからのものであってもよい。いくつかの実施例では、要求元のエンティティは、オペレーティングシステム上で実行されるエンティティのアドレスを含むメモリマップを照会することによって特定されてもよい。
【０５４８】
ステップ４９２５において、オペレーティングシステムの現在動作状態マップが更新されてもよい。現在動作状態マップは、オペレーティングシステムのオブジェクト間のやりとり及び／又は処理に基づき、オペレーティングシステムの動作を示すデータ構造であってもよい。オブジェクトリソースにアクセスするためのインターセプトされた各試行について、現在動作状態マップは、インターセプトされた試行に対応する処理を反映するため更新されてもよい。ステップ４９３０において、現在動作状態マップは、モデル動作状態マップと比較される。モデル動作状態マップは、マルウェアに典型的に関連付けされる動作及び／又は安全であると典型的に知られる動作を表すものであってもよい。当該比較は、マルウェアに関するオブジェクトの処理パターンの特定を可能にしてもよく、又は安全である知られるオブジェクトの処理パターンの特定を可能にするものであってもよい。
【０５４９】
ステップ４９３５において、インターセプトされた試行が認証されるか判断される。マルウェアがステップ４９３０からの現在動作状態マップとモデル状態マップとの比較に基づき特定された場合、当該試行は認証されないようにしてもよい。ステップ４９３０における比較からマルウェアが特定されなかった場合、セキュリティルールが、特定の試行が認証されているか判断するため、インターセプトされた試行に関するコンテクスト情報に関して利用されてもよい。コンテクスト情報は、インターセプトされた試行の要求元のエンティティ、インターセプトされた試行に関する特定のオブジェクト及び／又は要求されたアクセスのタイプを含むものであってもよい。例えば、セキュリティルールは、セキュリティアプリケーションに関するプロセスオブジェクトが、セキュリティアプリケーション自体によってのみ削除されることを指定してもよい。試行が認証されていると判断された場合、ステップ４９４０において、アクセスは許可されてもよい。試行が認証されていない場合、ステップ４９４５において、アクセスは拒絶されてもよい。
【０５５０】
図４９からの方法のステップは、連続的、定期的、要求に応答して、及び／又はイベントのトリガに応答して電子デバイスをプロテクトするため、必要に応じて繰り返されてもよい。
【０５５１】
図５０は、電子デバイス５００１上のドライバ間の通信をセキュアにするシステム５０００の実施例である。システム５０００は、電子デバイス５００１上のオペレーティングシステム５０１２などのオペレーティングシステムのドライバ間の通信をインターセプト又は覆すための悪意ある試行を検出するため、電子デバイス５００１上で動作するよう構成されるＯ／Ｓ下位セキュリティエージェント５０２０を有してもよい。さらに、Ｏ／Ｓ下位セキュリティエージェント５０２０は、例えば、何れの試行されたドライバ間通信をトラップするか、ドライバ間通信ファシリティの何れの試行されたアクセスをトラップするか、又は試行と関係するエンティティとに基づきしこうが認証されるかなどを決定するため、１以上のセキュリティルール５００８を利用するよう構成されてもよい。Ｏ／Ｓ下位セキュリティエージェント５０２０は、許可、拒絶又はトラップされた試行に対する他の訂正アクションを実行するよう構成されてもよい。
【０５５２】
電子デバイス５００１は、図１の電子デバイス１０３、図２の電子デバイス２０４、図４の電子デバイス４０４、図７の電子デバイス７０１、図９の電子デバイス９０１、図１２の電子デバイス１２０１及び／又はこれらの何れかの組み合わせの機能により全体的若しくは部分的に実現されるか、又は当該機能を実現するよう構成されてもよい。電子デバイス５００１は、メモリ５００３などのメモリに接続される１以上のプロセッサ５００２を有してもよい。プロセッサ５００２は、図２のプロセッサ２０８、図４のプロセッサ４０８、図７のプロセッサ７０２、図９のプロセッサ９０２、図１２のプロセッサ１２０２及び／又はこれらの何れかの組み合わせの機能により全体的若しくは部分的に実現されるか、又は当該機能を実現するよう構成されてもよい。メモリ５００３は、図２のメモリ２０６、図４のメモリ４０６、図７のメモリ７０３、図９のメモリ９０３、図１２の物理メモリ１２０３若しくはバーチャルメモリ１２０４及び／又はこれらの何れかの組み合わせの機能により全体的若しくは部分的に実現されるか、又は当該機能を実現するよう構成されてもよい。電子デバイス５００１は、１以上のセキュリティルール５０２１に接続されるＯ／Ｓ内セキュリティエージェント５０１９を有するオペレーティングシステム５０１２を有してもよい。オペレーティングシステム５０１２は、図１のオペレーティングシステム１１２、図２のオペレーティングシステム２１２、図４のオペレーティングシステム４１２、図７のオペレーティングシステム７１３、図９のオペレーティングシステム９１３、図１２のオペレーティングシステム１２１３及び／又はこれらの何れかの組み合わせの機能により全体的若しくは部分的に実現されるか、又は当該機能を実現するよう構成されてもよい。Ｏ／Ｓ内セキュリティエージェント５０１９は、図１のＯ／Ｓ内セキュリティエージェント２１８、図４のＯ／Ｓ内セキュリティエージェント４１８、図７のＯ／Ｓ内セキュリティエージェント７１９、図９のＯ／Ｓ内セキュリティエージェント９１９、図１２のＯ／Ｓ内セキュリティエージェント１２１９及び／又はこれらの何れかの組み合わせの機能により全体的若しくは部分的に実現されるか、又は当該機能を実現するよう構成されてもよい。
【０５５３】
Ｏ／Ｓ下位セキュリティエージェント５０２０は、図１のＯ／Ｓ下位トラップエージェント１０４若しくはトリガイベントハンドラ１０８、図２のＳＶＭＭ２１６若しくはＳＶＭＭセキュリティエージェント２１７、図４のファームウェアセキュリティエージェント４４０、４４２、Ｏ／Ｓ下位エージェント４５０若しくはＰＣファームウェアセキュリティエージェント４４４、図５のファームウェアセキュリティエージェント５１６、図７のマイクロコードセキュリティエージェント７０８若しくはＯ／Ｓ下位エージェント７１２、図９のＯ／Ｓトラップエージェント９２０若しくはトリガイベントハンドラ９２２、図１２のＯ／Ｓ下位セキュリティエージェント１２２０及び／又はこれらの何れかの組み合わせの機能により全体的若しくは部分的に実現されるか、又は当該機能を実現するよう構成されてもよい。
【０５５４】
セキュリティルール５００８は、図１のセキュリティルール１１４、図２のセキュリティルール２２２、図４のセキュリティルール４３４、４３６、４３８、図５のセキュリティルール５１８、図７のセキュリティルール７０７、７２３、図９のセキュリティルール９０８、図１２のセキュリティルール１２０８及び／又はこれらの何れかの組み合わせの機能により実現されるか、又は当該機能を実現するよう構成されてもよい。セキュリティルール５０２１は、図２のセキュリティルール２２０、図４のセキュリティルール４２０、図７のセキュリティルール７２１、図９のセキュリティルール９２１、図１２のセキュリティルール１２２１及び／又はこれらの何れかの組み合わせの機能により実現されるか、又は当該機能を実現するよう構成されてもよい。
【０５５５】
電子デバイス５００１は、ドライバ５０２９などのドライバ又はドライバ５０２９のドライバ間通信ファシリティを利用又は通信するため、電子デバイス５００１のリソースにアクセスすることを試行してもよいアプリケーション５０２６やドライバ２  ５０２８などの１以上のアプリケーション、ドライバ又は他のエンティティを含むものであってもよい。アプリケーション５０２６又はドライバ２  ５０２８は、何れかのプロセス、アプリケーション、プログラム又はドライバを含むものであってもよい。アプリケーション５０２６又はドライバ２  ５０２８は、ドライバ５０２９をコールすることを試行し、ドライバ５０２９と他のドライバとの間のドライバ間通信を生じさせるコールシーケンスを開始してもよい。アプリケーション５０２６又はドライバ２  ５０２８は、直接的に又は他のルーチンへのコールを介しドライバ間通信のファシリティにアクセスすることを試行してもよい。アプリケーション５０２６又はドライバ２  ５０２８は、ドライバサブファンクション５０３０をコールすることを試行してもよい。このようなドライバ間通信のファシリティへのアクセス及びコールのすべては、プロセッサ５００２に関してメモリ５００３に対する試行されたリード、ライト又は実行処理を介し試行されてもよい。Ｏ／Ｓ下位セキュリティエージェント５０２０は、ドライバ間通信のファシリティに対する試行されたコール又はアクセスをインターセプトし、当該試行がマルウェアを示すか判断するため、Ｏ／Ｓ内セキュリティエージェント５０１９からのセキュリティルール５００８及びコンテクスト情報を照会し、何れか適切な訂正アクションを実行するよう構成されてもよい。Ｏ／Ｓ下位セキュリティエージェント５０２０は、メモリ５００３へのアクセス及び／又はプロセッサ５００２の利用のトラップを介しインターセプトを行うよう構成されてもよい。Ｏ／Ｓ下位セキュリティエージェント５０２０は、セキュリティルール５００８にアクセスし、何れのメモリ５００３のアクセス及び／又はプロセッサ５００２の利用がトラップされるか判断するよう構成されてもよい。Ｏ／Ｓ下位セキュリティエージェント５０２０は、トラップされるべきアクションに対応する制御構造においてフラグを設定するよう構成されてもよい。
【０５５６】
一実施例では、アプリケーション５０２６又はドライバ２  ５０２８は、メモリ５００３がオペレーティングシステム５０１２により仮想化されているメモリページを介したドライバ間通信に関するメモリ５００３の一部にアクセスすることを試行してもよい。当該実施例では、Ｏ／Ｓ下位セキュリティエージェント５０２０は、メモリページ単位でメモリ５００３の試行されたアクセス又は実行をトラップするよう構成されてもよい。他の実施例では、アプリケーション５０２６又はドライバ２  ５０２８は、ドライバ間通信に関するメモリ５００３の物理部分にアクセスすることを試行してもよい。当該実施例では、Ｏ／Ｓ下位セキュリティエージェント５０２０は、メモリアドレス単位でメモリ５００３の実行の試行されたアクセスをトラップするよう構成されてもよい。
【０５５７】
オペレーティングシステム５０１２及び電子デバイス５００１のドライバは、ドライバ間通信のためのファシリティを提供してもよい。例えば、ＮＴＦＳ．ＳＹＳ５０３１などの
ドライバは、ディスパッチルーチンポインタ５０３２、エクスポートアドレステーブル５０３４、インポートアドレステーブル５０３６又は高速Ｉ／Ｏルーチンポインタ５０３８を含むものであってもよい。ディスパッチルーチンポインタ５０３２は、ＣｏｄｅＳｅｃｔｉｏｎ１、ＣｏｄｅＳｅｃｔｉｏｎ２又はマルウェアコードセクション５０４６などのコードセクションに実現されるファンクションなど、ドライバのファンクションへのポインタを有してもよい。エクスポートアドレステーブル５０３４は、ポインタがドライバのファンクションをコールするため他のドライバにより利用されてもよいファンクションに関するコードセクションへのポインタを含むものであってもよい。インポートアドレステーブル５０３６は、ドライバがコールするため１以上の他のドライバのファンクションへのポインタのリストを含むものであってもよい。当該インポートアドレステーブル５０３６は、他のドライバのエクスポートアドレステーブルをインポートした結果であってもよい。ドライバ間通信のファシリティは、ドライバのデータにアクセスするため提供されてもよい。ドライバのデータは、ドライバの性質及び構成に固有のものであってもよい。例えば、ＮＴＦＳ．ＳＹＳ５０３１は、すべてのオープンファイルへのポインタを含むオープンファイル処理リスト５０４０、又はオペレーティングシステム５０１２内に搭載される各ストレージボリュームへのポインタを含む搭載ボリュームリスト５０４２のデータセクション又は構造を含むものであってもよい。ドライバ間通信ファシリティは、マルウェアにより攻撃される傾向があり、Ｏ／Ｓ下位セキュリティエージェント５０２０は、これらのファシリティ、これらの基礎となる機構又はドライバデータなどのこれらのファシリティの目的の利用に対する試行されたアクセスをトラップしてもよい。
【０５５８】
図５１は、ドライバ間通信の一例となる図である。アプリケーション５１０２は、ネットワークインタフェース（ＮＩＣ）カード５１１６に対するネットワークリクエスト又はディスク５１２８に対するファイルリクエストなどのリクエストを行うことを試行してもよい。当該デバイスに到達するため、当該リクエストは、オペレーティングシステム５１０４を介し処理されてもよい。オペレーティングシステム５１０４の入出力リクエストは、オペレーティングシステム入出力マネージャ５１０６により処理されてもよい。
【０５５９】
オペレーティングシステム入出力マネージャ５１０６は、ドライバ系列において利用可能なコールによりネットワークリクエストを送信してもよい。オペレーティングシステム入出力マネージャ５１０６は、ＳＯＣＫＥＴ＿ＤＲＩＶＥＲ＿ＡＦＳ．ＳＹＳ５１０８をコールし、それがＴｙｐｅ  Ｄｅｍａｎｄ  Ｉｎｔｅｒｆａｃｅ（ＴＤＩ）プロトコルドライバ５１１０をコールし、さらにそれがＮｅｔｗｏｒｋ  Ｄｒｉｖｅｒ  Ｉｎｔｅｒｆａｃｅ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ（ＮＤＩＳ）ドライバ５１１２をコールし、さらにそれがＮＩＣカード５１１６のハードウェアに固有なＮＤＩＳ．ＳＹＳドライバをコールしてもよい。リプライは、アプリケーション５１０２への同じドライバチェーンに続く。
【０５６０】
同様に、オペレーティングシステム入出力マネージャ５１０６は、ドライバ系列において利用可能なファンクションをコールすることによって、ファイルリクエストを送信してもよい。オペレーティングシステム入出力マネージャ５１０６は、アタッチされたファイルシステムフィルタドライバ５１１８を有するファイルシステムドライバ５１２０をコールし、さらにそれがアタッチしたディスクフィルタドライバ５１２２を備えたディスクドライバ５１２４をコールし、さらにそれがディスク５１２８との入出力を処理するＤＩＳＫ．ＳＹＳなどのディスク５１２８に固有のディスクドライバをコールしてもよい。リプライは、アプリケーション５１０２への同じドライバチェーンに続く。
【０５６１】
図５１内のドライバ及びカーネルモジュールの各コールは、ドライバ自体により指示されたコール又はシステムワイドコールにより実行されてもよい。マルウェアは、図５１に示される各要素間のコールをフック、覆す、ハイジャック、スプーフ又は攻撃することを試行してもよい。従って、これらは、図５０のＯ／Ｓ下位セキュリティエージェント５０２０が通信が行われるときと、当該通信をイネーブルにする機構をプロテクトする際との双方をプロテクトするよう構成されてもよい。
【０５６２】
図５２は、図５０のＯ／Ｓ下位セキュリティエージェント５０２０などのＯ／Ｓ下位セキュリティエージェントがドライバ間通信に関してプロテクトするよう構成される電子デバイスの具体的部分をさらに示す。ドライバ間通信は、アプリケーション５２０２などのユーザモードで発信されたリクエストによって、又はドライバ２  ５２０４などの他のドライバからのリクエストによって行われてもよい。アプリケーション５２０２は、電子デバイスの一部のデバイスリクエストコマンド５２０８を行うよう構成されてもよい。デバイスリクエストコマンド５２０８は、システムサービスディスパッチャテーブル（ＳＳＤＴ）５２１０によりデバイスファンクション５２１２に変換されてもよい。デバイスファンクション５２１２は、アプリケーション５２０２により行われたリクエストに対応するＩ／Ｏリクエストパケット（ＩＲＰ）を問題となるデバイスに関するドライバに送信するよう構成されてもよい。図５２において、当該ドライバは、ディレクトリ制御に対するＩ／Ｏリクエストを処理するドライバ１  ５２０６であってもよい。ドライバ間通信は、ドライバ２  ５２０４などの他のカーネルモードドライバから発信されたリクエストにより行われてもよい。
【０５６３】
図５０のＯ／Ｓ下位セキュリティエージェント５０２０は、何れか適切な方法によりドライバ間通信を攻撃するマルウェアに対して電子デバイス５００１をプロテクトするよう構成されてもよい。例えば、マルウェアは、ＩｏＣａｌｌＤｒｉｖｅｒコマンド５２２０などのＩＲＰコマンドを送受信するためのファンクションをフックしてもよい。当該マルウェアは、ファンクションに指定されたターゲットについて意図されたＩＲＰをミスダイレクトさせるものであってもよい（例えば、ドライバが実行されるシステムにより定義されたファンクションを含むディスパッチルーチン５２０９など）、代わりに、マルウェアフック５２２４は、リクエストをインターセプトするため、ＩｏＣａｌｌＤｒｉｖｅｒ５２２０にインストールされてもよい。マルウェアフック５２２４の背後のマルウェアは、それの元のディスティネーションにリクエストＩＲＰ＿ＭＪ＿ＲＥＡＤ５２２６を送信する前、又は悪意あるコード５２２８を実行する前、リクエストを調べてもよい。従って、Ｏ／Ｓ下位セキュリティエージェントは、ＩｏＣａｌｌＤｒｉｖｅｒ５２２０の命令を含むメモリをプロテクトし、又はドライバ又はコールバックルーチンに対する悪意あるコールのＩｏＣａｌｌＤｒｉｖｅｒ５２２０の実行を調査するよう構成されてもよい。Ｏ／Ｓ下位セキュリティエージェント５０２０は、エクスポートされたファンクション又はディスパッチルーチンをトラップするよう構成されてもよい。Ｏ／Ｓ下位セキュリティエージェント５０２０は、ファンクション自体のメモリ位置の実行と共に、オペレーティングシステムコンストラクト内のファンクション又はルーチンに対するポインタをトラップするよう構成されてもよい。例えば、マルウェアは、エクスポートアドレステーブル（さらに詳細に後述されるＥＡＴ）におけるポインタのメモリ位置における値を変更することを試行するか、又はファンクション自体（悪意あるコードにＪＭＰを挿入するなど）のコードセクションのコンテンツを変更することを試行してもよい。ポインタ及びファンクションへのアクセスをトラップすることによって、トラップされた試行は、ファンクションのコール元を決定するため復号化されてもよい。
【０５６４】
他の例では、ドライバ１  ５２０６は、ドライバなどの他のエンティティによりコールされるそれ自体に固有のドライバ１  ５２０６により提供されるファンクションのＥＡＴ５２１１を維持してもよい。ＥＡＴ５２１１は、指定されたファンクションを実行するためのコードセクションの位置を指し示すファンクションポインタのリスト又はアレイを有してもよい。マルウェアは、ＥＡＴのエントリがもはや正しいコードセクションを指し示さないように、当該ポインタの値を変更する可能性がある。これらのポインタは、ドライバファンクションがＥＡＴ５２１１においてポインタを参照することにより他のドライバによりコールされるとき、悪意あるコードが実行されるように、悪意の可能性のあるコードセクションを指し示すよう生成されてもよい。例えば、ＥＡＴ５２１１は、Ｄｒｉｖｅｒ１Ｆｎ１  Ｃｏｄｅ  Ｓｅｃｔｉｏｎ５２１４を指し示すＤｒｉｖｅｒ１Ｆｎ１と、Ｄｒｉｖｅｒ１Ｆｎ２  Ｃｏｄｅ  Ｓｅｃｔｉｏｎ５２１６を通常指し示すＤｒｉｖｅｒ１Ｆｎ２ファンクションのポインタを通常有してもよい。しかしながら、マルウェアは、Ｄｒｉｖｅｒ１Ｆｎ２がマルウェアコードセクション５１２８を現在指し示すように、第２ポインタを変更したかもしれない。従って、Ｏ／Ｓ下位セキュリティエージェントは、ＥＡＴ５２１１があるメモリスペースをプロテクトするよう構成されてもよく、ライトリクエストをインターセプトし、ライト主体が検証されていない場合、ＥＡＴ５２１１に書き込むためのトラップされた試行を拒絶してもよい。Ｏ／Ｓ下位セキュリティエージェントはまた、ＥＡＴ５２１１を書き込み、変更又は設定するための何れかの試行されたファンクションの実行をトラップするよう構成されてもよい。Ｏ／Ｓ下位セキュリティエージェントはまた、試行のコール元が当該ファンクションを実行することが許可されていることと、コール元がＥＡＴ５２１１を変更するためドキュメント化されていないサブルーチンをコールするなどによって、標準的な手順を覆していないことを検証してもよい。
【０５６５】
さらなる他の例では、ドライバ２  ５２０４などの他のドライバは、ドライバ１  ５２０６のＥＡＴ５２１１をインポートし、ドライバ１  ５２０６のファンクションに関する自らのインポートアドレステーブル（ＩＡＴ）５２２２としてテーブルをホストしてもよい。ＩＡＴ５２２２を利用して、ドライバ２  ５２０４は、ドライバ１  ５２０６のファンクションをコールするよう構成されてもよい。ＩＡＴ５２２２は、オペレーティングシステムローダにより充填されてもよい。マルウェアは、複数の方法によりＩＡＴを感染する可能性がある。ＩＡＴ５２２２の値は、Ｄｉｒｖｅｒ２Ｆｎ２などのファンクションがマルウェアコードセクション５２１８などの悪意あるコードセクションを指し示すように変更されている可能性がある。従って、Ｏ／Ｓ下位セキュリティエージェントは、ＩＡＴ５２２２があるメモリスペースをプロテクトするよう構成されてもよく、ライトリクエストをインターセプトし、ライト主体が検証されていない場合、ＩＡＴ５２２２に書き込むためのトラップされた試行を拒絶する。当該検証は、例えば、オペレーティングシステムローダがＩＡＴ５２２２をロードすることを含むものであってもよい。Ｏ／Ｓ下位セキュリティエージェントはまた、ＩＡＴ５２２２を書き込み、変更又は設定するための何れか試行されたファンクションの実行をトラップするよう構成されてもよい。Ｏ／Ｓ下位セキュリティエージェントはまた、試行のコール元がファンクションを実行することが許可されており、コール元がＩＡＴ５２２２を変更するためドキュメント化されていないサブルーチンをコールするなどによって、標準的な手順を覆さなかったことを検証してもよい。
【０５６６】
さらなる他の例では、Ｄｒｉｖｅｒ１Ｆｎ１などのドライバファンクションがコールされると、Ｄｉｒｖｅｒ１Ｆｎ１  Ｃｏｄｅ  Ｓｅｃｔｉｏｎ５２１２などのコードが実行を開始してもよい。マルウェアは、ルーチンがコールされると、悪意あるコードが実行されるように、当該コールセクションの部分を書き換え又は投入してもよい。従って、Ｏ／Ｓ下位セキュリティエージェントは、ドライバファンクションのコードがあるメモリスペースをプロテクトするよう構成されてもよく、ライトリクエストをトラップし、ライト主体が検証されていない場合、ドライバのコードセクションに書き込むためのトラップされた試行を拒絶する。当該検証は、例えば、パッチにより自らを更新するドライバからライトが発信されたことを決定するなどを含むものであってもよい。Ｏ／Ｓ下位セキュリティエージェントはまた、ドライバファンクションのコードセクションを書き込み、変更又は設定するため試行されたファンクションの実行をトラップするよう構成されてもよい。Ｏ／Ｓ下位セキュリティエージェントはまた、試行のコール元が当該ファンクションを実行することが許可されており、コール元が、ドライバファンクションのコードセクｓｈんを変更するためドキュメント化されていないサブルーチンをコールするなどによって標準的な手順を覆さなかったことを検証してもよい。
【０５６７】
さらなる例では、ドライバファンクションのコードは、認証されたインポート又はエクスポートアドレステーブルにアクセス代わりに、マルウェアにより直接的にコールされてもよい。従って、Ｏ／Ｓ下位セキュリティエージェントは、悪意あるコード５２２８による直接的な実行から、Ｄｒｉｖｅｒ１Ｆｎ２  Ｃｏｄｅ  Ｓｅｃｔｉｏｎ５２１６などのドライバのファンクションの実行をプロテクトするよう構成されてもよい。当該Ｏ／Ｓ下位セキュリティエージェントは、ファンクションの実行をトラップすることが可能であってもよい。Ｏ／Ｓ下位セキュリティエージェントは、コンテクスト情報から、何れのドライバが各自のＩＡＴ５２２２においてオペレーティングシステムにより更新されたか判断することによって、ドライバ１  ５２０６上でファンクションを実行するためのパーミッションを何れのドライバが受信したか判断してもよい。Ｏ／Ｓ下位セキュリティエージェントは、当該コールがどこから行われたか判断し、当該位置が既知の認証されたドライバに対応しない場合、試行が拒絶されてもよい。一実施例では、図５０のＯ／Ｓ内セキュリティエージェント５０１９は、コンテクスト情報を提供するため、オペレーティングシステムのドライバ又はドライバフィルタとして登録してもよい。例えば、ルートキットドライバは、ファイルＩ／ＯのためＮＴＦＳ．ＳＹＳをコールすることを回避してもよい。Ｏ／Ｓ内セキュリティエージェント５０１９は、ＮＴＦＳ．ＳＹＳに対して行われたすべてのコールを観察し、その後、Ｏ／Ｓ下位セキュリティエージェントに何れのファンクションコールがルートキットによりファイルＩ／Ｏのため利用されたか通知するため、ＮＴＦＳ．ＳＹＳ上のフィルタとして登録してもよい。
【０５６８】
図５０に戻って、動作について、ドライバ５０２９などのドライバ及びドライバ２  ５０２８は、何れか適切な方法により通信してもよい。Ｏ／Ｓ下位セキュリティエージェント５０２０は、当該通信をイネーブル化する機構に対する試行された変更又は通信をトラップしてもよい。一実施例では、Ｏ／Ｓ下位セキュリティエージェント５０２０は、図５２に示されるドライバ間通信との悪意ある干渉の何れかの具体例をトラップ及び評価してもよい。
【０５６９】
一例では、当該通信は、ＩＲＰを介し送信されるＩ／Ｏ制御コードを有してもよい。Ｏ／Ｓ下位セキュリティエージェント５０２０は、ＩＲＰを介しＩ／Ｏ制御コードを送信するためのファンクションコールに対応するコードの実行をトラップし、送信元が認証されているか検証し、必要に応じて何れかの訂正アクションを実行してもよい。
【０５７０】
他の例では、当該通信は、コードセクション１などのドライバのファンクションのコードセクションのコールを含むものであってもよい。Ｏ／Ｓ下位セキュリティエージェント５０２０は、試行された実行であるコードセクション１をトラップしてもよい。Ｏ／Ｓ下位セキュリティエージェント５０２０は、ファンクションにアクセスする正当な手段を利用して試行された実行が正当なソースから発生したか判断してもよい。Ｏ／Ｓ下位セキュリティエージェント５０２０は、コール元を特定し、コール元が既知であるか、また何れかのルールがコール元の決定された身元に基づきファンクションの実行を阻止するか判断してもよい。例えば、コードセクション２の実行は、既知であって、デジタル証明書を有するドライバに制限されてもよい。Ｏ／Ｓ下位セキュリティエージェント５０２０は、アクセスを発信したドライバ２  ５０２８がホワイトリストに従って安全であると知られ、デジタル証明書を有するか判断してもよい。他の例では、Ｏ／Ｓ下位セキュリティエージェント５０２０は、当該コールがドライバ５０２９を介して行われたか判断し、又は当該コールがドライバ５０３０のドキュメント化されていないサブファンクションを介し行われたか、ドライバ５０２９（及びそこで使用されるセキュリティ手段）にアクセスすることなく判断してもよい。関連する具体例は、例えば、指定されたドライバファンクション機構の何れも利用することなく、直接ジャンプするか又はコードセクション１にブランチすることためのアプリケーション５０２６による試行をトラップしてもよい。アプリケーション５０２６がスキャン又はそれのシグネチャを介し悪意あると知られていない場合でさえ、当該動作はかなり疑わしく、マルウェアを示し、Ｏ／Ｓ下位セキュリティエージェント５０２０は、当該アクセスがマルウェアを示していると判断してもよい。
【０５７１】
さらなる他の例では、コールバックルーチン５０４４は、ドライバのデータスペースなどのドライバに登録されてもよい。コールバックルーチンは、ドライバ又は特定のドライバファンクションのイグジットにより実行されるようトリガされてもよい。当該コールバックルーチン５０４４は、悪意あるものであるかもしれない。また、Ｏ／Ｓ下位セキュリティエージェント５０２０は、メモリ内のドライバ５０３１のコードセクション又はデータセクションへの試行されたライトを検出することによって、何れかのコールバックルーチンの試行された作成をトラップしてもよい。試行されたライトの主体が未知である場合、当該ライトは許可されるが、コールバックルーチンの以降の実行自体は、実行対象のアクションが悪意あるか判断するためトラップされてもよい。例えば、ロガーは、重複したネットワークパケットが悪意あるサーバに送信されるコールバックルーチン５０４４をインストールしてもよい。コールバックルーチンの以降の動作は、マルウェアのさらなる徴候について観察及び評価されてもよい。
【０５７２】
さらなる他の例では、アプリケーション５０２６は、ＥＡＴ５０３４からアドレスを読み、対応するファンクションを直接実行することを試みてもよい。Ｏ／Ｓ下位セキュリティエージェント５０２０は、ＥＡＴ５０３４の試行されたリードをトラップし、リード主体が当該試行及びコードセクション１などのファンクションの以降の実行を行うことが許可されているか判断してもよい。当該試行は、従属ドライバとして登録し、それ自体のインポートアドレステーブルを介しファンクションポインタリストを受信するなど、オペレーティングシステム５０１２により提供される標準的な方法を利用する代わりに、マルウェアがＥＡＴ５０３４を直接リードすることを示すものであってもよい。
【０５７３】
さらなる例では、ドライバ２  ５０２８は、ＮＴＦＳ．ＳＹＳ５０３１などのドライバのデータセクションを直接操作することを試みるものであってもよい。Ｏ／Ｓ下位セキュリティエージェント５０２０は、ドライバ間通信に対する悪意ある攻撃を阻止するため、ドライバのデータセクションの試行された操作をトラップしてもよい。例えば、Ｏ／Ｓ下位セキュリティエージェント５０２０は、高速Ｉ／Ｏルーティングポインタ５０３８への試行されたライトをトラップし、当該試行がＮＴＦＳ．ＳＹＳ５０３１自体又はオペレーティングシステム５０１２から発生したか評価してもよい。そうでない場合、Ｏ／Ｓ下位セキュリティエージェント５０２０は、ドライバ２などの他のドライバから発生したと決定されたトラップされた試行を拒絶してもよい。同様に、何れかの重要なデータがカーネルオペレーティングシステム５０１２により保持されている場合、Ｏ／Ｓ下位セキュリティエージェント５０２０は、当該データを有するメモリの試行されたアクセスをトラップするよう構成されてもよい。
【０５７４】
さらなる他の例では、ドライバ２  ５０２８は、インポートアドレステーブル５０３６の試行されたリードを介しドライバの情報から他のサードパーティに関する情報を取得することを試みてもよい。Ｏ／Ｓ下位セキュリティエージェント５０２０は、インポートアドレステーブル５０３６の試行されたリードをトラップし、ＮＴＦＳ．ＳＹＳなどのドライバ自体、アドレステーブルがインポートされたサードパーティ又はオペレーティングシステム５０１２から発信されてない何れの試行も拒絶してもよい。
【０５７５】
さらなる他の例では、ドライバの一部にアクセスするファンクションコールはフックされてもよく、マルウェアが電子デバイス５００１の各種部分にアクセスすることを可能にする。Ｏ／Ｓ下位セキュリティエージェント５０２０は、当該ファンクションコールがあるメモリをプロテクトし、システムファンクションに悪意あるフックを追加するため試行されたライトをトラップすることによって、攻撃に対して防御してもよい。同様に、Ｏ／Ｓ下位セキュリティエージェント５０２０は、悪意あるコードを投入するためコードセクションに直接アクセスするマルウェアに対してファンクションのコードセクションをプロテクトしてもよい。例えば、Ｏ／Ｓ下位セキュリティエージェント５０２０は、投入されたコードの追加を阻止するため、コードセクション２に収容されたファンクションのコードへの試行されたライトをトラップしてもよい。
【０５７６】
ドライバ間コールに関する各種リソースをトラップすることはコストがかかるため、Ｏ／Ｓ下位セキュリティエージェント５０２０は、必要に応じて当該リソースのトラップをイネーブル又は非イネーブルしてもよい。トラップされた各試行について、Ｏ／Ｓ下位セキュリティエージェント５０２０は、動作中のドライバ又はモジュールを特定し、ターゲットドライバを特定し、アクセスタイプを特定してもよい。当該タイプは、リード、ライト又は実行タイプを含むものであってもよい。Ｏ／Ｓ下位セキュリティエージェント５０２０は、電子デバイス５００１のリソースにアクセスする試行が悪意あるか評価するため、何れか適切な基準と共に上記要素を考慮してもよい。
【０５７７】
図５３は、電子デバイスにおけるドライバ間通信のＯ／Ｓ下位トラップの方法５３００の実施例である。ステップ５３０５において、セキュリティルールは、プロテクトされるドライバ間通信に関するリソースを決定するためアクセスされてもよい。当該セキュリティルールは、リソースへの試行されたアクセスがトラップ及び評価される基準と共に、リソースを特定してもよい。
【０５７８】
ステップ５３１０において、電子デバイス内のオペレーティングシステムのレベルより下位の制御構造においてフラグが設定されてもよい。フラグは、例えば、ドライバ間通信ファンクションの試行された実行、ロードドライバ間の通信サブファンクションの実行、メモリにロードされたドライバのデータ若しくはコードセクションへのリード若しくはライト、及び／又はドライバ間通信のためのドライバのコードセクションのジャンプ、ブランチ又は他の直接的な実行をトラップするため設定されてもよい。フラグは、上述された試行に対応するメモリアドレスを介した物理メモリのアクセスを介し、及び／又はメモリページを介したバーチャルメモリアクセスについて設定されてもよい。
【０５７９】
ステップ５３１５において、電子デバイスは、ドライバ間通信に関するリソースにアクセスするためのトラップされた試行についてモニタリングされてもよい。ステップ５３２０において、試行がトラップされなかった場合、プロセス５３００は、トラップされた試行のモニタリングを継続するため、ステップ５３１５に移行してもよい。試行がトラップされた場合、当該試行はステップ５３２５において処理されてもよい。当該処理は、電子デバイスのオペレーティングシステムのレベルの下位で実行されてもよい。ステップ５３２５において、試行が悪意あるか解析するのに有用な情報が収集されてもよい。例えば、当該試行を行ったプロセス、アプリケーション、ドライバ又はルーチンが決定されてもよい。電子デバイスのオペレーティングシステム内からのコンテクスト情報は、Ｏ／Ｓ内セキュリティエージェントから取得されてもよい。
【０５８０】
ステップ５３３０において、ドライバ間通信に関するドライバのデータセクションの試行されたアクセスが未認証であるか判断される。当該データセクションのコンテンツは、ＥＡＴ、ＩＡＴ又は他の何れか適切な情報を含むものであってもよい。未認証である場合、ステップ５３６０において、当該試行は疑わしい及び／又は悪意あると判断され、拒絶されてもよい。
【０５８１】
未認証でない場合、ステップ５３３５において、ドライバ間通信のファンクションのコンテンツが認証されたファンクションを使用することなく直接アクセスされたか判断されてもよい。一実施例では、コール元のプロセス又はルーチンがドライバの当該部分にアクセスすることが未認証であるか判断されてもよい。未認証である場合、ステップ５３６０において、当該試行は疑わしい及び／又は悪意あると判断され、拒絶されてもよい。何れか適切な訂正アクションが実行されてもよい。未認証でない場合、ステップ５３４５において、ドライバ間通信サブファンクションが当該アクセスについて指定されたファンクションを使用することなく直接実行されたか判断されてもよい。一実施例では、コール元のプロセス又はルーチンが当該試行を行うことが未認証であるか判断されてもよい。未認証である場合、ステップ５３６０において、当該試行は疑わしい及び／又は悪意あると判断され、拒絶されてもよい。未認証でない場合、ステップ５３５０において、ドライバ間通信ファンクションが認証されたエンティティによりコールされたか、又は試行されたブランチ、ジャンプ又は他の直接的な実行が認証されたエンティティによりコールされたか判断されてもよい。コールされていない場合、ステップ５３６０において、当該試行は疑わしい及び／又は悪意あると判断され、拒絶されてもよい。コールされた場合、ステップ５３５５において、当該試行は許可されてもよい。
【０５８２】
当該試行が許可され、それがコールバックファンクションを登録するためのものである場合、ステップ５３６５において、新たに追加されたコールバックファンクションについて割り当てられたメモリは、追加的なトラップについてマーク付けされてもよい。当該ステップは、特にコールバックファンクションを登録することを試みたエンティティが未知であった場合、又はコールバックを登録したエンティティのマルウェアステータスが最終的にけっていできなかった場合に実行されてもよい。従って、コールバックファンクションのコードによる以降のリード、ライト又は実行は、トラップ及び評価されてもよい。そうでない場合、ステップ５３８５において、ドライバは実行許可されてもよい。方法５３００は、任意的には、ドライバ間通信のため電子デバイスのリソースへの試行されたアクセスのモニタリングを継続するためステップ５３１５に戻ってもよい。
【０５８３】
図５４は、電子デバイス５４０１上のドライバフィルタのアタッチメント及びデタッチメントをセキュアにするシステム５４００の実施例である。システム５４００は、オペレーティングシステム５４１２などの電子デバイス５４０１のオペレーティングシステムにおけるドライバフィルタをアタッチ又はデタッチするための悪意ある試行を検出するため、電子デバイス５４０１上で動作するよう構成されるＯ／Ｓ下位セキュリティエージェント５４２０を有してもよい。さらに、Ｏ／Ｓ下位セキュリティエージェント５４２０は、ドライバフィルタの何れの試行されたアタッチメント又はデタッチメントがトラップされた処理に対応するか、また試行が当該試行及び当該試行を行ったエンティティに基づき認証されるか判断するため、１以上のセキュリティルール５４０８を利用するよう構成されてもよい。Ｏ／Ｓ下位セキュリティエージェント５４２０は、許可、拒絶又はトラップイベントの他の訂正アクションを実行するよう構成されてもよい。
【０５８４】
電子デバイス５４０１は、図１の電子デバイス１０３、図２の電子デバイス２０４、図４の電子デバイス４０４、図７の電子デバイス７０１、図９の電子デバイス９０１、図１２の電子デバイス１２０１及び／又はこれらの何れかの組み合わせの機能により全体的若しくは部分的に実現されるか、又は当該機能を実現するよう構成されてもよい。電子デバイス１２０１は、物理メモリ１２０３などのメモリに接続される１以上のプロセッサ１２０２を有してもよい。プロセッサ５４０２は、図２のプロセッサ２０８、図４のプロセッサ４０８、図７のプロセッサ７０２、図９のプロセッサ９０２、図１２のプロセッサ１２０２及び／又はこれらの何れかの組み合わせの機能により全体的若しくは部分的に実現されるか、又は当該機能を実現するよう構成されてもよい。メモリ５４０３は、図２のメモリ２０６、図４のメモリ４０６、図７のメモリ７０３、図９のメモリ９０３、図１２の物理メモリ１２０３若しくはバーチャルメモリ１２０４及び／又はこれらの何れかの組み合わせの機能により全体的若しくは部分的に実現されるか、又は当該機能を実現するよう構成されてもよい。電子デバイス５４０１は、１以上のセキュリティルール５４２１に接続されるＯ／Ｓ内セキュリティエージェント５４１９を有するオペレーティングシステム５４１２を有してもよい。オペレーティングシステム５４１２は、図１のオペレーティングシステム１１２、図２のオペレーティングシステム２１２、図４のオペレーティングシステム４１２、図７のオペレーティングシステム７１３、図９のオペレーティングシステム９１３、図１２のオペレーティングシステム１２１３及び／又はこれらの何れかの組み合わせの機能により全体的若しくは部分的に実現されるか、又は当該機能を実現するよう構成されてもよい。Ｏ／Ｓ内セキュリティエージェント５４１９は、図１のＯ／Ｓ内セキュリティエージェント２１８、図４のＯ／Ｓ内セキュリティエージェント４１８、図７のＯ／Ｓ内セキュリティエージェント７１９、図９のＯ／Ｓ内セキュリティエージェント９１９、図１２のＯ／Ｓ内セキュリティエージェント１２１９及び／又はこれらの何れかの組み合わせの機能により全体的若しくは部分的に実現されるか、又は当該機能を実現するよう構成されてもよい。
【０５８５】
Ｏ／Ｓ内セキュリティエージェント５４２０は、図１のＯ／Ｓ下位トラップエージェント１０４若しくはトリガイベントハンドラ１０８図２のＳＶＭＭ２１６若しくはＳＶＭＭセキュリティエージェント２１７、図４のファームウェアセキュリティエージェント４４０、４４２、Ｏ／Ｓ下位エージェント４５０若しくはＰＣファームウェアセキュリティエージェント４４４、図５のファームウェアセキュリティエージェント５１６、図７のマイクロコードセキュリティエージェント７０８若しくはＯ／Ｓ下位エージェント７１２、図９のＯ／Ｓ下位トラップエージェント９２０若しくはトリガイベントハンドラ９２２、図１２のＯ／Ｓ下位セキュリティエージェント１２２０及び／又はこれらの何れかの組み合わせの機能により全体的若しくは部分的に実現されるか、又は当該機能を実現するよう構成されてもよい。
【０５８６】
セキュリティルール５４０８は、図１のセキュリティルール１１４、図２のセキュリティルール２２２、図４のセキュリティルール４３４、４３６、４３８、図５のセキュリティルール５１８、図７のセキュリティルール７０７、７２３、図９のセキュリティルール９０８、図１２のセキュリティルール１２０８及び／又はこれらの何れかの組み合わせの機能により実現されるか、又は当該機能を実現するよう構成されてもよい。セキュリティルール５４２１は、図２のセキュリティルール２２０、図４のセキュリティルール４２０、図７のセキュリティルール７２１、図９のセキュリティルール９２１、図１２のセキュリティルール１２２１及び／又はこれらの何れかの組み合わせの機能により実現されるか、又は当該機能を実現するよう構成されてもよい。
【０５８７】
電子デバイス５４０１は、ドライバを用いて電子デバイス５４０１のリソースにアクセスすることを試みる“アプリケーション１”などの１以上のアプリケーション、ドライバ又は他のエンティティを有してもよい。一実施例では、当該リソースは、Ｉ／Ｏデバイス５４３０であってもよい。Ｉ／Ｏデバイス５４３０は、例えば、ストレージデバイス、ディスプレイデバイス、周辺デバイス、キーボード、又は入出力に利用される電子デバイス５４０１の他の何れかのデバイス若しくはコンポーネントなどを含むものであってもよい。一実施例では、Ｉ／Ｏデバイス５４３０は、バーチャルデバイスであってもよい。オペレーティングシステム５４１２は、リソースに対するリクエストを処理してもよい。一実施例では、オペレーティングシステム５４１２は、Ｉ／Ｏマネージャ５４２２などのリクエストに対するハンドラを含むものであってもよい。Ｉ／Ｏマネージャ５４２２は、リソースに対するリクエストを解析及び処理し、当該リクエストのさらなる処理に適したドライバに当該リクエストを導くよう構成されてもよい。例えば、Ｉ／Ｏマネージャ５４２２は、アプリケーション１からのＩ／ＯリクエストをＩ／Ｏドライバ５４２８に送信してもよい。オペレーティングシステム５４１２は、限定することなく、ディスプレイ、キーボード、ディスクストレージ、シリアル、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）、Ｆｉｒｅｗｉｒｅ、ＩＥＥＥ−４８８、プラグインボード、プリンタ、コンピュータバス又はネットワーキングを含むリソースに対するリクエストを管理及び変換するための何れか適切な個数及び種類のドライバを有してもよい。Ｉ／Ｏドライバ５４２８などのドライバは、Ｉ／Ｏデバイスなどへの直接的なアドレッシングを実行するよう構成されてもよい。一実施例では、オペレーティングシステム５４１２は、ハードウェアデバイスをエミュレートするバーチャルデバイスドライバを含むものであってもよい。
【０５８８】
Ｉ／Ｏドライバ５４２８は、デバイススタック５４２４などの構造を利用してアクセス可能であってもよい。デバイススタック５４２４は、ドライバ及び何れか追加的なドライバフィルタを含むコンストラクトであってもよい。例えば、デバイススタック５４２４は、Ｉ／Ｏドライバ５４２８の先頭にある１以上のＩ／Ｏフィルタを有してもよい。Ｉ／Ｏリクエストなどのリクエストが、ドライバスタック５４２４を介しドライバ５４２８に送信されるが、Ｉ／Ｏフィルタ５４２６によりインターセプトされてもよい。オペレーティングシステム５４１２は、ドライバ又はリソースについて特化した処理を実行するため何れか適切な個数及び種類のドライバフィルタを有してもよい。例えば、Ｉ／Ｏドライバフィルタ５４２６などのドライバフィルタは、リクエストを条件化又はフォーマット化し、最適化を提供し、結果をキャッシュし、又は他の何れか適切なファンクションを実行してもよい。Ｉ／Ｏドライバフィルタ５４２６などのドライバフィルタの具体的な実装は、ドライバ自体の性質及び／又は身元に依存してもよい。例えば、いくつかのドライバフィルタは、ディスプレイ、キーボード又はファイルストレージなどの特定タイプのすべてのドライバに適用可能である一方、いくつかのドライバフィルタは、特定のドライバの特定のブランド又はモデルに適用可能であるかもしれない。Ｉ／Ｏリクエストなどのリクエストを受信した後、Ｉ／Ｏフィルタ５４２６などのフィルタは、当該リクエストに対して又はために処理を実行し、フィルタリングされたリクエストをＩ／Ｏドライバ５４２８などのドライバにわたしてもよい。Ｉ／Ｏドライバ５４２８は、Ｉ／Ｏデバイス５４３０などのデバイスと通信し、リターンとして生の結果を受信してもよい。生の結果は、Ｉ／Ｏフィルタ５４２６などの同一のフィルタを介し送り返される。Ｉ／Ｏフィルタ５４２６は、コンテンツのフォーマット化、プレゼンテーション又は他の何れか適切な目的のため当該結果をフィルタリングしてもよい。フィルタリングされた結果は、その後、Ｉ／Ｏマネージャ５４２２や最終的にはアプリケーション１などのデバイススタックと呼ばれるエンティティにわたされてもよい。
【０５８９】
図５５は、一例となるデバイススタック５５００の処理のより詳細な図である。説明のため、デバイススタック５５００は、ストレージディスク上のファイルとアプリケーションとのインタフェースをとるためのファイルＩ／Ｏドライバスタックとして構成されてもよい。デバイススタック５５００は、ファイルＩ／Ｏドライバ５５０６との間のリクエストをフィルタリングするよう構成されるフィルタ１  ５５０２及びアンチマルウェアファイルＩ／Ｏフィルタ５５０４とを有してもよい。デバイススタック５５００のベースは、ファイルＩ／Ｏドライバ５５０６であってもよく、リクエストはデバイススタック５５００に入り、ドライバにわたされ、結果がデバイススタック５５００の先頭でリターン及びアクセスされてもよい。例えば、リクエストはフィルタ１  ５５０２により受信され、アンチマルウェアファイルＩ／Ｏフィルタ５５１０にわたされ、その後、ファイルＩ／Ｏドライバ５５０６にわたされる。各フィルタは、リクエストをスタックの上下にわたす前に、それの個々のフィルタリング処理を実行するよう構成されてもよい。ファイルＩ／Ｏドライバ５５０６は、フィルタリングされたＩ／Ｏリクエストを実行し、存在する場合には、フィルタ１  ５５０２に自らのフィルタリングされた結果を返すよう構成されるアンチマルウェアファイルＩ／Ｏフィルタ５５０４に結果を返すよう構成されてもよい。フィルタ１及びアンチマルウェアファイルＩ／Ｏフィルタ５５０４はそれぞれ、当該結果に対するフィルタリング処理を実行するよう構成されてもよい。デバイススタック５５００のフィルタは、リード、ライト又は実行などの何れか適切なリクエストをフィルタリングするよう構成されてもよい。
【０５９０】
デバイススタック５５００は、スタックを構成し、デバイススタック５５００内のフィルタとドライバとの間の通信を実行するのに適した何れかの機構を有してもよい。例えば、デバイススタック５５００は、フィルタの順序を特定すると共に、デバイススタック５５００のベースを特定するためのデータ構造を有してもよい。デバイススタック５５００を順序付けるための一例となるデータ構造は、ポインタ５５０８、５５１０、５５１２又は５５１４を含むものであってもよい。各ポインタは、スタックにおいて上下に配置される次のエンティティのアドレスを含むものであってもよい。例えば、アンチマルウェアファイルＩ／Ｏフィルタ５５１０は、ファイルＩ／Ｏドライバ５５１４であってもよいスタックの下方で次のエンティティを指し示すポインタ５５１２と、フィルタ１  ５５０２であってもよいスタックの上方で次のエンティティへのポインタ５５１０とを有してもよい。当該データ構造の具体例は、デバイスオブジェクトにより実現されてもよい。
【０５９１】
フィルタ１  ５５０２は、“Ｋｅｒｎｅｌ．ＤＬＬ”ファイルのコンテンツが他のファイル“Ｍａｌｗａｒｅ．ＤＬＬ”により上書きされることを命令する“Ｗｒｉｔｅ  Ｍａｌｗａｒｅ．ＤＬＬ  ｔｏ  Ｋｅｒｎｅｌ．ＤＬＬ”コマンドなどのファイルＩ／Ｏリクエストを受信するよう構成されてもよい。フィルタ１  ５５０２は、リクエストを受信し、当該リクエストに応答してそれの処理を実行し、当該リクエストをスタックの下方のアンチマルウェアファイルＩ／Ｏフィルタ５５０４であってもよい次のエンティティにわたしてもよい。アンチマルウェアファイルＩ／Ｏフィルタ５５０４は、未認証のプログラムによるタンパリングからシステムのコアファイルをプロテクトするよう構成されてもよい。例えば、マルウェアは、カーネルオペレーティングシステムコンテンツ、マスタブートレコード又はアンチマルウェアソフトウェアファイルなどの特定のシステムファイルを変更又は削除することを試みるかもしれない。図５５の例では、当該リクエストは、未知の悪意の可能性のあるファイル“Ｍａｌｗａｒｅ．ＤＬＬ”により“Ｋｅｒｎｅｌ．ＤＬＬ”などのプロテクトされたファイルなどを書き込むための試行であってもよく、及び／又は当該リクエストは、オペレーティングシステムのカーネルプロセス以外のプロセスから発信されているかもしれない。従って、アンチマルウェアファイルＩ／Ｏフィルタ５５０４は、例えば、当該リクエストをフィルタリングし、当該リクエストをファイルＩ／Ｏドライバ５５０６のリードからブロックするよう構成されてもよい。アンチマルウェアファイルＩ／Ｏフィルタ５５０４は、さらなる解析のためシステム上で実行されるアンチマルウェアエージェント５５１６にブロックされたリクエストを送信するよう構成されてもよい。一実施例では、アンチマルウェアエージェントは、図５４のＯ／Ｓ内セキュリティエージェント５４１９又は他の何れか適切なアンチマルウェアモジュール、ソフトウェア、システム若しくはプロセスにより全体的若しくは部分的に実現されてもよい。アンチマルウェアファイルＩ／Ｏフィルタ５５０４は、ライトが成功したかのように、リクエストを試行したエンティティが進捗するように、スタックにスプーフされたリプライを返すよう構成されてもよい。そうでなく、ライト試行が疑わしい又は悪意あるとみなされない場合、アンチマルウェアファイルＩ／Ｏフィルタ５５０４は、リクエストをファイルＩ／Ｏドライバ５５０６にわたし、結果をフィルタ１  ５５０２に返すよう構成されてもよい。
【０５９２】
図５６は、ドライバフィルタをアタッチ又はデタッチするよう動作するマルウェアにより危険にさらされうるデバイススタックの一例を示す。ファイルＩ／Ｏデバイススタック５６０２は、図５４のデバイススタック５４２４又は図５５のデバイススタック５５００により記述されるようなデバイススタックの実現形態である。ファイルＩ／Ｏデバイススタック５６０２は、ファイルＩ／Ｏドライバ５６１０へのアクセスを提供するよう構成され、フィルタ１  ５６０６やアンチマルウェアファイルＩ／Ｏフィルタ５６０８などのフィルタを有してもよい。アンチマルウェアファイルＩ／Ｏフィルタ５６０８は、図５５のアンチマルウェアファイルＩ／Ｏフィルタ５５０４の実現形態であってもよい。アンチマルウェアファイルＩ／Ｏフィルタ５６０８は、ドライバスタック５６０２からデタッチされていてもよい。当該デタッチメントは、ファイルＩ／Ｏデバイススタック５６０２のデータ構造の直接的な操作によって、又はドライバフィルタをデタッチ又は削除するためのシステムファンクションコールによって実行されてもよい。フィルタ１  ５６０６は、アンチマルウェアファイルＩ／Ｏフィルタ５６０８を介しリクエストをもはやわたさず、その代わりにそれをバイパスし、当該リクエストをファイルＩ／Ｏドライバ５６１０などの次のエンティティに直接送信してもよい。ポインタ５６１２は、アンチマルウェアファイルＩ／Ｏフィルタ５６０８を介し次のエンティティを指し示すよう修正されてもよい。ファイルＩ／Ｏドライバ５６１０は、もはやアンチマルウェアファイルＩ／Ｏフィルタ５６０８によりフィルタリングされるようなリクエストを受信しなくてもよい。受信したリクエストに応答して、ファイルＩ／Ｏドライバ５６１０は、ファイルＩ／Ｏドライバ５６１０のポインタ５６１４が修正されたとき、フィルタ１にリプライを送信し、これにより、アンチマルウェアファイルＩ／Ｏフィルタ５６０８はもはやフィルタのベースにいなくなる。従って、アンチマルウェアファイルＩ／Ｏフィルタ５６０８は、ファイルＩ／Ｏデバイススタック５６０２から効果的に削除されてもよい。
【０５９３】
アンチマルウェアファイルＩ／Ｏフィルタ５６０８の削除は、許可されていてもよく、又はマルウェア攻撃の結果である可能性がある。Ｒｉｎｇ０などのアンチマルウェアファイルＩ／Ｏフィルタ５６０８と同じ実行優先度で動作するマルウェアは、検出なくフィルタをデタッチするのに成功する可能性がある。アンチマルウェアファイルＩ／Ｏフィルタ５６０８が一例として示されているが、他のドライバフィルタが同様に攻撃されてもよい。
【０５９４】
キーボードＩ／Ｏデバイススタック５６０４は、図５４のデバイススタック５４２４又は図５５のデバイススタック５５００により記述されるようなデバイススタックの完全な又は部分的な実現形態であってもよい。キーボードＩ／Ｏデバイススタック５６０４は、システムのキーボードデバイスへのアクセスを提供するよう構成されてもよい。一実施例では、キーボードＩ／Ｏデバイススタック５６０４は、キーボードドライバ５６２０の先頭でフィルタ１  ５６１６などのフィルタを当初は有していたかもしれない。しかしながら、ドライバフィルタアタッチメント処理は、キーボードＩ／Ｏデバイススタック５６０４に悪意あるキーロガーフィルタ５６１８をアタッチした可能性がある。キーボードドライバ５６２０のポインタ５６２８又はフィルタ１  ５６１６のポインタ５６２２などのスタックのデータ構造は、悪意あるキーロガーフィルタ５６１８がフィルタ１  ５６１６とキーボードドライバ５６２０との間に挿入されることを可能にするよう修正されていてもよい。当該処理は、ドライバフィルタをアタッチするためのシステムファンクションコールを介し、又はキーボードＩ／Ｏデバイススタック５６０４のデータ構造の直接的な操作によって実行されていてもよい。悪意あるキーロガーフィルタ５６１８は、ユーザのキーストロークをキャプチャし、それらをファイル又はリモートサーバに送信するよう構成されてもよい。
【０５９５】
悪意あるキーロガーフィルタ５６１８又は他の悪意の可能性のあるフィルタは、アンチマルウェアソフトウェアからの検出を回避するスタックのあるポジションにインストールされてもよい。例えば、悪意の可能性のあるフィルタは、アンチマルウェアフィルタにより実行される何れの訂正アクションも悪意あるフィルタにより元に戻されるように、アンチマルウェアフィルタよりスタックにおいて下位のポジションにインストールされる可能性がある。さらに、悪意あるフィルタは、悪意あるフィルタの処理が偽装されるように、信頼されたフィルタの代わりにスタックに挿入されてもよい。
【０５９６】
図５４に戻って、オペレーティングシステム５４１２のレベルで実行されるアンチマルウェアソフトウェアは、当該アクティビティを実行するマルウェアがまた同一の優先度レベルで実行される可能性があるため、ドライバフィルタの悪意あるアタッチメント及びデタッチメントを完全に解決することはできないかもしれない。
【０５９７】
Ｏ／Ｓ下位セキュリティエージェント５４２０は、オペレーティングシステム５４１２の下位のレベルでドライバフィルタをアタッチ又はデタッチする試行をインターセプトするよう構成されてもよい。Ｏ／Ｓ下位セキュリティエージェント５４２０は、ドライバフィルタのアタッチメント及びデタッチメントに関するリソースを決定し、当該リソースへの試行されたアクセスをトラップするため、セキュリティルール５４０８を照会するよう構成されてもよい。当該リソースは、例えば、メモリ５４０３の一部を含むものであってもよい。試行されたアクセスをトラップした後、Ｏ／Ｓ下位セキュリティエージェント５４２０は、アクセスを試行したエンティティがアクションを実行するため認証されているか、セキュリティルール５４０８に基づき判断するよう構成されてもよい。Ｏ／Ｓ下位セキュリティエージェント５４２０は、リクエストを許可若しくは拒絶するか、又は他の適切なアクションを実行するよう構成されてもよい。
【０５９８】
一実施例では、メモリ５４０３は、バーチャルメモリを有してもよい。当該実施例では、メモリ５４０３は、アタッチファンクション５４３６、アタッチサブファンクション５４３８、デタッチファンクション５４４０及び／又はデタッチサブファンクション５４４２のためのコード、ドライバデータ構造のデータ形式パーミッション５４４４、及び／又はドライバデータ構造５４４６を含むメモリページを有してもよい。アタッチファンクション５４３６及びデタッチファンクション５４４０は、ドライバをアタッチ又はデタッチするため電子デバイス５４０１内のエンティティのためオペレーティングシステム５４１２により提供されてもよい。当該エンティティは、アタッチファンクション５４３６又はデタッチファンクション５４４０を通常はコールしてもよい。アタッチファンクション５４３６及びデタッチファンクション５４４０を提供することによって、オペレーティングシステム５４１２は、ドライバフィルタを追加又は削除するため、電子デバイス５４０１のエンティティの制御されたセキュアで効率的な機構を提供してもよい。しかしながら、アタッチサブファンクション５４３８及びデタッチサブファンクション５４４２は、ドキュメント化されず、又はオペレーティングシステム５４１２による使用から阻止されるかもしれない。アタッチサブファンクション５４３８及びデタッチサブファンクション５４４２は、関連するアタッチファンクション５４３６及びデタッチファンクション５４４０により利用のためだけに意図されてもよい。マルウェアは、アタッチサブファンクション５４３８及びデタッチサブファンクション５４４２の個々のインスタンスをコールすることによって、アタッチファンクション５４３６及びデタッチファンクション５４４０のセキュリティ及び制御機構をバイパスする可能性がある。
【０５９９】
他の実施例では、メモリ５４０３は、物理メモリを有してもよい。当該実施例では、メモリ５４０３は、システムのアタッチファンクション５４３６、アタッチサブファンクション５４３８、デタッチファンクション５４４０、デタッチサブファンクション５４４２、ドライバデータ構造のパーミッション５４４４に関するデータ及び／又はドライバデータ構造５４４６を含むメモリアドレスを有してもよい。
【０６００】
アタッチファンクション５４３６のコードは、アプリケーション又はドライバがドライバフィルタをイネーブルにするため、システム５４００又はオペレーティングシステム５４１２により指定される何れかのファンクションのコードを有してもよい。当該ファンクションは、デバイススタック５４２４へのＩ／Ｏフィルタ５４２６の１つなど、ドライバスタックにドライバフィルタをアタッチするためのファンクションを含むものであってもよい。これらのファンクションはさらに、ドライバフィルタをイネーブルする際に特定のタスクを実行するため、サブルーチン又は他のファンクションをコールしてもよい。デタッチファンクション５４４０のコードを含むメモリは、アプリケーション又はドライバがドライバフィルタを非イネーブルするため、システム５４００又はオペレーティングシステム５４１２により指定されたファンクションのコードを有してもよい。当該ファンクションは、デバイススタック５４２４からのＩ／Ｏデバイスフィルタ５４２６の１つなど、ドライバスタックからドライバフィルタをデタッチするためのファンクションを含むものであってもよい。これらのファンクションはさらに、ドライバフィルタを非イネーブルにする際に特定のタスクを実行するためのサブルーチン又は他のファンクションをコールしてもよい。一例では、ＷｉｎｄｏｗｓＴＭアタッチファンクション５４３６は、限定することなく、ＩｏＡｔｔａｃｈＤｅｖｉｃｅ（）、ＩｏＡｔｔａｃｈＤｅｖｉｃｅＢｙＰｏｉｎｔｅｒ（）、ＩｏＡｔｔａｃｈＤｅｖｉｃｅＴｏＤｅｖｉｃｅＳｔａｃｋ（）及びＩｏＡｔｔａｃｈＤｅｖｉｃｅＴｏＤｅｖｉｃｅＳｔａｃｋＳａｆｅ（）を含むものであってもよい。他の例では、ＷｉｎｄｏｗｓＴＭデタッチファンクション５４４０は、限定することなく、ＩｏＤｅｌｅｔｅＤｅｖｉｃｅ（）及びＩｏＤｅｔａｃｈＤｅｖｉｃｅ（）を含むものであってもよい。
【０６０１】
当該サブルーチン又は他のファンクションのコードは、サブファンクション５４３８をアタッチするか、又はサブファンクション５４４２をデタッチするコードを含むメモリに含まれてもよい。マルウェアは、オペレーティングシステム５４１２による検出を回避するため、サブファンクションを直接的にコールしてもよい。従って、システム５４００のエンティティが、アタッチファンクション５４３６又はデタッチファンクション５４４０などの標準的なファンクションのメモリにおけるコードを使用することなく、サブファンクションを直接的にコールした場合、試行されたアクセスは、疑わしいと判断されてもよい。一例では、ＷｉｎｄｏｗｓＴＭアタッチファンクションは、限定することなく、ＩｏｐＡｔｔａｃｈＤｅｖｉｃｅｔｏＤｅｖｉｃｅＳｔａｃｋＳａｆｅ（）を有してもよい。当該サブファンクションは、ＷｉｎｄｏｗｓＴＭアタッチファンクション５４３６の各インスタンスによりコールされてもよい。
【０６０２】
ドライバデータ構造のパーミッション５４４４は、デバイススタック５４２４などのデバイススタックに関するデータ構造をリード、ライト又は実行する能力を設定するため、テーブル、フラグ又は他の何れか適切なデータ構造若しくは表示を有してもよい。当該パーミッション５４４４は、例えば、図５５のポインタ５５０８、５５１０、５５１２又は５５１４又は図５６のポインタ５６１２、５６１４、５６２２、５６２４、５６２６又は５６２８などのデバイススタックにおけるポインタをライト又はリードする能力などを制御してもよい。メモリ５４０３におけるパーミッション５４４４を変更するための未認証の試行は、Ｉ／Ｏフィルタ５４２６の１つなどドライバフィルタを悪意によりアタッチ又はデタッチするためのマルウェアによる試行における第１ステップを示すかもしれない。
【０６０３】
ドライバデータ構造５４４６は、Ｉ／Ｏドライバ５４２８やデバイススタック５４２４などのドライバ又はデバイススタックを構成するのに適した何れかのデータ構造を有してもよい。例えば、ドライバデータ構造５４４６は、図５５のポインタ５５０８、５５１０、５５１２若しくは５５１４、又は図５６のポインタ５６１２、５６１４、５６２２、５６２４、５６２６若しくは５６２８を有してもよい。マルウェアがそれのコールルーチンを完全に偽装したとしても、ドライブフィルタをアタッチ又はデタッチすることは、ドライバデータ構造５４４６において値を変更することを要求するかもしれない。従って、ドライバデータ構造５４４６の値を変更するための未認証の試行は、マルウェアを示すものであるかもしれない。
【０６０４】
Ｏ／Ｓ下位セキュリティエージェント５４２０は、物理メモリ及び／又は仮想化メモリ単位でメモリ５４０３のドライバフィルタ関連コンテンツをプロテクトするよう構成されてもよい。例えば、Ｏ／Ｓ下位セキュリティエージェント５４２０は、アタッチファンクション５４３６、アタッチサブファンクション５４３８、デタッチファンクション５４４０、デタッチサブファンクション５４４２のコード、ドライバデータ構造のデータ形式パーミッション５４４４、及び／又はドライバデータ構造５４４６を含むメモリページをリード、ライト又は実行することを試行するリクエストをインターセプトするよう構成されてもよい。当該例では、Ｏ／Ｓ下位セキュリティエージェント５４２０は、バーチャルマシーンモニタにより完全に又は部分的に実現されてもよい。他の例では、Ｏ／Ｓ下位セキュリティエージェント５４２０は、アタッチファンクション５４３６、アタッチサブファンクション５４３８、デタッチファンクション５４４０及び／デタッチサブファンクション５４４２のコード、ドライバデータ構造のデータ形式パーミッション５４４４、及び／又はドライバデータ構造５４４６を含むメモリアドレスをリード、ライト又は実行することを試行するリクエストをインターセプトするよう構成されてもよい。
【０６０５】
Ｏ／Ｓ下位セキュリティエージェント５４２０は、メモリ５４０３のドライバフィルタ関連コンテンツのリクエストをインターセプトし、コンテクスト情報に基づき当該リクエストを評価するよう構成されてもよい。当該コンテクスト情報は、リクエストを行ったエンティティ、リクエストの性質（リード、ライト又は実行など）、試行されたライトの値、エンティティがリクエストを行った方法、メモリ５４０３のドライバフィルタ関連コンテンツをリクエストするための以前の試行及び／又はメモリ５４０３にアクセスすることが試行されたオペレーティングシステム５４１２のレベルのエンティティの処理に関するＯ／Ｓ内セキュリティエージェント５４１９からの情報を含むものであってもよい。
【０６０６】
リクエストの評価に基づき、Ｏ／Ｓ下位セキュリティエージェント５４２０は、リクエストを許可若しくは拒絶し、コール元エンティティにスプーフされたレスポンスを返送し、又は他の何れか適切な訂正アクションを実行することを可能にするよう構成されてもよい。
【０６０７】
動作について、Ｏ／Ｓ下位セキュリティエージェント５４２０は、ドライバフィルタのアタッチメント及び／デタッチメントをセキュアにするため電子デバイス５４０１上で動作してもよい。アプリケーション２などのアプリケーション、ドライバ又は他のエンティティは、フィルタアタッチメント又はデタッチメント試行を発信してもよい。アプリケーション２は、例えば、ユーザモード、カーネルモード、オペレーティングシステム５４１２と同一レベルで、又はオペレーティングシステム５４１２より上位レベル実行してもよい。Ｏ／Ｓ下位セキュリティエージェント５４２０は、電子デバイス５４０１上のドライバフィルタのアタッチメント及びデタッチメントをどのようにプロテクトするか決定するため、セキュリティルール５４０８にアクセスしてもよい。Ｏ／Ｓ下位セキュリティエージェント５４２０は、例えば、アタッチファンクション５４３６、アタッチサブファンクション５４３８、デタッチファンクション５４４０及び／若しくはデタッチサブファンクション５４４２のコードについてメモリページ又はアドレスの試行された実行、ドライバデータ構造のパーミッション５４４４についてメモリページ又はアドレスの試行されたライト、及び／又はドライバデータ構造５４４６の試行されたリード若しくはライトをキャプチャするため、制御構造フラグを設定してもよい。アプリケーション２は、ドライバフィルタに関するメモリ５４０３のコンテンツにアクセスすることによることを含む、各種機構を介しＩ／Ｏフィルタ５４２６などのドライバフィルタにアクセスすることを試行してもよい。
【０６０８】
一実施例では、アプリケーション２は、ドライバデータ構造のパーミッション５４４４への書き込みの試行など、メモリ５４０３における値の直接的な操作などを介しフィルタアタッチメント又はデタッチメントを試行してもよい。当該試行されたライトは、データ構造の値が以降にドライバフィルタをアタッチ又はデタッチするため書き換えられてもよいように、ドライバデータ構造に対するリードオンリーパーミッションをリード／ライトに変更するための試行であってもよい。当該試行は、Ｉ／Ｏフィルタ５４２６などのドライバフィルタにアクセスするための標準的でセキュアな機構をバイパスしてもよい。当該機構をバイパスすることによって、当該試行は、オペレーティングシステム５４１２のセキュリティ手段から偽装、隠蔽又は阻止されてもよい。
【０６０９】
他の実施例では、アプリケーション２は、当該処理のためオペレーティングシステム５４１２により提供されるアタッチ又はデタッチファンクション５４３２をコール及び実行することによって、フィルタアタッチメント又はデタッチメントを試行してもよい。当該アタッチ又はデタッチファンクション５４３２はさらに、アタッチ又はデタッチサブファンクション５４３４ａのインスタンスをコール及び実行してもよい。アタッチ又はデタッチサブファンクション５４３４ａは、ドライバデータ構造のパーミッション５４４４へのアクセス又はドライバデータ構造５４４６の試行されたアクセスを導く特定のコールを実行してもよい。アタッチ又はデタッチファンクション５４３２は、Ｉ／Ｏフィルタ５４２６などのドライバフィルタにアクセスする標準的なプロテクトされた機構としてオペレーティングシステム５４１２により提供されてもよい。アタッチ又はデタッチファンクション５４３２は、オペレーティングシステム５４１２の特定のプロセスのみがドライバフィルタにアクセスするためファンクションを利用できるようにセキュアにされてもよい。
【０６１０】
さらなる他の実施例では、アプリケーション２は、ドライバデータ構造５４４６への標準的なプロテクトされたアクセスのため、オペレーティングシステム５４１２により提供されるアタッチ又はデタッチファンクション５４３２などのファンクションを利用することなく、アタッチ又はデタッチサブファンクション５４３ｂのインスタンスを直接コール及び実行することによって、フィルタアタッチメントを試行してもよい。オペレーティングシステム５４１２がアタッチ又はデタッチファンクション５４３２について実行されるように、アタッチ又はデタッチサブファンクション５４３４ｂの利用をセキュア化及び認証するための機構を有していない場合、サブファンクション５４３４ｂの直接的な利用は、オペレーティングシステム５４１２のセキュリティ手段を阻止するか、又は自らを隠蔽若しくは偽装するためマルウェアにより利用される可能性がある。
【０６１１】
Ｏ／Ｓ下位セキュリティエージェント５４２０は、メモリ５４０３のドライバフィルタ関連コンテンツへの試行されたアクセスをトラップしてもよい。Ｏ／Ｓ下位セキュリティエージェント５４２０は、インターセプトされたアクセスをどのように処理するか決定するため制御構造を有してもよい。Ｏ／Ｓ下位セキュリティエージェント５４２０は、試行されたアクセスをどのように処理するか決定するため、セキュリティルール５４０８又はプロテクションサーバにアクセスしてもよい。
【０６１２】
例えば、アプリケーション２によりアタッチファンクション５４３６又はデタッチファンクション５４４０を実行する試行がトラップされてもよい。Ｉ／Ｏフィルタ５４２６にアクセスするため標準的又はセキュアな方法としてオペレーティングシステムにより提供されてもよい当該ファンクションの利用は、例えば、デジタル署名されたドライバなどに制限されてもよい。従って、一実施例では、Ｏ／Ｓ下位セキュリティエージェント５４２０は、ドライバがデジタル署名されていることを要求するルールを決定し、コール元アプリケーション若しくはドライバを決定し、ドライバが署名されているか判断するため、セキュリティルール５４０８にアクセスしてもよい。Ｏ／Ｓ下位セキュリティエージェント５４２０は、アプリケーション２の署名されたスタータスを決定するため、オペレーティングシステム５４１２にアクセス可能なＯ／Ｓ内セキュリティエージェント５４１９にアクセスしてもよい。当該アクセスは、オペレーティングシステム５４１２のコール元スタックを調べることによって行われてもよい。他の実施例では、Ｏ／Ｓ下位セキュリティエージェント５４２０は、アプリケーション２がブラックリスト又はホワイトリストにあるか、又はアプリケーション２のハッシュなどに基づき悪意ある状態に関して未知であるか判断してもよい。Ｏ／Ｓ下位セキュリティエージェント５４２０は、アプリケーション２が未知である場合、アプリケーション２は事前注意としてブロックされるか、又はアプリケーション２に関する情報がプロテクションサーバに報告されてもよいと判断してもよい。さらに、アプリケーション２が未知である場合、Ｏ／Ｓ下位セキュリティエージェント５４２０は、アプリケーション２の処理のより多くをトラップすることによって、より高い詳細さによりアプリケーション２の処理をモニタリングしてもよい。Ｏ／Ｓ下位セキュリティエージェント５４２０は、アプリケーション２がマルウェアを有すると判断し、アプリケーション２をブロックし、アプリケーション２の電子デバイス５４０１をクリーンにし、又は他の訂正アクションを実行してもよい。
【０６１３】
他の例では、アプリケーション２によるアタッチサブファンクション５４３８又はデタッチサブファンクション５４４２を実行するための試行はトラップされてもよい。当該ファンクションの利用は、アタッチファンクション５４３６又はデタッチファンクション５４３８などの標準的又はセキュアな機構を利用することを介してのみ通常実行されてもよい。従って、一実施例では、Ｏ／Ｓ下位セキュリティエージェント５４２０は、アタッチサブファンクション５４３８又はデタッチサブファンクション５４４２をコールしたルーチンに基づき、当該ルーチンが既知で列強される標準的又はセキュアな機構の１つでない場合にトラップしてもよい。他の実施例では、Ｏ／Ｓ下位セキュリティエージェント５４２０は、アタッチサブファンクション５４３８又はデタッチサブファンクション５４４２のすべての試行されたアクセスをトラップし、その後、コール元のルーチンを決定し、当該コール元ルーチンが標準的又はセキュアな機構の１つでない場合、当該リクエストを拒絶してもよい。コール元ルーチンは、例えば、デバイススタック５４２４の情報、ドライバデータ構造５４４６を介し、又はメモリ５４０３の何れのメモリページ又はメモリアドレスから、サブファンクションを実行するためのコマンドが行われたか、判断し、メモリマップと当該ページ又はアドレスとを相互に関連付けること
などによって決定されてもよい。コール元ルーチンがアタッチファンクション５４３６又はデタッチファンクション５４４２のインスタンスであると判断された場合、当該ファンクションをコールしたルーチンは、上述されたように検証されてもよい。Ｏ／Ｓ下位セキュリティエージェント５４２０は、認証されたアタッチ又はデタッチファンクションのコールから発生しないアタッチサブファンクション５４３８又はデタッチサブファンクション５４４２のコールを拒絶してもよい。
【０６１４】
さらなる他の例では、ドライバデータ構造５４４６をリード又はライトするか、又はドライバデータ構造のパーミッション５４４４をライとするアプリケーション２による試行は、Ｏ／Ｓ下位セキュリティエージェント５４２０によりトラップされてもよい。当該すべての試行に対するトラップは、アタッチ又はデタッチファンクションの実行から発生する試行のトラップを含むものであってもよい。従って、当該試行をトラップすると、Ｏ／Ｓ下位セキュリティエージェント５４２０は、メモリの何れの部分から、又は何れのエンティティから当該試行が行われたか判断してもよい。当該試行が認証されたファンクションから行われた場合、当該試行は許可されてもよい。認証されたファンクション自体のコール元は、上述されたように検証されてもよい。当該試行が認証されたファンクションから行われたものでない場合、当該試行は、アプリケーション２によりデバイススタック５４２４を直接操作する悪意ある試行を示し、ブロックされてもよい。
【０６１５】
Ｏ／Ｓ下位セキュリティエージェント５４２０は、試行が悪意あるか判断するとき、デバイスのタイプを考慮してもよい。例えば、バーチャルディスクボリュームは、特にフィルタにより利用される傾向がある。従って、Ｏ／Ｓ下位セキュリティエージェント５４２０は、デバイスのタイプを決定するため、オブジェクトなどのドライバデータ構造５４４６にアクセスし、当該タイプがＦＩＬＥ＿ＶＩＲＴＵＡＬ＿ＶＯＬＵＭＥである場合、要求元がデジタル署名されていることを要求してもよい。当該要求は、オペレーティングシステム５４１２による要求から独立していてもよい。試行をトラップするか、又は試行が悪意あるか決定する際に考慮してもよいデバイスオブジェクトの他のタイプは、限定することなく、ライトワンスメディア、バーチャルボリューム、リムーバブルメディア、リモートデバイス、フロッピー（登録商標）ディスケット、リードオンリーデバイス、マウントデバイス、プラグ・アンド・プレイデバイス又は自動生成された名前を有するデバイスを含むものであってもよい。セキュリティルール５４０８は、デバイスオブジェクトのタイプの考慮を含むものであってもよい。例えば、モデムタイプのデバイスは、コール元ドライバが未知である場合、すべてのアタッチメントに対してプロテクトされてもよい。これは、Ｏ／Ｓ下位セキュリティエージェント５４２０が、ファックス及びモデム処理に対するスニフから悪意あるドライバを阻止することを可能にするかもしれない。他の例では、デバイススキャナのドライバは、既知の正当なフィルタ利用がデバイススキャナのドライバについて存在しない場合、すべてのアタッチメントに対してプロテクトされてもよい。
【０６１６】
上述されたように、Ｏ／Ｓ下位セキュリティエージェント５４２０は、Ｉ／Ｏフィルタ５４２６にアクセスすることを試みたエンティティに基づき、試行をトリガ又は処理してもよい。さらに、Ｏ／Ｓ下位セキュリティエージェント５４２０は、アクセスされるべきデバイスの所有ドライバを決定し、試行が悪意あるか判断する際に当該情報を考慮してもよい。ドライバデータ構造５４４６又はデバイスデータ構造はそれぞれ、ドライバ及びデバイスをリンクする情報を有してもよい。当該データ構造は、ドライバとデバイスとの間の関係を決定するためアクセスされてもよい。例えば、Ｉ／Ｏフィルタ５４２６にアクセスする試行がアプリケーション２により行われるが、アプリケーション１がＩ／Ｏデバイス５４３０を所有していると判断された場合、当該リクエストは拒絶されてもよい。
【０６１７】
図５７は、電子デバイスのドライブフィルタアタッチメントのＯ／Ｓ下位トラップの方法５７００の実施例である。当該セキュリティルールは、リソースへの試行されたアクセスがトラップ及び評価されるかの基準と共に、リソースを特定してもよい。
【０６１８】
ステップ５７１０において、フラグが、電子デバイス内のオペレーティングシステムの下位の制御構造において設定されてもよい。フラグは、例えば、アタッチファンクション若しくはデタッチファンクションの試行された実行、アタッチサブファンクション若しくはデタッチサブファンクションの実行、ドライバ及びデバイスデータ構造のリード／ライト／実行パーミッションへのライト、及び／又はデータ構造へのリード若しくはライトなどをトラップするため設定されてもよい。フラグは、上述された試行に対応するメモリアドレスを介した物理メモリアクセスを介し、及び／又はメモリページを介したバーチャルメモリアクセスについて設定されてもよい。
【０６１９】
ステップ５７１５において、電子デバイスは、ドライバフィルタのアタッチメントに関するリソースにアクセスするためのトラップされた試行についてモニタリングされてもよい。ステップ５７２０において、トラップされた試行がない場合、プロセス５７００は、ステップ５７１５に移行し、トラップされた試行についてモニタリングを継続する。試行がトラップされた場合、当該試行はステップ５７２５において処理されてもよい。当該処理は、電子デバイスのオペレーティングシステムのレベルの下位で実行されてもよい。ステップ５７２５において、試行が悪意あるか解析するのに有用な情報が収集されてもよい。例えば、当該試行を行ったプロセス、アプリケーション、ドライバ又はルーチンが決定されてもよい。電子デバイスのオペレーティングシステムの内部からのコンテクスト情報が、Ｏ／Ｓ内セキュリティエージェントから取得されてもよい。試行に関するデバイスのデバイスタイプは、デバイスの所有するドライバと同様に決定されてもよい。
【０６２０】
ステップ５７３５において、デバイスオブジェクト又はドライバスタックのデータ構造が認証されたファンクションを利用することなく直接アクセスされたか判断されてもよい。一実施例では、コール元プロセス又はルーチンが当該データ構造にアクセスすることが未認証であるか判断されてもよい。データ構造が直接アクセスされた場合、ステップ５７６０において、当該試行は疑わしい及び／又は悪意あると判断され、拒絶されてもよい。何れか適切な訂正アクションが実行されてもよい。データ構造が直接アクセスされなかった場合、ステップ５７４０において、デバイスオブジェクト又はデバイススタックのデータ構造に対するパーミッションが試行されたか又は直接書き込まれたか判断されてもよい。一実施例では、コール元プロセス又はルーチンがライトのための当該試行を行うのに許可されているか判断されてもよい。データ構造が直接書き込まれた場合、ステップ５７６０において、当該試行は疑わしい及び／又は悪意あると判断され、拒絶されてもよい。当該データ構造が直接書き込まれていない場合、ステップ５７４５において、アタッチ又はデタッチサブファンクションが、当該アクセスについて指定されたファンクションを利用することなく直接実行されたか判断されてもよい。一実施例では、コール元プロセス又はルーチンが当該試行を行うのに未認証であるか判断されてもよい。サブファンクションが直接実行された場合、ステップ５７６０において、当該試行が疑わしい及び／又は悪意あると判断され、拒絶されてもよい。当該サブファンクションが直接実行されていない場合、ステップ５７５０において、アタッチファンクション又はデタッチファンクションが認証されたエンティティによりコールされたか判断されてもよい。ファンクションが認証されたエンティティによりコールされていない場合、ステップ５７６０において、当該試行が疑わしい及び／又は悪意あると判断され、拒絶されてもよい。当該ファンクションが認証されたエンティティによりコールされた場合、ステップ５７５５において、当該試行は許可されてもよい。
【０６２１】
ステップ５７５５又は５７６０の実行後、方法５７００は、任意的にドライバフィルタアタッチメントについて電子デバイスのリソースへの試行されたアクセスについてモニタリングを継続するため、ステップ５７１５に戻ってもよい。
【０６２２】
図５８は、電子デバイス５８０１上のドライバのロード又はアンロードをセキュアにするシステム５８００の実施例である。システム５８００は、オペレーティングシステム５８１２などの電子デバイス５８０１のオペレーティングシステムにおいてドライバをロード又はアンロードするための悪意ある試行を検出するため、電子デバイス５８０１上で動作するよう構成されるＯ／Ｓ下位セキュリティエージェント５８２０を有してもよい。さらに、Ｏ／Ｓ下位セキュリティエージェント５８２０は、何れのドライバの試行されたロード又はアンロードがトラップされる処理に対応するか、試行が当該試行と当該試行を実行するエンティティとに基づき認証されているか判断するため、１以上のセキュリティルール５８０８を利用するよう構成されてもよい。Ｏ／Ｓ下位セキュリティエージェント５８２０は、許可若しくは拒絶又はトラップされたイベントについて他の訂正アクションを実行するよう構成されてもよい。
【０６２３】
電子デバイス５８０１は、図１の電子デバイス１０３、図２の電子デバイス２０４、図４の電子デバイス４０４、図７の電子デバイス７０１、図９の電子デバイス９０１、図１２の電子デバイス１２０１及び／又はこれらの何れかの組み合わせの機能により全体的若しくは部分的に実現されるか、又は当該機能を実現するよう構成されてもよい。電子デバイス５８０１は、メモリ５８０３などのメモリに接続される１以上のプロセッサ５８０２を有してもよい。プロセッサ５８０２は、図２のプロセッサ２０８、図４のプロセッサ４０８、図７のプロセッサ７０２、図９のプロセッサ９０２、図１２のプロセッサ１２０２及び／又はこれらの何れかの組み合わせの機能により全体的若しくは部分的に実現されるか、又は当該機能を実現するよう構成されてもよい。メモリ５８０３は、図２のメモリ２０６、図４のメモリ４０６、図７のメモリ７０３、図９のメモリ９０３、図１２の物理メモリ１２０３若しくはバーチャルメモリ１２０４及び／又はこれらの何れかの組み合わせの機能により全体的若しくは部分的に実現されるか、又は当該機能を実現するよう構成されてもよい。電子デバイス５８０１は、１以上のセキュリティルール５８２１に接続されるＯ／Ｓ内セキュリティエージェント５８１９を有するオペレーティングシステム５８２１を有してもよい。オペレーティングシステム５８１２は、図１のオペレーティングシステム１１２、図２のオペレーティングシステム２１２、図４のオペレーティングシステム４１２、図７のオペレーティングシステム７１３、図９のオペレーティングシステム９１３、図１２のオペレーティングシステム１２１３及び／又はこれらの何れかの組み合わせの機能により全体的若しくは部分的に実現されるか、又は当該機能を実現するよう構成されてもよい。Ｏ／Ｓ内セキュリティエージェント５８１９は、図１のＯ／Ｓ内セキュリティエージェント２８１、図４のＯ／Ｓ内セキュリティエージェント４１８、図７のＯ／Ｓ内セキュリティエージェント７１９、図９のＯ／Ｓ内セキュリティエージェント９１９、図１２のＯ／Ｓ内セキュリティエージェント１２１９及び／又はこれらの何れかの組み合わせの機能により全体的若しくは部分的に実現されるか、又は当該機能を実現するよう構成されてもよい。
【０６２４】
Ｏ／Ｓ下位セキュリティエージェント５８２０は、図１のＯ／Ｓ下位トラップエージェント１０４若しくはトリガイベントハンドラ１０８、図２のＳＶＭＭ２１６若しくはＳＶＭＭセキュリティエージェント２１７、図４のファームウェアセキュリティエージェント４４０、４４２、Ｏ／Ｓ下位トラップエージェント４５０若しくはＰＣファームウェアセキュリティエージェント４４４、図５のファームウェアセキュリティエージェント５１６、図７のマイクロコードセキュリティエージェント７０８若しくはＯ／Ｓ下位エージェント７１２、図９のＯ／Ｓ下位トラップエージェント９２０若しくはトリガイベントハンドラ９２２、図１２のＯ／Ｓ下位セキュリティエージェント１２２０及び／又はこれらの何れかの組み合わせの機能により全体的若しくは部分的に実現されるか、又は当該機能を実現するよう構成されてもよい。
【０６２５】
セキュリティルール５８０８は、図１のセキュリティルール１１４、図２のセキュリティルール２２２、図４のセキュリティルール４３４、４３６、４３８、図５のセキュリティルール５１８、図７のセキュリティルール７０７、７２３、図９のセキュリティルール９０８、図１２のセキュリティルール１２０８及び／又はこれらの何れかの組み合わせの機能により全体的若しくは部分的に実現されるか、又は当該機能を実現するよう構成されてもよい。セキュリティルール５８２１は、図２のセキュリティルール２２０、図４のセキュリティルール４２０、図７のセキュリティルール７２１、図９のセキュリティルール９２１、図１２のセキュリティルール１２２１及び／又はこれらの何れかの組み合わせの機能により実現されるか、又は当該機能を実現するよう構成されてもよい。
【０６２６】
電子デバイス５８０１は、ドライバをロード又はアンロードするため、電子デバイス５８０１のリソースにアクセスすることを試みるアプリケーション５８２６などの１以上のアプリケーション、ドライバ又は他のエンティティを有してもよい。アプリケーション５８２６は、メモリ５８０３などのリソースにアクセスすることを試行してもよい。一実施例では、アプリケーション５８２６は、メモリ５８０３がオペレーティングシステム５８１２により仮想化されたメモリページを介しメモリ５８０３にアクセスすることを試行してもよい。他の実施例では、アプリケーション５８２６は、物理メモリのアドレスへのアクセスを介しメモリ５８１２にアクセスすることを試行してもよい。アプリケーション５８２６は、メモリ５８０３の命令を実行するためプロセッサ５８０２を利用することを試行してもよい。
【０６２７】
オペレーティングシステム５８１２は、ドライバをロード及びアンロードするため電子デバイス５８０１内のアプリケーション５８２６などのエンティティのファンクションを提供してもよい。当該エンティティは、ロード及びアンロードファンクションを通常ロールしてもよい。当該ファンクションを提供することによって、オペレーティングシステム５８１２は、電子デバイス５８０１のエンティティがドライバをロード又はアンロードするための制御されたセキュアで効率的な機構を提供してもよい。当該ファンクションは、ロードサブファンクション及びアンロードサブファンクションの組み合わせに依拠してもよい。当該ロード及びアンロードサブファンクションは、オペレーティングシステム５８１２による利用から非ドキュメント化又は阻止されてもよい。ロード及びアンロードサブファンクションは、関連するロード及びアンロードファンクションにより利用のためのみに意図される。マルウェアは、ロードサブファンクション及びアンロードサブファンクションの個々のインスタンスをコールすることによって、ロード及びアンロードファンクションのセキュリティ及び制御機構をバイパスするかもしれない。さらに、マルウェアは、当該ファンクション又はサブファンクションのコードセクションに直接ジャンプすることによって、ロード及びアンロードファンクションのセキュリティ及び制御機構をバイパスしてもよい。さらに、マルウェアは、実行のためメモリにロードされると、ドライバを変更するよう試行する可能性があり、ディスク上のドライバのイメージがマルウェアによりクリーンされ、ドライバにロードされるとき、コードがマルウェアにより投入され、ドライバをコラプトさせる。
【０６２８】
オペレーティングシステム５８１２により提供される何れか適切なロード又はアンロードファンクションは、ドライバをロード又はアンロードするのに利用されてもよい。例えば、ＷｉｎｄｏｗｓＴＭオペレーティングシステムにより実現されるオペレーティングシステム５８１２は、ＺｗＬｏａｄＤｒｉｖｅｒ（）ファンクションを利用してドライバをロードし、又はＺｗＵｎｌｏａｄＤｒｉｖｅｒ（）を利用してドライバをアンロードしてもよい。当該ロード又はアンロードファンクションは、何れか適切な個数又は種類のサブファンクションをコールしてもよい。例えば、ＺｗＬｏａｄＤｒｉｖｅｒ（）は、ＮｔＬｏａｄＤｒｉｖｅｒ（）をコールし、それはさらにＩｏｐＬｏａｄＵｎｌｏａｄＤｒｉｖｅｒ（）をコールする。ＩｏＰＬｏａｄＵｎｌｏａｄＤｒｉｖｅｒ（）はさらに、ドライバをロードするためＩｏＰＵｏａｄＤｒｉｖｅｒ（）をコールし、又はドライバをアンロードするためＩｏｐＵｎｌｏａｄＤｒｉｖｅｒ（）をコールする。従って、ファンクションコールの階層が、ドライバをロード又はアンロードするため利用されてもよい。一実施例では、ドライバは、他の処理の副次的効果としてロードされるかもしれない。例えば、ＷｉｎｄｏｗｓＴＭオペレーティングシステムにより実現されるオペレーティングシステム５８１２は、ＭｍＬｏａｄＳｙｓｔｅｍＩｍａｇｅ（）ファンクションを利用して、システムイメージ全体をロードし、当該期間中にドライバは結果としてロードされるかもしれない。当該ファンクションによりロードされたイメージは、ドライバのための相対アドレスを有してもよく、当該相対アドレスはリロケーションテーブルに基づきリロケートされてもよい。当該タスクを実行するため、ＭｍＬｏａｄＳｙｓｔｅｍＩｍａｇｅ（）に対するコールは、ＬｄｒＲｅｌｏｃａｔｅＩｍａｇｅサブファンクションを利用してもよい。他の実施例では、ＭｉＭａｐＶｉｅｗＯｆＤａｔａＳｅｃｔｉｏｎ（）、ＭｉＭｐａＶｉｅｗＯｆＩｍａｇｅＳｅｃｔｉｏｎ（）又はＭｉＭｐａＶｉｅｗＯｆＰｈｙｓｉｃａｌＳｅｃｔｉｏｎ（）などの特定の補助ファンクションが、ドライバをロードするため利用されてもよい。
【０６２９】
ドライバのロード及びアンロードをセキュアにするため、Ｏ／Ｓ下位セキュリティエージェント５８２０は、電子デバイス５８０１のリソースの何れの部分がトラップされるべきか、また試行に関する何れのコンテクスト情報が決定されるべきか決定するため、セキュリティルール５８０８にアクセスするよう構成されてもよい。Ｏ／Ｓ下位セキュリティエージェント５８２０は、何れか適切なファンクション又はサブファンクションの試行された実行をトラップするよう構成されてもよい。Ｏ／Ｓ下位セキュリティエージェント５８２０は、何れか適切な方法によりこれらのファンクション又はサブファンクションの試行された実行をトラップするよう構成されてもよい。
【０６３０】
一実施例では、Ｏ／Ｓ下位セキュリティエージェント５８２０は、メモリ５８０３のファンクションの実行のため制御構造のフラグを設定するよう構成されてもよい。例えば、Ｏ／Ｓ下位セキュリティエージェント５８２０は、メモリ５８０３のアドレス（Ｄ）におけるＺｗＬｏａｄＤｒｉｖｅｒ（）のファンクションエントリポイントの試行された実行をトラップするよう構成されてもよい。他の例では、Ｏ／Ｓ下位セキュリティエージェント５８２０は、メモリ５８０３のアドレス（Ｅ）におけるＮｔＬｏａｄＤｒｉｖｅｒ（）のファンクションエントリポイントの試行された実行をトラップするよう構成されてもよい。
【０６３１】
他の実施例では、Ｏ／Ｓ下位セキュリティエージェント５８２０は、マルウェアの強い徴候である当該ファンクションのコードセクションの実行を直接的にトラップするよう構成されてもよい。例えば、Ｏ／Ｓ下位セキュリティエージェント５８２０は、メモリ５８０３のアドレス（Ａ）におけるＮｔＬｏａｄＤｒｉｖｅｒ（）のコードセクションのダイレクトアクセスを生じさせる何れか試行されたＪＭＰ命令又は同様の命令をトラップするよう構成されてもよい。
【０６３２】
ドライバの試行されたロードに応答して、Ｏ／Ｓ下位セキュリティエージェント５８２０は、ロードが許可される前にドライバをロードする効果の可能性を決定するよう構成されてもよい。Ｏ／Ｓ下位セキュリティエージェント５８２０は、ディスク５８２４上などのストレージのドライバのイメージを調べるよう構成されてもよい。例えば、新たなドライバ５８３０の試行されたロードをトラップすると、Ｏ／Ｓ下位セキュリティエージェント５８２０は、ディスク５８２４上の新たなドライバ５８３０のイメージのコンテンツをスキャンするよう構成されてもよい。Ｏ／Ｓ下位セキュリティエージェント５８２０は、ディスク５８２４上の新たなドライバ５８３０のイメージのコンテンツのハッシュ又はデジタルシグネチャ、及び／又は当該コンテンツの一部（コードセクションなど）のハッシュ又はシグネチャを決定するよう構成されてもよい。Ｏ／Ｓ下位セキュリティエージェント５８２０は、新たなドライバ５８３０がホワイトリスト、ブラックリスト又はセキュリティルール５８０８などの他の情報に従って安全であるか、悪意あるか、又は未知であると知られているか判断するよう構成されてもよい。Ｏ／Ｓ下位セキュリティエージェント５８２０は、新たなドライバ５８３０の身元を確認するため、ディスク５８２４上にある新たなドライバ５８３０のレイアウトを評価するよう構成されてもよい。Ｏ／Ｓ下位セキュリティエージェント５８２０は、署名者名、シグネチャ情報又は署名日などの新たなドライバ５８３０の作成者により提供されたデジタルシグネチャを評価するよう構成されてもよい。Ｏ／Ｓ下位セキュリティエージェント５８２０は、ディスクにある新たなドライバ５８３０のイメージのファイルの名前を評価するよう構成されてもよい。
【０６３３】
一実施例では、Ｏ／Ｓ下位セキュリティエージェント５８２０は、ロード処理を許可するが、追加的な動作モニタリングをイネーブルにすることによって、ドライバの試行されたロードを条件付きで許可するよう構成されてもよい。例えば、アプリケーション５８２６による新たなドライバ５８３０の試行されたロードのトラップによって、Ｏ／Ｓ下位セキュリティエージェント５８２０は、ディスク５８２４上のアプリケーション５８２６と新たなドライバ５８３０のイメージの何れも既知でなく、最初にロードされるドライバがオペレーティングシステム５８１２の重要部分に干渉する署名を示していないと判断してもよい。アクセスの偽陽性ブロックを阻止するため、Ｏ／Ｓ下位セキュリティエージェント５８２０は、新たなドライバ５８３０のロードを許可するよう構成されてもよい。しかしながら、ドライバの真の性質が確証を持ってまだ決定されていないため、Ｏ／Ｓ下位セキュリティエージェント５８２０は、メモリ５８０３のアドレス（Ｂ）における新たなドライバ５８３０について割り当てられたメモリスペースにおける追加的なフラグ又はトリガを割り当てるよう構成されてもよい。従って、新たなドライバ５８３０のコードが実行され、新たなドライバが各種アクションを実行することを試行すると、Ｏ／Ｓ下位セキュリティエージェント５８２０は、電子デバイス５８０１の悪意あるアクションを実行しないことを保証するため、新たなドライバ５８３０のアクションをモニタリングするよう構成されてもよい。
【０６３４】
他の実施例では、Ｏ／Ｓ下位セキュリティエージェント５８２０は、ロード処理を許可するが、その後メモリ５８０３にあるときにドライバの追加的なセキュリティ検証を実行することによって、ドライバの試行されたロードを条件付きで許可するよう構成されてもよい。Ｏ／Ｓ下位セキュリティエージェント５８２０は、当該チェックが終了するまで、ドライバの実行を停止するよう構成されてもよい。メモリ５８０３のドライバのイメージに対してＯ／Ｓ下位セキュリティエージェント５８２０により実行されるセキュリティ検証は、ディスク５８２４などのストレージにあるとき、ドライバのイメージに対してＯ／Ｓ下位セキュリティエージェント５８２０により実行されるものと類似してもよい。例えば、Ｏ／Ｓ下位セキュリティエージェント５８２０は、アドレスレンジ（Ｂ）におけるメモリの新たなドライバ５８３０のイメージのコンテンツをスキャンし、イメージ又はイメージのサブセクションのコンテンツのハッシュ又はデジタルシグネチャを決定し、当該イメージをホワイトリスト又はブラックリストと比較し、メモリ５８０３にあるとき新たなドライバ５８３０のイメージのファイルレイアウト又はファイル名を評価するよう構成されてもよい。さらに、Ｏ／Ｓ下位セキュリティエージェント５８２０は、ディスク５８２４などのストレージのドライバのイメージを解析した結果とメモリ５８０３のドライバのイメージとを比較するよう構成されてもよい。ある相違は、それがロードされたとき、ドライバにコードが投入されたことを示すものであるかもしれない。
【０６３５】
ドライバの試行されたアンロードにより、Ｏ／Ｓ下位セキュリティエージェント５８２０は、当該ドライバが重要であるか判断するため、アンロードするドライバの身元を決定するよう構成されてもよい。一実施例では、Ｏ／Ｓ下位セキュリティエージェント５８２０は、関連するドライバ及びエンティティとメモリ５８０３のアドレス（Ｃ）とメモリレンジ（Ｂ）との間のものなどの値との相関を示すメモリマップを照会するよう構成されてもよい。図５８の例では、当該レンジは、古いドライバ５８２８により利用されるメモリスペースに対応するものであるかもしれない。アンロードされるドライバの身元に依存して、Ｏ／Ｓ下位セキュリティエージェント５８２０は、アンロードされるドライバの身元に固有のセキュリティルール５８０８を適用するよう構成されてもよい。例えば、悪意あるアンロード処理の偽陽性の特定を最小限にするため、セキュリティルール５８０８は、電子デバイス５８０１のセキュリティ又は処理に重要なものとして特定されたか、又はマルウェアの傾向があるドライバのみに削除を制限してもよい。
【０６３６】
Ｏ／Ｓ下位セキュリティエージェント５８２０は、ドライバ情報の試行された直接的な操作をトラップするよう構成されてもよい。当該直接的な操作は、ドライバをアンロードするシステムファンクションの利用をマルウェアが回避することによって試行されてもよい。一実施例では、Ｏ／Ｓ下位セキュリティエージェント５８２０は、アドレス（Ｃ）とメモリレンジ（Ｂ）との間のメモリ５８０３の古いドライバ５８２８に対するものなど、特定のアドレスレンジ内のロード又はアンロードに関するドライバのデータ構造の試行されたアクセスをトラップするよう構成されてもよい。Ｏ／Ｓ下位セキュリティエージェント５８２０は、認証されたファンクションコールを介し試行が実行されたか判断するよう構成されてもよい。試行が実行されない場合、Ｏ／Ｓ下位セキュリティエージェント５８２０は、当該試行が疑わしいと判断するよう構成されてもよい。
【０６３７】
Ｏ／Ｓ下位セキュリティエージェント５８２０は、何れか試行されたロード又はアンロードドライバ処理のソースを決定するよう構成されてもよい。Ｏ／Ｓ下位セキュリティエージェント５８２０は、試行のソースを考慮しながら、ロード又はアンロードのため試行されたリソースのアクセスを評価するよう構成されてもよい。例えば、試行が信頼されたソースからのものであり、処理を行うアプリケーション又はドライバがデジタル署名され、それのコードセクションのハッシュがホワイトリスト上にある場合、Ｏ／Ｓ下位セキュリティエージェント５８２０は、マルウェアステータスが未知であるドライバを当該ソースがロードすることを可能にするよう構成されてもよい。他の例では、試行が悪意であると判断されたソースからのものである場合、Ｏ／Ｓ下位セキュリティエージェント５８２０は、それがドライバをロード又はアンロードすることを許可しないよう構成されてもよい。さらなる他の例では、ロード又はアンロードのサブファンクションがアクセスされ、コール元のプロセス、アプリケーション、ドライバ又はファンクションがサブファンクションをコールするよう指定されたシステムにより提供されたファンクションでない場合、Ｏ／Ｓ下位セキュリティエージェント５８２０は、当該アクセスを許可しないよう構成されてもよい。さらなる他の例では、ファンクション又はサブファンクションのこーｄおセクションがＪＭＰ又は同様の命令を介して直接アクセスされた場合、Ｏ／Ｓ下位セキュリティエージェント５８２０は、何れのメモリ位置から試行命令が行われたか判断し、当該試行がドライバをロード又はアンロードするため認証されたファンクション又はサブファンクション内からのものでない場合、当該アクセスを拒絶するよう構成されてもよい。これらすべての例では、Ｏ／Ｓ下位セキュリティエージェント５８２０は、電子デバイス５８０１のリソースの試行されたアクセスを導くコールのチェーンを決定するため、コールスタックをウォークするよう構成されてもよい。コールチェーンの各ステップにおいて、Ｏ／Ｓ下位セキュリティエージェント５８２０は、コールを行ったエンティティを評価するよう構成されてもよい。
【０６３８】
さらに、Ｏ／Ｓ下位セキュリティエージェント５８２０は、アドミニストレータの設定に基づき試行されたロード又はアンロード処理が悪意あるか判断するよう構成されてもよい。例えば、電子デバイス５８０１が動作する企業のアドミニストレータは、電子デバイス５８０１のユーザがアドミニストレータとしてログインされない場合、ドライバがロード又はアンロードされないことを指示してもよい。
【０６３９】
さらに、Ｏ／Ｓ下位セキュリティエージェント５８２０は、電子デバイス５８０１のリソースにアクセスするため以前にトラップされた試行に基づき、試行されたロード又はアンロード処理が悪意あるか判断するよう構成されてもよい。ロード又はアンロードの試行が電子デバイス５８０１上で検出された他の疑わしいアクションに関するものである決定するための何れか適切な基準が利用されてもよい。例えば、アプリケーション５８２６が古いドライバ５８２８などの重要なドライバをアンロードする試行において以前に拒絶されている場合、アプリケーション５８２６は疑わしいアクティビティを行ったことがあるため、Ｏ／Ｓ下位セキュリティエージェント５８２０は、アプリケーション５８２６による以降のロード又はアンロード試行を拒絶するよう構成されてもよい。
【０６４０】
一実施例では、Ｏ／Ｓ下位セキュリティエージェント５８２０は、プロセッサ５８０２による命令の実行及びメモリ５８０３へのアクセスをメモリページ単位でトラップするよう構成されてもよい。当該実施例では、オペレーティングシステム５８１２は、電子デバイス５８０１上で実行するためそれに依存するエンティティに対してプロセッサ５８０２及びメモリ５８０３へのアクセスを仮想化するよう構成されてもよい。他の実施例では、Ｏ／Ｓ下位セキュリティエージェント５８２０は、プロセッサ５８０２による命令の実行及びメモリ５８０３へのアクセスを物理メモリアドレス単位でトラップするよう構成されてもよい。当該実施例では、メモリ５８０３のコンテンツが連続的に示されているが、当該コンテンツは物理メモリの別々のセクションに分散されてもよい。
【０６４１】
ドライバをロード又はアンロードする試行が検出されると、Ｏ／Ｓ下位セキュリティエージェント５８２０は、何れか適切な訂正アクションを実行するよう構成されてもよい。例えば、試行を行ったエンティティが電子デバイス５８０１から隔離又は削除されてもよい。他の例では、ロードされたドライバは、電子デバイス５８０１から隔離又は削除されてもよい。
【０６４２】
動作について、Ｏ／Ｓ下位セキュリティエージェント５８２０は、ドライバのロード及びアンロードをセキュアにするため、電子デバイス５８０１上で実行されてもよい。Ｏ／Ｓ下位セキュリティエージェント５８２０は、ドライバをロード及びアンロードするため電子デバイス５８０１の何れのリソースをガードするか決定するため、セキュリティルール５８０８を照会してもよい。Ｏ／Ｓ下位セキュリティエージェント５８２０は、その後、当該リソースの試行されたアクセスをトラップするため、１以上の制御構造においてフラグを設定してもよい。例えば、Ｏ／Ｓ下位セキュリティエージェント５８２０は、メモリ５８０３のアドレス（Ｄ）におけるＳｗＬｏａｄＤｒｉｖｅｒ（）の実行、アドレス（Ａ）のＮｔＬｏａｄＤｒｉｖｅｒ（）のコードセクションのアクセス、アドレス（Ｅ）のＮｔＬｏａｄＤｒｉｖｅｒ（）の実行、（Ｂ）のメモリレンジの新たなドライバについて割り当てられたスペースのアクセス、（Ｃ）と（Ｂ）との間のレンジにおける古いドライバのスペースのアクセス又はディスク５８２４上の新たなドライバのイメージのリードについてフラグを設定してもよい。
【０６４３】
アプリケーション５８２６は、新たなドライバ５８３０などのドライバをロードし、及び／又は古いドライバ５８２８などのドライバをアンロードすることを試行するため、電子デバイス５８０１の１以上のリソースにアクセスしてもよい。例えば、アプリケーション５８２６は、新たなドライバ５８３０をロードするため、ＺｗＬｏａｄＤｒｉｖｅｒ（）５８３２のインスタンスをコールしてもよい。Ｏ／Ｓ下位セキュリティエージェント５８２０は、アドレス（Ｄ）におけるファンクションの試行された実行をトラップし、コール元のエンティティであるアプリケーション５８２６の身元を決定してもよい。Ｏ／Ｓ下位セキュリティエージェント５８２０は、アプリケーション５８２６をスキャンし、それのコンテンツのデジタルハッシュ又はシグネチャを計算し、ホワイトリスト、ブラックリスト、セキュリティルール５８０８及び／又はプロテクションサーバを調べてアプリケーション５８２６の身元を決定するものであってもよい。Ｏ／Ｓ下位セキュリティエージェント５８２０は、アプリケーション５８２６が安全であると知られている、悪意あると知られている又は未知であるか判断してもよい。コールされたファンクション、アプリケーション５８２６の身元及びＯ／Ｓ内セキュリティエージェント５８１９から収集したコンテクスト情報に基づき、Ｏ／Ｓ下位セキュリティエージェント５８２０は、アプリケーション５８２６がＺｗＬｏａｄＤｒｉｖｅｒ（）５８３２などのロード又はアンロードファンクションをコールすることが許可されている判断してもよい。
【０６４４】
他の例では、アプリケーション５８２６は、新たなドライバ５８３０をロードするため、ＮｔＬｏａｄＤｒｉｖｅｒ（）５８３４のインスタンスをコールしてもよい。ＮｔＬｏａｄＤｒｉｖｅｒ（）５８３４のコールは、ＮｔＬｏａｄＤｒｉｖｅｒ（）５８３４ｂの直接的なコールを介し、又はＮｔＬｏａｄＤｒｉｖｅｒ（）５８３４ａのインスタンスをさらにコールするＺｗＬｏａｄＤｒｉｖｅｒ（）５８３２などのコールによって実行されてもよい。Ｏ／Ｓ下位セキュリティエージェント５８２０は、アドレス（Ｅ）におけるファンクションの試行された実行をトラップし、電子デバイス５８０１の何れのエンティティから当該コールが行われたか判断してもよい。実行チェーンに検出される各エンティティについて、Ｏ／Ｓ下位セキュリティエージェント５８２０は、ＺｗＬｏａｄＤｒｉｖｅｒ（）について上述した例で行われたものと同様の決定を行ってもよい。具体的には、Ｏ／Ｓ下位セキュリティエージェント５８２０は、サブファンクションが当該目的のためオペレーティングシステム５８１２により提供されたファンクションを介し適切にアクセスされたか判断してもよい。従って、Ｏ／Ｓ下位セキュリティエージェント５８２０は、当該コールがＺｗＬｏａｄＤｒｉｖｅｒ（）から行われたと判断した場合、当該コールは認証されてもよい。しかしながら、当該オールがアプリケーション５８２６から直接行われ、Ｏ／Ｓ下位セキュリティエージェント５８２０が当該コールが認証されたチャネルを介し行われなかったと判断した場合、当該コールは、悪意あると判断されてもよい。
【０６４５】
さらなる他の例では、Ｏ／Ｓ下位セキュリティエージェント５８２０は、アドレス（Ａ）におけるＮｔＬｏａｄＤｒｉｖｅｒ（）などのドライバをロード又はアンロードするためのファンクション又はサブファンクションのコードセクションに試行されたジャンプ、ブランチ又は他の実行をトラップしてもよい。Ｏ／Ｓ下位セキュリティエージェント５８２０は、試行されたジャンプ、ブランチ又は実行がＮｔＬｏａｄＤｒｉｖｅｒ（）又は他の認証されたエンティティから行われたか判断してもよい。行われていない場合、Ｏ／Ｓ下位セキュリティエージェント５８２０は、試行されたジャンプ、ブランチ又は実行が悪意あると判断してもよい。当該試行されたジャンプ、ブランチ又は実行は、ファンクション又はサブファンクションをコールことを回避し、ドライバを直接ロード又はアンロードすることを試行するマルウェアの結果であるかもしれない。
【０６４６】
さらなる他の例では、Ｏ／Ｓ下位セキュリティエージェント５８２０は、メモリ５８０３のレンジ（Ｂ）の新たなドライバ５８３０について割り当てられたスペースへのディスク５８２４からの新たなドライバ５８３０のイメージなど、メモリへのストレージからのドライバのイメージをロードするための試行をトラップしてもよい。ロードを許可する前、Ｏ／Ｓ下位セキュリティエージェント５８２０は、ディスク５８２４上の新たなドライバ５８３０のイメージのコンテンツを調べ、及び／又はコール元エンティティを特徴付けしてもよい。イメージがマルウェアを示さない場合、又はエンティティが未知であるか、又は安全であると知られる場合、Ｏ／Ｓ下位セキュリティエージェント５８２０は、ドライバがメモリにロードされることを許可してもよい。Ｏ／Ｓ下位セキュリティエージェント５８２０は、新たにロードされた新たなドライバ５８３０による悪意あるアクティビティに対する追加的なガードを提供するため、アドレスレンジ（Ｂ）の実行又はアクセスに追加的なフラグを設けてもよい。Ｏ／Ｓ下位セキュリティエージェント５８２０は、ディスク５８２４上で観察されたイメージに対してメモリ５８０３にある新たなドライバ５８３０のイメージを比較し、ロード処理中に投入されたコードを何れかの変更が表すか判断してもよい。当該コードの投入は、マルウェアの徴候であるかもしれない。
【０６４７】
さらなる例では、Ｏ／Ｓ下位セキュリティエージェント５８２０は、メモリ５８０３におけるメモリレンジ（Ｂ）と位置（Ｃ）との間の古いドライバ５８２８について割り当てられたスペースなど、メモリにロードされたドライバのメモリスペースへのライトコマンドなどの試行されたアクセスをトラップしてもよい。Ｏ／Ｓ下位セキュリティエージェント５８２０は、当該アクセスをトラップし、コール元エンティティを決定し、当該エンティティが当該変更を行うためのセキュリティルール５８０８による権限を有しているか判断してもよい。当該試行された変更は、電子デバイス５８０１からドライバを手動により削除するためのマルウェアの試行の一部であってもよい。
【０６４８】
ドライバのロード及びアンロードのためリソースにアクセスすることを試行する間におけるＯ／Ｓ下位セキュリティエージェント５８２０によりトラップされた試行されたアクションは、許可又は拒絶されてもよい。Ｏ／Ｓ下位セキュリティエージェント５８２０は、以降の評価に利用される試行の記録、試行したエンティティの隔離又は削除、プロテクションサーバへの試行の報告、又は他の何れか適切なアクションなどの追加的な訂正手段を実行してもよい。
【０６４９】
オペレーティングシステム５８１２のレベルで実行されるアンチマルウェアソフトウェアは、当該アクティビティを実行するマルウェアがまた同一の優先度レベルに実行される可能性があるため、ドライバの悪意あるロード及びアンロードを完全に解決することはできないかもしれない。
【０６５０】
図５９Ａ及び５９Ｂは、電子デバイスのドライバのロード及びアンロードをセキュアにする方法５９００の実施例を示す。ステップ５９０５において、セキュリティルールは、プロテクトされるべきドライバのロード及びアンロードに関するリソースを決定するためアクセスされてもよい。当該セキュリティルールは、リソースへの試行されたアクセスがトラップ及び評価される基準と共に、リソースを特定してもよい。
【０６５１】
ステップ５９１０において、フラグが、電子デバイス内のオペレーティングシステムのレベルの下位で制御構造に設定されてもよい。フラグは、例えば、ロード及びアンロードファンクションの試行された実行、ロードサブファンクション若しくはアンロードサブファンクションの実行、メモリにロードされるドライバのイメージへのライト、ロード実行によるストレージのドライバのイメージからのリード、及び／又はドライバロード及びアンロードファンクション及びサブファンクションのこーｄおセクションのジャンプ、ブランチ又は他の直接的な実行をトラップするため設定されてもよい。フラグは、上述された試行に対応するメモリアドレスを介した物理メモリアクセスを介し、及び／又はメモリページを介したバーチャルメモリアクセスについて設定されてもよい。
【０６５２】
ステップ５９１５において、電子デバイスは、ドライバのロード及びアンロードに関するリソースにアクセスするためのトラップされた試行についてモニタリングされてもよい。ステップ５９０２において、試行がトラップされなかった場合、プロセス５９００は、ステップ５９１５に移行し、トラップされる試行のモニタリングを継続する。試行がトラップされた場合、当該試行は、ステップ５９２５において処理されてもよい。当該処理は、電子デバイスのオペレーティングシステムのレベルの下位で実行されてもよい。ステップ５９２５において、試行が悪意あるか解析するのに有用な情報が収集されてもよい。例えば、当該試行を行うプロセス、アプリケーション、ドライバ又はルーチンが決定されてもよい。電子デバイスのオペレーティングシステム内からのコンテクスト情報が、Ｏ／Ｓ内セキュリティエージェントから取得されてもよい。ドライバをロードするための試行が行われた場合、ディスク上のドライバのイメージが評価されてもよい。
【０６５３】
ステップ５９３５において、ドライバをロード又はアンロードするためのドライバのコンテンツが認証されたファンクションを用いることなく直接アクセスされたか判断されてもよい。一実施例では、コール元プロセス又はルーチンがドライバの当該部分にアクセスすることが未認証であるか判断されてもよい。コンテンツが直接アクセスされた場合、ステップ５９６０において、当該試行が疑わしく及び／又は悪意あると判断されてもよく、当該試行は拒絶されてもよい。何れか適切な訂正アクションが実行されてもよい。コンテンツが未認証のファンクションにより又は未認証のメモリ位置から直接アクセスされていなかった場合、ステップ５９４０において、試行されたロード処理に関するストレージのドライバイメージのコンテンツが評価されてもよい。イメージが悪意あるコンテンツについてスキャンされ、観察及び記録されたドライバレイアウト、計算されたドライバのハッシュ、評価されたデジタル証明書の作成者又は他の何れか適切な調査アクションが実行されてもよい。ステップ５９４３において、ストレージのディスクのイメージに関する情報が当該コンテンツが疑わしい及び／又は悪意あることを示しているか判断されてもよい。コンテンツが疑わしい及び／又は悪意ある場合、ステップ５９６０において、当該リクエストは拒絶されてもよい。そうでない場合、ステップ５９４５において、ロード又はアンロードサブファンクションが当該アクセスについて指定されたファンクションを利用することなく直接実行されたか判断されてもよい。一実施例では、コール元プロセス又はルーチンが当該試行を行うのに未認証であるか判断されてもよい。コール元プロセスが未認証である場合、ステップ５９６０において、当該試行は疑わしい及び／又は悪意あると判断され、拒絶されてもよい。未認証でない場合、ステップ５９５０において、ロードファンクション又はアンロードファンクションが認証されたエンティティによりコールされたか、又は試行されたブランチ、ジャンプ又は他の直接的な実行が認証されたエンティティによりコールされたか判断されてもよい。ファンクションが認証されたファンクションによりコールされていなかった場合、ステップ５９６０において、当該試行は疑わしい及び／又は悪意あると判断され、拒絶されてもよい。認証されたファンクションによりコールされていた場合、ステップ５９５５において、当該試行は許可されてもよい。
【０６５４】
試行が許可され、ドライバをロードするためのものである場合、ステップ５９６５において、新たにロードされたドライバに割り当てられたメモリは、追加的なトラップのためマーク付けされてもよい。当該ステップは、特にドライバをロードすることを試行したエンティティが未知であった場合、又はロードされたドライバのマルウェアステータスが最終的に決定できなかった場合、実行されてもよい。従って、ドライバメモリの以降のリード、ライト又は実行はトラップされてもよい。ステップ５９７０において、それがメモリにロードされたとき、ドライバイメージのコンテンツは評価され、及び／又はそれがロードされる前にストレージにあったドライバのイメージの評価結果と比較されてもよい。ステップ５９７５において、これらの結果が異なっており、マルウェアの投入を示す場合、又は新たにロードされたドライバの評価がマルウェアを示す場合、ステップ５９８０において、ドライバは削除、隔離又は他の適切な訂正アクションが実行されてもよい。そうでない場合、ステップ５９８５において、ドライバは実行が許可されてもよい。
【０６５５】
５９６０、５９８０マヤは５９８５の実行後、方法５９００は、任意的にはドライバのロード及びアンロードのため電子デバイスのリソースへの試行されたアクセスについてのモニタリングを継続するため、ステップ５９１５に戻ってもよい。
【０６５６】
図６０は、メモリへのコードのロードをトラップ及びセキュアにするＯ／Ｓ下位のためのシステム６０００の実施例である。システム６０００は、メモリ６００３などのメモリにコードをロードするための試行をトラップするため、電子デバイス６００１上で動作するよう構成されるＯ／Ｓ下位セキュリティエージェント６０２０を有してもよい。一実施例では、Ｏ／Ｓ下位セキュリティエージェント６０２０は、カーネルモードコードをメモリ６００３にロードするための試行をトラップするよう構成されてもよい。さらに、Ｏ／Ｓ下位セキュリティエージェント６０２０は、カーネルモードコードをメモリ６００３にロードするための試行をトラップするため電子デバイス６００１の何れのリソースをセキュアにするか、また当該試行が当該試行と当該試行を実行するのに関係するエンティティとに基づき認証されているか判断するため、１以上のセキュリティルール６００８を利用するよう構成されてもよい。Ｏ／Ｓ下位セキュリティエージェント６０２０は、当該試行を許可若しくは拒絶するか、又は他の訂正アクションを実行するよう構成されてもよい。
【０６５７】
電子デバイス６００１は、図１の電子デバイス１０３、図２の電子デバイス２０４、図４の電子デバイス４０４、図７の電子デバイス７０１、図９の電子デバイス９０１、図１２の電子デバイス１２０１及び／又はこれらの何れかの組み合わせの機能により全体的若しくは部分的に実現されるか、又は当該機能を実現するよう構成されてもよい。電子デバイス６００１は、メモリ６００３などのメモリに接続される１以上のプロセッサ６００２を有してもよい。プロセッサ６００２は、図２のプロセッサ２０８、図４のプロセッサ４０８、図７のプロセッサ７０２、図９のプロセッサ１２０２、図１２のプロセッサ１２０２及び／又はこれらの何れかの組み合わせの機能により全体的若しくは部分的に実現されるか、又は当該機能を実現するよう構成されてもよい。メモリ６００３は、図２のメモリ２０６、図４のメモリ４０６、図７のメモリ７０３、図９のメモリ９０３、図１２の物理メモリ１２０３若しくはバーチャルメモリ１２０４及び／又はこれらの何れかの組み合わせの機能により全体的若しくは部分的に実現されるか、又は当該機能を実現するよう構成されてもよい。電子デバイス６００１は、１以上のセキュリティルール６０２１に接続されるＯ／Ｓ内セキュリティエージェント６０１９を有するか、又は通信接続されるオペレーティングシステム６０１２を有してもよい。Ｏ／Ｓ内セキュリティエージェント６０１９は、Ｏ／Ｓ下位セキュリティエージェント６０２０に通信接続されてもよい。オペレーティングシステム６０１２は、図１のオペレーティングシステム１１２、図２のオペレーティングシステム２１２、図４のオペレーティングシステム４１２、図７のオペレーティングシステム７１３、図９のオペレーティングシステム９１３、図１２のオペレーティングシステム１２１３及び／又はこれらの何れかの組み合わせの機能により全体的若しくは部分的に実現されるか、又は当該機能を実現するよう構成されてもよい。Ｏ／Ｓ内セキュリティエージェント６０１９は、図１のＯ／Ｓ内セキュリティエージェント２１８、図４のＯ／Ｓ内セキュリティエージェント４１８、図７のＯ／Ｓ内セキュリティエージェント７１９、図９のＯ／Ｓ内セキュリティエージェント９１９、図１２のＯ／Ｓ内セキュリティエージェント１２１９及び／又はこれらの何れかの組み合わせの機能により全体的若しくは部分的に実現されるか、又は当該機能を実現するよう構成されてもよい。
【０６５８】
Ｏ／Ｓ下位セキュリティエージェント６０２０は、図１のＯ／Ｓトラップエージェント１０４若しくはトリガイベントハンドラ１０８、図２のＳＶＭＭ２１６若しくはＳＶＭＭセキュリティエージェント２１７、図４のファームウェアセキュリティエージェント４４０、４４２、Ｏ／Ｓ下位エージェント４５０若しくはＰＣファームウェアセキュリティエージェント４４４、図５のファームウェアセキュリティエージェント５１６、図７のマイクロコードセキュリティエージェント７０８若しくはＯ／Ｓ下位エージェント７１２、図９のＯ／Ｓ下位トラップエージェント
９２０若しくはトリガイベントハンドラ９２２、図１２のＯ／Ｓ下位セキュリティエージェント１２２０及び／又はこれらの何れかの組み合わせの機能により全体的若しくは部分的に実現されるか、又は当該機能を実現するよう構成されてもよい。
【０６５９】
セキュリティエージェント６００８は、図１のセキュリティルール１１４、図２のセキュリティルール２２２、図４のセキュリティルール４３４、４３６、４３８、図５のセキュリティルール５１８、図７のセキュリティルール７０７、７２３、図９のセキュリティルール９０８、図１２のセキュリティルール１２０８及び／又はこれらの何れかの組み合わせの機能により実現されるか、又は当該機能を実現するよう構成されてもよい。セキュリティルール６０２１は、図２のセキュリティルール２２０、図４のセキュリティルール４２０、図７のセキュリティルール７２１、図９のセキュリティルール９２１、図１２のセキュリティルール１２２１及び／又はこれらの何れかの組み合わせの機能により実現されるか、又は当該機能を実現するよう構成されてもよい。
【０６６０】
Ｏ／Ｓ下位セキュリティエージェント６０２０及び／又はＯ／Ｓ内セキュリティエージェント６０１９は、メモリマップ６０１０に通信接続されてもよい。メモリマップ６０１０は、メモリ６００３におけるオペレーティングシステム６０１２の各種エンティティのページ又はアドレスの位置のマッピングを含むものであってもよい。Ｏ／Ｓ下位セキュリティエージェント６０２０及び／又はＯ／Ｓ内セキュリティエージェント６０１９は、メモリ６００３における所与のメモリ位置又はページについて、電子デバイス６０２０の何れのプロセス、ＤＬＬ（Ｄｙｎａｍｉｃａｌｌｙ  Ｌｉｎｋｅｄ  Ｌｉｂｒａｒｙ）、アプリケーション、モジュール又は他のエンティティが当該位置又はページに関連するか決定するため、メモリマップ６０１０にアクセスするよう構成されてもよい。Ｏ／Ｓ下位セキュリティエージェント６０２０及び／又はＯ／Ｓ内セキュリティエージェント６０１９は、例えば、メモリ６００３の何れの部分をトラップするか、又はメモリ６００３のトラップされたアクセス若しくはファンクションのトラップされた実行に応答して、電子デバイス６００１の何れのエンティティが当該試行を発信したか判断するため、当該情報を利用するよう構成されてもよい。さらに、Ｏ／Ｓ下位セキュリティエージェント６０２０は、追加的なトラップされた試行とメモリ６００３の領域とを悪意あるとして関連付けるため、メモリマップ６０１０を利用してもよく、ここで、メモリ６００３にコードをロードするための以前の試行が悪意あると判断され、メモリ６００３の領域に関連付けされていた。
【０６６１】
ストレージ６０４４は、電子デバイス６００１に通信接続されるか、又は電子デバイス６００１内にあってもよい。ストレージ６０４４は、ハードディスク、フラッシュドライブ、ＲＡＭディスク、コンパクトディスク、ＤＶＤメディアドライブ、又は他の何れか適切なメモリを含むマスストレージのための何れか適切な媒体を含むものであってもよい。ストレージ６０４４は、ＰＣＩ、ＳＡＴＡ、ＵＳＢ又はＦｉｒｅｗｉｒｅなどの何れか適切なインタフェースを介し電ｓでバイス６００１に通信接続されてもよい。
【０６６２】
電子デバイス６００１は、メモリ６００３にコードをロードするため、電子デバイス６００１のリソースにアクセスすることを試行するアプリケーション６０２６又はドライバ６０２８などの１以上のアプリケーション、ドライバ又は他のエンティティを含むものであってもよい。アプリケーション６０２６又はドライバ６０２８は、何れかのプロセス、アプリケーション、プログラム又はドライバを含むものであってもよい。アプリケーション６０２６又はドライバ６０２８は、直接的に又は他のルーチンに対するコールを介し、例えば、リード、ライト又は実行命令によりメモリ６００３又はストレージ６０４４の一部にアクセスするなどによって、コードをメモリ６００３にロードすることを試行してもよい。Ｏ／Ｓ下位セキュリティエージェント６０２０は、試行されたコール若しくはアクセスをインターセプトし、当該試行がマルウェアを示すか判断するため、Ｏ／Ｓ内セキュリティエージェント６０１９からのセキュリティルール６００８及び／又はコンテクスト情報を照会し、何れか適切な訂正アクションを実行するよう構成されてもよい。Ｏ／Ｓ下位セキュリティエージェント６０２０は、メモリ６００３若しくはストレージ６０４４へのアクセス及び／又はプロセッサ６００２の利用をトラップすることによって、当該インターセプトを実行するよう構成されてもよい。Ｏ／Ｓ下位セキュリティエージェント６０２０は、セキュリティルール６００８及び／又はメモリマップ６０１０にアクセスし、メモリ６００３若しくはストレージ６０４４の何れか試行されたアクセス及び／又はプロセッサ６００２の何れか試行された利用がトラップされるか決定するよう構成されてもよい。Ｏ／Ｓ下位セキュリティエージェント６０２０は、トラップ対象のアクションに対応する制御構造のフラグを設定するよう構成されてもよい。
【０６６３】
一実施例では、アプリケーション６０２６又はドライバ６０２８などのエンティティは、メモリ６００３がオペレーティングシステム６０１２により仮想化されたメモリページを介しメモリ６００３にコードをロードすることに関連するメモリ６００３の部分にアクセスすることを試行してもよい。当該実施例では、Ｏ／Ｓ下位セキュリティエージェント６０２０は、メモリページ単位でメモリ６００３の試行されたアクセス又は実行をトラップするよう構成されてもよい。他の実施例では、アプリケーション６０２６又はドライバ６０２８は、メモリへのコードのロードに関するメモリ６００３の物理部分にアクセスすることを試行してもよい。当該実施例では、Ｏ／Ｓ下位セキュリティエージェント６０２０は、メモリアドレス単位でメモリ６００３の試行されたアクセス又は実行をトラップするよう構成されてもよい。
【０６６４】
メモリ６００３は、メモリ６０３にコードをロードするためのアクションに関する１以上のコンテンツ又は位置を含むものであってもよい。Ｏ／Ｓ下位セキュリティエージェント６０２０は、当該コンテンツ又は位置へのアクセスをトラップするよう構成されてもよい。以下は、例示的な具体例として与えられる。メモリ６００３は、メモリ６００３内の他のページ又はアドレスレンジのパーミッション６０３２を含むページテーブルディレクトリ６０３０をホストするアドレスのページ又はレンジを含むものであってもよい。例えば、パーミッション６０３２は、メモリ位置（Ａ）、（Ｂ）、（Ｃ）、（Ｄ）及び（Ｅ）におけるコンテンツをリード、ライト及び／又は実行するためのパーミッションの組み合わせについて設定を含むものであってもよい。メモリ６００３は、例えば、アプリケーション６０２６又はドライバ６０２８などにより割り当てされてもよい位置（Ａ）においてエンプティスペース６０３４を有してもよい。メモリ６００３は、メモリ位置（Ｅ）におけるドライバコードセクション６０３６などの電子デバイス６００１のエンティティ又はファンクションのコードセクションを有してもよい。メモリ６００３は、オペレーティングシステム６０１２がメモリ位置（Ｂ）における未割当てスペース６０３８などの何れかのエンティティに関するものである限り、未割当てなメモリのセクション又はレンジを含むものであってもよい。メモリ６００３は、メモリ位置（Ｃ）における信頼されていないドライバ６０４０のスペースなど、安全であるか又は悪意あるかというマルウェアステータスが未知であるドライバのメモリのセクション又はレンジを含むものであってもよい。メモリ６００３は、ノンプレゼント（ｎｏｎ−ｐｒｅｓｅｎｔ）コンテンツ６０４２を有するメモリのセクション又はレンジを含むものであってもよい。メモリ６００３におけるこのようなノンプレゼントコンテンツ６０４２は、例えば、ディスクにスワップされたコンテンツを有するメモリページなどを含み、例えば、ストレージ６０４４上の１以上のスワップされたファイル６０４６におけるスワップされたコンテンツ６０４８などにあってもよい。
【０６６５】
ストレージ６０４４は、メモリ６００３にコードをロードするためのアクションに関する１以上のコンテンツ又は位置を含むものであってもよい。以下は、例示的な具体例として与えられる。ストレージ６０４４は、スワップされたコンテンツ６０４８が格納されるスワップファイル６０４６を含むものであってもよい。スワップされたコンテンツ６０４８は、メモリ６００３内に存在するよう電子デバイス６００１のエンティティに見えるが、実際にはストレージ６０４４に格納されている。ストレージ６０４４は、アプリケーションイメージ６０５０を格納するセクション又はアドレスを含むものであってもよい。アプリケーションイメージ６０５０は、アプリケーション６０２６又はドライバ６０２８などの電子デバイス６００１上で実行されるアプリケーション、ドライバ、ＤＬＬ又は他のエンティティのイメージを含むものであってもよい。
【０６６６】
Ｏ／Ｓ下位セキュリティエージェント６０２０及び／又はＯ／Ｓ内セキュリティエージェント６０１９は、マルウェアについてメモリ６００３及び／又はストレージ６０４４の一部をスキャンするよう構成されてもよい。当該スキャンは、コンテンツがセキュリティルール６００８、６０２１により定義されるように、悪意あると判断されたコンテンツと同一であるか判断するため、メモリ６００３及び／又はストレージ６０４４内のコンテンツのデジタルシグネチャ、チェックサム又はハッシュを計算することを含むものであってもよい。しかしながら、あるマルウェアは、実行対象のメモリ６００３に自ら又は他の悪意あるコードを挿入することによって、電子デバイス６００１を攻撃することを試みるかもしれない。メモリ６００３にコードをロードするための試行をトラップすることによって、Ｏ／Ｓ下位セキュリティエージェント６０２０は、例えば、ドライバファイル、メモリのイメージ、ａｔ亜はコードを格納する他の標準的な方法などににより初期的に配置されていないコードをトラップ、スキャン又はセキュアにするよう構成されてもよい。当該コードをドライバファイル、メモリのイメージ又はコードを格納する他の標準的な方法により初期的に配置しないことによって、マルウェアは、マルウェアについてメモリ６００３及び／又はストレージ６０４４の一部をスキャンするため、Ｏ／Ｓ下位セキュリティエージェント６０２０及び／又はＯ／Ｓ内セキュリティエージェント６０１９について以前に記述された労力を回避することを試行するかもしれない。さらに、メモリ６００３にコードを投入する変則的な方法は、投入されたコンテンツ又は当該投入を試行したエンティティが悪意あるものとしてすでに知られているかに関わらず、当該投入を試行したエンティティが悪意あるものであるという徴候であってもよい。
【０６６７】
Ｏ／Ｓ下位セキュリティエージェント６０２０は、オペレーティングシステムローダの使用など、メモリ６００３にコードをロードするための安全又は標準的な方法を決定するよう構成されてもよい。このような安全又は標準的な方法は、オペレーティングシステム６０１２により実行されるロジック又はステップが既知であるように、ベンチマーク付け又はマッピングされてもよい。メモリ６００３にコードをロードするための試行をトラップすると、Ｏ／Ｓ下位セキュリティエージェント６０２０は、当該試行がコードをロードするための既知の方法と一致するか判断してもよい。例えば、当該試行がメモリのすでに割り当てられた部分にコードをロードすることに関するものであり、メモリへの直接的なライトによりオペレーティングシステムローダをバイパスすることによりこれを実行することを試行した場合、当該試行は悪意あるものと判断されてもよい。
【０６６８】
プロセッサ６００２による実行のためマルウェアがコードをメモリ６００３に投入することを停止するため、Ｏ／Ｓ下位セキュリティエージェント６０２０は、実行のためメモリ６００３にコードをロードする通常の方法を回避するコードを投入するのに要求される１以上の試行されたステップをトラップするよう構成されてもよい。実行用のコードをメモリ６００３にロードする通常の方法は、例えば、ストレージ６０４４などから実行対象のアプリケーション、ドライバ又は他のエンティティのイメージを読み、当該イメージからのコードをメモリ６００３に配置し、ロードされたコードを実行するため、オペレーティングシステム６０１２のオペレーティングシステムローダなどを利用することを含むものであってもよい。Ｏ／Ｓ下位セキュリティエージェント６０２０は、例えば、変則的な方法によりこれらのステップの何れかを実行し、及び／又はオペレーティングシステムローダの使用を回避するなど実行用のコードをロードする試行をトラップするよう構成されてもよい。当該変則的な方法は、セキュリティルール６００８により定義されてもよい。当該変則的な方法は、認証されたアプリケーションイメージ６０５０のファイルから当初には読まれず、又はメモリ６００３の等価なアプリケーションイメージに配置されるコードの試行されたロードをトラップすることを含むものであってもよい。
【０６６９】
一実施例では、Ｏ／Ｓ下位セキュリティエージェント６０２０は、メモリ６００３へのコードの試行されたライトとコードの試行された以降の実行とをトラップするよう構成されてもよい。例えば、Ｏ／Ｓ下位セキュリティエージェント６０２０は、新たに割り当てられたスペース６０３４の一部であってもよいアドレス（Ａ）における試行されたライトをトラップするよう構成されてもよい。当該試行されたライト自体はマルウェアを示さず、このため、当該試行は以降の参照のため記録及び利用されてもよい。書き込まれたコンテンツは、スキャン、記録又は評価されてもよい。Ｏ／Ｓ下位セキュリティエージェント６０２０は、アドレス（Ａ）に書き込まれたコードの以降の試行された実行をトラップするよう構成されてもよい。Ｏ／Ｓ下位セキュリティエージェント６０２０は、試行されたコンテンツの実行が以前のトラップされたコンテンツのロードに続くため、コンテンツのロードは、メモリ６００３にコードをロードすることを含むと判断するよう構成されてもよい。Ｏ／Ｓ下位セキュリティエージェント６０２０は、試行のソース、試行のターゲット、ロードされるコンテンツ、Ｏ／Ｓ内セキュリティエージェント６０１９からの情報又は他の何れか適切な情報などのコンテクスト情報から、コードのロードがマルウェアを示すか判断するよう構成されてもよい。例えば、コードがメモリにロードされ、実行が試行されたと検出すると、Ｏ／Ｓ下位セキュリティエージェント６０２０は、ロードされたコンテンツをスキャンし、コードがマルウェアであると知られているか判断するよう構成されてもよい。他の例では、ロード及びコードの試行された実行を検出すると、Ｏ／Ｓ下位セキュリティエージェント６０２０は、当該コードがオペレーティングシステムローダなどのオペレーティングシステム６０１２の通常のファンクションを利用してロードされたか判断するよう構成されてもよい。コードが未知のドライバからの直接的なライトなどの他の非標準的な方法を用いてロードされた場合、Ｏ／Ｓ下位セキュリティエージェント６０２０は、試行されたコードのロードが疑わしいと判断し、コードの実行をブロックするよう構成されてもよい。Ｏ／Ｓ下位セキュリティエージェント６０２０がメモリ６１０３におけるコードの試行されたロード及び実行をトラップし、当該試行が疑わしい又は悪意あると判断する方法の他の具体例が、後述される。
【０６７０】
一実施例では、Ｏ／Ｓ下位セキュリティエージェント６０２０は、ストレージ６０４４からのアプリケーションイメージ６０５０の試行されたリードと、部分６０３４などのメモリ６００３の新たなセクションへのコンテンツの以降のライト及び実行をトラップするよう構成されてもよい。Ｏ／Ｓ下位セキュリティエージェント６０２０は、ディスクにあるイメージとメモリにあるイメージとを比較するよう構成されてもよい。これら２つのイメージが異なる場合、コードセクションのシグネチャやファイルレイアウトなどの相違は、コードがメモリ６００３にあるイメージに投入されたことを示すものである可能性がある。当該投入は、悪意あると判断されてもよい。しかしながら、Ｏ／Ｓ下位セキュリティエージェント６０２０は、ディスクからアプリケーションイメージ６０５０の試行されたリードをトラップせず、当該イメージとメモリ６００３にロードされるイメージとを比較することができない可能性がある。
【０６７１】
図６１は、当該投入されたコードがどのようにアプリケーションにより収集され、実行のためメモリ６００３内に配置されるかの具体例を示す。アプリケーション６１０２は、図６０のアプリケーション６０２６又はドライバ６０２８により実現されてもよい。Ｏ／Ｓ下位セキュリティエージェント６１２０は、図６０のＯ／Ｓ下位セキュリティエージェント６０２０により実現されてもよい。メモリ６１０３は、図６０のメモリ６００３により実現されてもよい。メモリ６１０３は、アプリケーション６１３０及びドライバ６１３２のメモリスペースを有してもよい。各メモリスペース６１３０、６１３２は、各自のエンティティのためのこーｄおセクション６１３８、６１４０のスペースを有してもよい。アプリケーション６１０２は、マルウェアサーバ６１０４からコードをダウンロードしてもよい。マルウェアサーバ６１０４は、ウェブサイト、ネットワーク上の他の電子デバイス又はアプリケーション６１０２に通信接続される他の何れかのエンティティであってもよい。アプリケーション６１０２は、当該コードをアプリケーション６１３０自体のコードセクション６１３８、６１４０に又はドライバ６１３２などの他のエンティティに書き込んでもよい。Ｏ／Ｓ下位セキュリティエージェント６１２０は、ここに与えられる各種技術に従って当該試行をインターセプト及び評価するよう構成されてもよい。例えば、Ｏ／Ｓ下位セキュリティエージェント６１２０は、試行されたライト及び実行をトラップし、ライト試行のコンテンツを評価し、アプリケーション６１０２の身元を評価し、ターゲットメモリ位置を評価するよう構成されてもよい。
【０６７２】
図６２Ａ及び６２Ｂは、投入されるコードがどのようにメモリ６００３内に配置するためアプリケーションにより収集されるかの他の例を示す。アプリケーション１  ６２０２及びアプリケーション２  ６２０４は、図６０のアプリケーション６０２６又はドライバ６０２８によって、又は他の同様のエンティティによって実現されてもよい。Ｏ／Ｓ下位セキュリティエージェント６２２０は、図６０のＯ／Ｓ下位セキュリティエージェント６０２０により実現されてもよい。メモリ６２０３は、図６０のメモリ６００３により実現されてもよい。ディスク６２４４は、図６０のストレージ６０４４により実現されてもよい。
【０６７３】
図６２Ａは、ディスク６２４４からメモリ６２０３へのアプリケーション１などのアプリケーションのイメージ６２５２のロードの具体例を示す。オペレーティングシステムローダは、アプリケーション１  ６２５０のディスクイメージ６２５０をリードし、メモリ６２０３のアプリケーション１のイメージ６２３４にこれを書き込むよう構成されてもよい。アプリケーション１のディスクイメージ６２５０は、暗号化されたコンテンツ６２３６としてメモリ６２０３のアプリケーション１のイメージ６２３４にコピー及び維持される暗号化されたコンテンツ６２５２を有してもよい。Ｏ／Ｓ下位セキュリティエージェント６２２０は、オペレーティングシステムローダによりコールされた試行されたリード及びライトをトラップしてもよい。しかしながら、一実施例では、Ｏ／Ｓ下位セキュリティエージェント６２２０は、２つのイメージが異なっておらず、アクションはオペレーティングシステムの通常の機構により実行されたため、悪意あるアクティビティがイメージのロードに関係することを疑う理由はない。
【０６７４】
図６２Ｂは、アプリケーションのイメージがメモリにロードされた後に実行される可能性のあるアクションの具体例を示す。アプリケーション２  ６２０４は。電子デバイス上で動作してもよい。アプリケーション１  ６２０２は、電子デバイス上で動作し、暗号化されたコンテンツ６２３６を解読するための命令を送信してもよい。当該コマンドは、暗号化されたコンテンツ６２３６を解読し、解読されたコンテンツ６２３８ａがアプリケーション１のイメージ６２３４のメモリスペースに書き込まれ、及び／又は解読されたコンテンツ６２３８ｂとしてアプリケーション２のイメージ６２４０のメモリスペースに書き込まれてもよい。従って、アプリケーション１  ６２０２は、自らのコードセクション又は他のエンティティのコードセクションにコードを投入することを試行してもよい。アプリケーション１  ６２０２は、以前に暗号化されたコンテンツ６２３６上の位置又はアプリケーション１のイメージ６２３４の他のメモリ部分に解読されたコンテンツ６２３８ａを書き込むようにしてもよい。解読されたコンテンツ６２３８からのコードは、悪意あるかもしれない。従って、Ｏ／Ｓ下位セキュリティエージェント６２２０は、ここに与えられる各種教示に従って、解読されたコンテンツ６２３８などのコードの試行されたライト及び実行をトラップして評価するよう構成されてもよい。例えば、Ｏ／Ｓ下位セキュリティエージェント６２２０は、試行されたライト及び実行をインターセプトし、ライト試行のコンテンツを評価し、アプリケーション６１０２の身元を評価し、ターゲットメモリ値を評価するよう構成されてもよい。
【０６７５】
図６０に戻って、Ｏ／Ｓ下位セキュリティエージェント６０２０は、電子デバイス６００１の既知のエントリの位置を含むメモリ６００３の部分のレイアウトを決定してもよい。一実施例では、当該レイアウトは、信頼されたドライバ（及びそれらのコード及びデータセクション）及び他のドライバ（及びそれらのコード及びデータセクション）と共に、オペレーティングシステム６０１２のカーネルイメージ及びそれのコンポーネントを含むとき、カーネルバーチャルメモリのレイアウトを有してもよい。当該レイアウトは、メモリマップ６０１０に格納されてもよい。Ｏ／Ｓ下位セキュリティエージェント６０２０は、オペレーティングシステム６０１２のスタートアップ及び処理をプロファイルすることによって、デジタル証明書をスキャン又は検証することによりオペレーティングシステム６０１２のコンポーネント及び信頼されたドライバを検証することによって、又は他の何れか適切な方法によって、セキュリティルール６００８又はプロテクションサーバからのレイアウトを決定してもよい。Ｏ／Ｓ下位セキュリティエージェント６０２０はまた、メモリ６００３の何れの部分が電子デバイス６００１のエンティティの何れにも割り当てられないか決定してもよい。カーネルメモリから物理メモリへのマッピングは、カーネルメモリの所与のページについて関連する物理メモリアドレスを記述したメモリマップ６０１０に含まれてもよい。メモリマップ６０１０はまた、メモリの何れの部分が割り当てられたか、割り当てられていないか、ノンプレゼントコンテンツに関連するか、又はファイルをスワップするかの説明を含むものであってもよい。オペレーティングシステム６０１２は、オペレーティングシステム６０１２により管理されるバーチャルページを記述したＰａｇｅ  Ｆｒａｍｅ  Ｎｕｍｂｅｒ  Ｄａｔａｂａｓｅ（Ｐｆｎ）などのデータベースに情報を有してもよい。当該データベースの探索は、割り当てられた、マッピングされた、ノンプレゼントコンテンツを含むなどのメモリページを決定するのに利用されてもよい。
【０６７６】
メモリ６００３のレイアウトが既知になると、Ｏ／Ｓ下位セキュリティエージェント６０２０は、未割当てエリアにおけるメモリの割り当て及び実行をモニタリングするよう構成されてもよい。Ｏ／Ｓ下位セキュリティエージェント６０２０は、当該試行された処理をトラップし、書き込み対象のオンテンツをスキャンするよう構成されてもよい。当該処理のステップは、エンティティがライトパーミッションがイネーブルなメモリ６００３の部分を割り当て、当該メモリ６００３の部分に新たなコンテンツを書き込み、メモリ６００３の部分のパーミッションを実行をイネーブルにするよう変更し、実行のためメモリ６００３の部分をコールすることを含むものであってもよい。Ｏ／Ｓ下位セキュリティエージェント６０２０は、これらのステップをトラップし、当該ステップがマルウェアを示すか判断する前に試行された実行を停止するよう構成されてもよい。例えば、Ｏ／Ｓ下位セキュリティエージェント６０２０は、位置（Ａ）におけるメモリ６００３の未割当て部分６０３４の試行された割り当て、部分６０３４にコンテンツを書き込むための試行、位置（Ａ）のパーミッションをライトからライト／実行に変更するためのページテーブルディレクトリ６０３０のパーミッション６０３２へのライト、及び位置（Ａ）におけるパーミッションの試行された実行をトラップするよう構成されてもよい。Ｏ／Ｓ下位セキュリティエージェント６０２０は、
・ＭｍＡｌｌｏｃａｔｅＣｏｎｔｉｇｕｏｕｓＭｅｍｏｒｙ
・ＭｍＡｌｌｏｃａｔｅＣｏｎｔｉｇｕｏｕｓＭｅｍｏｒｙＳｐｅｃｉｆｙＣａｃｈｅ
・ＭｍＡｌｌｏｃａｔｅＳｐｅｃｉａｌＰｏｏｌ
・ＭｍＡｌｌｏｃａｔｅＣｏｎｔｉｇｕｏｕｓＭｅｍｏｒｙＳｐｅｃｉｆｙＣａｃｈｅＮｏｄｅ
・ＭｍＡｌｌｏｃａｔｅＩｎｄｅｐｅｎｄｅｎｔＰａｇｅｓ
・ＭｍＡｌｌｏｃａｔｅＭａｐｐｉｎｇＡｄｄｒｅｓｓ
・ＭｍＡｌｌｏｃａｔｅＮｏｎＣａｃｈｅｄＭｅｍｏｒｙ
・ＭｍＡｌｌｏｃａｔｅＰａｇｅｓＦｏｒＭｄｌ又は
・ＭｍＡｌｌｏｃａｔｅＰａｇｅｓＦｏｒＭｄｌＥｘ
のＷｉｎｄｏｗｓＴＭファンクションなどのメモリを割り当てるのに適した何れかのファンクションをトラップするよう構成されてもよい。
【０６７７】
Ｏ／Ｓ下位セキュリティエージェント６０２０は、メモリの試行された割当てをトラップするためこれらのファンクションに対応して、メモリ６００３のページの実行又はメモリ６００３の物理アドレスの実行をトラップするよう構成されてもよい。Ｏ／Ｓ下位セキュリティエージェント６０２０は、ファンクションのコール元を決定し、既知のマルウェアについてコール元のコンテンツをスキャンする。例えば、割当てのための試行が既知のセキュアな割り当てファンクションのサブファンクションにより行われた場合、当該試行は、ファンクションに関するセキュリティを回避することを試行するマルウェアを示すかもしれない。Ｏ／Ｓ下位セキュリティエージェント６０２０は、以降の参照のため割り当てられたメモリ部分をメモリマップ６０１０に追加するよう構成されてもよい。Ｏ／Ｓ下位セキュリティエージェント６０２０は、コール元などのコンテクスト情報と共に、試行されたメモリ割当てを記録するよう構成されてもよい。
【０６７８】
Ｏ／Ｓ下位セキュリティエージェント６０２０は、メモリにコードを書き込むのに適した何れかのファンクション又は方法をトラップするよう構成されてもよい。アプリケーション６０２６又はドライバ６０２８などのエンティティは、オペレーティングシステム６０１２により提供されるファンクション又は方法を利用して、コードをメモリ６００３に入力してもよい。しかしながら、これらのエンティティは、指定されたファンクションを利用することなく行われたメモリ６００３にコードを入力するための試行をトラップする場合、Ｏ／Ｓ下位セキュリティエージェント６０２０は、メモリ６００３にコードをロードするための試行が疑わしいと判断するよう構成されてもよい。
【０６７９】
Ｏ／Ｓ下位セキュリティエージェント６０２０は、メモリ位置のパーミッションを変更するのに適した何れかのファンクション又は方法をトラップするよう構成されてもよい。例えば、メモリページパーミッションを変更するため、
・ＭｍＰｒｏｔｅｃｔＭｄｌＳｙｓｔｅｍＡｄｄｒｅｓｓ
・ＮｔＰｒｏｔｅｃｔＶｉｒｔｕａｌＭｅｍｏｒｙ
・ＭｉＧｅｔＰａｇｅＰｒｏｔｅｃｔｉｏｎ
・ＭｉＱｕｅｒｙＡｄｄｒｅｓｓＳｔａｔｅ
・ＭｉＳｅｔＰｒｏｔｅｃｔｉｏｎＯｎＳｅｃｔｉｏｎ
・ＭｉＧｅｔｐａｇｅＰｒｏｔｅｃｔｉｏｎ
・ＭｉＰｒｏｔｅｃｔＰｒｉｖａｔｅＭｅｍｏｒｙ
などのＷｉｎｄｏｗｓＴＭファンクションの１つがコールされてもよい。
【０６８０】
従って、Ｏ／Ｓ下位セキュリティエージェント６０２０は、メモリにおける各自の位置の実行をモニタリングすることによって、当該ファンクションの何れかの実行をトラップするよう構成されてもよい。Ｏ／Ｓ下位セキュリティエージェント６０２０は、ページテーブルディレクトリ６０３０及びそれに含まれるそれのパーミッション６０３２への試行されたライトをトラップするよう構成されてもよい。パーミッション６０３２に対する試行されたライトがトラップされる一方、パーミッション６０３２を変更するための認証されたファンクション（上述されたものなど）の実行はトラップされない場合、Ｏ／Ｓ下位セキュリティエージェント６０２０は、ライトの試行がマルウェアを示していると判断するよう構成されてもよい。当該試行は、対応する位置がオペレーティングシステム６０１２のファンクションに関するセキュリティを受けることなく実行されるか、又は悪意あるコンテンツにより書き込まれるように、マルウェアがメモリ位置に対するパーミッション（リードからライト又は実行など）についてページテーブルディレクトリのエントリを直接編集した結果であるかもしれない。
【０６８１】
メモリへの試行されたライトとその後の試行された実行とがトラップされ、Ｏ／Ｓ下位セキュリティエージェント６０２０が、当該試行が位置（Ｂ）の未割当てメモリ部分６０３８などのメモリの未割当て部分に対して行われたと判断した場合、Ｏ／Ｓ下位セキュリティエージェント６０２０は、当該試行が悪意あると判断するよう構成されてもよい。Ｏ／Ｓ下位セキュリティエージェント６０２０は、コンテンツをライト及び実行するための試行が位置（Ｂ）の未割当て部分６０３８などの未割当てスペースに対して行われたか判断するよう構成されてもよい。Ｏ／Ｓ下位セキュリティエージェント６０２０は、メモリマップ６０１０にアクセスし、又は割り当てファンクションの以前にトラップされた実行を参照することによって、当該判定を行うよう構成されてもよい。一実施例では、試行されたライト及び実行が、未割当てであると判断されるメモリ６００３において行われる場合、マルウェアは、オペレーティングシステム６０１２により定義されたルーチンを利用することなくメモリを割り当てた可能性がある。当該実施例では、Ｏ／Ｓ下位セキュリティエージェント６０２０は、実行のため当該試行がメモリ６００３にコードをロードするための悪意ある試行であると判断してもよい。他の実施例では、試行されたライト及び実行が、メモリマップ６０１０に示されるような電子デバイス６００１のエンティティにすでに割り当てられたメモリ６００３において行われた場合、Ｏ／Ｓ下位セキュリティエージェント６０２０は、命令のコール元が他のエンティティにコードを書き込むためのパーミッションを有しているか又は認証されているか調べるよう構成されてもよい。パーミッションを有していない場合、当該試行は、悪意ある可能性のある他のファンクションに属するメモリ６００３の部分にコードを投入することを試みるマルウェアを示す可能性がある。
【０６８２】
Ｏ／Ｓ下位セキュリティエージェント６０２０は、位置（Ｂ）における部分６０３８などの未割当てとして指定されるメモリ６００３の部分における試行されたライト、リード又は実行、又はパーミッション６０３２における未割当て部分６０３８のパーミッションを変更する試行をトラップするよう構成されてもよい。オペレーティングシステム６０１２の認証されたエンティティによりコールされる認証された割り当てファンクション以外のエンティティから発生した試行は、コール元のマルウェアステータスが未知であるか否かに関係なく、悪意あると判断されてもよい。メモリ位置が試行されたライトを受ける場合、当該試行はコードがメモリにロードされたこの徴候であると判断されてもよい。メモリ位置が試行された実行を受けた場合、当該試行は、新たにロードされたコードが実行されることの徴候であると判断されてもよい。
【０６８３】
Ｏ／Ｓ下位セキュリティエージェント６０２０は、信頼されていないドライバ６０４０に関するメモリ位置（Ｃ）についてのパーミッションの変更６０３２又は信頼されていないドライバ６０４０による試行されたライト若しくは実行をトラップするよう構成されてもよい。信頼されないドライバ６０４０は、マルウェアステータスが未知であるドライバを有してもよい。信頼されないドライバ６０４０のシグネチャ又はハッシュについてブラックリスト又はホワイトリストにエントリがないかもしれない。信頼されないドライバ６０４０は、システム６０００又は同様のシステムが遭遇していない安全で新たなドライバであるかもしれず、又はシステム６０００が送信しないマルウェアのパーミュテーション（ｐｅｒｍｕｔａｔｉｏｎ）であるかもしれない。信頼されないドライバ６０４０の試行されたライト又は実行がトラップされると、Ｏ／Ｓ下位セキュリティエージェント６０２０は、当該トラップされた処理を評価するため、追加的なセキュリティルール６００８を適用するよう構成されてもよい。特に、コードをライトして以降に実行する試行はトラップされ、オペレーティングシステム６０１２のカーネルドライバ又は既知のドライバなどの既知の要素に対して当該処理が試行されているか判断するため、Ｏ／Ｓ下位セキュリティエージェント６０２０によって詳細に調べられてもよい。試行されている場合、当該試行はブロックされ、信頼されないドライバ６０４０はマルウェアであると判断されてもよい。
【０６８４】
Ｏ／Ｓ下位セキュリティエージェント６０２０は、アドレス（Ｄ）における部分６０４２など、ノンプレゼントコンテンツを有するメモリ６００３の部分の試行されたライト又は実行をトラップするよう構成されてもよい。メモリ６００３の一部６０４２は、バーチャルメモリ割り当てに関して割り当てられるが、部分６０４２のコンテンツは、実際にはメモリ６００３の物理メモリに存在しなくてもよい。代わりに、当該部分６０４２のコンテンツは、ストレージ６０４４などの何れかにあってもよい。ノンプレゼントコンテンツは、仮想化メモリ６００３がメモリ６００３の物理メモリにおいて他の要素のための余地を作るのにディスクに移されるページスワップ処理の一部として、ストレージ６０４４のスワップされたコンテンツ６０４８を含むスワップファイル６０４６にあってもよい。オペレーティングシステム６０１２は、当該スワップ処理を実行するよう構成されてもよく、スワップされたコンテンツ６０４８を必要なときに物理メモリにリロードするよう構成されてもよい。従って、部分６０４２はノンプレゼントコンテンツを含む一方、部分６０４２の試行されたライト又は実行は、Ｏ／Ｓ下位セキュリティエージェント６０２０によりトラップされてもよい。当該試行されたライトがページスワップを実行したオペレーティングシステム６０１２以外のエンティティから発信された場合、当該ライトは悪意ある可能性がある。例えば、オペレーティングシステム６０１２のバーチャルメモリマネージャから発信されていない部分６０４２に試行されたライトは拒絶されてもよい。さらに、部分６０４２の試行された実行が、それのコンテンツがノンプレゼントである間に行われた場合、当該試行された実行は悪意である可能性がある。
【０６８５】
さらに、ストレージ６０４４上のスワップされたファイル６０４６のスワップされたコンテンツ６０４８へのライトなどの試行されたアクセスは、Ｏ／Ｓ下位セキュリティエージェント６０２０によりトラップされてもよい。当該試行されたアクセスが認証されたエンティティ以外のエンティティから発信された場合、当該ライトは悪意あるものであるかもしれない。例えば、オペレーティングシステム６０１２のバーチャルメモリマネージャから発信されていないスワップされたコンテンツ６０４８に試行されたライトは拒絶され、マルウェアを示すと判断されてもよい。当該トラップは、例えば、ディスクライトファンクションをトラップすることによって、又はストレージ６０４４における入出力コマンドをトラップすることによって実行されてもよい。ストレージ６０４４の入出力コマンドのトラップは、例えば、ストレージ６０４４上で実行されるファームウェアセキュリティエージェントなどにより実行されてもよい。
【０６８６】
図６３は、コードを投入するためスワップされたコンテンツに対する悪意ある攻撃のさらなる例を示す。カーネルバーチャルメモリ６３０４は、仮想化されたときのメモリ６００３の部分を表す。カーネルバーチャルメモリ６３０４のコンテンツは、それらがある位置にマッピングされてもよい。当該コンテンツは、例えば、物理メモリ６３０２及び／又はディスク６３４４などにマッピングされてもよい。物理メモリ６３０２は、それが電子デバイス６００１に物理的にあるときのメモリ６００３の物理的レイアウトを示すものであってもよい。ディスク６３４４は、図６０のストレージ６０４４により実現されてもよい。カーネルバーチャルメモリ６３０４の部分６３０６、６３１０、６３１４、６３１８は未割当てであり、バーチャルメモリのユーザに利用可能であってもよい。カーネルバーチャルメモリ６３０４の他の部分は、オペレーティングシステムカーネル６３０８と、ドライバ１  ６３１２、ドライバ２  ６３１６及びドライバ３  ６３２０などのドライバとのための部分を含むものであってもよい。カーネルバーチャルメモリ６３０４における割り当てられたメモリの部分は、物理メモリ６３０２及び／又はディスク６３４４の各種の不連続な部分にマッピングされてもよい。ページ６３２２、６３２４及び６３２６を含むドライバ３  ６３２０に含まれる一例となるページが示される。ドライバ３のページ０に対応するページ６３２６は、ディスク６３４４上のスワップファイル６３５０にマッピングされてもよい。ドライバ３のページ１に対応するページ６３２４は、アドレス（Ａ）上にあってアドレス（Ｂ）に続く物理メモリ６３０２におけるアドレスにマッピングされてもよい。ドライバ３のページ２に対応するページ６３２２は、ディスク６３４４のスワップファイル６３４８にマッピングされてもよい。
【０６８７】
スワップファイル処理が実行されると、ＸＹＺであるかもしれないドライバ３のページ０のコンテンツが、スワップファイル６３５０に書き込まれてもよい。ドライバ３のページ０のコンテンツは、ノンプレゼントであってもよい。その間、マルウェア６３５２はスワップファイル６３５０のコンテンツをＰＤＱに書き換えてもよい。従って、スワップファイル処理がリバースされ、コンテンツがディスク６３４４及びスワップファイル６３５０から読まれると、新たなコードがカーネルバーチャルメモリ６３０４にロードされる。また、ページ６３２４などの他のページについて値を物理メモリ６３０２に直接書き込むためのマルウェア６３５２のアクションが可能であるかもしれない。
【０６８８】
図６０に戻って、Ｏ／Ｓ下位セキュリティエージェント６０２０は、ノンプレゼントコンテンツ６０４２を有するページに関するスワップファイル６０４６にコードをロードすることを阻止するよう構成されてもよい。Ｏ／Ｓ下位セキュリティエージェント６０２０は、メモリ６００３からスワップファイル６０４６に対して指向されたライト処理をトラップするか、又はその反対を実行し、コンテンツのスナップショット、シグネチャ、暗号化ハッシュ、チェックサム又は他の表示を決定するよう構成されてもよい。Ｏ／Ｓ下位セキュリティエージェント６０２０は、ストレージ６０４４上の位置に対応するフラグを設定することによって、又はメモリページをスワップするためのファンクション若しくはルーチンに応答して、試行をトラップするよう構成されてもよい。Ｏ／Ｓ下位セキュリティエージェント６０２０は、スワップファイル６０４６から試行されたリード処理をトラップし、及び／又はノンプレゼントコンテンツ６０４２についてメモリ部分にライトバックするよう構成されてもよい。Ｏ／Ｓ下位セキュリティエージェント６０２０は、当該タスクを実行するため、スワップファンクションの試行された実行をトラップするよう構成されてもよい。当該ファンクションは、例えば、ＩｏＰａｇｅＲｅａｄ（）、ＩｏＡｓｙｎｃｈｒｏｎｏｕｓＰａｇｅＷｒｉｔｅ（）又はＩｏＡｓｙｎｃｈｒｏｎｏｕｓＰａｇｅＷｒｉｔｅ（）などを含むか、又はコールしてもよい。Ｏ／Ｓ下位セキュリティエージェント６０２０は、スワップファイル６０４６からリードされ、及び／又はノンプレゼントコンテンツ６０４２にライトされるコンテンツのスナップショット、シグネチャ、暗号化ハッシュ、チェックサム又は他の表示を決定し、コンテンツが変更されているか判断するよう構成されてもよい。変更されている場合、Ｏ／Ｓ下位セキュリティエージェント６０２０は、スワップファイル６０４６のコンテンツがコードとと共に投入されていると判断するよう構成されてもよい。Ｏ／Ｓ下位セキュリティエージェント６０２０は、新たなコンテンツの実行をブロックし、他の何れかの訂正手段を実行するよう構成されてもよい。
【０６８９】
Ｏ／Ｓ下位セキュリティエージェント６０２０は、メモリ６００３への特定のライトが実行パーミッションを与えるためにコンテンツのメモリ位置のパーミッション６０３２を変更するための以降の試行をトラップすることによるコードのロードであると判断するよう構成されてもよい。さらに、Ｏ／Ｓ下位セキュリティエージェント６０２０は、メモリ６００３に書き込み、その後にメモリが実行されることを可能にするようパーミッション６０３２への書き込みを試行するエンティティを決定するよう構成されてもよい。当該エンティティは、典型的には、オペレーティングシステムローダなどの既知の信頼されたエンティティであってもよい。従って、Ｏ／Ｓ下位セキュリティエージェント６０２０は、メモリ６００３にコードをロードするための試行がオペレーティングシステムローダなどの既知の信頼されたエンティティにより生成されたか判断するよう構成されてもよい。生成されていない場合、Ｏ／Ｓ下位セキュリティエージェント６０２０は、当該試行を拒絶し、当該試行及び／又はエンティティがマルウェアを示すと判断するよう構成されてもよい。
【０６９０】
Ｏ／Ｓ下位セキュリティエージェント６０２０は、メモリ６００３から正当なファンクションコードをコピーし、新たに割り当てられた部分６０３４などの新たな位置にファンクションコードをコピーし、その後にコピーされたコードを実行するための試行をトラップするよう構成されてもよい。当該試行は、例えば、オペレーティングシステム６０１２又は当該ファンクションを所有するドライバなどから認証を取得する必要なく、システムファンクションを実行するためのマルウェアによる試行であってもよい。
【０６９１】
試行された処理をトラップすると、Ｏ／Ｓ下位セキュリティエージェント６０２０は、Ｏ／Ｓ内セキュリティエージェント６０１９からのコンテクスト情報、ドライバのコール元のスタック及び／又はメモリマップ６０１０に基づき、当該処理のコール元を特定するよう構成されてもよい。動作ルール、ホワイトリスト若しくはブラックリストを含むセキュリティルール６００８を利用して、Ｏ／Ｓ下位セキュリティエージェント６０２０は、コール元が悪意あると知られているか判断するよう構成されてもよい。当該悪意ある状態が未知である場合、Ｏ／Ｓ下位セキュリティエージェント６０２０は、ライト処理が継続することを可能にするよう構成されてもよい。しかしながら、Ｏ／Ｓ下位セキュリティエージェント６０２０は、以降の実行試行を停止するよう構成されてもよい。一部の処理は、投入されたコードを完全にロードするための複数の試行されたライトに関するものであるかもしれない。Ｏ／Ｓ下位セキュリティエージェント６０２０は、投入されたコードを完全に決定及び特徴付けるため、実行の処理前に当該ライトを許可してもよい。
【０６９２】
メモリ６００３が信頼される又は信頼されないエンティティにより割り当て、割り当て解除又はライトされると、Ｏ／Ｓ下位セキュリティエージェント６０２０は、メモリマップ６０１０に当該情報を記録するよう構成されてもよい。Ｏ／Ｓ下位セキュリティエージェント６０２０は、実行のパーミッションなくコード投入攻撃の影響を受けやすいメモリ６００３の部分をマーク付けしてもよい。メモリ６００３の当該部分の試行された実行は、トラップされた処理を生じさせるものであってもよい。Ｏ／Ｓ下位セキュリティエージェント６０２０は、試行された実行に関するメモリマップ６０１０におけるメモリの部分を特定し、関連するエンティティを決定するよう構成されてもよい。Ｏ／Ｓ下位セキュリティエージェント６０２０は、コードを書き込む際に観察される悪意の可能性のある動作を評価し、又は既知のマルウェアの徴候についてコードバイトをスキャンしてもよい。
【０６９３】
試行されたコードのロードと以降の試行された実行とが疑わしいと判断されるか、又はマルウェアを示す場合、Ｏ／Ｓ下位セキュリティエージェント６０２０は、適切な訂正アクションを実行するよう構成されてもよい。一実施例では、Ｏ／Ｓ下位セキュリティエージェント６０２０は、ＮＯＯＰ命令や他のパターンなどのダミー情報により書き込まれたコードを充填するよう構成されてもよい。さらに、当該試行を行ったエンティティのメモリ位置が、ダミー情報により充填されてもよい。他の実施例では、Ｏ／Ｓ下位セキュリティエージェント６０２０は、試行のソース及びターゲットをクリーン及び隔離するため、修復エンジンに実行をわたすよう構成されてもよい。さらなる他の実施例では、Ｏ／Ｓ下位セキュリティエージェント６０２０は、リード、ライト又は実行を不許可するパーミッション６０３２によりコール元及びターゲットのメモリ位置をマーク付けするよう構成されてもよい。同様に、Ｏ／Ｓ下位セキュリティエージェント６０２０は、試行のコール元又はターゲットのメモリ位置の以降の試行されたリード、ライト又は実行をトラップするよう構成されてもよい。当該試行に関するメモリ位置は、メモリマップ６０１０において悪意あるとしてマーク付けされてもよい。
【０６９４】
図６４は、メモリの一部が悪意あると判断された後、図６０のメモリマップ６０１０などのメモリマップ６４００の実施例である。メモリマップ６４００の部分６４０２、６４０６、６４１０、６４１８、６４２２が未割当てとして示される。メモリマップは、オペレーティングシステムカーネル６４０４、ドライバ１  ６４０８、ドライバ２  ６４１２及びドライバ３  ６４１６の位置を示してもよい。コードを投入及び実行するための悪意ある試行に関連すると判断されたメモリの部分が、マルウェア６４２０として指定されてもよい。マルウェアセクション６４２０のリード、ライト及び実行を拒絶するパーミッションが設定されてもよい。マルウェアセクション６４２０は、例えば、コードが投入されたメモリの部分又は投入試行が行われたメモリ部分などを反映してもよい。その後、未知のセクション６４２４からのマルウェアセクション６４２０の試行されたアクセスは、図６０のＯ／Ｓ下位セキュリティエージェント６０２０などのＯ／Ｓ下位セキュリティエージェントによりトラップされてもよい。当該Ｏ／Ｓ下位セキュリティエージェントは、マルウェアセクション６４２０に対応するメモリ６００３の部分へのアクセスをトラップするためフラグを設定するよう構成されてもよい。例えば、セクション６４２０に以前に書き込まれたコードをリードするための試行は、未知のセクション６４２４により行われてもよい。他の例では、セクション６４２０に以前に書き込まれたコードを実行するための試行は、未知のセクション６４２４により行われてもよい。Ｏ／Ｓ下位セキュリティエージェントは、マルウェアとして指定されたメモリの試行されたアクセスはそれ自体悪意あると判断するよう構成されてもよい。従って、Ｏ／Ｓ下位セキュリティエージェントは、当該試行をブロックし、以前に未知のセクション６４２４をマルウェアセクション６４２４として再指定してもよい。Ｏ／Ｓ下位セキュリティエージェントは、ダミーデータを充填し、クリーン及び隔離のためのプロセスにわたし、リード、ライト又は実行アクセスを拒絶するためのパーミッションによりマルウェアセクション６４２４をマーク付けし、及び／又はマルウェアセクション６４２４への以降のアクセスをトラップするなど、新たに指定されたマルウェアセクション６４２４に対して訂正アクションを実行するよう構成されてもよい。
【０６９５】
図６５は、電子デバイスのメモリのコードをロード及び実行するＯ／Ｓ下位トラップの方法６５００の実施例である。ステップ６５０５において、セキュリティルールは、メモリのコードをロード及び実行することに関するリソースを決定するようアクセスされてもよい。当該セキュリティルールは、リソースへの試行されたアクセスがトラップ及び評価される基準と共に、リソースを特定してもよい。
【０６９６】
ステップ６５１０において、電子デバイス内のオペレーティングシステムのレベルの下位で制御構造にフラグが設定されてもよい。フラグは、例えば、コードの試行された投入と以降の実行をトラップするため設定されてもよい。フラグは、上述されたような試行に対応するメモリアドレスを介した物理メモリアクセスを介し、及び／又はメモリページを介したバーチャルメモリアクセスについて設定されてもよい。
【０６９７】
ステップ６５１５において、電子デバイスは、メモリへのコードの投入に関するリソースにアクセスするためのトラップされた試行についてモニタリングされてもよい。ステップ６５２０において、トラップされた試行がない場合、プロセス６５００はステップ６５１５に移行し、トラップされる試行のモニタリングを継続する。試行がトラップされた場合、当該試行はステップ６５２５において処理されてもよい。当該処理は、電子デバイスのオペレーティングシステムのレベルの下位で実行されてもよい。ステップ６５２５において、試行が悪意あるか解析するのに有用な情報が収集されてもよい。例えば、当該試行を行うプロセス、アプリケーション、ドライバ又はルーチンが、試行のターゲット共に決定されてもよい。電子デバイスのオペレーティングシステム内からのコンテクスト情報が、Ｏ／Ｓ内セキュリティエージェントから取得されてもよい。コードを投入するための試行が行われた場合、コール元のイメージがスキャンされてもよい。
【０６９８】
ステップ６５３０において、ロード又は投入試行を行ったエンティティが、当該試行を行うのに未認証であると知られているか判断されてもよい。未認証である場合、ステップ６５６５において、当該試行は拒絶され、何れか適切な訂正アクションが実行されてもよい。未認証でない場合、エンティティのマルウェア状態は依然として未知であることを意味し、ステップ６５３５において、ロード試行が許可され、以降の試行される実行の状況に応じて、ロード試行が疑わしい可能性があると判断されてもよい。ロード試行が疑わしい可能性がない場合、当該方法はステップ６５１５に移行し、電子デバイスのモニタリングを継続してもよい。
【０６９９】
ロード試行が依然として疑わしい可能性がある場合、ステップ６５４５において、電子デバイスは、書き込まれたコードの以降の実行試行についてモニタリングされてもよい。トラップされた試行がない場合、プロセス６５００は、ステップ６５４５を繰り返すか、又はトラップされる試行のモニタリングを継続するためパラレルにステップ６５１５に移行してもよい。実行試行がトラップされた場合、当該試行はステップ６５５０において処理されてもよい。当該処理は、電子デバイスのオペレーティングシステムのレベルの下位で実行されてもよい。ステップ６５５０において、実行試行がロード試行に関連して悪意あるか解析するのに有用な情報が収集されてもよい。例えば、当該試行のを行うプロセス、アプリケーション、ドライバ又はルーチンが、試行のターゲット共に決定されてもよい。電子デバイスのオペレーティングシステムの内部からのコンテクスト情報が、Ｏ／Ｓ内セキュリティエージェントから取得されてもよい。実行試行のコール元のイメージが、マルウェアの徴候についてスキャンされてもよい。
【０７００】
ステップ６５５５において、試行されたロードに関して試行された実行がマルウェアを示しているか判断されてもよい。示している場合、ステップ６５６５において、当該試行は拒絶され、何れか適切な訂正アクションが実行されてもよい。示していない場合、ステップ６５６０において、実行及びロード試行は許可され、方法６５００は、電子デバイスのモニタリングを任意的に継続するため、ステップ６５１５を継続してもよい。
【０７０１】
方法３００、６００、８００、１１００、１４００、１９００、２４００、２５００、２８００、３０００、３２００、３４００、３６００、３７００、４０００、４２００、４３００、４４００、４６００、４９００、５３００、５７００、５９００、６５００が、図１〜２、４〜５、７、９〜１０、１２〜１３、１５〜１８、２０〜２３、２６〜２７、２９、３１、３３、３５、３８〜３９、４１、４５、４７〜４８、５０〜５２、５４〜５６、５８若しくは６０〜６４のシステム、又は方法３００、６００、８００、１００、１４００、１９００、２４００、２５００、２８００、３０００、３２００、３４００、３６００、３７００、４０００、４２００、４３００、４４００、４６００、４９００、５３００、５７００、５９００、６５００を実現するよう動作可能な他の何れかのシステムの何れかを利用して実現されてもよい。また、方法３００、６００、８００、１００、１４００、１９００、２４００、２５００、２８００、３０００、３２００、３４００、３６００、３７００、４０００、４２００、４３００、４４００、４６００、４９００、５３００、５７００、５９００、６５００の好適な初期化ポイント及びこれらのステップの順序は、選択された実現形態に依存する。図３、６、８、１１、１４、１９、２４〜２５、２８、３０、３２、３４、３６〜３７、４０、４２〜４４、４６、４９、５３、５７、５９及び６５は、方法３００、６００、８００、１００、１４００、１９００、２４００、２５００、２８００、３０００、３２００、３４００、３６００、３７００、４０００、４２００、４３００、４４００、４６００、４９００、５３００、５７００、５９００、６５００の具体例に関して実行される特定数のステップを開示しているが、これらの方法は、図面に示されるより多くの又は少ないステップにより実行されてもよい。さらに、図３、６、８、１１、１４、１９、２４〜２５、２８、３０、３２、３４、３６〜３７、４０、４２〜４４、４６、４９、５３、５７、５９及び６５は、これらの方法に関して実行されるステップの特定の順序を開示し、これらの方法を構成するステップは、何れか適切な順序により完了されてもよい。さらに、方法３００、６００、８００、１００、１４００、１９００、２４００、２５００、２８００、３０００、３２００、３４００、３６００、３７００、４０００、４２００、４３００、４４００、４６００、４９００、５３００、５７００、５９００、６５００の一部又はすべてのステップは、他の方法からのステップと組み合わされてもよい。いくつかの実施例では、一部のステップは、任意的に省略、繰り返し又は合成されてもよい。いくつかの実施例では、方法３００、６００、８００、１００、１４００、１９００、２４００、２５００、２８００、３０００、３２００、３４００、３６００、３７００、４０００、４２００、４３００、４４００、４６００、４９００、５３００、５７００、５９００、６５００の１以上のいくつかのステップは、互いの他のステップとパラレルに実行されてもよい。特定の実施例では、方法３００、６００、８００、１００、１４００、１９００、２４００、２５００、２８００、３０００、３２００、３４００、３６００、３７００、４０００、４２００、４３００、４４００、４６００、４９００、５３００、５７００、５９００、６５００は、コンピュータ可読媒体に実現されるソフトウェアにより部分的又は完全に実現されてもよい。
【０７０２】
本開示のため、コンピュータ可読媒体は、ある期間においてデータ及び／又は命令を保持する手段又は手段の集合を含むものであってもよい。コンピュータ可読媒体は、限定することなく、ダイレクトアクセスストレージデバイス（ハードディスクドライブ又はフロッピー（登録商標）ディスクなど）、シーケンシャルアクセスストレージデバイス（テープディスクドライブなど）、コンパクトディスク、ＣＤ−ＲＯＭ、ＤＶＤ、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ及び／又はフラッシュメモリと共に、非一時的通信媒体、及び／又は上記の何れかの組み合わせなどのストレージメディアを含むものであってもよい。
【０７０３】
図１〜２、４〜５、７、９〜１０、１２〜１３、１５〜１８、２０〜２３、２６〜２７、２９、３１、３３、３５、３８〜３９、４１、４５、４７〜４８、５０〜５２、５４〜５６、５８若しくは６０〜６４のシステムの１以上は、同一のシステムの他のコンポーネントと組み合わされてもよい。
【０７０４】
本開示が詳細に説明されたが、添付した請求項により定義されるような本開示の趣旨及び範囲から逸脱することなく、各種変更、置換及び変形が可能であることが理解されるべきである。
【図１】
2015212979.tif 000004
【図２】
2015212979.tif 000005
【図３】
2015212979.tif 000006
【図４】
2015212979.tif 000007
【図５】
2015212979.tif 000008
【図６】
2015212979.tif 000009
【図７】
2015212979.tif 000010
【図８】
2015212979.tif 000011
【図９】
2015212979.tif 000012
【図１０】
2015212979.tif 000013
【図１１】
2015212979.tif 000014
【図１２】
2015212979.tif 000015
【図１３】
2015212979.tif 000016
【図１４】
2015212979.tif 000017
【図１５】
2015212979.tif 000018
【図１６】
2015212979.tif 000019
【図１７】
2015212979.tif 000020
【図１８】
2015212979.tif 000021
【図１９】
2015212979.tif 000022
【図２０】
2015212979.tif 000023
【図２１】
2015212979.tif 000024
【図２２】
2015212979.tif 000025
【図２３】
2015212979.tif 000026
【図２４】
2015212979.tif 000027
【図２５】
2015212979.tif 000028
【図２６】
2015212979.tif 000029
【図２７】
2015212979.tif 000030
【図２８】
2015212979.tif 000031
【図２９】
2015212979.tif 000032
【図３０】
2015212979.tif 000033
【図３１】
2015212979.tif 000034
【図３２】
2015212979.tif 000035
【図３３】
2015212979.tif 000036
【図３４】
2015212979.tif 000037
【図３５】
2015212979.tif 000038
【図３６】
2015212979.tif 000039
【図３７】
2015212979.tif 000040
【図３８】
2015212979.tif 000041
【図３９】
2015212979.tif 000042
【図４０】
2015212979.tif 000043
【図４１】
2015212979.tif 000044
【図４２】
2015212979.tif 000045
【図４３】
2015212979.tif 000046
【図４４】
2015212979.tif 000047
【図４５】
2015212979.tif 000048
【図４６】
2015212979.tif 000049
【図４７】
2015212979.tif 000050
【図４８】
2015212979.tif 000051
【図４９】
2015212979.tif 000052
【図５０】
2015212979.tif 000053
【図５１】
2015212979.tif 000054
【図５２】
2015212979.tif 000055
【図５３】
2015212979.tif 000056
【図５４】
2015212979.tif 000057
【図５５】
2015212979.tif 000058
【図５６】
2015212979.tif 000059
【図５７】
2015212979.tif 000060
【図５８】
2015212979.tif 000061
【図５９Ａ】
2015212979.tif 000062
【図５９Ｂ】
2015212979.tif 000063
【図６０】
2015212979.tif 000064
【図６１】
2015212979.tif 000065
【図６２Ａ】
2015212979.tif 000066
【図６２Ｂ】
2015212979.tif 000067
【図６３】
2015212979.tif 000068
【図６４】
2015212979.tif 000069
【図６５】
2015212979.tif 000070
【外国語明細書】
2015212979000001.pdf