(57)【要約】  説明されるシステムおよび方法は、悪意のあるソフトウェアからハードウェア仮想化システムを保護することを可能にする。いくつかの実施形態は、ハイブリッドイベント通知／分析システムを使用し、第１の構成要素が、メモリアクセス許可の違反によってトリガされたプロセッサ例外のためのハンドラとして、保護された仮想マシン（ＶＭ）レジスタ内で実行され、第２の構成要素が、ＶＭ終了イベントのためのハンドラとして、それぞれのＶＭレジスタの外部で実行される。第１の構成要素は、ルールのセットに従って許可違反イベントをフィルタ処理し、セキュリティに関連すると見なされるイベントについて第２の構成要素に通知するにすぎない。第２の構成要素は、通知されたイベントを分析して、悪意のあるソフトウェアを検出する。
2020502638.tif 000002
【特許請求の範囲】
【請求項１】
ハードウェアプロセッサとメモリとを備えるホストシステムであって、前記ハードウェアプロセッサは、仮想マシン（ＶＭ）と、イベントフィルタと、イントロスペクションエンジンとを実行するように構成され、前記イベントフィルタは前記ＶＭ内で実行され、前記イントロスペクションエンジンは前記ＶＭの外部で実行され、前記ハードウェアプロセッサは、
前記ＶＭ内で実行されるソフトウェアエンティティによる、メモリアクセス許可に違反する様式でのメモリロケーションにアクセスする試みを検出したことに応答して、第１の例外を生成することと、
前記第１の例外に応答して、前記ソフトウェアエンティティの実行から前記イベントフィルタの実行に切り替えることと、
第２の例外に応答して、前記イベントフィルタの実行から前記イントロスペクションエンジンの実行に切り替えることと
を行うようにさらに構成され、
前記イベントフィルタは、
前記第１の例外に応答して、イベント適格性基準に従って、前記試みが前記イントロスペクションエンジンへの通知に適格であるかどうかを判定することと、
前記試みが通知に適格であるかどうかを判定したことに応答して、前記試みが適格であるときに、前記プロセッサに、前記第２の例外を生成させることと、
前記試みが通知に適格であるかどうかを判定したことに応答して、前記試みが適格でないときに、前記プロセッサが前記第２の例外を生成することを防ぎ、代わりに、前記プロセッサに、前記ソフトウェアエンティティの実行を再開させることと
を行うように構成され、
前記イントロスペクションエンジンは、前記試みが悪意のあるものであるかどうかを判定するように構成された、
ホストシステム。
【請求項２】
請求項１に記載のホストシステムであって、前記試みが通知に適格であるかどうかを判定することは、
メモリページのセクションが、保護されたオブジェクトの一部を記憶するかどうかを判定することであって、前記セクションは前記メモリロケーションによって示される、判定することと、
前記セクションが、前記保護されたオブジェクトの前記一部を記憶するかどうかを判定したことに応答して、前記セクションが、前記保護されたオブジェクトの前記一部を記憶するときに、前記試みが適格であると判定することと、
前記セクションが、前記保護されたオブジェクトの前記一部を記憶するかどうかを判定したことに応答して、前記セクションが、前記保護されたオブジェクトの前記一部を記憶しないときに、前記試みが適格でないと判定することと
を含む、ホストシステム。
【請求項３】
請求項２に記載のホストシステムであって、前記メモリページは、さらに、保護されていないオブジェクトの一部を記憶する、ホストシステム。
【請求項４】
請求項２に記載のホストシステムであって、前記保護されたオブジェクトは、前記ＶＭのためのメモリアドレス変換を実施するために前記ハードウェアプロセッサによって使用されるページテーブルを含む、ホストシステム。
【請求項５】
請求項３に記載のホストシステムであって、前記試みが通知に適格であるかどうかを判定することは、前記試みが、前記ページテーブルのページテーブルエントリの制御ビットの値を上書きする試みを含むかどうかを判定することをさらに含む、ホストシステム。
【請求項６】
請求項３に記載のホストシステムであって、前記試みが通知に適格であるかどうかを判定することは、前記試みが、前記ページテーブルのページテーブルエントリのアドレスフィールドのコンテンツを上書きする試みを含むかどうかを判定することをさらに含む、ホストシステム。
【請求項７】
請求項１に記載のホストシステムであって、前記試みが悪意のあるものであるかどうかを判定することは、
前記試みが、前記仮想マシン内で実行されるオペレーティングシステムの構成要素によって実施されたかどうかを判定するために前記イントロスペクションエンジンを利用することと、
それに応じて、前記試みが前記オペレーティングシステムの前記構成要素によって実施されたときに、前記試みが悪意のあるものでないと判定することと
を含む、ホストシステム。
【請求項８】
コンピュータセキュリティ脅威からホストシステムを保護する方法であって、前記ホストシステムは、ハードウェアプロセッサとメモリとを備え、前記ハードウェアプロセッサは、仮想マシン（ＶＭ）と、イベントフィルタと、イントロスペクションエンジンとを実行するように構成され、前記イベントフィルタは前記ＶＭ内で実行され、前記イントロスペクションエンジンは前記ＶＭの外部で実行され、前記方法は、
前記ＶＭ内で実行されるソフトウェアエンティティによる、メモリアクセス許可に違反する様式でのメモリロケーションにアクセスする試みを検出したことに応答して、第１の例外を生成するように、前記ハードウェアプロセッサを構成するステップと、
前記第１の例外に応答して、前記ソフトウェアエンティティの実行から前記イベントフィルタの実行に切り替えるように、前記ハードウェアプロセッサを構成するステップと、
第２の例外に応答して、前記イベントフィルタの実行から前記イントロスペクションエンジンの実行に切り替えるように、前記ハードウェアプロセッサを構成するステップと、
前記第１の例外に応答して、イベント適格性基準に従って、前記試みが前記イントロスペクションエンジンへの通知に適格であるかどうかを判定するために、前記イベントフィルタを利用するステップと、
前記試みが通知に適格であるかどうかを判定したことに応答して、前記試みが適格であるときに、前記プロセッサに、前記第２の例外を生成させるステップと、
前記試みが通知に適格であるかどうかを判定したことに応答して、前記試みが適格でないときに、前記プロセッサが前記第２の例外を生成することを防ぎ、代わりに、前記プロセッサに、前記ソフトウェアエンティティの実行を再開させるステップと、
前記第２の例外に応答して、前記試みが悪意のあるものであるかどうかを判定するために前記イントロスペクションエンジンを利用するステップと
を含む、方法。
【請求項９】
請求項８に記載の方法であって、前記試みが通知に適格であるかどうかを判定するステップは、
メモリページのセクションが、保護されたオブジェクトの一部を記憶するかどうかを判定するステップであって、前記セクションは前記メモリロケーションによって示される、判定するステップと、
前記セクションが、前記保護されたオブジェクトの前記一部を記憶するかどうかを判定したことに応答して、前記セクションが、前記保護されたオブジェクトの前記一部を記憶するときに、前記試みが適格であると判定するステップと、
前記セクションが、前記保護されたオブジェクトの前記一部を記憶するかどうかを判定したことに応答して、前記セクションが、前記保護されたオブジェクトの前記一部を記憶しないときに、前記試みが適格でないと判定するステップと
を含む、方法。
【請求項１０】
請求項９に記載の方法であって、前記メモリページは、さらに、保護されていないオブジェクトの一部を記憶する、方法。
【請求項１１】
請求項９に記載の方法であって、前記保護されたオブジェクトは、前記ＶＭのためのメモリアドレス変換を実施するために前記ハードウェアプロセッサによって使用されるページテーブルを含む、方法。
【請求項１２】
請求項１１に記載の方法であって、前記試みが通知に適格であるかどうかを判定するステップは、前記試みが、前記ページテーブルのページテーブルエントリの制御ビットの値を上書きする試みを含むかどうかを判定するステップをさらに含む、方法。
【請求項１３】
請求項１１に記載の方法であって、前記試みが通知に適格であるかどうかを判定するステップは、前記試みが、前記ページテーブルのページテーブルエントリのアドレスフィールドのコンテンツを上書きする試みを含むかどうかを判定するステップをさらに含む、方法。
【請求項１４】
請求項８に記載の方法であって、前記試みが悪意のあるものであるかどうかを判定するステップは、
前記試みが、前記仮想マシン内で実行されるオペレーティングシステムの構成要素によって実施されたかどうかを判定するために前記イントロスペクションエンジンを利用するステップと、
それに応じて、前記試みが前記オペレーティングシステムの前記構成要素によって実施されたときに、前記試みが悪意のあるものでないと判定するステップと
を含む、方法。
【請求項１５】
仮想マシンを公開するホストシステムのハードウェアプロセッサによって実行されたときに、前記ホストシステムに、イベントフィルタおよびイントロスペクションエンジンを形成させる命令を記憶する非一時的コンピュータ可読媒体であって、前記イベントフィルタが前記ＶＭ内で実行され、前記イントロスペクションエンジンが前記ＶＭの外部で実行され、
前記イントロスペクションエンジンは、
前記ＶＭ内で実行されるソフトウェアエンティティによる、メモリアクセス許可に違反する様式でのメモリロケーションにアクセスする試みを検出したことに応答して、第１の例外を生成するように、前記ハードウェアプロセッサを構成することと、
前記第１の例外に応答して、前記ソフトウェアエンティティの実行から前記イベントフィルタの実行に切り替えるように、前記ハードウェアプロセッサを構成することと、
第２の例外に応答して、前記イベントフィルタの実行から前記イントロスペクションエンジンの実行に切り替えるように、前記ハードウェアプロセッサを構成することと、
前記第２の例外に応答して、前記試みが悪意のあるものであるかどうかを判定することと
を行うように構成され、
前記イベントフィルタは、
前記第１の例外に応答して、イベント適格性基準に従って、前記試みが前記イントロスペクションエンジンへの通知に適格であるかどうかを判定することと、
前記試みが通知に適格であるかどうかを判定したことに応答して、前記試みが適格であるときに、前記プロセッサに、前記第２の例外を生成させることと、
前記試みが通知に適格であるかどうかを判定したことに応答して、前記試みが適格でないときに、前記プロセッサが前記第２の例外を生成することを防ぎ、代わりに、前記プロセッサに、前記ソフトウェアエンティティの実行を再開させることと
を行うように構成された、
非一時的コンピュータ可読媒体。
【請求項１６】
請求項１５に記載のコンピュータ可読媒体であって、前記試みが通知に適格であるかどうかを判定することは、
メモリページのセクションが、保護されたオブジェクトの一部を記憶するかどうかを判定することであって、前記セクションは前記メモリロケーションによって示される、判定することと、
前記セクションが、前記保護されたオブジェクトの前記一部を記憶するかどうかを判定したことに応答して、前記セクションが、前記保護されたオブジェクトの前記一部を記憶するときに、前記試みが適格であると判定することと、
前記セクションが、前記保護されたオブジェクトの前記一部を記憶するかどうかを判定したことに応答して、前記セクションが、前記保護されたオブジェクトの前記一部を記憶しないときに、前記試みが適格でないと判定することと
を含む、コンピュータ可読媒体。
【請求項１７】
請求項１６に記載のコンピュータ可読媒体であって、前記メモリページは、さらに、保護されていないオブジェクトの一部を記憶する、コンピュータ可読媒体。
【請求項１８】
請求項１６に記載のコンピュータ可読媒体であって、前記保護されたオブジェクトは、前記ＶＭのためのメモリアドレス変換を実施するために前記ハードウェアプロセッサによって使用されるページテーブルを含む、コンピュータ可読媒体。
【請求項１９】
請求項１８に記載のコンピュータ可読媒体であって、前記試みが通知に適格であるかどうかを判定することは、前記試みが、前記ページテーブルのページテーブルエントリの制御ビットの値を上書きする試みを含むかどうかを判定することをさらに含む、コンピュータ可読媒体。
【請求項２０】
請求項１８に記載のコンピュータ可読媒体であって、前記試みが通知に適格であるかどうかを判定することは、前記試みが、前記ページテーブルのページテーブルエントリのアドレスフィールドのコンテンツを上書きする試みを含むかどうかを判定することをさらに含む、コンピュータ可読媒体。
【請求項２１】
請求項１５に記載のコンピュータ可読媒体であって、前記試みが悪意のあるものであるかどうかを判定することは、
前記試みが、前記仮想マシン内で実行されるオペレーティングシステムの構成要素によって実施されたかどうかを判定するために前記イントロスペクションエンジンを利用することと、
それに応じて、前記試みが前記オペレーティングシステムの前記構成要素によって実施されたときに、前記試みが悪意のあるものでないと判定することと
を含む、コンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願
[0001]本出願は、その内容全体が参照により本明細書に組み込まれる、２０１６年１２月１９日に出願された「Ｅｖｅｎｔ  Ｆｉｌｔｅｒ  ｆｏｒ  Ａｃｃｅｌｅｒａｔｉｎｇ  Ｃｏｍｐｕｔｅｒ  Ｓｅｃｕｒｉｔｙ  Ｏｐｅｒａｔｉｏｎｓ  ｉｎ  Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅｓ（仮想マシンにおけるコンピュータセキュリティ動作を加速するためのイベントフィルタ）」という名称の米国仮特許出願第６２，４３６，０２７号の出願日の利益を主張する。
【０００２】
[0002]本発明は、コンピュータセキュリティシステムおよび方法に関し、詳細には、悪意のあるソフトウェアから仮想マシンを保護するためのシステムおよび方法に関する。
【背景技術】
【０００３】
[0003]マルウェアとしても知られる、悪意のあるソフトウェアは、世界中の多くのコンピュータシステムに影響を及ぼす。コンピュータウイルス、ルートキット、スパイウェア、およびランサムウェアなど、その多くの形態で、マルウェアは、何百万人ものコンピュータユーザに深刻なリスクをもたらし、特に、データおよび機密情報の損失、個人情報の盗難、生産性の損失の影響を受けやすくしている。マルウェアからコンピュータシステムを保護するためにコンピュータセキュリティソフトウェアが使用されることがある。
【０００４】
[0004]ハードウェア仮想化技術は、物理コンピュータシステムとして様々に挙動する、一般に仮想マシン（ＶＭ）として知られるシミュレートされたコンピュータ環境の作成を可能にする。サーバコンソリデーション、および（「クラウドコンピューティング」という普及している名称でも知られる）サービスとしてのインフラストラクチャ（ｉｎｆｒａｓｔｒｕｃｔｕｒｅ−ａｓ−ａ−ｓｅｒｖｉｃｅ）など、一般的な適用例では、いくつかの仮想マシンが、同じコンピュータシステム上で同時に動作し、それらの仮想マシンの間でハードウェアリソースを共有し、したがって、投資および事業コストを低減し得る。各仮想マシンは、他の仮想マシンとは別に、それ自体のオペレーティングシステムおよび／またはソフトウェアアプリケーションを実行し得る。各そのようなＶＭは、コンピュータセキュリティ脅威からの保護を潜在的に必要とする。
【０００５】
[0005]保護された仮想マシンの外部にコンピュータセキュリティソフトウェアを配置することが、一般に、高度の保護を保証する。しかしながら、コンピュータセキュリティソフトウェアの動作は、そのような構成で行われるとき、仮想化されない環境と比較して、かなりより複雑であり、計算コストが高い。従来のハードウェア仮想化アンチマルウェアシステムでは、保護されたＶＭ内で発生するセキュリティ関連イベントが、一般に、ハードウェアプロセッサに、それぞれのＶＭの実行を中断させ、保護されたＶＭの外部のセキュリティソフトウェアを実行することに切り替えさせる。次いで、プロセッサは、イベント分析に応答して、保護されたＶＭを実行することにまた切り替え得る。頻繁なＶＭ中断／再開サイクルは、かなりの計算コストをもたらし、生産性およびユーザエクスペリエンスに影響し得る。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
[0006]ハードウェア仮想化プラットフォームにおけるコンピュータセキュリティ動作の効率を改善することへのかなりの関心がある。
【課題を解決するための手段】
【０００７】
[0007]一態様によれば、ホストシステムが、ハードウェアプロセッサとメモリとを備える。ハードウェアプロセッサは、仮想マシン（ＶＭ）と、イベントフィルタと、イントロスペクションエンジンとを実行するように構成され、イベントフィルタはＶＭ内で実行され、イントロスペクションエンジンはＶＭの外部で実行される。ハードウェアプロセッサは、ＶＭ内で実行されるソフトウェアエンティティによる、メモリアクセス許可に違反する様式でのメモリロケーションにアクセスする試みを検出したことに応答して、第１の例外を生成することと、第１の例外に応答して、ソフトウェアエンティティを実行することからイベントフィルタを実行することに切り替えることとを行うようにさらに構成される。ハードウェアプロセッサは、第２の例外に応答して、イベントフィルタを実行することからイントロスペクションエンジンを実行することに切り替えるようにさらに構成される。イベントフィルタは、第１の例外に応答して、イベント適格性基準に従って、試みがイントロスペクションエンジンへの通知に適格であるかどうかを判定するように構成される。イベントフィルタは、試みが通知に適格であるかどうかを判定したことに応答して、試みが適格であるとき、プロセッサに、第２の例外を生成させることと、試みが適格でないとき、プロセッサが第２の例外を生成することを防ぎ、代わりに、プロセッサに、ソフトウェアエンティティを実行することを再開させることとを行うようにさらに構成される。イントロスペクションエンジンは、試みが悪意のあるものであるかどうかを判定するように構成される。
【０００８】
[0008]別の態様によれば、方法が、コンピュータセキュリティ脅威からホストシステムを保護する。ホストシステムは、ハードウェアプロセッサとメモリとを備え、ハードウェアプロセッサは、仮想マシン（ＶＭ）と、イベントフィルタと、イントロスペクションエンジンとを実行するように構成され、イベントフィルタはＶＭ内で実行され、イントロスペクションエンジンはＶＭの外部で実行される。本方法は、ＶＭ内で実行されるソフトウェアエンティティによる、メモリアクセス許可に違反する様式でのメモリロケーションにアクセスする試みを検出したことに応答して、第１の例外を生成するように、ハードウェアプロセッサを構成するステップを含む。本方法は、第１の例外に応答して、ソフトウェアエンティティを実行することからイベントフィルタを実行することに切り替えることと、第２の例外に応答して、イベントフィルタを実行することからイントロスペクションエンジンを実行することに切り替えることとを行うように、ハードウェアプロセッサを構成するステップをさらに含む。本方法は、第１の例外に応答して、イベント適格性基準に従って、試みがイントロスペクションエンジンへの通知に適格であるかどうかを判定するために、イベントフィルタを利用するステップをさらに含む。本方法は、試みが通知に適格であるかどうかを判定したことに応答して、試みが適格であるとき、プロセッサに、第２の例外を生成させるステップと、試みが適格でないとき、プロセッサが第２の例外を生成することを防ぎ、代わりに、プロセッサに、ソフトウェアエンティティを実行することを再開させるステップとをさらに含む。本方法は、第２の例外に応答して、試みが悪意のあるものであるかどうかを判定するためにイントロスペクションエンジンを利用するステップをさらに含む。
【０００９】
[0009]別の態様によれば、非一時的コンピュータ可読媒体が、仮想マシンを公開するホストシステムのハードウェアプロセッサによって実行されたとき、ホストシステムに、イベントフィルタおよびイントロスペクションエンジンを形成させる、命令を記憶し、イベントフィルタはＶＭ内で実行され、イントロスペクションエンジンはＶＭの外部で実行される。イントロスペクションエンジンは、ＶＭ内で実行されるソフトウェアエンティティによる、メモリアクセス許可に違反する様式でのメモリロケーションにアクセスする試みを検出したことに応答して、第１の例外を生成するように、ハードウェアプロセッサを構成するように構成される。イントロスペクションエンジンは、第１の例外に応答して、ソフトウェアエンティティを実行することからイベントフィルタを実行することに切り替えることと、第２の例外に応答して、イベントフィルタを実行することからイントロスペクションエンジンを実行することに切り替えることとを行うように、ハードウェアプロセッサを構成するようにさらに構成される。イントロスペクションエンジンは、第２の例外に応答して、試みが悪意のあるものであるかどうかを判定するようにさらに構成される。イベントフィルタは、第１の例外に応答して、イベント適格性基準に従って、試みがイントロスペクションエンジンへの通知に適格であるかどうかを判定するように構成される。イベントフィルタは、試みが通知に適格であるかどうかを判定したことに応答して、試みが適格であるとき、プロセッサに、第２の例外を生成させることと、試みが適格でないとき、プロセッサが第２の例外を生成することを防ぎ、代わりに、プロセッサに、ソフトウェアエンティティを実行することを再開させることとを行うようにさらに構成される。
【００１０】
[0010]本発明の前述の態様および利点は、以下の詳細な説明を読み、図面を参照すると、より良く理解されるようになるであろう。
【図面の簡単な説明】
【００１１】
【図１】[0011]本発明のいくつかの実施形態による、ホストシステムの例示的なハードウェア構成を示す図である。
【図２】[0012]本発明のいくつかの実施形態による、ホストシステム上で実行されるハイパーバイザによって公開されるゲスト仮想マシン（ＶＭ）のセットと、それぞれのＶＭを保護するセキュリティ構成要素のセットとを示す図である。
【図３】[0013]図２に示されている仮想マシンの構成における例示的なメモリアドレス変換を示す図である。
【図４】[0014]本発明のいくつかの実施形態による、例示的なページテーブルエントリを示す図である。
【図５】[0015]本発明のいくつかの実施形態による、保護されたゲスト仮想マシン内で実行されるイベントフィルタの例示的な構成要素を示す図である。
【図６】[0016]本発明のいくつかの実施形態による、ホストシステム上にセキュリティソフトウェアをインストールし、初期化するために実施されるステップの例示的なシーケンスを示す図である。
【図７】[0017]本発明のいくつかの実施形態による、イベントフィルタによって行われるステップの例示的なシーケンスを示す図である。
【図８】[0018]本発明のいくつかの実施形態による、インターセプトされたイベントがイントロスペクションエンジンへの通知に適格であるかどうかを判定するために、イベントフィルタの適格性チェッカー構成要素によって実施されるステップの例示的なシーケンスを示す図である。
【図９】[0019]本発明のいくつかの実施形態による、インターセプトされたイベントが通知に適格であるかどうかを判定するために、適格性チェッカーによって実施されるステップの別の例示的なシーケンスを示す図である。
【図１０】[0020]本発明のいくつかの実施形態による、イントロスペクションエンジンによって実施されるステップの例示的なシーケンスを示す図である。
【発明を実施するための形態】
【００１２】
[0021]以下の説明では、構造間のすべての列挙された接続が、直接の動作的な接続、または中間構造を通しての間接の動作的な接続であり得ることを理解されたい。要素のセットは、１つまたは複数の要素を含む。要素の任意の列挙は、少なくとも１つの要素を指すと理解される。複数の要素は、少なくとも２つの要素を含む。別段に必要とされない限り、説明される方法ステップは、必ずしも特定の示される順序で実施される必要があるとは限らない。第２の要素から導出された第１の要素（たとえばデータ）は、第２の要素に等しい第１の要素、ならびに第２の要素および随意に他のデータを処理することによって生成された第１の要素を包含する。パラメータに従って決定（判定）または判断を行うことは、パラメータに従っておよび随意に他のデータに従って決定（判定）または判断を行うことを包含する。別段に規定されていない限り、何らかの量／データのインジケータは、量／データ自体であるか、または量／データ自体とは異なるインジケータであり得る。コンピュータセキュリティは、データおよび／またはハードウェアへの意図しないまたは無認可のアクセスと、データおよび／またはハードウェアの意図しないまたは無認可の変更と、データおよび／またはハードウェアの破壊とからユーザおよび機器を保護することを包含する。コンピュータプログラムは、タスクを行うプロセッサ命令のシーケンスである。本発明のいくつかの実施形態で説明されるコンピュータプログラムは、他のコンピュータプログラムのスタンドアロンソフトウェアエンティティまたはサブエンティティ（たとえば、サブルーチン、ライブラリ）であり得る。別段に規定されていない限り、プロセスは、アプリケーションまたはオペレーティングシステムの一部など、コンピュータプログラムのインスタンスであり、少なくとも実行スレッド、および実行スレッドに割り当てられた仮想メモリ空間を有することによって特徴づけられ、それぞれの仮想メモリ空間のコンテンツは実行コードを含む。別段に規定されていない限り、ページは、ホストシステムの物理メモリに個々にマッピングされ得る仮想メモリの最小単位を表す。プログラムは、プログラムがそれぞれの仮想マシンの仮想プロセッサ上で実行されるとき、仮想マシン内でまたはそれの内部で実行されると言われる。コンピュータ可読媒体は、磁気、光、および半導体記憶媒体などの非一時的媒体（たとえばハードドライブ、光ディスク、フラッシュメモリ、ＤＲＡＭ）、ならびに導電性ケーブルおよび光ファイバーリンクなどの通信リンクを包含する。いくつかの実施形態によれば、本発明は、とりわけ、本明細書で説明される方法を実施するようにプログラムされたハードウェア（たとえば１つまたは複数のプロセッサ）を備えるコンピュータシステム、ならびに本明細書で説明される方法を実施するための命令を符号化するコンピュータ可読媒体を提供する。
【００１３】
[0022]以下の説明は、本発明の実施形態を例として示し、必ずしも限定として示すとは限らない。
[0023]図１は、本発明のいくつかの実施形態による、コンピュータセキュリティ脅威から保護されるホストシステム１０の例示的なハードウェア構成を示す。ホストシステム１０は、企業サーバなどの企業コンピューティングデバイス、あるいはパーソナルコンピュータ、タブレットコンピュータ、またはスマートフォンなどのエンドユーザデバイスを表し得る。他の例示的なホストシステムは、ゲーム機、スマートＴＶなどの家庭用器具、ウェアラブルコンピューティングデバイス、またはメモリとプロセッサとを有する任意の他のデバイスを含む。ホストシステム１０は、特に、ブラウザ、ワードプロセシングアプリケーション、および電子通信（たとえば、電子メール、インスタントメッセージング）アプリケーションなど、ソフトウェアアプリケーションのセットを実行するために使用され得る。いくつかの実施形態では、ホストシステム１０は、以下に示すように、ハードウェア仮想化をサポートすることと、仮想マシンのセットを公開することとを行うように構成される。
【００１４】
[0024]簡単のために、図１は、コンピュータシステムを示し、スマートフォンおよびタブレットコンピュータなど、他のホストシステムのハードウェア構成は異なり得る。システム１０は、すべてコントローラハブ２４によって相互接続された、プロセッサ１２、メモリユニット１８、入力デバイス１４のセット、出力デバイス１６のセット、ストレージデバイス２０のセット、およびネットワークアダプタ２２のセットを含む、物理デバイスのセットを備える。プロセッサ１２は、信号および／またはデータのセットを用いた計算および／または論理演算を実行するように構成された物理デバイス（たとえば、マイクロプロセッサ、半導体基板上に形成されたマルチコア集積回路）を備える。いくつかの実施形態では、そのような論理演算は、プロセッサ命令のシーケンスの形態（たとえば機械コードまたは他のタイプのソフトウェア）でプロセッサ１２に配信される。メモリユニット１８は、命令を行う間にプロセッサ１２によってアクセスまたは生成されるデータ／信号を記憶する揮発性コンピュータ可読媒体（たとえばＲＡＭ）を備え得る。
【００１５】
[0025]入力デバイス１４は、ユーザがデータおよび／または命令をホストシステム１０に導入することを可能にするそれぞれのハードウェアインターフェースおよび／またはアダプタを含む、特に、コンピュータキーボード、マウス、およびマイクロフォンを含み得る。出力デバイス１６は、特に、モニタなどのディスプレイデバイスおよびスピーカー、ならびにホストシステム１０がデータをユーザに通信することを可能にする、グラフィックカードなどのハードウェアインターフェース／アダプタを含み得る。いくつかの実施形態では、入力デバイス１４と出力デバイス１６とは、タッチスクリーンデバイスの場合のように、共通のハードウェアを共有し得る。ストレージデバイス２０は、プロセッサ命令および／またはデータの不揮発性記憶、読取り、および書込みを可能にするコンピュータ可読媒体を含む。例示的なストレージデバイス２０は、磁気ディスクおよび光ディスクおよびフラッシュメモリデバイス、ならびにＣＤおよび／またはＤＶＤのディスクおよびドライブなどのリムーバブル媒体を含む。ネットワークアダプタ２２のセットは、ホストシステム１０がコンピュータネットワークおよび／または他のデバイス／コンピュータシステムに接続することを可能にする。コントローラハブ２４は、複数のシステム、周辺機器、および／またはチップセットバス、ならびに／あるいはプロセッサ１２とデバイス１４、１６、１８、２０および２２との間の通信を可能にするすべての他の回路を総称的に表す。たとえば、コントローラハブ２４は、特に、メモリ管理ユニット（ＭＭＵ）と、入出力（Ｉ／Ｏ）コントローラと、割込みコントローラとを含み得る。別の例では、コントローラハブ２４は、プロセッサ１２をメモリ１８に接続するノースブリッジ、および／またはプロセッサ１２をデバイス１４、１６、２０、および２２に接続するサウスブリッジを備え得る。いくつかのハードウェアプラットフォームでは、ＭＭＵは、部分的にまたは完全にプロセッサ１２と統合され、すなわち、ＭＭＵは、共通半導体基板をプロセッサ１２と共有する。
【００１６】
[0026]図２は、本発明のいくつかの実施形態による、セキュリティ構成要素のセットがコンピュータセキュリティ脅威から仮想マシンのセットを保護するように共同する、例示的な構成を示す。図示されたホストシステム１０は、ハイパーバイザ３０によって公開されるゲスト仮想マシン（ＶＭ）のセット３２ａ〜３２ｂを動作させるために、ハードウェア仮想化技術を使用する。図２は、わずか２つのゲストＶＭを示すように作成されたが、いくつかの実施形態は、コンカレントに動作するより多くのＶＭ（たとえば、数百）をホストし得る。複数の仮想マシンを管理するためにハイパーバイザを使用することは、特に、クラウドコンピューティングおよびサーバコンソリデーションなどの適用例において一般的である。普及しているハイパーバイザの例としては、特に、ＶＭｗａｒｅ社からのＶＭｗａｒｅ  ｖＳｐｈｅｒｅ（登録商標）およびオープンソースＸｅｎハイパーバイザがある。
【００１７】
[0027]仮想マシンは、オペレーティングシステムおよび他のアプリケーションを実行することが可能な、実際の物理マシン／コンピュータシステムのエミュレーションとして当技術分野で知られている。いくつかの実施形態では、ハイパーバイザ３０は、仮想プロセッサおよび仮想コントローラなど、複数の仮想化されたデバイスを作成するかまたは可能にすることと、ホストシステム１０の実際の物理デバイスの代わりにソフトウェアにそのような仮想化されたデバイスを提示することとを行うように構成されたソフトウェアを含む。ハイパーバイザ３０のそのような動作は、一般に、仮想マシンを公開することとして当技術分野で知られている。ハイパーバイザ３０は、一般に、複数の仮想マシンによってホストシステム１０のハードウェアリソースの多重化（共有）を可能にする。ハイパーバイザ３０は、さらに、各ゲストＶＭ３２ａ〜３２ｂが、独立して動作し、ホストシステム１０上でコンカレントに実行される他のＶＭに気づかないように、ホストシステム１０のハードウェアを管理し得る。
【００１８】
[0028]各仮想化されたデバイス（たとえば、プロセッサ、入力、出力、ストレージなど）は、ホストシステム１０のそれぞれの物理デバイスの機能のうちの少なくともいくつかをエミュレートする。たとえば、ゲストＶＭの仮想化されたプロセッサ上で実行されるソフトウェアは、仮想化されたネットワークアダプタを介してネットワークトラフィックを送信および／または受信し得る。いくつかの例では、ハイパーバイザ３０は、各ゲストＶＭに仮想化されたデバイスのサブセットのみ（たとえば、仮想化されたプロセッサ、メモリ、およびコントローラハブの一部のみ）を公開し得る。ハイパーバイザ３０はまた、選択されたＶＭにホストシステム１０のいくつかのハードウェアデバイスの直接および排他的使用を与え得る。１つのそのような例では、ゲストＶＭ３２ａ（図２）は、入力デバイス１４および出力デバイス１６の排他的使用を有するが、仮想化されたネットワークアダプタを欠き得る。一方、ゲストＶＭ３２ｂは、（１つまたは複数の）ネットワークアダプタ２２の直接および排他的使用を有し得る。そのような構成は、たとえば、Ｉｎｔｅｌ（登録商標）からのＶＴ−ｄ（登録商標）技術を使用して実装され得る。
【００１９】
[0029]いくつかの実施形態では、各ゲストＶＭ３２ａ〜３２ｂを公開することは、それぞれのゲストＶＭの動作を管理するためにハイパーバイザ３０によって使用されるデータ構造を構成することを含む。そのような構造は、本明細書では仮想マシン状態オブジェクト（ＶＭＳＯ）と呼ばれる。例示的なＶＭＳＯは、Ｉｎｔｅｌ（登録商標）プラットフォーム上の仮想マシン制御構造（ＶＭＣＳ）と、ＡＭＤ（登録商標）プラットフォーム上の仮想マシン制御ブロック（ＶＭＣＢ）とを含む。いくつかの実施形態では、プロセッサ１６は、メモリ中の領域を各ＶＭＳＯに関連付け、その結果、ソフトウェアが、メモリアドレスまたはポインタ（たとえば、Ｉｎｔｅｌ（登録商標）プラットフォーム上のＶＭＣＳポインタ）を使用して特定のＶＭＳＯを参照し得る。
【００２０】
[0030]各ＶＭＳＯは、ホストシステム１０上に公開されるそれぞれの仮想化されたプロセッサの現在の状態を表すデータを含み得る。マルチスレッディング構成では、ハードウェアプロセッサ１２は、複数のコアを動作させ得、各コアは、複数の論理プロセッサをさらに備え、各論理プロセッサは、他の論理プロセッサとは無関係に、およびそれらと同時に、実行スレッドを処理し得る。複数の論理プロセッサは、いくつかのハードウェアリソース、たとえば、共通ＭＭＵを共有し得る。マルチスレッド実施形態では、各別個の論理プロセッサについて、別個のＶＭＳＯがセットアップされ得る。それぞれのＶＭＳＯは、ゲスト状態エリアとホスト状態エリアとを含み得、ゲスト状態エリアは、それぞれのＶＭのＣＰＵ状態を保持し、ホスト状態エリアは、ハイパーバイザ３０の現在の状態を記憶する。いくつかの実施形態では、ＶＭＳＯのゲスト状態エリアは、特に、それぞれのＶＭの仮想プロセッサの制御レジスタ（たとえば、ＣＲ０、ＣＲ３など）、命令ポインタ（たとえば、ＲＩＰ）、汎用レジスタ（たとえば、ＥＡＸ、ＥＣＸなど）、および状態レジスタ（たとえば、ＥＦＬＡＧＳ）のコンテンツを含む。ＶＭＳＯのホスト状態エリアは、それぞれのＶＭのためのアドレス変換のために構成されたページテーブルへのポインタ（たとえば、Ｉｎｔｅｌ（登録商標）プラットフォーム上のＥＰＴポインタ）を含み得る。
【００２１】
[0031]いくつかの実施形態では、プロセッサ１２は、専用内部レジスタ／キャッシュ内にＶＭＳＯの一部を記憶し得、それぞれのＶＭＳＯの他の一部は、メモリ１８中にあり得る。所与の時間において、（本明細書では、現在のＶＭＳＯと呼ばれる）多くとも１つのＶＭＳＯが、論理プロセッサ上にロードされ得、それぞれの論理プロセッサの制御を現在有する仮想マシンを識別する。プロセッサ１２が、第１のＶＭを実行することから第２のＶＭまたはハイパーバイザ３０を実行することに切り替えるとき、プロセッサ１２は、現在のＶＭＳＯのゲスト状態エリアに第１のＶＭの現在の状態を保存し得る。
【００２２】
[0032]図示されたゲストＶＭ（図２）の各々は、それぞれ、ゲストオペレーティングシステム（ＯＳ）３４ａ〜３４ｂを実行し得る。オペレーティングシステム３４ａ〜３４ｂは、特に、Ｍｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ（登録商標）、ＭａｃＯＳ（登録商標）、Ｌｉｎｕｘ（登録商標）、ｉＯＳ（登録商標）、またはＡｎｄｒｏｉｄ（登録商標）など、任意の広く利用可能なオペレーティングシステムを含み得る。各ＯＳ３４ａ〜３４ｂは、それぞれのＶＭ内で実行されるアプリケーションとそれぞれのＶＭの（仮想化された）ハードウェアデバイスと間のインターフェースを提供する。例示的なアプリケーションのセット３６ａ〜３６ｂは、特に、ワードプロセシング、画像処理、メディアプレーヤ、データベース、カレンダー、個人連絡先管理、ブラウザ、ゲーミング、音声通信、データ通信、およびコンピュータセキュリティアプリケーションなど、任意のソフトウェアアプリケーションを総称的に表す。以下の説明では、仮想マシンの仮想プロセッサ上で実行されるソフトウェアは、それぞれの仮想マシン内で実行されると言われる。たとえば、図２の例では、アプリケーション３６ａは、ゲストＶＭ３２ａ内で実行されると言われ、アプリケーション３６ｂは、ゲストＶＭ３２ｂ内で実行されると言われる。対照的に、ハイパーバイザ３０は、ゲストＶＭ３２ａ〜３２ｂの外部、またはその下で実行されると言われる。
【００２３】
[0033]いくつかの実施形態では、複数のセキュリティ構成要素は、悪意のあるソフトウェアなどのコンピュータセキュリティ脅威からゲストＶＭ３２ａ〜３２ｂを保護するように共同する。図２は、それぞれ、ゲストＶＭ３２ａ〜３２ｂ内で実行されるイベントフィルタのセット４２ａ〜４２ｂ、およびゲストＶＭ３２ａ〜３２ｂの外部で実行されるイントロスペクションエンジン４０としての、そのようなセキュリティ構成要素を示す。イントロスペクションエンジン４０は、通知ハンドラ４４をさらに含み得る。いくつかの実施形態では、各イベントフィルタ４２ａ〜４２ｂは、それぞれのゲストＶＭ内でのソフトウェアの実行中に、いくつかのイベントの発生を検出する。フィルタ４２ａ〜４２ｂによってインターセプトされる例示的なイベントは、特に、プロセッサ例外および／または割込み、ＯＳ３４ａ〜３４ｂのいくつかの機能を呼び出すこと、ＯＳ３４ａ〜３４ｂのレジストリにアクセスすること、遠隔ロケーションからファイルをダウンロードすること、ならびにファイルにデータを書き込むことを含む。いくつかの実施形態では、フィルタ４２ａ〜４２ｂは、それぞれのオペレーティングシステムのプロセッサ特権レベル（たとえば、カーネルモード）において実行される。
【００２４】
[0034]イベントフィルタ４２ａ〜４２ｂは、特にコンピュータセキュリティに関連するイベントのサブセットを識別するために、およびイベントの選択されたサブセットの発生についてイントロスペクションエンジン４０に通知するために、ルールのセットに従って、検出されたイベントをフィルタ処理し得る。いくつかの実施形態では、イントロスペクションエンジン４０は、それぞれのイベントがマルウェア攻撃を示すかどうかを判定するために、受信された通知を分析する。エンジン４０はまた、ゲストＶＭ内で実行されるソフトウェアオブジェクトの一部を含んでいるメモリセクションのアドレスを決定すること、それぞれのメモリセクションにアクセスすること、およびそれぞれのメモリセクション内に記憶されたコンテンツを分析することなど、他のセキュリティ関係動作を行い得る。イントロスペクションエンジン４０によって実施されるセキュリティ動作の他の例としては、いくつかのメモリセクションへのアクセスをインターセプトおよび／または制限すること、たとえば、保護されたプロセスに属するコードまたはデータの上書きを防ぐこと、およびいくつかのメモリページに記憶されたコードの実行を防ぐことがある。
【００２５】
[0035]単一のイントロスペクションエンジン４０が、ホストシステム１０上で実行される複数のゲストＶＭを保護し得る。エンジン４０は、（たとえばライブラリのセットとして）ハイパーバイザ３０に組み込まれ得るか、または、ハイパーバイザ３０とは別個および無関係のコンピュータプログラムとして配信され得るが、ハイパーバイザ３０のプロセッサ特権レベルにおいて実行され得る。エンジン４０は、（別個のスケジュールされた実行スレッドを有する）プロセスであることもないこともある。いくつかの実施形態では、エンジン４０は、いくつかのプロセッサイベントによってトリガされたときに実行されるスケジュールされていないコードオブジェクトの集合を備える。イベントフィルタ４２ａ〜４２ｂおよびイントロスペクションエンジン４０の動作が、以下でさらに詳細に説明される。
【００２６】
[0036]現代のプロセッサは、保護リングとしても当技術分野で知られている、プロセッサ特権レベルの階層を実装する。各そのようなリングまたはレベルは、それぞれのリング内で実行されるソフトウェアが行うことを可能にされるアクションおよび／またはプロセッサ命令のセットによって特徴づけられる。例示的な特権レベル／リングは、ユーザモード（リング３）と、カーネルモード（リング０）とを含む。ハードウェア仮想化をサポートするように構成されたいくつかのホストシステムは、最も高いプロセッサ特権（たとえば、リング−１、ルートモード、またはＩｎｔｅｌ（登録商標）プラットフォーム上のＶＭＸｒｏｏｔ）をもつ追加のリングを含み得る。いくつかの実施形態では、ハイパーバイザ３０は、最も特権的なレベル（リング−１）においてプロセッサ１２を制御し、したがって、ホストシステム１０上で実行される他のソフトウェアに仮想マシンとして公開されるハードウェア仮想化プラットフォームを作成する。図２中のゲストＯＳ３４ａなど、オペレーティングシステムは、一般に、ハイパーバイザ３０よりも低いプロセッサ特権をもつ（たとえば、リング０またはカーネルモードにおける）それぞれのＶＭの仮想環境内で実行される。アプリケーション３６ａなど、共通ユーザアプリケーションは、一般に、ＯＳ３４ａよりも低いプロセッサ特権において（たとえば、リング３またはユーザモードにおいて）実行される。ソフトウェアオブジェクトが、それの割り当てられた保護リングによって許容されるものよりも高いプロセッサ特権を必要とするアクションまたは命令を実行することを試みるとき、試みは、一般に、例外または障害など、プロセッサイベントを生成し、これは、それぞれのアクションを行うために、プロセッサ１２の制御を、十分な特権をもつリングにおいて実行されるエンティティ（たとえば、オペレーティングシステムのイベントフィルタ）に転送する。
【００２７】
[0037]特に、いくつかのプロセッサ命令の実行は、ハイパーバイザ３０の特権レベル（たとえば、ＶＭＸｒｏｏｔ）を必要とする。そのような命令の例としては、Ｉｎｔｅｌ（登録商標）プラットフォーム上のＶＭＣＡＬＬがある。いくつかのハードウェアシステムでは、仮想マシン内からそのような命令を呼び出すことは、仮想マシン終了イベント（たとえば、Ｉｎｔｅｌ（登録商標）プラットフォーム上のＶＭＥｘｉｔ）として知られる特定のタイプの障害を生成する。ＶＭ終了イベントは、それぞれの仮想マシンの実行を中断し、一般に、ハイパーバイザ３０のプロセッサ特権レベルにおいて、プロセッサ１２を、それぞれのＶＭの外部のハンドラルーチンを実行することに切り替える。
【００２８】
[0038]いくつかのハードウェアプラットフォームでは、ＶＭ終了は、メモリアクセス許可の違反など、他のタイプのイベントによってトリガされ得る。１つのそのような例では、ＶＭ内で実行されるソフトウェアオブジェクトが、書込み不可能としてマークされたメモリページにデータを書き込むこと、または実行不可能としてマークされたメモリページからのコードを実行することを試みるとき、プロセッサ１２は、ページ障害を生成し、それに応じて、それぞれのＶＭの実行を中断し、ハイパーバイザ３０を実行することに切り替え得る。そのような終了機構は、たとえば、それぞれのＶＭの外部で実行されるコンピュータセキュリティプログラム（イントロスペクションエンジン４０など）が、セキュリティ脅威から仮想マシンを保護することを可能にする。いくつかの実施形態では、イントロスペクションエンジン４０は、ＶＭの内部のソフトウェアの実行中に発生するＶＭ終了イベントをインターセプトし、さらに、潜在的にＶＭ内ソフトウェアの知識なしに、そのようなイベントを分析する。イベントが攻撃を示す場合、エンジン４０は、それぞれのゲストＶＭの実行を中断すること、それぞれのゲストＶＭへのおよび／またはそれからの通信をカットオフすること、それぞれのゲストＶＭにクリーンアップエージェントを注入すること、ホストシステム１０のユーザにアラートすることなど、いくつかの脅威緩和アクションをとり得る。
【００２９】
[0039]ハードウェア仮想化のために最適化された現代のコンピューティングプラットフォームは、特権的命令および／またはメモリアクセス許可の違反によってトリガされた別の種類のプロセッサイベントを同じく生成するように構成される。そのようなプロセッサイベントは、一般に仮想化例外（たとえば、Ｉｎｔｅｌ（登録商標）プラットフォーム上の＃ＶＥ）として知られ、プロセッサに、ゲストＶＭ内のソフトウェアを実行することから同じくそれぞれのゲストＶＭ内のハンドラルーチンを実行することに切り替えさせ、したがって、一般に、ＶＭ終了イベントに関連する計算コストを回避する。いくつかのプロセッサは、様々な状況に応答してＶＭ終了イベントまたは仮想化例外のいずれかを選択的に生成するように構成可能である。
【００３０】
[0040]仮想マシンは、一般に、ゲスト物理メモリとしても当技術分野で知られている、仮想化された物理メモリを用いて動作する。仮想化された物理メモリは、たとえば各ＶＭに固有のアドレスの連続空間としての、実際の物理メモリ１８の抽象的な表現を含み、前記空間の一部は、物理メモリ１８および／または物理ストレージデバイス２０内のアドレスにマッピングされる。現代のハードウェア仮想化プラットフォームでは、そのようなマッピングは、一般に、第２レベルアドレス変換（ＳＬＡＴ：ｓｅｃｏｎｄ  ｌｅｖｅｌ  ａｄｄｒｅｓｓ  ｔｒａｎｓｌａｔｉｏｎ）として知られる、プロセッサ１２によって制御される専用データ構造および機構によって達成される。普及しているＳＬＡＴ実装形態は、Ｉｎｔｅｌ（登録商標）プラットフォーム上の拡張ページテーブル（ＥＰＴ：ｅｘｔｅｎｄｅｄ  ｐａｇｅ  ｔａｂｌｅ）と、ＡＭＤ（登録商標）プラットフォーム上の高速仮想化インデックス付け（ＲＶＩ：ｒａｐｉｄ  ｖｉｒｔｕａｌｉｚａｔｉｏｎ  ｉｎｄｅｘｉｎｇ）／ネスト化ページテーブル（ＮＰＴ：ｎｅｓｔｅｄ  ｐａｇｅ  ｔａｂｌｅ）とを含む。そのようなシステムでは、仮想化された物理メモリは、ページとして当技術分野で知られているユニットごとに区分され、ページは、仮想化された物理メモリの最も小さいユニットを表し、ＳＬＡＴを介して個々に物理メモリにマッピングされ、すなわち、物理メモリと仮想化された物理メモリとの間のマッピングがページグラニュラリティを用いて実施される。すべてのページは、一般に、所定のサイズ、たとえば、４キロバイト、２メガバイトなどを有する。ページへの仮想化された物理メモリの区分は、通常、ハイパーバイザ３０によって構成される。いくつかの実施形態では、ハイパーバイザ３０はまた、ＳＬＡＴ構造、したがって、物理メモリと仮想化された物理メモリとの間のマッピングを構成する。いくつかの実施形態では、ＳＬＡＴデータ構造への（たとえば、ページテーブルへの）ポインタが、それぞれの仮想マシンのＶＭＳＯ内に記憶される。物理メモリアドレスへの仮想化された物理メモリアドレスの実際のマッピング（変換）は、ホストシステム１０のトランスレーションルックアサイドバッファ（ＴＬＢ）中の物理メモリアドレスをルックアップすることを含む。ＴＬＢミスの場合、アドレス変換は、ページテーブルおよび／またはページディレクトリのセットにおける連続アドレスルックアップのセットを含む、ページウォークを実施することと、それぞれのページに対してアドレスにページのオフセットを加算することなど、計算を実施することとを含む。
【００３１】
[0041]図３は、図２に示されている一実施形態におけるメモリアドレスのマッピングを示す。ゲストＶＭ３２は、ホストシステム１０上で実行される任意のゲスト仮想マシン、たとえば図２中のＶＭ３２ａ〜３２ｂを総称的に表す。ハイパーバイザ３０による公開に続いて、ゲストＶＭ３２は、それ自体の物理メモリ空間として仮想化された物理メモリ空間１１８を参照する。ゲストＶＭ３２内で実行されるソフトウェアオブジェクト（たとえば、プロセス）は、それぞれのＶＭのゲストＯＳ３４によって仮想メモリ空間２１８を割り当てられる。ソフトウェアオブジェクトが、空間２１８ａの例示的なメモリページ５０ａのコンテンツにアクセスすることを試みるとき、ゲストＯＳ３４によって構成および制御されるページテーブルに従って、ゲストＶＭ３２の仮想化されたプロセッサによって、ページ５０ａのアドレスが、仮想化された物理メモリ空間１１８のページ５０ｂのアドレスに変換される。ページ５０ｂのアドレスは、さらに、ハイパーバイザ３０によって構成されたＳＬＡＴを使用して、物理プロセッサ１６によって、物理メモリ１８内のページ５０ｃのアドレスにマッピングされる。
【００３２】
[0042]仮想アドレス空間１１８は、一般に、ゲスト物理メモリとして当技術分野で知られており、１つのそのようなメモリ空間内のアドレスは、ゲスト物理アドレス（ＧＰＡ：ｇｕｅｓｔ  ｐｈｙｓｉｃａｌ  ａｄｄｒｅｓｓ）と呼ばれる。アドレス空間２１８は、通常、ゲスト仮想メモリと呼ばれ、ゲスト仮想アドレス（ＧＶＡ：ｇｕｅｓｔ−ｖｉｒｔｕａｌ  ａｄｄｒｅｓｓ）によってインデックス付けされる。物理メモリ１８内のアドレスは、通常、ホスト物理アドレス（ＨＰＡ：ｈｏｓｔ−ｐｈｙｓｉｃａｌ  ａｄｄｒｅｓｓ）と呼ばれる。したがって、図３中のアドレス変換／マッピング５２は、ＧＶＡ−ＧＰＡ変換と呼ばれる。対照的に、アドレス変換５４は、一般に、ＧＰＡ−ＨＰＡ変換と呼ばれる。
【００３３】
[0043]アドレス変換５２および５４は、メモリページング機構およびページテーブルの利用に依拠する。ページテーブルは、概して、ページテーブルエントリの集合の形態の、仮想メモリページと物理メモリページとの間のマッピングを記憶する、データ構造である。ページテーブルエントリのフォーマットは、ハードウェアプラットフォームごとに、および／またはＯＳのバージョンごとに変動し得る。例示的なページテーブルエントリ５１が、図４に示されている。各そのようなページテーブルエントリは、仮想メモリページ、たとえば図３中のメモリ空間２１８内のページ５０ａに対応し得る。いくつかの実施形態では、ページテーブルエントリ５１は、特に、アドレスＡとフラグＦのセットとを記憶する、フィールドのセットを含む。アドレスＡは、一般に、物理アドレスであり、ハードウェア仮想化プラットフォームでは、それはＧＰＡを表し得る。階層ページテーブルを実装するシステムでは、アドレスＡは、別のページテーブルのアドレスを示し得る。フラグフィールドのコンテンツは、実装形態の間で変動する。いくつかの実施形態では、フラグは、たとえば、それぞれのページが（ディスクにスワップアウトされるのとは対照的に）メモリ中に存在するかどうか、それぞれのページのコンテンツが、それが最後にスワップインされてから変化したかどうか、それぞれのページ内のアドレスにアクセスする試みが（ＶＭｅｘｉｔまたは仮想化例外などの）障害を生成するかどうか、それぞれのページが、ユーザモードで実行されるプロセスによってアクセスされ得るかどうかなどを示す、制御ビットである。他のフラグ／制御ビットは、メモリアクセス許可のセット（たとえば、読取り、書込み、実行）を示し得る。いくつかの実施形態では、ページテーブルエントリ５１は、さらに、それぞれのメモリ空間の識別子（たとえば、プロセスＩＤ）、および／またはオペレーティングシステムのメモリ管理構成要素によって使用される様々な統計情報を記憶し得る。
【００３４】
[0044]いくつかの実施形態では、ハイパーバイザ３０は、物理メモリ１８の表現を含むそれ自体の仮想メモリ空間３１８をセットアップし、空間３１８中のアドレスを物理メモリ１８中のアドレスにマッピングするための変換機構（たとえば、ページテーブル）を利用する。図３では、そのような例示的なマッピングは、仮想空間３１８内のページ５０ｆのアドレスをページ５０ｃの物理アドレスに変換し、ページ５０ｄのアドレスをページ５０ｅの物理アドレスに変換する。そのようなマッピングは、ハイパーバイザ３０のプロセッサ特権レベルにおいて実行される潜在的に任意のソフトウェアオブジェクトが、ホストシステム１０上で動作する様々なＶＭ内で実行されるソフトウェアオブジェクトに属するメモリページを管理することを可能にする。特に、メモリイントロスペクションエンジン４０は、ゲストＶＭ３２内で実行されるプロセスによって使用される物理メモリページへの／からのアクセスを列挙し、読み取り、書き込み、および制御し得る。
【００３５】
[0045]図５は、本発明のいくつかの実施形態による、イベントフィルタ４２の例示的な構成要素を示す。フィルタ４２は、図２中のイベントフィルタ４２ａ〜４２ｂのいずれかを総称的に表す。いくつかの実施形態では、イベントフィルタ４２は、それぞれのゲストＶＭのための仮想化例外を扱うように構成されたソフトウェア構成要素としてプロセッサ１２に登録される。この登録は、それぞれのゲストＶＭ内のゲストプロセスの実行中に発生するイベントが仮想化例外をトリガするとき、プロセッサ１２が、それぞれのゲストプロセスの実行を中断し、フィルタ４２を実行することに切り替えることを意味する。フィルタ４２は、適格性チェッカー４６と、適格性チェッカー４６に接続された通知生成器４８とを含み得る。
【００３６】
[0046]いくつかの実施形態では、適格性チェッカー４６は、マルウェアを示すかまたは他のやり方でコンピュータセキュリティに関連すると見なされたイベントのサブセットを作り出すために、仮想化例外をトリガしたイベントをフィルタ処理するように構成される。例示的なセキュリティ関連イベントは、たとえば、ページテーブルエントリのフィールドを上書きする試み、メモリ割振り機能など、重要なＯＳ構成要素を実行する試み、特定のメモリセクションに／からコードを読み取るか、書き込むか、または実行する試みなどを含み得る。通知生成器４８は、イントロスペクションエンジン４０に、適格性チェッカー４６によって作り出されたイベントの選択されたサブセットの発生について通知するように構成され得る。通知機構は、ＶＭＣＡＬＬなどの特権的プロセッサ命令を介してＶＭ終了イベントをトリガすることなど、ハードウェア仮想化の当技術分野で知られている任意の方法を利用し得る。通知生成器４８は、たとえば、フィルタ４２とエンジン４０との間で共有されるメモリの所定のセクションにそれぞれのデータを書き込むことによって、通知されたイベントの詳細またはパラメータなど、データをイントロスペクションエンジン４０に送信し得る。
【００３７】
[0047]いくつかの実施形態では、イベントフィルタ４２は、仮想化例外をトリガしたイベントの発生をエミュレートするように構成されたエミュレータ４７をさらに備える。エミュレーションは、例外が一般に、それぞれのイベントがメモリへのおよび／またはプロセッサの状態への変更を引き起こす前にトリガされるので、必要とされ得る。仮想化例外がメモリアクセス許可の違反によってトリガされる一例では、データを、書込み不可能と見なされるロケーションに書き込まれるようにする、ＭＯＶなどのプロセッサ命令が、データがそれぞれのロケーションに書き込まれる前に仮想化例外を生成する。単にそれぞれのプロセス／アプリケーションを再起動することは、違反命令を再実行する試みを生じ、これは、新しい例外をトリガする。この無限サイクルから逃れるために、いくつかの実施形態は、最初に例外をトリガしたプロセス／アプリケーションを再起動する前にそれぞれのイベントの発生をエミュレートするためにエミュレータ４７を使用する。上記の例では、エミュレータ４７は、ＭＯＶ命令の実際の実行から生じたであろう変更を実施し得、すなわち、エミュレータ４７は、実際に、データをそれの意図されたメモリロケーションに書き込み得る。
【００３８】
[0048]図６は、本発明のいくつかの実施形態による、ホストシステム１０上にコンピュータセキュリティをセットアップするために実施されるステップの例示的なシーケンスを示す。一般的なシナリオでは、システム管理者が、保護を必要とする各ホストにセキュリティアプリケーションをインストールし得る。セキュリティアプリケーションは、ハイパーバイザ３０、イントロスペクションエンジン４０、イベントフィルタ４２など、様々な構成要素を含み得る。ステップの図示されたシーケンスは、たとえば、それぞれのセキュリティアプリケーションのインストーラユーティリティによって行われ得る。インストーラは、最初に、最も強いプロセッサ特権レベル（たとえば、ルートモード、リング−１）においてプロセッサ１２を引き継ぎ、ハイパーバイザ３０をインストールし得る。インストーラは、次いで、イントロスペクションエンジン４０を起動し得る。
【００３９】
[0049]いくつかの実施形態では、ハイパーバイザ３０および／またはイントロスペクションエンジン４０は、それぞれのソフトウェア構成要素の信用性を保証するために、セキュアブート機構または当技術分野で知られている別の形態の認証を使用して起動される。セキュアブーティングは、リモート認証サーバとの認証交換（たとえば、ハッシュ検証）を含み得る。例示的な一実施形態では、セキュアブートは、Ｉｎｔｅｌ（登録商標）プラットフォーム上のトラステッドプラットフォームモジュール（ＴＰＭ）など、ホストシステム１０のセキュアストレージハードウェア構成要素を利用し、インテル（登録商標）のトラステッドエグゼキューションテクノロジー（ＴＸＴ）などの完全性証明（ｉｎｔｅｇｒｉｔｙ  ａｔｔｅｓｔａｔｉｏｎ）機構をさらに利用し得る。
【００４０】
[0050]各ゲストＶＭを起動したことに応答して、ステップ４０７は、それぞれのＶＭ内で発生する仮想化例外を扱うように構成されたイベントフィルタ４２をインストールする。いくつかの実施形態では、イベントフィルタ４２は、潜在的に悪意のあるソフトウェアによるフィルタ４２の検出を回避するために、それぞれのゲストＶＭに内密にドロップされ得る。そのような注入を達成するために、イントロスペクションエンジン４０は、メモリの未使用セクション内に、またはドライバなどの別のソフトウェアオブジェクトによって現在使用されているメモリページ内にフィルタ４２を隠し得る。
【００４１】
[0051]いくつかの実施形態では、イントロスペクションエンジンは、それぞれのＶＭ内で実行される他の構成要素からフィルタ４２を隔離することによってイベントフィルタ４２を保護する。一例では、エンジン４０は、それぞれのゲストＶＭによって使用されるゲスト物理メモリ空間とは別個の（たとえば、図３に示されている一実施形態における空間１１８とは別個の）シャドーメモリ空間をセットアップするためにＳＬＡＴ手段を使用する。実際には、そのようなシャドーメモリ空間をセットアップすることは、エンジン４０が、イベントフィルタ４２に割り当てられた第２レベルのページテーブル（たとえば、Ｉｎｔｅｌ（登録商標）プラットフォーム上のＥＰＴ）を構成することを含み得る。別個のページテーブルを用いて動作することは、ＶＭ３２内で実行される他のプロセスが、イベントフィルタ４２に属するデータを変更することができないという意味で、そのようなプロセスからフィルタ４２を隔離する。フィルタ４２を隔離することは、フィルタ４２を実行するとき、アドレス変換を行うために、ＶＭ３２に関連するページテーブルを使用することからシャドーページテーブルを使用することに切り替えるようにプロセッサ１２を構成することをさらに含み得る。ページテーブルを切り替えることは、ゲストＶＭ３２を終了することなしに発生し得、したがって、それは、ＶＭ終了イベントの計算コストをもたらさない。ページテーブル切替えを達成するための１つの例示的なやり方は、イベントフィルタ４２が、ある特権的命令（たとえば、Ｉｎｔｅｌ（登録商標）プラットフォーム上のＶＭＦＵＮＣ）を発行することを含み、これは、切替えのためのキューとしてプロセッサ１２によって解釈され得る。
【００４２】
[0052]ステップ４０８〜４１０のシーケンスにおいて、イントロスペクションエンジン４０は、それぞれのゲストＶＭのセキュリティにとって重要であるアセットを記憶するメモリページのセットを識別することに進み得る。そのようなアセットの例としては、メモリ割振り、メモリ許可管理、およびレジストリ編集など、動作を実施するＯＳの関数、たとえば、ＮＴＤＬＬ．ＤＬＬおよびＫＥＲＮＥＬ３２．ＤＬＬライブラリの選択された関数に属するコードがある。Ｌｉｎｕｘ（登録商標）ＯＳでは、セキュリティ関連関数は、ＬＩＢＣ．ＳＯの選択された関数を含み得る。セキュリティにとって重要と見なされる他のアセットは、ゲストＶＭ内で実行されるプロセスに関連するページテーブルを含む。
【００４３】
[0053]ＯＳの特定の関数など、いくつかのアセットのメモリロケーションは、ＯＳ３４のいくつかのデータ構造をパースすることによって取得され得る。イントロスペクションエンジン４０は、さらに、それぞれのゲストＶＭ内で現在ロードされているおよび／または実行されているプロセスのセットを追跡し得る。いくつかの実施形態は、当技術分野で知られている任意の方法を使用して、ゲストＶＭ内の新しいプロセス／スレッドの起動を示すイベントをリッスンし得る。いくつかの例示的な実施形態は、アクティブプロセスのリストを管理するＯＳの機構をインターセプトする。たとえば、Ｗｉｎｄｏｗｓ（登録商標）では、プロセスが作成されるたびに、それぞれのプロセスのインジケータが、アクティブプロセスのリストに挿入され、インジケータは、それぞれのプロセスの終了時にリストから除去される。いくつかの実施形態では、プロセスを起動すると、ＯＳ３４はまた、それぞれのプロセスに関連するリソースを管理するためにＯＳ３４によって使用されるデータを含むプロセス環境ブロック（ＰＥＢ）として知られるプロセス固有データ構造をセットアップする。アクティブプロセスのリストにターゲットプロセスを挿入するようにとのＯＳ命令をインターセプトすることによって、エンジン４０は、それぞれのＰＥＢのメモリアドレスなど、さらなる情報を取得し得る。Ｗｉｎｄｏｗｓ（登録商標）では、ＰＥＢの仮想アドレスは、エグゼクティブプロセスブロック（ＥＰＲＯＣＥＳＳ）として知られるデータ構造に記憶される。そのようなデータ構造をさらにパースすることによって、イントロスペクションエンジン４０は、それぞれのプロセスによってロードされる主要な実行ファイルのおよび／またはライブラリのメモリロケーション、ならびにそれぞれのプロセスに関連するページテーブルのメモリロケーション（たとえばｘ８６プラットフォームにおけるページディレクトリベースレジスタ−ＰＤＢＲ）などの情報を取得し得る。
【００４４】
[0054]現在ロードされているおよび／または実行されている様々なプロセスに対応するページテーブルエントリのメモリロケーションは、たとえば、プロセッサ１２の制御レジスタ（たとえば、ｘ８６プラットフォームにおけるＣＲ３レジスタ）のコンテンツを読み取ることと、ページテーブルウォークを実施することとによって取得され得る。代替実施形態は、それぞれのＥＰＲＯＣＥＳＳ構造の固有フィールドから各プロセスに関連するページテーブルのアドレスを読み取り得る。
【００４５】
[0055]セキュリティクリティカルアセットのメモリロケーションの決定を容易にするために、イントロスペクションエンジン４０は、フィルタ４２と共同し得るか、またはそれぞれのゲストＶＭにヘルパーオブジェクトをドロップし得る。そのようなストラテジーは、セマンティックギャップを埋めるように設計される。それぞれのＶＭの外部の位置から仮想マシンの内部の働きに関する情報をあらわにすることは、一般に、それぞれのＶＭ内からそれをあらわにすることよりもはるかに困難である。ＶＭ内で実行されるイベントフィルタ４２などの構成要素は、様々なアセットのメモリアドレスなどの情報を取得するために、ＯＳの設備を使用し、次いで、本明細書で説明される通知機構を使用してイントロスペクションエンジン４０にそのような情報を通信し得る。
【００４６】
[0056]いくつかの実施形態では、ステップ４１０（図６）において、イントロスペクションエンジン４０および／またはフィルタ４２は、保護されたアセットの一部を含んでいるメモリセクションの列挙を含む保護されたメモリセクションの一覧表（ｒｏｓｔｅｒ）をアセンブルし得る。例示的な一覧表エントリは、セクションのメモリアドレス（またはメモリページの識別子およびページ境界に関するオフセット）と、それぞれのセクションのサイズのインジケータとを含み得る。メモリアドレスは、ＧＰＡ、ＨＰＡなどを含み得る。保護されたセクションのサイズは、ページサイズよりも小さくなり得る。一覧表エントリは、それぞれのセクション内に記憶されたアセットタイプ（たとえば、ドライバ、ページテーブル、プライベートデータなど）のインジケータをさらに含み得る。一覧表エントリ中にアセットタイプインジケータを含めることは、たとえばユーザのプライベートファイルを保護することとは別個の様式でページテーブルを保護するために、保護されたアセットのタイプに従って、フィルタ４２がイベント適格性基準を選択的に適用することを可能にすることによって、イベントフィルタ４２の実行を容易にし得る。いくつかの実施形態では、一覧表は動的に更新され、（たとえば、新しいプロセス起動を介して）新しいアセットが出現したとき、保護されたアセットの一部を記憶するセクションが、識別され、一覧表に追加される。アセットが保護をもはや必要としないとき（たとえば、プロセスが終了されるとき）またはそれぞれのアセットが別のメモリロケーションに移動するとき、使われていないセクションに対応するエントリが一覧表から除去され得る。
【００４７】
[0057]セキュリティクリティカルオブジェクトのメモリロケーションを決定したことに応答して、ステップ４１２は、保護されたメモリセクションへのアクセス許可を設定し得る。最新のコンピューティングシステムでは、許可は、ページグラニュラリティを用いて設定されるにすぎないことがあるので、ステップ４１２は、それぞれのメモリセクションをホストするメモリページへのアクセス許可を設定することを含み得る。これは、たとえばハイパーバイザ３０によって構成されたＳＬＡＴ機構を使用して行われ得る。許可は、イベントフィルタ４２が、不適切であるまたはマルウェアを示すと見なされた様式での、保護されたメモリセクションにアクセスする試みを検出することを可能にするように設定され得る。保護されたセクションからのデータの無認可の読取りを防ぐために（たとえば、データ盗難またはランサムウェア攻撃を避けるために）、例示的な実施形態は、それぞれのデータをホストするメモリページを読取り不可能としてマークし得る。それぞれのページからデータを読み取る試みが、プロセッサ例外／障害をその後トリガし、これは、その試みのインジケータとして働き得る。ページテーブルエントリの試み変更を検出するために、それぞれのページテーブルエントリをホストするメモリページが、書込み不可能としてマークされ得る。したがって、それぞれのメモリページに書き込むいかなる試みも、その試みの検出を有効にする。同様に、あるＯＳ関数を実行する試みを検出するために、いくつかの実施形態は、それぞれの関数のコードを含んでいるページを実行不可能としてマークする。
【００４８】
[0058]いくつかの実施形態では、ステップ４１４（図６）において、イントロスペクションエンジン４０は、そのようなメモリアクセス許可の違反に応答して仮想化例外をトリガするようにプロセッサ１２を構成し得る。さらなるステップ４１６は、イベントフィルタ４２を仮想化例外のためのハンドラとして登録し、通知ハンドラ４４をＶＭ終了イベントのためのハンドラとして登録し得る。そのような登録に応答して、メモリアクセス許可の違反は、イントロスペクションエンジン４０とは対照的にイベントフィルタ４２によって扱われる。一方、ＶＭ終了イベントは、通知ハンドラ４４を介してイントロスペクションエンジン４０に通知される。
【００４９】
[0059]図７は、本発明のいくつかの実施形態による、イベントフィルタ４２によって実施されるステップの例示的なシーケンスを示す。仮想化例外のためのハンドラとして登録されると、イベントフィルタ４２は、ゲストソフトウェアの実行中に仮想化例外をトリガするイベントの発生を検出する。そのようなイベントは、本明細書ではトリガイベントと呼ばれる。トリガイベントを検出したことに応答して、ステップ４３６〜４３８のシーケンスにおいて、フィルタ４２は、それぞれのトリガイベントのイベントタイプ、ならびにイベントパラメータのセットを決定し得る。いくつかの実施形態では、現在の仮想化例外の原因のインジケータが、それぞれのゲストＶＭのＶＭＳＯの固有フィールドに記憶される。したがって、イベントの性質に関する手がかりが、それぞれのゲストＶＭのＶＭＳＯのいくつかのフィールドから抽出され得る。書込み不可能としてマークされたページに書き込む試みによって例外がトリガされた一例では、イベントパラメータは、書込み試みのメモリアドレスと、プロセッサがそれぞれのメモリロケーションに書き込むことを試みていた値とを含み得る。
【００５０】
[0060]いくつかの実施形態では、イベントフィルタ４２は、イントロスペクションエンジン４０に、セキュリティについて関連すると見なされたトリガイベントのサブセットの発生について選択的に通知する。イベントは、適格性基準のセットに従って選択され得、適格と見なされたイベントのみが、イントロスペクションエンジン４０に通信され得る。イントロスペクションエンジン４０に通信するために適格と見なされないトリガイベントの発生を検出したことに応答して、いくつかの実施形態は、検出されたイベントをエミュレートするためにエミュレータ４７を利用する（図７中のステップ４４４）。その後、フィルタ４２は、ＶＭ終了をトリガすることなしに、それぞれのＶＭ内のゲストソフトウェアの実行を再開するように、プロセッサ１２にシグナリングし得る。イベントが適格性基準を満たすとき、ステップ４４２において、いくつかの実施形態は、ＶＭ終了イベントを生成し、したがってイントロスペクションエンジン４０にそれぞれのトリガイベントの発生を通知する。ＶＭ終了イベントを生成することは、たとえば、フィルタ４２がＩｎｔｅｌ（登録商標）プラットフォーム上のＶＭＣＡＬＬなどの特権的プロセッサ命令を発行することを含み得る。エンジン４０にイベントパラメータを通信するために、イベントフィルタ４２のいくつかの実施形態は、ＶＭ終了イベントを生成する前に、フィルタ４２とイントロスペクションエンジン４０との間で共有されるメモリのセクションにそれぞれのパラメータを書き込む。
【００５１】
[0061]図８〜図９は、本発明のいくつかの実施形態による、検出されたトリガイベントがイントロスペクションエンジン４０への通知に適格であるかどうかを判定するために適格性チェッカー４６（図５）によって行われるステップの例示的なシーケンスを示す。そのようなシーケンスは、図７中のステップ４４０の一部として実行され得る。図８と図９の両方は、インターセプトされたトリガイベントが、アクセス許可に違反する様式でメモリにアクセスする試み、たとえば書込み不可能としてマークされたページに書き込む試みを含むことを仮定する。
【００５２】
[0062]ステップ４５２（図８）において、チェッカー４６は、例外を生成したメモリページ、すなわち、アクセス試みのターゲットにされたメモリページを識別し得る。応答して、チェッカー４６は、ターゲットメモリページが、保護されたメモリセクション、すなわち、保護されたアセットの少なくとも一部を含んでいるかどうかを判定するために、現在保護されているメモリセクションの一覧表をルックアップし得る。ターゲットメモリページがいかなる保護されたアセットをも保持しないとき、ステップ４６０において、フィルタは、現在のトリガイベントがイントロスペクションエンジン４０への通知を正当化しないと判定し得る。ターゲットメモリページが、保護されたアセットの一部を含んでいるとき、さらなるステップ４５６は、たとえばアクセス試みのアドレスに従って、トリガイベントが、保護されたメモリセクションに実際にアクセスする試みを含むかどうかを判定し得る。トリガイベントが、保護されたメモリセクションに実際にアクセスする試みを含まないとき、トリガイベントは不適格と見なされ得る。対照的に、トリガイベントが、保護されたメモリにアクセスする試みに等しいとき、チェッカー４６は、現在のトリガイベントが通知に適格であると判定し得る。
【００５３】
[0063]図９は、本発明のいくつかの実施形態による、イベントが通知に適格であるかどうかを判定するために適格性チェッカー４６によって行われるステップの別の例示的なシーケンスを示す。図９の例は、悪意のある変更からページテーブルを保護するように適合されている。いくつかの実施形態では、例示的な適格トリガイベントは、ページテーブルエントリのフラグ／制御ビット（たとえば、存在する／スワップアウトされる、読取り／書込み、エグゼキュート−ディセーブル（ｅｘｅｃｕｔｅ−ｄｉｓａｂｌｅ）、ユーザ／スーパーバイザーなど、プロパティを表すビット）の値を変更する試みを含む。他の例示的な適格トリガイベントは、それぞれのページテーブルエントリの物理アドレスフィールド（図４中のＡフィールド）を上書きする試みを含む。そのようなアクションは、しばしば、悪意のあるソフトウェアが、それぞれのプロセスのメモリ空間にコードを注入するために、それぞれのプロセスの実行をハイジャックすることを試みることなどを示す。
【００５４】
[0064]図１０は、本発明のいくつかの実施形態による、イントロスペクションエンジン４０によって実施されるステップの例示的なシーケンスを示す。エンジン４０は、フィルタ４２からの通知を待ち得、通知は、それぞれのゲストＶＭ内の特定のタイプのトリガイベントの発生を示し、それぞれのトリガイベントは、イベントフィルタ４２による通知に適格と見なされる。通知に応答して、ステップ４８６において、エンジン４０は、それぞれのイベントがコンピュータセキュリティ脅威を示すかどうかを判定するために、それぞれのイベントを分析する。そのような分析は、当技術分野での任意の方法、たとえば様々なヒューリスティックおよび決定ツリー、イベント相関方法、機械学習アルゴリズムなどを利用し得る。ステップ４８６において、イントロスペクションエンジン４０は、イベントフィルタ４２によって通信されるイベントパラメータを使用し得、および／あるいは現在のトリガイベントに関する、または概してそれぞれのゲストＶＭ内で現在実行されているソフトウェアに関する追加情報をあらわにするために、それ自体のフォレンジック（ｆｏｒｅｎｓｉｃ）アクティビティをもつことがある。通知されたイベントがページテーブルエントリの制御ビットを上書きする試みを含む１つの例示的な分析では、ステップ４８６において、エンジン４０は、それぞれの試みが正当なメモリ管理操作としてＯＳによって行われたのか、または代わりに別のソフトウェアエンティティによって行われたのかを判定し、別のソフトウェアエンティティによって行われた場合、試みは、マルウェアを示すと見なされ得る。
【００５５】
[0065]それぞれのトリガイベントがセキュリティ脅威を示さないとステップ４８６の分析が決定したとき、いくつかの実施形態では、イントロスペクションエンジン４０は、それぞれのトリガイベントをエミュレートし、それぞれのゲストＶＭの実行を再開するようにプロセッサ１２に命令し得る。イベントが脅威を示すとき、エンジン４０は、脅威を緩和するための保護アクションをとり得る（たとえば、それぞれのゲストＶＭ内で実行されるマルウェアエージェントを除去するかまたは場合によっては無能力にするためにクリーンアップ動作を行う、ホストシステム１０のユーザに通知するなど）。
【００５６】
[0066]上記で説明された例示的なシステムおよび方法は、コンピュータまたはスマートフォンなど、ホストシステムが、ハードウェア仮想化構成において動作するとき、効率的にコンピュータセキュリティタスクを行うことを可能にする。ホストシステムは、ゲスト仮想マシン内で、オペレーティングシステムと、ソフトウェアアプリケーションのセットとを実行するように構成される。いくつかの実施形態では、セキュリティアプリケーションは、少なくとも２つの構成要素、すなわち、それぞれの仮想マシン内で実行されるイベントフィルタと、それぞれの仮想マシンの外部で、たとえばハイパーバイザのレベルでまたは別個の仮想マシン中で実行されるイントロスペクションエンジンとを含む。プロセッサは、アクセス許可に違反する様式でのメモリにアクセスする試みを検出したことに応答して、仮想化例外を生成するように構成され得る。いくつかの実施形態は、イベントフィルタ構成要素を仮想化例外のためのハンドラとして登録する。
【００５７】
[0067]コンピュータセキュリティは、保護されたオブジェクトに属するデータを記憶するメモリのセクションへのアクセス許可を設定することによって強化される。それぞれのアクセス許可に違反する様式での保護されたメモリセクションのいずれかにアクセスする試みが、仮想化例外をトリガし、したがってイベントフィルタによって検出される。いくつかの実施形態では、イベントフィルタは、疑わしいまたはマルウェアを示すと見なされたアクセス試みのサブセットを選択するために、適格性基準のセットに従って、検出されたメモリアクセス試みをフィルタ処理する。例示的な適格イベントは、たとえば、仮想マシン内で実行されるプロセスのためのメモリアドレス変換を実施するために使用されるページテーブルエントリを上書きする試みを含み得る。適格と見なされたイベントは、たとえばハイパーコールを介して、保護された仮想マシンの外部で実行されるイントロスペクションエンジンに通知される。イントロスペクションエンジンは、通知されたイベントを、それらが悪意のある攻撃を示すかどうかを判定するために分析し得る。
【００５８】
[0068]概して、仮想マシンの外部で実行されるソフトウェア構成要素は、それぞれのＶＭ内で実行される構成要素よりも、ＶＭ内で実行される悪意のあるソフトウェアの影響を実質的に受けにくい。したがって、セキュリティ観点から、保護されたＶＭの外部に重要なセキュリティ構成要素を配置することが有利であり得る。しかしながら、それぞれのＶＭの外部で実行される構成要素に、データを通信することおよび／またはセキュリティ関連イベントの発生をシグナリングすることは、一般に、ＶＭ終了を必要とし、これは、計算リソースに関して比較的コストがかかる。
【００５９】
[0069]従来のコンピュータセキュリティソフトウェアは、一般に、保護された仮想マシンの完全に内部または完全に外部のいずれかに配置される。そのようなシステムとは対照的に、本発明のいくつかの実施形態は、ハイブリッド構成を含み、ある構成要素（イベントフィルタ）は、保護されたＶＭ内で実行され、別の構成要素（イントロスペクションエンジン）は、保護されたＶＭの外部で実行される。イベント検出は、内部構成要素によって実施され、インターセプトされたイベントの分析の大半は、外部構成要素によって実施される。そのような構成は、セキュリティと速度との間の平衡を達成し得、したがってセキュリティに関して妥協することなしにユーザエクスペリエンスを改善する。セキュリティをさらに高めるために、いくつかの実施形態は、内部構成要素のサイズおよび複雑さを最小限に抑える。好ましい実施形態では、イベントフィルタは、イントロスペクションエンジンへの通知のためにイベントのサブセットを選択するフィルタとして働くにすぎない。そのような軽量構成要素は、オペレーティングシステムまたはＶＭ内で実行される悪意のあるソフトウェアの知識なしに、保護されたＶＭに比較的容易に注入され得る。次いで、より高性能のイベント分析が、外部構成要素、すなわち、イントロスペクションエンジンによって行われ得る。
【００６０】
[0070]本発明のいくつかの実施形態は、ゲストソフトウェアの実行中に検出されたすべてのイベントが、ＶＭ終了の費用を正当化するとは限らないという観測に依拠する。たとえば、メモリアクセス許可は、ページグラニュラリティを用いて設定されるにすぎないことがあるので、メモリページの一部分のみを占有する項目を保護することは、同じメモリページ内にホストされた他の項目にアクセスする正当な試みによる膨大な数の許可違反を意図せずに引き起こし得る。別の例では、ページテーブルへのすべての変更が疑わしいとは限らず、オペレーティングシステムは、正当なメモリ管理アクティビティの一部として、制御ビットおよびアドレスの変更を頻繁に行う。正当なイベントをセキュリティソフトウェアに通知することは、計算リソースを不必要に消費する。
【００６１】
[0071]したがって、いくつかの実施形態は、不要なＶＭ終了を回避するためのフィルタとして仮想化例外の機構を利用する。フィルタは、イベントがＶＭの外部で通知されるべきであるか否かを判定するための特定の適格性基準を用いて動作する。たとえば、保護されたＶＭ内で実行されるイベントフィルタは、各検出されたメモリアクセス違反を分析し、それが、同じページ内に記憶された他のデータにアクセスする試みとは対照的に、保護された項目にアクセスする試みによって実際に引き起こされたかどうかを判定し得る。ページテーブルを保護することを試みるとき、イベントフィルタは、試みられた変更が、特定の項目、たとえば、ある制御ビットをターゲットにするかどうかを検査し得る。フィルタは、次いで、メモリイントロスペクションエンジンに適格イベントのみを通信し得る。
【００６２】
[0072]本発明のいくつかの実施形態の適用例は、コンピュータセキュリティの分野を越えて十分に拡張し得る。かなりの割合のＶＭ終了イベントを回避することによって、イベントフィルタは、概して、ハードウェア仮想化プラットフォームの動作を加速し得る。どのＶＭ内イベントが内部で処理される（または無視される）か、およびどのイベントが外部に通知されるかを選択するための基準は、所望の最適化を達成するために調整され得る。
【００６３】
[0073]上記実施形態が本発明の範囲から逸脱することなく多くのやり方で変更され得ることは、当業者にとって明らかであろう。したがって、本発明の範囲は、以下の特許請求の範囲およびそれらの法的均等物によって決定されるべきである。
【図１】
2020502638.tif 000003
【図２】
2020502638.tif 000004
【図３】
2020502638.tif 000005
【図４】
2020502638.tif 000006
【図５】
2020502638.tif 000007
【図６】
2020502638.tif 000008
【図７】
2020502638.tif 000009
【図８】
2020502638.tif 000010
【図９】
2020502638.tif 000011
【図１０】
2020502638.tif 000012
【国際調査報告】
2020502638.tif 000013
2020502638.tif 000014