(57)【特許請求の範囲】
【請求項１】
コンピュータで実行する方法であって、
１つまたは複数の実コンピュータプロセッサを複数の仮想コンピュータプロセッサへ仮想化するステップであって、前記複数の仮想コンピュータプロセッサが各々のパーティションに関連づけられる、ステップを含み、
前記仮想コンピュータプロセッサは、
第２のパーティションに関連づけられたオペレーティングシステム仮想プロセッサであって、自身のオペレーティングシステムメモリを変更しかつ前記１つまたは複数の実コンピュータプロセッサの処理時間のうちの一部の処理時間において使用する特権を有しているオペレーティングシステム仮想プロセッサと、
第２のパーティションに関連づけられた保護エージェント仮想プロセッサであって、前記オペレーティングシステム仮想プロセッサからアクセスできない自身の保護エージェントメモリを変更しかつ前記１つまたは複数の実コンピュータプロセッサの前記一部の処理時間とは異なる処理時間において使用する特権を有している保護エージェント仮想プロセッサと、
を含み、
前記方法は更に、
前記第２のパーティション内に存在する保護エージェントを前記保護エージェント仮想プロセッサに実行させて前記オペレーティングシステムメモリの一部が変更されたか否かを判断するステップと、
バーチャルマシンモニタのインターセプトマネージャを、前記第１のパーティション内で前記オペレーティングシステムメモリの一部が変更されたこととの指標を受信できるように変更するステップと、
前記バーチャルマシンモニタの前記インターセプトマネージャが、前記オペレーティングシステムメモリの前記一部が変更されたと前記保護エージェントが判断した指標を受信するステップと、
前記指標の受信に応じて、対応するオペレーティングシステムをシャットダウンするステップと、
を更に含むことを特徴とする方法。
【請求項２】
前記保護エージェント仮想プロセッサに前記保護エージェントを実行させるステップは、前記保護エージェント仮想プロセッサに指定された時間間隔で前記保護エージェントを実行させることを含むことを特徴とする請求項１記載の方法。
【請求項３】
前記保護エージェント仮想プロセッサは、前記保護エージェントを実行することだけを行うことを特徴とする請求項１記載の方法。
【請求項４】
前記保護エージェント仮想プロセッサは、バーチャルマシンモニタによってスケジューリングされて、前記オペレーティングシステムメモリに付随するオペレーティングシステムにトランスペアレントであることを特徴とする請求項１記載の方法。
【請求項５】
１つまたは複数の実コンピュータプロセッサを複数の仮想コンピュータプロセッサへ仮想化するコンピュータデバイスであって、前記複数の仮想コンピュータプロセッサが各々のパーティションに関連づけられる、コンピュータデバイスを備え、
前記仮想コンピュータプロセッサは、
第２のパーティションに関連づけられたオペレーティングシステム仮想プロセッサであって、自身のオペレーティングシステムメモリを変更しかつ前記１つまたは複数の実コンピュータプロセッサの処理時間のうちの一部の処理時間において使用する特権を有しているオペレーティングシステム仮想プロセッサと、
第２のパーティションに関連づけられた保護エージェント仮想プロセッサであって、前記オペレーティングシステム仮想プロセッサからアクセスできない自身の保護エージェントメモリを変更しかつ前記１つまたは複数の実コンピュータプロセッサの前記一部の処理時間とは異なる処理時間において使用する特権を有している保護エージェント仮想プロセッサと、
を含み、
前記コンピュータデバイスは更に、
前記第２のパーティション内に存在する保護エージェントを前記保護エージェント仮想プロセッサに実行させて前記オペレーティングシステムメモリの一部が変更されたか否かを判断し、
前記コンピュータデバイスは、バーチャルマシンモニタのインターセプトマネージャを、前記第１のパーティション内で前記オペレーティングシステムメモリの一部が変更されたこととの指標を受信できるように変更し、
前記バーチャルマシンモニタの前記インターセプトマネージャが、前記オペレーティングシステムメモリの前記一部が変更されたと前記保護エージェントが判断した指標を受信し、
前記コンピュータデバイスは、前記指標の受信に応じて、対応するオペレーティングシステムをシャットダウンすることを特徴とするシステム。
【請求項６】
前記コンピュータデバイスは、さらに、前記保護エージェント仮想プロセッサに前記保護エージェントを実行させるステップは、前記保護エージェント仮想プロセッサに指定された時間間隔で前記保護エージェントを実行させることを含むことを特徴とする請求項５記載のシステム。
【請求項７】
前記保護エージェント仮想プロセッサは、前記保護エージェントを実行することだけを行うことを特徴とする請求項５記載のシステム。
【請求項８】
前記保護エージェント仮想プロセッサは、バーチャルマシンモニタによってスケジューリングされて、前記オペレーティングシステムメモリに付随するオペレーティングシステムにトランスペアレントであることを特徴とする請求項５記載のシステム。
【請求項９】
コンピュータ可読命令を記録したコンピュータ可読記録媒体であって、前記コンピュータ可読命令はコンピュータデバイスに、
１つまたは複数の実コンピュータプロセッサを複数の仮想コンピュータプロセッサへ仮想化するステップであって、前記複数の仮想コンピュータプロセッサが各々のパーティションに関連づけられる、ステップを含み、
前記仮想コンピュータプロセッサは、
第２のパーティションに関連づけられたオペレーティングシステム仮想プロセッサであって、自身のオペレーティングシステムメモリを変更しかつ前記１つまたは複数の実コンピュータプロセッサの処理時間のうちの一部の処理時間において使用する特権を有しているオペレーティングシステム仮想プロセッサと、
第２のパーティションに関連づけられた保護エージェント仮想プロセッサであって、前記オペレーティングシステム仮想プロセッサからアクセスできない自身の保護エージェントメモリを変更しかつ前記１つまたは複数の実コンピュータプロセッサの前記一部の処理時間とは異なる処理時間において使用する特権を有している保護エージェント仮想プロセッサと、
を含み、
前記方法は更に、
前記第２のパーティション内に存在する保護エージェントを前記保護エージェント仮想プロセッサに実行させて前記オペレーティングシステムメモリの一部が変更されたか否かを判断するステップと、
バーチャルマシンモニタのインターセプトマネージャを、前記第１のパーティション内で前記オペレーティングシステムメモリの一部が変更されたこととの指標を受信できるように変更するステップと、
前記バーチャルマシンモニタの前記インターセプトマネージャが、前記オペレーティングシステムメモリの前記一部が変更されたと前記保護エージェントが判断した指標を受信するステップと、
前記指標の受信に応じて、対応するオペレーティングシステムをシャットダウンするステップと、
を更に含む方法を実行させることを特徴とするコンピュータ可読命令を記録したコンピュータ可読記録媒体。
【請求項１０】
前記保護エージェント仮想プロセッサに前記保護エージェントを実行させるステップは、前記保護エージェント仮想プロセッサに指定された時間間隔で前記保護エージェントを実行させることを含む方法を実行させることを特徴とする請求項９記載のコンピュータ可読命令を記録したコンピュータ可読記録媒体。
【請求項１１】
前記保護エージェント仮想プロセッサは、前記保護エージェントを実行することだけを行うことを特徴とする請求項９記載のコンピュータ可読命令を記録したコンピュータ可読記録媒体。
【請求項１２】
前記保護エージェント仮想プロセッサは、バーチャルマシンモニタによってスケジューリングされて、前記オペレーティングシステムメモリに付随するオペレーティングシステムにトランスペアレントであることを特徴とする請求項９記載のコンピュータ可読命令を記録したコンピュータ可読記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、保護エージェント及び特権モードに関する。
【背景技術】
【０００２】
コンピュータデバイスのプロセッサは、特権モード及び非特権モードを有することが多い。特権モードでソフトウェアを実行すると、通常、プロセッサによってサポートされるあらゆる命令を実行することができる。一般的に、オペレーティングシステムカーネルは、特権モードにおいて動作する。特権モードは、「リング０」、「スーパバイザモード」、または「カーネルモード」と称されることがある。
【０００３】
対照的に、コンピュータデバイス上で動作するいくつかのソフトウェアは、非特権モードでだけ動作するよう限定されているかもしれない。このモードは、通常、プロセッサの命令のサブセットをソフトウェアが実行できるようにする。よって、オペレーティングシステムは、非特権モードを用いて、このモードで動作するソフトウェアの機能を制限することができる。例えば、ソフトウェアを、コンピュータデバイスのメモリの特定のサブセットに限定してもよい。この非特権モードは、「リング３」または「ユーザモード」として公知の場合もある。該して、コンピュータデバイスのユーザアプリケーションは、この非特権モードで動作する。
【０００４】
ソフトウェアアプリケーションがこの非特権モードで動作する場合、当該アプリケーションは、非特権モードから直接アクセスすることができないメモリの一部分へのアクセスを要求するかもしれない。例えば、アプリケーションは、「新規なファイルを生成する」ことなどのメモリの当該一部分での動作を実行することを所望するかもしれない。この要求は、通常、コールゲートまたは他のシステムコール命令を介して発送される。コールゲートまたは他のシステムコール命令は、この非特権モードのコードを特権モードのコードに移行させる。この移行によって、特権モードからだけアクセス可能に指定されているメモリに非特権モードは直接アクセスできないということを確実にする。
【０００５】
これらのモードによって、悪質なコードの作者は、特権モードにアクセスして、コンピュータデバイスの動作を変更するマルウェアをインストールすることができる。例えば、このマルウェアは、ファイルの場所を改ざんし、ファイルを隠し、ファイルを変更し、または、キー入力を変更するなどするかもしれない。このマルウェアのいくつかは、「ルートキット」を含んでいるかもしれない。ルートキットは、コンピュータデバイスの動作を変更するだけでなく、特権モードのメモリ内でそれ自身を隠す。従って、コンピュータデバイス上で動作するアンチウィルスアプリケーションは、この隠れたルートキットを発見できず、よって、マルウェアにその悪質な行為を続けさせるかもしれない。更に、以下で検討するように、かかるマルウェアは、オペレーティングシステムの組み込みプロテクションシステムにパッチを当てるかもしれない。
【０００６】
マルウェアの作者は、特権モードにアクセスして、様々な方法でコンピュータデバイスにマルウェアをロードするかもしれない。様々な方法には、コンピュータデバイスのユーザをだましてユーザ自身のコンピュータデバイスにマルウェアを知らずにインストールさせることを含む。その結果、現在のオペレーティングシステムは、かかるマルウェアを検出する１つまたは複数のプロテクションシステムを用いることが多い。これらのプロテクションシステムは、通常、特定の重要なオペレーティングシステム資源を監視して、これらの資源に対するあらゆる変更を検出する。かかるプロテクションシステムがかかる変更を検出すると、プロテクションシステムは特定の資源がマルウェアに感染したと判断することができる。これらのプロテクションシステムは、また、ユーザのアンチウィルスアプリケーションに対して、非特権モードのメモリにそのとき存在するアプリケーションのリストを提供することができる。もちろん、マルウェアが隠れることに成功している場合、マルウェアは提供されるリスト上に表示されない。更に、マルウェアがプロテクションシステムにパッチを当てることに成功している場合、プロテクションシステムは起動できないか、または重要なオペレーティングシステム資源についての何らの変更を検出できないかもしれない。
【０００７】
これらのプロテクションシステムは有効であるかもしれないが、また、いくつかの欠点に苦しんでいるかもしれない。先ず、これらのシステムは、曖昧な事象に依存することが多く、よってマルウェアによって特定されている条件での利用に弱い。即ち、マルウェアがプロテクションシステムの正体を解明してプロテクションシステムを見つける場合、マルウェアは保護システム自体を無効にすることができる。マルウェアの作者は、また、同じことをする方法に関して他人に命令することができる。更にかつ最初のことに関連して、これらのプロテクションシステムは、通常、オペレーティングシステムの保護領域と同じ保護領域において（例えば、特権モード自体内で）動作する。従って、マルウェアが特権モードにアクセスして、曖昧なプロテクションシステムの正体を暴くことが可能な場合、プロテクションシステムはそれ自体が攻撃の対象となる。最後に、これらのプロテクションシステムは、オペレーティングシステムまたは特権モードと同時に初期化される。従って、マルウェアまたはマルウェアの作者がこの初期化の前にコンピュータデバイスの支配権を得る場合、マルウェアまたはマルウェアの作者は、プロテクションシステムが初期化されないようにすることができる。
【発明の概要】
【０００８】
この明細書は、保護エージェントに付随するオペレーティングシステムメモリの一部をオペレーティングシステム特権モードから変更できなくするかまたはアクセスできなくすることができるツールを開示する。いくつかの実施形態では、これらのツールは、バーチャルマシンモニタがオペレーティングシステムメモリのこの一部を保護することを要求することにより、保護エージェント特権モードを生成することができる。他の実施形態では、これらのツールは、物理プロセッサを複数の仮想プロセッサに仮想化することにより、保護エージェント特権モードを生成することができる。複数の仮想プロセッサのうちの少なくとも１つは、保護エージェントを実行するように設計されている保護エージェント仮想プロセッサである。オペレーティングシステムメモリのこの一部をオペレーティングシステム特権モードから変更できなくするかまたはアクセスできなくすることによって、保護エージェントを、オペレーティングシステム特権モードにおいて動作しているエンティティによる攻撃に対して強くできる。
【０００９】
この概要は、詳細な説明で更に後述する単純化された形式の概念の選択を導くために提供されている。この概要は請求された発明の重要な特徴または基本的特徴を識別することを意図していないし、請求された発明の範囲を決定する際の援助として用いられることも意図していない。例えば、用語「ツール」は、上記のコンテキストによってかつ明細書全体にわたって認められるように、システム（または複数のシステム）、方法（または複数の方法）、複数のコンピュータ可読命令、及び／または技術（または複数の技術）を述べてもよい。
【００１０】
同じ番号が、明細書及び図の全体にわたって同様の構成要素及び特徴を参照するために用いられる。
【図面の簡単な説明】
【００１１】
【図１】ツールの様々な実施形態が動作することができる例示的な動作環境を示す図である。
【図２】図１に示したモジュールの様々なコンピュータデバイスメモリ権利を示す図である。
【図３】図１に示したモジュールのいくつかが存在するコンピュータデバイスメモリの様々な部分を表す図である。
【図４】バーチャルマシンモニタが、保護エージェントに付随するメモリの一部を保護し、エージェントを実行するタイマをセットすることができる例示的な方法を示すフローチャートである。
【図５】物理プロセッサを複数のオペレーティングシステム仮想プロセッサ及び１つの保護エージェント仮想プロセッサへ仮想化することができるバーチャルマシンモニタを有する例示的なアーキテクチャを示す図である。
【図６】図５の物理プロセッサの帯域幅を様々な仮想プロセッサの間で割り当てることができる方法を示す図である。
【図７】オペレーティングシステム特権モードからアクセスできない場所に存在する保護エージェントをツールが有効にしかつ実行するいくつかの方法を説明する例示的なプロセスを示す図である。
【図８】オペレーティングシステム特権モードからアクセスできない場所に存在する保護エージェントを有効にしかつ実行するバーチャルマシンモニタをツールが変更し得るいくつかの方法を示す例示的な方法を説明する例示的なプロセスを示す図である。
【図９】バーチャルマシンモニタへ要求することによりツールが保護エージェント特権モードを生成することができるいくつかの方法を説明する例示的なプロセスを示す図である。
【図１０】実コンピュータプロセッサを複数の仮想コンピュータプロセッサに仮想化することにより、ツールが保護エージェント特権モードを生成し、複数の仮想コンピュータプロセッサのうちの少なくとも１つが保護エージェントを実行することになっているいくつかの方法を説明する例示的なプロセスを示す図である。
【図１１】下層の物理プロセッサに存在しない特権モードをツールが追加することができるいくつかの方法を説明する例示的なプロセスを示す図である。
【発明を実施するための形態】
【００１２】
概説
以下の明細書は、保護エージェントをオペレーティングシステム特権モードから変更できなくするかまたはアクセスできなくする形で保護エージェントを動作させることができるツールを説明する。よって、これらのツールは、保護エージェント自体の保護を可能にし、それによって、重要なオペレーティングシステム資源に対する変更を検出する保護エージェントの能力を確保する。更に、これらのツールは、資源の変更の検出に対応してまたは保護エージェント自体の変更の試みに対応して、オペレーティングシステムまたはオペレーティングシステム特権モードをシャットダウンすることができる。更に、これらのツールは、その後に資源の変更を検出せずに、保護エージェントがオペレーティングシステム資源での変更ができないようにする。
【００１３】
ツールがこれら動作及び他の動作を有効にすることができる環境は、「例示的な動作環境」と題されたセクションで後述する。「自律保護エージェント」と題されたセクションが続き、２つのサブセクションを含む。「バーチャルマシンモニタ保護エージェント」と題された最初のサブセクションは、保護エージェントがバーチャルマシンモニタ内に存在していてかつバーチャルマシンモニタ内で動作することができる１つの例示的な方法を説明する。この後に、１つの例示的な方法を説明する「仮想パーティション保護エージェント」と題されたもう１つのサブセクションが続く。当該方法において、保護エージェントは、オペレーティングシステムのパーティションと別個の仮想パーティションに存在することができ、オペレーティングシステムのパーティションと別個の仮想パーティション内で動作することができる。
【００１４】
「自律保護エージェント特権モード」と題された別のセクションが続き、同様に２つのサブセクションを含む。最初のサブセクションは、バーチャルマシンモニタのタイマが保護エージェント特権モードを下層のプロセッサに追加することができる１つの例示的な方法を説明していて、「バーチャルマシンモニタに対する保護要求」と題されている。「保護エージェント仮想プロセッサ」と題されたサブセクションが続き、保護エージェント特権モードを生成することができる別の方法を説明する。複数の仮想プロセッサを用いるこの例では、保護エージェント特権モードで保護エージェントを実行する仮想プロセッサを含む。「ツールの例示的な使用法」と題されたセクションが続き、前述の動作中のツールの例を説明する。最後に、「ツールの他の実施形態」と題されたセクションは、ツールが動作することができる他の様々な実施形態及び方法を説明する。これらのセクション表題及び概要を含んでいるこの概説は、読者の便宜のために提供されていて、特許請求の範囲または表題を付けたセクションの範囲を限定することを意図していない。
【００１５】
例示的な動作環境
ツールを詳細に説明する前に、例示的な動作環境についての以下の説明が提供されて、ツールの様々な発明の態様を用いることができるいくつかの方法を理解するのに読者の助けとなる。後述する環境は、１つの例だけであって、いかなる１つの特定の動作環境にもツールの使用を限定することを意図していない。請求された発明の要旨の精神及び範囲を逸脱しない範囲で他の環境が用いられてもよい。例えば、以下のセクションは単一の保護エージェントを有する実施形態を説明するが、複数の保護エージェントが利用されてもよい。場合によっては、これらの保護エージェントは、独立してかつ並列で実行され得る。かかる例では、保護エージェントは、通常、そのそれぞれのパーティション内のメモリにしかアクセスできない。更に、以下に説明される技術は、同時に利用されてもよい。即ち、異なる保護エージェントは、同じ動作環境内で異なる技術を利用することができる。
【００１６】
この例について見ると、図１は、符号１００で１つのかかる例示的な動作環境をおおまかに示す。この環境はコンピュータデバイス１０２を含み、コンピュータデバイス１０２自体が、１つまたは複数のプロセッサ１０４及びコンピュータ可読媒体１０６を含む。コンピュータ可読媒体１０６は、バーチャルマシンモニタ１０８（例えば、ハイパーバイザ）を含み、バーチャルマシンモニタ１０８は、１つまたは複数のプロセッサを複数の仮想プロセッサに仮想化することができる。バーチャルマシンモニタ１０８は、また、複数の仮想パーティションを有効にすることができる。１つまたは複数の仮想プロセッサは各パーティションに付随することができ、これらの仮想プロセッサは利用可能な物理プロセッサ上にスケジューリングされる。図示されているように、いくつかの実施形態では、バーチャルマシンモニタは、第１の仮想パーティション１１０及び第２の仮想パーティション１１２を有効にすることができる。以下に詳細に検討されるように、これらのパーティションは、オペレーティングシステム機能を保護エージェントサービスから切り離す働きをすることができる。
【００１７】
また、図示するように、コンピュータ可読媒体１０６は更に、オペレーティングシステム（ＯＳ）１１４及び１つまたは複数のユーザアプリケーション１１６を含む。オペレーティングシステム１１４は、オペレーティングシステムサービス１１８をユーザアプリケーション１１６に提供し、よって、アプリケーションがコンピュータデバイス上で実行されるようにする。更に、１つまたは複数のオペレーティングシステム資源１２０が、オペレーティングシステムに存在する。例示的な資源は、システムサービスディスパッチテーブル（ＳＳＤＴ）、割り込みディスパッチテーブル（ＩＤＴ）、グローバルディスクリプタテーブル（ＧＤＴ）などを含む。また、図示するように、オペレーティングシステムは、マルウェア１２２（即ち、悪意のコード）を含むかもしれない。マルウェア１２２は、上記で検討した方法かまたはそれ以外の方法でコンピュータデバイス上にロードされたかもしれない。以下で検討される１つまたは複数の保護エージェントは、マルウェアによってオペレーティングシステム資源になされた変更を検出することができて、該検出に対応して、防御措置をとることができる。保護エージェントがかかる判断をする場合、保護エージェントは、オペレーティングシステム及び／またはコンピュータデバイスをシャットダウンすることができるか、または反対の作用をする他の措置をとることができる。
【００１８】
コンピュータデバイスの構造を検討したので、ここで、下層の１つまたは複数の物理プロセッサ１０４に存在する特権モードを変化させることに注意を向ける。バーチャルマシンモニタ特権モード１２４は、図１に示した最も高い特権モードを表す。この特権モードは、デバイスの資源及びメモリの全てにまたはほぼ全てにアクセスできる。バーチャルマシンモニタ特権モード１２４から、バーチャルマシンモニタは、プロセッサをスケジューリングすることができて、各仮想パーティションのためのメモリ領域にアクセスすることができる。パーティション内で動作するオペレーティングシステムは、自身が物理プロセッサの資源の全てを制御していると考えるかもしれないが、実際は、オペレーティングシステムはバーチャルマシンモニタによって決定された一部分を制御しているだけである。
【００１９】
バーチャルマシンモニタ特権モードより低い特権を与えられているので、オペレーティングシステム特権モード１２６は、オペレーティングシステム資源１２０の全て及びオペレーティングシステムメモリのほとんどまたは全てにアクセスできる。しかしながら、この特権モードは、第２の仮想パーティション１１２などの別のパーティションに付随するいかなる資源またはメモリにもアクセスできない。それにもかかわらず、この特権モードは、通常、オペレーティングシステムメモリの全てにアクセスできるので、「特権モード」と称されるときもある。「リング０」、「スーパバイザモード」、または「カーネルモード」によっても、この特権モードが表されるかもしれない。上記で検討したように、オペレーティングシステム特権モード１２６内で動作しているユーザアプリケーションは、通常、バーチャルマシンモニタモードのために予約されている命令を除いて、プロセッサによって提供されるほとんどの命令を実行することができる。
【００２０】
このオペレーティングシステム特権モードは、「非特権モード」、「リング３」、または単に「ユーザモード」と称されることもあるユーザ特権モード１２８と対比される。また、上記で検討したように、ユーザアプリケーションは、ユーザ特権モード１２８から動作すると、オペレーティングシステムに付随する特定のメモリにアクセスすることができないかまたは変更することができない。一般に、コンピュータデバイスのユーザアプリケーションは、基本操作を実行すると、このユーザ特権モードで動作する。
【００２１】
上記のモードに加えて、図１はまた、第２の仮想パーティション特権モード１３０及び保護エージェント特権モード１３２を示す。以下に詳細に検討されるように、保護エージェント特権モード１３２は、オペレーティングシステム特権モードがアクセスできないメモリの一部へのアクセスができるが、通常、バーチャルマシンモニタ特権モードと同じ程度のメモリアクセスはできない。このように、この特権モードは、オペレーティングシステム特権モードより高い特権を有するが、バーチャルマシンモニタ特権モードより低い特権を有していてもよい。
【００２２】
また、以下に詳細に検討するように、第２の仮想パーティション特権モードは、概して第２の仮想パーティション１１２に付随するメモリにアクセスできる。更に、このモードは、第１の仮想パーティションにアクセスできてもよい。かかる追加のアクセスによって、例えば、第２の仮想パーティションに存在する保護エージェントが、第１の仮想パーティション及びその対応するオペレーティングシステムに付随するメモリを走査することができるようにされてもよい。このモードは、通常、バーチャルマシンモニタにアクセスできず、よって、バーチャルマシンモニタ特権モードより低い特権を有している。それにもかかわらず、第２の仮想パーティション特権モードは、オペレーティングシステム特権モードがアクセスできないメモリの一部にやはりアクセスできる。
【００２３】
一方、図２は、コンピュータデバイスのメモリ権利２００を示す。よって、この図は、図１のモジュールでアクセス可能なメモリ量を表す。図示するように、バーチャルマシンモニタ特権モード１２４で動作するバーチャルマシンモニタ１０８は、図示した全てのモジュールのうちの最も多くのメモリ権利を有する。実際に、バーチャルマシンモニタは、メモリの一部２０２に存在し、メモリの一部２０２に単独でアクセスできる。次に、保護エージェント２０４（例えば、図１に示した保護エージェントのいずれか）は、保護エージェント特権モード１３２で動作し、バーチャルマシンモニタに対応する部分２０２以外の全てのメモリにアクセスできる。しかしながら、保護エージェントはメモリの一部２０６にアクセスできる。メモリの一部２０６は保護エージェント自体が存在するメモリの一部分である。
【００２４】
一方、オペレーティングシステム１１４は、オペレーティングシステム特権モード１２６で動作し、部分２０２及び部分２０６以外の全てのメモリにアクセスできる。オペレーティングシステムは、保護エージェントに付随するメモリの一部２０６にアクセスできないが、オペレーティングシステム及びその付随する特権モードは、メモリの一部２０８にアクセスできる。メモリの当該部分２０８は、カーネルメモリまたはオペレーティングシステムの最下層レベルの構成要素として公知である場合もあり、通常、図１に示した資源を含む。しかしながら、例えマルウェアがメモリの一部２０８にロードされかつ動作しても、マルウェアは保護エージェントに付随するメモリの一部２０６にアクセスすることができない。
【００２５】
最後に、図２は、ユーザアプリケーション１１６はメモリの一部２１０にアクセスできるだけということを示す。これらのユーザアプリケーション及び対応するユーザ特権モードは、オペレーティングシステムの最下層レベルの構成要素に付随するメモリの一部２０８にアクセスできない。この動作環境を考慮に入れて、以下の４つのセクションは、保護エージェントがオペレーティングシステム特権モードから変更できなくされるかまたはアクセスできなくされる例示的な方法を詳細に説明する。
【００２６】
自律保護エージェント
以下のセクションは、オペレーティングシステム特権モードにおいて動作しているエンティティでアクセスできないメモリから、１つまたは複数のオペレーティングシステム資源が変更されたかどうかを判断することができるツールを説明する。このように、ツールは、保護エージェントがオペレーティングシステムメモリ自体の場所以外の場所に存在することを可能にしてもよい。より具体的には、以下のサブセクションは、保護エージェントがバーチャルマシンモニタ内または自律仮想パーティション内のいずれかに存在することができる方法について説明する。
【００２７】
バーチャルマシンモニタ保護エージェント
このサブセクションは、図１が示すように、保護エージェント１３４がバーチャルマシンモニタ自体内に存在する方法について説明する。オペレーティングシステム特権モードはバーチャルマシンモニタにアクセスすることができないので、この場所は、オペレーティングシステムメモリ内にあるいかなるマルウェアからも保護エージェントを保護する。この場所から動作するために、保護エージェントは、保護エージェント１３４が監視することができる１つまたは複数のオペレーティングシステム資源１２０の識別証明を受信する。この識別証明は、資源識別子１３６を介して受信されてもよい。図示するように、オペレーティングシステムは、アプリケーションプログラミングインタフェース（ＡＰＩ）コールを介してバーチャルマシンモニタにこの情報を提供することができる。または、オペレーティングシステムは、マニフェスト１３８の形で情報を提供することができる。上記のように、これらの資源には、ＳＳＤＴ、ＩＤＴ、及びＧＤＴを含むことができる。
【００２８】
一旦、保護エージェント１３４が資源の識別証明を受信すると、保護エージェント１３４は保護エージェントサービス１４０をオペレーティングシステム１１４まで拡大する。これらの保護エージェントサービスは、通常、識別された資源のいずれかが変更されたかどうかについて判断することを含む。かかる判断がなされる場合、保護エージェントまたはバーチャルマシンモニタは、例えば、オペレーティングシステムをシャットダウンすることができる。保護エージェントサービスはまた、変更不可能（例えば、「リードオンリー」）とマークされたあらゆる資源に対しても変更できないようにすることを含み得る。
【００２９】
かかるアーキテクチャを用いることは、バーチャルマシンモニタをロードして、初期化することから始まる。バーチャルマシンモニタは１つまたは複数のオペレーティングシステムをホストすることができる。この例では、バーチャルマシンモニタは、単一のオペレーティングシステム１１４をホストし、オペレーティングシステム１１４自体は、バーチャルマシンモニタがロードされた後に、初期化を開始する。オペレーティングシステムの初期化の間、オペレーティングシステム（例えばカーネル）の最下層レベルの構成要素に付随するメモリの一部２０８が、最初にロードされる。オペレーティングシステム資源１２０（例えば、ＳＳＤＴ、ＧＤＴ、ＩＤＴ）のいくつかまたは全ては、通常、このメモリの一部２０８に存在する。
【００３０】
オペレーティングシステムが初期化する前にまたはその初期化の間、保護エージェント１３４は、バーチャルマシンモニタ内から動作を開始することができる。上記で検討したように、保護エージェントは、通常、１つまたは複数のオペレーティングシステム資源一式の識別証明を受信して、識別された資源のうちの１つまたは複数が変更されたかどうかを判断する。各々の識別された資源は、複数の場所で多数の構成要素を含むことが多く、保護エージェントは全資源を十分に保護するためにそれぞれを監視することができるということに注目する。例えば、マニフェストがＳＳＤＴを監視して保護すべき資源と見なす場合、保護エージェントは実際のテーブルだけでなくＳＳＤＴの他の構成要素も保護する。例えば、保護エージェントは、テーブルの場所を示しているレジスタも監視して走査することができる。更に、保護エージェントは、ＳＳＤＴの仮想アドレスを物理アドレスに翻訳するメモリ翻訳データ構造（例えば、ページテーブル）も監視することができる。保護エージェントが監視することができない場合、悪質なコードは、異なるページテーブルマッピング（即ち、ＳＳＤＴ自体を迂回する）を有する別のテーブルを生成するかもしれない。
【００３１】
識別証明に加えて、保護エージェントは、また、対応する資源を保護する方法について保護エージェントに命令する保護属性を受信することができる。例えば、保護エージェントは、ＳＳＤＴ資源の識別証明も「リードオンリー」についての対応する保護属性も、受信することができる。従って、ＳＳＤＴはリードオンリーのままであるべきであって、よって変更されるべきではないということを、保護エージェントは知る。「リードオンリーを初期化せよ(Init read-only)」は、別の可能な保護属性であり、それは、対応する資源が初期化の間１度だけ書きこめるが、かかる期間の後は、資源はリードオンリーのままでなければならない、ということを保護エージェントに命令する。
【００３２】
保護エージェントは、この資源の識別証明及び資源保護属性を、多くの方法で能動的にも受動的にも受信することができる。例えば、オペレーティングシステムは、保護エージェントが監視することができる資源を識別するデジタル署名入りのマニフェストを提供することができる。このデジタル署名入りのマニフェストは、例えば、名前によって（例えば、ＳＳＤＴ、ＩＤＴ、ＧＤＴ、その他）、またはアドレスによってなど、メモリの一部２０８の対応する場所に資源をマッピングする多くの方法で資源を識別することができる。後者の例では、マニフェストは資源のゲスト物理アドレス、ゲスト仮想アドレス、またはシステム物理アドレスを識別することができる。場合によっては、ゲスト物理アドレスは、実際のシステム物理アドレスにマッッピングされて、対応する資源構成要素の実際の物理的な場所を発見することができる点に注目する。
【００３３】
バーチャルマシンモニタまたは保護エージェントはマニフェストを受信した後に、これらの構成要素は、マニフェストが改ざんまたは変更されているかどうかを判断することができる。バーチャルマシンモニタまたは保護エージェントがかかる判断をする場合、バーチャルマシンモニタまたは保護エージェントは、オペレーティングシステムを開始できないことを選ぶことができる。更に、資源のリストに付随する暗号化が無効にされてもよく、よってその安全性を守る。
【００３４】
マニフェストに加えて、または、マニフェストに代わるものにおいて、保護エージェントは、バーチャルマシンモニタ（例えば「ハイパーコール」）への１つまたは複数のアプリケーションプログラミングインタフェース（ＡＰＩ）コールを介して資源及び保護属性識別証明を受信することができる。オペレーティングシステムが初期化されるときに、オペレーティングシステム（及び、おそらくオペレーティングシステム２０８の最も低いレベルの構成要素）は、バーチャルマシンモニタへのハイパーコールをすることができる。ハイパーコールは、監視されかつ保護され得る特定の資源を保護エージェントに知らせる。これらのハイパーコールは、上記で検討したのと同じ方法で妥当な資源を識別することができる。また、上記で検討したように、これらのハイパーコールも資源の保護属性を識別することができる。
【００３５】
デジタル署名入りのマニフェスト及び１つまたは複数のハイパーコールを利用する実施形態では、保護エージェントは、オペレーティングシステムが起動する前にまたは起動の間、マニフェストにおいて識別された資源を最初に走査することができる。この最初の走査の後に、オペレーティングシステムは、バーチャルマシンモニタへのハイパーコールをすることができる。ハイパーコールは、ハイパーコール識別ページが変更されたかどうかを判断することを保護エージェントに命令する。よってマニフェストは、オペレーティングシステムが起動するごとに資源を識別して走査するが、ハイパーコールは、資源のそれぞれの初期化があると、資源を識別して動的に走査する。
【００３６】
監視されるべき資源を識別したので、次に保護エージェントは、資源（例えば、上記のＳＳＤＴの各部分の全て）が変更されたかどうかを判断する。保護エージェントは、また、識別された資源に対して変更できないようにすることができる。例えば、保護エージェントは、「リードオンリー」と示されたいかなる資源も「書き込み可能」に変更しないということを確実にすることができる。
【００３７】
このようにして資源を監視して保護するために、バーチャルマシンモニタ内で動作するコードは、バーチャルマシンモニタインターセプトマネージャ（例えば、図１のマネージャ１４６）を用いることができる。そのように命令された場合、このインターセプトマネージャは、識別された資源の様々な構成要素に関する妨害を登録することができる。この登録によって、これらの識別された資源にアクセスするかまたは修正する試みがなされる場合に、バーチャルマシンモニタ内の保護エージェントは、妨害を受信することができる。このように、保護エージェントは、識別された資源の様々な構成要素を調べて走査することができ、それは、また、これらの資源を変更する試みを能動的に阻止することができる。
【００３８】
いくつかの実施形態では、保護エージェントは、資源を走査して、それ以後の走査の結果を比較するのに用いるために資源の最初の状態を判断する。他の実施形態では、保護エージェントは、それ以後の走査の結果を比較するために資源の初期状態をすでに知っている。いずれにしても、保護エージェントは、この初期状態のハッシュ値またはチェックサム値を計算することができる。この計算の後に、保護エージェントは、オペレーティングシステムが起動する前に、起動した後に、または起動する間に、資源を走査する。走査の後に、保護エージェントは、結果のハッシュまたはチェックサムを計算して、これを初期状態のハッシュ値またはチェックサム値と比較する。等しい場合、保護エージェントは対応する資源が変更されていないと判断する。もちろん、保護エージェントは、ハッシュ値またはチェックサム値を飛ばして、その代わりに初期状態を走査と直接比較してもよい。
【００３９】
しかしながら、値が異なっている場合、保護エージェント及び／またはバーチャルマシンモニタは１つまたは複数の応答動作を行うことができる。最初に、保護エージェント自体は、オペレーティングシステムまたはオペレーティングシステム特権モードをシャットダウンすることができる。または、バーチャルマシンモニタにシャットダウンするように命令することができる。更に、保護エージェントはバーチャルマシンモニタ内に存在するので、かつバーチャルマシンモニタはオペレーティングシステムのホストをするので、これらの２つの構成要素は、オペレーティングシステムをそのようにシャットダウンすることができる。更に、保護エージェントはバーチャルマシンモニタ内に存在するので、オペレーティングシステムをシャットダウンすることによって、オペレーティングシステム特権モードからさえ変更され得ない。
【００４０】
オペレーティングシステムをシャットダウンすることに加えて、保護エージェント及び／またはバーチャルマシンモニタは、緊急のシャットダウンをオペレーティングシステムに最初に警告してもよい。バーチャルマシンモニタとオペレーティングシステムとの間の通信チャネルが、かかる通信を可能にしてもよい。別の方法では、保護エージェント及び／またはバーチャルマシンモニタは、メモリ場所に警告を書き込むことができるかまたはオペレーティングシステムが監視するイベントに信号を送ることができる。
【００４１】
警告があったか否かに関わりなく、オペレーティングシステムのシャットダウンは、突然であっても正常であってもよい。前者の場合、バーチャルマシンモニタは、異なるハッシュ値またはチェックサム値を知った直後に、オペレーティングシステムを単にパワーダウンしてもよい。後者の場合、バーチャルマシンモニタは、オペレーティングシステムに自身を完全にシャットダウンすることができるある程度の時間を許容する。この時に、オペレーティングシステムは、例えば、あらゆるオープンファイルを閉じて、あらゆる対応データをフラッシュすることができる。オペレーティングシステムはまた、割り当てられた資源をリリースすることができる。更に、シャットダウンには両方の方法を利用することができる。例えば、バーチャルマシンモニタが複数のパーティションのホストをする場合、バーチャルマシンモニタは直ちに異なるハッシュ値またはチェックサム値を有するパーティションをシャットダウンするが、一方他のパーティションに完全にシャットダウンする時期を選ぶことを許容してもよい。いずれにしても、シャットダウンの方法は、ポリシーによって設定可能であってもよくかつ調整可能であってもよい。
【００４２】
シャットダウン及び対応する警告に加えて、保護エージェント及び／またはバーチャルマシンモニタは、識別された資源の許可されていない変更に対応して、起動後動作を行うことができる。例えば、バーチャルマシンモニタ及び／または保護エージェントは、オペレーティングシステムの再起動があると、オペレーティングシステムに資源変更を知らせることができる。それに応じて、オペレーティングシステムはアンチウィルススキャンを実行して、部分２０８など（例えば、カーネル）のオペレーティングシステムメモリ内にマルウェアが実際に存在するかどうかを検出することができる。更に、バーチャルマシンモニタは、オペレーティングシステムをセーフモードで起動するかまたは、オペレーティングシステム自体が、セーフモードで起動することを選択することができる。また、通知に応じて、オペレーティングシステムは、自身が攻撃されたと認識することができ、よって、接続するいかなるネットワークに自身がアクセスするのを許容しなくてもよい。
【００４３】
仮想パーティション保護エージェント
保護エージェント（例えば、図１の保護エージェント１４２）は、バーチャルマシンモニタ自体に存在する代わりに、別個の仮想パーティション（例えば、図１の第２の仮想パーティション１１２）に存在することができる。これらの実施形態では、この別個のパーティションは、バーチャルマシンモニタの信頼できる代表として働く。よって、保護エージェント１４２は、オペレーティングシステム特権モードからアクセスすることができない。上記で検討したように、バーチャルマシンモニタ１０８は、コンピュータデバイス１０２のかかる仮想化を提供する。バーチャルマシンモニタは、いくつのパーティションにでも、コンピュータデバイスを仮想化することができるが、図１は、オペレーティングシステムをホストする第１のパーティション及び保護エージェントをホストする第２のパーティションを示している。保護エージェントが存在する第２の仮想パーティションは、場合によっては、その主要な機能または唯一の機能が保護エージェントを実行させることになっている専用のセキュリティパーティションであってもよい。他の実施形態では、この第２の仮想パーティションは、別のオペレーティングシステムをホストすることなどの追加の機能を実行してもよい。
【００４４】
第２の仮想パーティション内に存在する保護エージェント１４２は、バーチャルマシンモニタ内に存在する保護エージェント１３４に関して上記で検討したのと同じ機能のうちの多くまたは全てを実行することができる。即ち、保護エージェント１４２は、１つまたは複数のオペレーティングシステム資源１２０の識別証明を能動的にまたは受動的に受信することができる。識別証明に応じて、保護エージェントは更に、保護エージェントサービス１４０を拡大することができる。保護エージェントサービス１４０は通常、識別された資源のうちの１つまたは複数が変更されたか否かを判断して、変更されている場合に、応答動作を行うことを含む。これらのサービスは、また、指定された資源を変更できないようにすることを含んでもよい。保護エージェント１４２は、上記の技術と同様の技術を介してこれらの機能を実行することができる。
【００４５】
図示するように、保護エージェント１４２は、第２の仮想パーティション特権モード１３０からアクセスできるが、オペレーティングシステム特権モード１２６からアクセスできない。このように、マルウェアがオペレーティングシステムの最も低いレベルの構成要素に付随するメモリの一部２０８内に存在する場合であっても、得られるアーキテクチャは、オペレーティングシステム内にあるマルウェアからの、保護エージェント自体の保護が可能になる。
【００４６】
自律保護エージェント特権モード
本セクションは、保護エージェントに付随するオペレーティングシステムメモリの一部をオペレーティングシステム特権モードから変更できなくするかまたはアクセスできなくするが、メモリの当該部分がオペレーティングシステム物理メモリスペースに物理的になお存在できるようにするツールを説明する。よって、これらのツールは、自律保護エージェント特権モードを生成する。自律保護エージェント特権モードは、保護エージェントに付随するメモリの一部にも、オペレーティングシステム特権モードにおいてアクセスできるメモリの残りの部分にも、アクセスできる。よって、この特権モードは、オペレーティングシステム特権モードより高い特権を有する。
【００４７】
最初のサブセクションは、バーチャルマシンモニタが保護エージェントに付随するメモリの一部を保護するよう要求することにより、保護エージェント特権モードを生成することができるツールを説明する。一方、２番目のサブセクションは、保護エージェントを実行させる専用の仮想プロセッサを含んでいる複数の仮想プロセッサへ物理プロセッサを仮想化することにより、保護エージェント特権モードを生成することができるツールを説明する。
【００４８】
バーチャルマシンモニタに対する保護要求
本サブセクションは、保護エージェントが、保護エージェント及びこのような保護エージェント自体に付随するメモリを保護するようバーチャルマシンモニタに要求することができる方法について説明する。この保護によって、図１に示したように、保護エージェント特権モード１３２で動作する保護エージェント１４４が得られる。図示するように、保護エージェント特権モードに変わる前に、保護エージェント１４４は、最初にオペレーティングシステム特権モード内に存在することができる。この保護エージェント特権モードで動作すると、保護エージェントは、通常、オペレーティングシステム特権モード１２６で動作しているエンティティからの攻撃を受けにくい。
【００４９】
保護エージェント特権モード１３２で動作すると、エンティティは、オペレーティングシステム特権モード１２６で動作するよりもわずかに高いが、バーチャルマシンモニタ特権モード１２４よりなお低い特権を有する。図２が示すように、この特権モードで動作する保護エージェントは、保護エージェント自体に付随するメモリの一部２０６に加えて、オペレーティングシステムに付随するメモリの全てにアクセスすることができる。バーチャルマシンモニタ１０８は、追加された保護エージェントのアクセスを実行する。
【００５０】
図３及び図４は、この保護エージェント特権モードを生成する例示的な方法を示す。図３は、コンピュータデバイスメモリ３００の全てまたはほぼ全てを表す。コンピュータデバイスメモリ３００は、オペレーティングシステム特権モードに付随するメモリの一部３０２（例えば、カーネル）及びユーザ特権モードに付随するメモリの一部３０４を含む。図示するように、メモリの一部３０２はまた、保護エージェント１４４に付随するメモリの一部３０６及びドライバがロードするメモリの一部３０８を含む。
【００５１】
図４に示すように、保護エージェント特権モード１３２を生成するプロセス４００は、メモリの一部３０２（例えば、カーネル）を初期化することによって、動作１で始まる。動作２で、メモリの一部３０６または保護エージェント１４４自体は、バーチャルマシンモニタ１０８をコールして、保護エージェントに付随するメモリの一部をバーチャルマシンモニタが保護することを要求する。そう要求することにおいて、オペレーティングシステム特権モードにおいて実行中のコードが、メモリの当該部分３０６を変更されないようにするかまたは別の方法で影響を与えられないようにすることを、保護エージェントまたは対応するメモリは求める。保護エージェントは、また、バーチャルマシンモニタ１０８に対して（例えば、デジタル署名によって）自身を証明することができる。メモリの当該部分または保護エージェント自体はまた、バーチャルマシンモニタがタイマをセットして、タイマが期限切れになると保護エージェントを実行するということを要求することができる。動作３は、オペレーティングシステム特権モードにおいて動作しているエンティティからメモリを保護しかつ要求に応じてタイマをセットするバーチャルマシンモニタを示す。保護エージェントに付随するメモリの当該部分３０６はオペレーティングシステム特権モードからこのとき変更できないかまたはアクセスできないので、保護エージェントは、このとき保護エージェント特権モードに存在するということに注目する。
【００５２】
動作４で、ドライバがメモリの一部３０８へロードされる。動作２の要求及び対応する動作３の保護は、マルウェアがドライバの形で存在するかもしれないので、通常、ドライバがメモリへロードされる前に起きる。以下の「ツールの例示的な使用法」で検討されるように、マルウェアの作者は、ユーザをだましてコンピュータデバイス上へ悪質なドライバをインストールさせることが多い。メモリの一部３０６が保護される前に１つまたは複数の悪質なドライバが実際にメモリへロードされる場合、悪質なドライバは、保護要求自体に潜在的にパッチを当てることができる。かかるパッチングは、このことによりバーチャルマシンモニタを介して保護エージェントの周期的な実行、よって、保護エージェント特権モードの生成を妨げるかもしれない。しかしながら、バーチャルマシンモニタがタイマを初期にセットするのを要求することにより、オペレーティングシステム特権モード内のコードが保護エージェントの周期的な実行をそのように無効にすることができないということをこのプロセスは確実にする。
【００５３】
一方、動作５は、ドライバがロードされた後しばらくして起こり得る。図示するように、動作５は、バーチャルマシンモニタタイマの期限切れ、よって、保護エージェントの実行を示す。動作すると、保護エージェント１４４は、前のセクションで検討した機能と同様または同一の機能を実行する。また、上記で検討したように、保護エージェントは、１つまたは複数の識別された資源が変更されたという判断に応じて処置を行うことができる。保護エージェントは、また、オペレーティングシステム特権モードにおいて動作しているエンティティから、保護エージェントまたはその対応するメモリのアクセスの試みまたは変更の試みに応じてかかる処置を行うことができる。
【００５４】
動作６は、保護エージェントが実行を終えると、バーチャルマシンモニタに通知する保護エージェントを示す。最後に、動作７は、動作３、５及び６の繰り返しを表す。このように、バーチャルマシンモニタは、そのタイマをリセットして、例えば１００ミリ秒（ｍｓ）毎の周期的な間隔で保護エージェントを実行することができる。
【００５５】
バーチャルマシンモニタでフェイルセーフタイマをセットすることによって、プロセス４００は、保護エージェントに付随するメモリの一部を変更するオペレーティングシステムコードの能力を排除する。このように、保護エージェントが動作し続けて、オペレーティングシステム特権モードにおいて動作するマルウェアによりパッチを当てられないということをこのプロセスは確実にする。代わりに、保護エージェントは、オペレーティングシステムに割り当てられた物理的なメモリ内になお存在するが、自律特権モードにおいて動作することができる。
【００５６】
保護エージェント仮想プロセッサ
本サブセクションは、バーチャルマシンモニタが仮想プロセッサをスケジューリングすることによって保護エージェント特権モードを生成して保護エージェント１４４を実行する方法を説明する。図５は、アーキテクチャ５００を示し、アーキテクチャ５００は、各々がオペレーティングシステムを含んでいる２つのパーティションにコンピュータデバイス１０２を仮想化するバーチャルマシンモニタ１０８を含む。図示するように、コンピュータデバイスは、この例では２つの実プロセッサ１０４（ａ）及び１０４（ｂ）を含み、その各々により仮想プロセッサは複数の仮想プロセッサをスケジューリングすることができる。また、図示するように、バーチャルマシンモニタは、第１の仮想パーティション５０２及び第２の仮想パーティション５０４を生成する。第１の仮想パーティションは、第１のオペレーティングシステムを実行する第１の仮想プロセッサ５０６を含む。同様に、第２の仮想パーティションは、第２のオペレーティングシステムを実行する第２の仮想プロセッサ５０８を含む。しかしながら、この例では、バーチャルマシンモニタはまた、保護エージェント仮想プロセッサ５１０を含み、図１の保護エージェント１４４などの保護エージェントを実行する。
【００５７】
アーキテクチャ５００を生成するために、バーチャルマシンモニタが、最初にロードされて初期化される。図６に示すように、次に、バーチャルマシンモニタは、様々な仮想プロセッサを監視し、監視することにおいて、実プロセッサ帯域幅６００を割り当てる。この仮想化及び割り当てを開始するために、バーチャルマシンモニタは、第１の実プロセッサ上へ第１の仮想プロセッサを仮想化する。この例では、この仮想化は、図６で示すように１対１方式でなされる。即ち、この単一の仮想プロセッサ５０６だけが実プロセッサ１０４(a)に対応し、よって、バーチャルマシンモニタは、実プロセッサの帯域幅の全てをこの仮想プロセッサに割り当てる。次に、バーチャルマシンモニタは、第２の実プロセッサ１０４（ｂ）上に第２の仮想プロセッサ５０８を仮想化する。しかしながら、１対１方式の代わりに、バーチャルマシンモニタは、第２の実プロセッサの帯域幅のいくつかの部分を保持する。次に、バーチャルマシンモニタは、同様に図６で示すように、第２の実プロセッサ１０４（ｂ）のこの残りの帯域幅上に保護エージェント仮想プロセッサ５１０仮想化する。
【００５８】
第２の実プロセッサ上で動作する各仮想プロセッサは、通常、タイムスライシングベースで動作する。即ち、第２の仮想プロセッサは、第２の仮想プロセッサの動作が一時停止する前に、ある程度長時間第２の実プロセッサ上で動作することができる。この点で、第２の実プロセッサは、別のある程度長時間保護エージェント仮想プロセッサのオペレーションに切替わる。例えば、第２の仮想プロセッサは、９０ｍｓの間第２の実プロセッサ上で動作することができる。この時点で、この第２の仮想プロセッサのオペレーションは中止し、保護エージェント仮想プロセッサのオペレーションは１０ｍｓの間開始する。保護エージェント仮想プロセッサは、通常、オペレーティングシステムパーティション並びに第１の仮想プロセッサ及び第２の仮想プロセッサにトランスペアレントである。このように、両方のオペレーティングシステムは、両方のオペレーティングシステムの対応する仮想プロセッサがそれぞれの実プロセッサに対応すると考える。
【００５９】
実プロセッサの帯域幅を割り当てることに加えて、バーチャルマシンモニタはまた、各仮想プロセッサがアクセスすることができるメモリの一部を管理する。この例では、第１の仮想プロセッサは、第１のオペレーティングシステムに付随するメモリの全てにアクセスすることができる。一方、第２の仮想プロセッサは、保護エージェントに付随するメモリの一部以外の、第２のオペレーティングシステムに付随するメモリの全てにアクセスすることができる。保護エージェント仮想プロセッサだけが、第２のオペレーティングシステムに割り当てられたメモリに加えて、保護エージェントに付随するメモリの一部にアクセスできる。
【００６０】
更に、第１の仮想プロセッサ及び第２の仮想プロセッサは、それらの付随するメモリを変更する能力を有するだけである。このように、それらのそれぞれのオペレーティングシステムを動作させる仮想プロセッサのいずれも、保護エージェントに付随するメモリの一部を変更することができない。しかしながら、保護エージェント仮想プロセッサは、保護エージェントに付随するメモリ及び、いくつかの実施形態では、第２の仮想プロセッサに付随するメモリも変更することができる。
【００６１】
そのプログラムされた特質によって、保護エージェント仮想プロセッサは、周期的に保護エージェントを実行することができる。場合によっては、保護エージェント仮想プロセッサがほかのアプリケーションを実行することができるが、この例では、専用の保護エージェント仮想プロセッサを示す。このように、この仮想プロセッサは、通常、保護エージェントを周期的に実行する働きをするだけである。更に、保護エージェントは、同様の方法かまたは同一の方法で、上記の保護エージェントと同様の機能または同一の機能を実行することができる。
【００６２】
専用の保護エージェント仮想プロセッサをスケジューリングすることによって、バーチャルマシンモニタは、保護エージェントがこのプロセッサの制御下でかつ自律保護エージェント特権モードで周期的に動作することを確実にする。更に、この保護エージェント仮想プロセッサだけが保護エージェントに付随するメモリの一部にアクセスできるので、バーチャルマシンモニタはオペレーティングシステム内のコードからこのメモリを保護する。従って、オペレーティングシステム特権モードにおいて動作するマルウェアは、保護エージェントにパッチを当てることができずかつ保護エージェントが実行できないようにすることができない。このように、この技術は、本質的に、保護エージェントを変更するオペレーティングシステムの能力を除去する。
【００６３】
ツールの例示的な使用法
保護エージェントの保護を確実にすることができるツールを前に説明したので、以下のセクションは、動作におけるこれらのツールの１つの例だけ説明する。最初に、コンピュータユーザがインターネットをサーフィンし、特定のウェブサイトをサーフィンする間に、悪質な意図を有するダイアログボックスがユーザのディスプレイにポップアップすると仮定する。ダイアログボックスは、ある種のマルウェアをユーザのコンピュータ上にインストールする許可をユーザに要求する。この要求は直接であってもよいが、ダイアログボックスが通常の場合のように要求を見せかけていると仮定する。ダイアログボックスは、例えば、ユーザが賞を獲得したという虚偽の通知をするかもしれない。そのように通知する際に、ダイアログボックスは、賞を授与されるためにダイアログボックスの「ＯＫ」ボタンをクリックするようにユーザに悪意をもって指示する。ユーザが実際にＯＫのボタンを選択し、コンピュータデバイスで実行中のソフトウェア（例えば、アンチウィルスアプリケーション）からの１つまたは複数の警告にもかかわらず要求されたオペレーションを続けることをユーザが選択すると仮定する。
【００６４】
この時点で、コンピュータデバイスは、マルウェアを含むドライバのインストールを開始する。通常ドライバに当てはまることだが、この悪質なドライバはオペレーティングシステム特権モードへのアクセスを許可され、この特権モードに付随するメモリ（例えば、カーネル）にロードされる。一旦カーネルにロードされると、悪質なドライバ及びその付随するマルウェアは、コンピュータのメモリ及びオペレーティングシステムに基本的に何でもアクセスできる。ユーザにとって残念なことに、このマルウェアはユーザのキーストロークをログするキーロガーを含むと考えられる。ここで、ユーザは自分の銀行のウェブサイトに誘導し、自身の預金口座にサインすると仮定する。キーストロークをログするその能力のために、キーロガーは、ユーザの預金口座パスワードを知って、インターネットを介して悪質なドライバの作者にこのパスワードを送信する。
【００６５】
更に状況を悪くすることに、マルウェアが「ルートキット」、即ち、保護エージェント及びユーザのアンチウィルスソフトウェアから能動的に隠れようとするマルウェアであると仮定する。従来のシステムでは、保護エージェントは、カーネル（即ち、悪質なドライバがアクセスできるメモリ内）内に存在する。従って、これらの従来のシステムでは、マルウェアは保護エージェントにアクセスでき、保護エージェントから自身を隠そうとすることができる。成功した場合、マルウェアは、カーネル内に存在しないかのように保護エージェントに見える。従って、ユーザのアンチウィルスソフトウェアが保護エージェントをコールしてコンピュータのメモリに存在する全てのアプリケーションのリストを要求すると、マルウェアは認められない。この不在によって、マルウェアを知りかつ除去するアンチウィルスソフトウェアは無力になる。更に、マルウェアは保護エージェントにパッチをあて、それによって保護エージェントを全く実行できないようにする。このように、マルウェアがいずれかのオペレーティングシステム資源を変更する場合には、保護エージェントは通知することができない。
【００６６】
しかしながら、ユーザのコンピュータデバイス上の保護エージェントは、従来のシステムにおいてのようにカーネル内に存在する代わりに、メモリ内に存在するかまたはオペレーティングシステム特権モードからアクセスできないモードで動作すると仮定する。従って、悪質なドライバがカーネルにロードされると、悪質なドライバは保護エージェントが存在するメモリまたは保護エージェントが動作するモードにアクセスすることができない。それゆえに、ドライバ及びその付随するマルウェアは、保護エージェント自体にアクセスできない。よって、マルウェアは、保護エージェント及び、よって同様にアンチウィルスソフトウェアからも隠れることができない。従って、アンチウィルスソフトウェアが保護エージェントにコンピュータのメモリに存在する全てのアプリケーションのリストを求めると、返送されたリストにはマルウェアが含まれる。次に、アンチウィルスソフトウェアは、このコードをマルウェアと認め、従って、ユーザのコンピュータデバイスからこのコードを除去する。更に、マルウェアがオペレーティングシステム資源を変更する場合に、保護エージェントは自身に通知し、それに応じて、ユーザのコンピュータデバイスをシャットダウンすることができる。
【００６７】
従って、メモリに存在していることによってまたはオペレーティングシステム特権モードからアクセスできないモードで動作していることによって、本明細書で開示した実施形態は、マルウェアが保護エージェントから隠れることができないようにするかまたは保護エージェントにパッチを当てることができないようにする。従って、上記の例では、マルウェアが重要な資源を変更すると、ユーザのコンピュータデバイスは、マシンからマルウェアを除去することができるかまたは、場合によっては、システムをシャットダウンすることができる。いずれにせよ、これらの実施形態は、害を及ぼそうとするマルウェアの実効性をより小さくする働きをする。
【００６８】
ツールの他の実施形態
上記のセクションは、保護エージェントを、オペレーティングシステム特権モードから変更できなくするかまたはアクセスできなくする特定の２、３の例を説明している。このセクションでは、例えば下層のプロセッサに存在しないプロセッサに対する特権モードを加えることなどの、ツールの他の実施形態が説明される。
【００６９】
これらの例示的な実施形態は、図７乃至図１１のプロセスの一部７００乃至１１００の一部として説明される。これらのプロセスも、図１乃至図６を参照して説明したかまたは図示した例示的なプロセスも、あらゆる適当なハードウェア、ソフトウェア、ファームウェア、またはそれらの組合せにおいて実施されてもよい。ソフトウェア及びファームウェアの場合、これらのプロセスは、コンピュータ可読媒体に保存されかつ１つまたは複数のプロセッサによって実行可能なコンピュータ実行可能命令として実行される一組のオペレーションを示す。本セクションで説明されるツールについてのこれらの実施形態は、ツールの範囲または請求の範囲を限定することを意図していない。
【００７０】
図７を参照すると、ブロック７０２において、１つまたは複数のオペレーティングシステム資源を識別するエンフォースメントポリシーを受信する。このエンフォースメントポリシーは、暗号化データを含んでいてもよく、デジタル署名されたマニフェストを介してまたはアプリケーションプログラムインタフェース（ＡＰＩ）をオペレーティングシステム（例えば、ハイパーコール）にさらすことによって受信され得る。ブロック７０４において、オペレーティングシステム特権モードにおいて動作しているエンティティからアクセスできないメモリから、１つまたは複数のオペレーティングシステム資源を識別する。例示的な資源は、システムサービスディスパッチテーブル（ＳＳＤＴ）、割り込みディスパッチテーブル（ＩＤＴ）、及び／またはグローバル記述子テーブル（ＧＤＴ）を含む。上記で検討したように、この識別は、バーチャルマシンモニタ（例えば、図１の保護エージェント１３４によって）内でまたは別個の仮想パーティション（例えば、図１の保護エージェント１４２によって）内で起きてもよい。
【００７１】
一方、ブロック７０６において、識別された資源のいずれかが変更されたかどうかについて判断することが示される。更に、このことは、バーチャルマシンモニタ内でまたは別個のパーティション内で起こってもよい。ブロック７０６において、識別された資源のうちの１つまたは複数が実際に変更されたと判断される場合、ブロック７０８においてこの判断に応じてオペレーティングシステムを終了する。最後に、ブロック７１０において、オペレーティングシステムの再起動があるとオペレーティングシステムに不正なオペレーションが通知される。
【００７２】
図８は、保護エージェントがバーチャルマシンモニタ内で動作するようにするプロセス８００を示す。ブロック８０２において、オペレーティングシステム資源に付随するメモリページまたはレジスタが変更されたという指標を受信することを可能にするのに有効なバーチャルマシンモニタインターセプトマネージャを変更する。この資源は、図７を参照して説明される資源のうちの１つを含んでもよいしまたは別のオペレーティングシステム資源であってもよい。いずれにしても、ブロック８０４では、オペレーティングシステム資源及び場合により１つまたは複数の他のオペレーティングシステム資源を識別するエンフォースメントポリシーを受信する。更に、この識別は、上記で検討した技術を介してなされ得る。上記のように、資源の保護属性（例えば、「リードオンリー」「リードオンリーを初期化せよ」）は、資源の識別に付随して起こり得る。一方、ブロック８０６では、オペレーティングシステム資源に付随するメモリページまたはレジスタが実際に変更されたという指標の受信が示される。それに応じて、ブロック８０８において、オペレーティングシステム資源に付随するオペレーティングシステムをシャットダウンするのに有効なオペレーティングシステム特権モードをシャットダウンする。場合によっては、図１のバーチャルマシンモニタ１０８は、オペレーティングシステム特権モードのこのシャットダウンを行うことができる。
【００７３】
次に、図９は、図１に示した保護エージェント特権モード１３２などの保護エージェント特権モードを生成する例示的なプロセス９００を説明する。ブロック９０２において、メモリの特定の領域をオペレーティングシステム特権モードから変更できなくするかまたはアクセスできなくするという要求を受信する。更に、バーチャルマシンモニタがこの要求を受信してもよく、この要求はメモリの領域自体からまたはメモリの領域に存在する保護エージェントからのものであってもよい。ブロック９０４において、メモリの領域を保護し、メモリの領域に存在する保護エージェントを周期的に実行するタイマをセットする。更に、バーチャルマシンモニタはかかるタイマをセットすることができ、タイマは規則的な間隔で保護エージェントを実行するようバーチャルマシンモニタに命令することができる。
【００７４】
一方、ブロック９０６において、オペレーティングシステム資源を記載するエンフォースメントポリシーを受信する。更に、エンフォースメントポリシー及び記載された資源は、上記で検討されたエンフォースメントポリシー及び記載された資源と同様かまたは同一であってもよい。ブロック９０８で、保護エージェントを実行し、それはバーチャルマシンモニタによって行われてもよい。判断ブロック９１０において、オペレーティングシステム資源が変更されたかどうかが問題にされる。保護エージェントは、上記で詳述した方法で働くことによってこの判断を行うことができる。実際にブロック９１０で、変更があったと判断する場合、ブロック９１２においてオペレーティングシステムをシャットダウンする。しかしながら、かかる判断が行われない場合、ブロック９１４において、保護エージェントが動作を終えたという通知を受信する。場合によってはかつ上記のように、保護エージェント自体が、バーチャルマシンモニタにそのように通知することができる。一方、ブロック９１６で、保護エージェントを実行することと保護エージェントを実行しないこととの間の繰り返しを示す。最後に、保護エージェントは動作しないが、バーチャルマシンモニタは、保護エージェントに付随するメモリの領域の、オペレーティングシステム特権モードにおいて動作するエンティティからの、アクセスの試みに応じてオペレーティングシステムをシャットダウンすることができるということに注目する。
【００７５】
図１０は、図１に示した保護エージェント特権モード１３２などの保護エージェント特権モードを生成する例示的な別のプロセス１０００を示す。ブロック１００２において、実コンピュータプロセッサを複数の仮想コンピュータプロセッサに仮想化する。これらの仮想プロセッサは、図６に示したように、自身のオペレーティングシステムメモリを変更しかつ実プロセッサの処理帯域幅の一部を用いる特権を各々が有している１つまたは複数のオペレーティングシステム仮想プロセッサを含むことができる。仮想プロセッサは、また、自身の保護エージェントメモリを変更しかつ実プロセッサの処理帯域幅の異なる部分を用いる特権を有する少なくとも１つの保護エージェント仮想プロセッサを含むことができる。仮想プロセッサの全てがバーチャルマシンモニタによってスケジューリングされてもよいとともに、保護エージェント仮想プロセッサはオペレーティングシステム仮想プロセッサにトランスペアレントでもよい。場合によっては、オペレーティングシステム仮想プロセッサは、保護エージェント仮想プロセッサに割り当てられるメモリを変更することができなくてもよい。更に、保護エージェント仮想プロセッサは、専用のプロセッサであってもよく、専用のプロセッサの主要な目的または唯一の目的は、上記で検討したように、保護エージェントを動作させることである。
【００７６】
次に、ブロック１００４において、保護エージェント仮想プロセッサに保護エージェントを実行させる。保護エージェントは、当該オペレーティングシステムメモリの一部が変更されたか否かを判断するのに有効であり得る。一方、ブロック１００６において、オペレーティングシステムメモリの一部が変更されたという指標を受信する。それに応じて、ブロック１００８において、対応するオペレーティングシステムをシャットダウンする。
【００７７】
最後に、図１１は、実コンピュータプロセッサに特権モードを追加するプロセス１１００を示す。ブロック１１０２において、下層の物理プロセッサに存在する１つまたは複数の特権モードについて判断、識別、または分類することが示される。これらの特権モードは、通常、下層の物理プロセッサ自体によって画定される。いずれにせよ、ブロック１１０４において、下層の物理プロセッサに存在しない特権モードを追加する。場合によっては、追加された特権モードは、１つまたは複数の存在している特権モードによって変更できるメモリの一部と異なっているコンピュータデバイスのメモリの一部を変更することができる。追加された特権モードは、また、以前に存在しなかったかまたは下層のプロセッサにおいて実行可能でなかった命令を追加して実行することができてもよい。
【００７８】
更に、下層の物理プロセッサに存在する１つまたは複数の特権モードは、ユーザ特権モード及びオペレーティングシステム特権モードを含むことができる。これらの実施形態において、追加された特権モードは、ユーザ特権モード及びオペレーティングシステム特権モードの両方より高い特権を有していてもよいし、ユーザ特権モードより高い特権を有しているがオペレーティングシステム特権モードより低い特権を有していてもよいし、または、ユーザ特権モード及びオペレーティングシステム特権モードの両方より低い特権を有していてもよい。最後に、特権モードを追加する１つの例は、上記で検討した多数の方法で保護エージェント特権モード（例えば、図１に示した保護エージェント特権モード１３２）を追加することを含んでいてもよいということに注意が必要である。例えば、メモリの領域をオペレーティングシステム特権モードにおいて動作するエンティティからアクセス不可能にすることを、保護エージェントまたはその付随するメモリの領域は要求することができる。バーチャルマシンモニタは、また、保護エージェント仮想プロセッサをスケジューリングして保護エージェントを実行することによりこの特権モードを生成することができる。
【００７９】
結論
上記のツールは、保護エージェントがオペレーティングシステム特権モードからアクセスできない場所に存在するのを可能にすることによって、または、保護エージェント特権モードを生成することによって、保護エージェントをオペレーティングシステム特権モードから変更できなくするかまたはアクセスできなくすることを可能にする。ツールは、構造上の特徴及び／または方法論的動作に固有の言語で説明されてきたが、添付の請求の範囲において画定されるツールは、説明された特定の特徴または動作に必ずしも限定されるわけではないということが理解されなければならない。むしろ、特定の特徴及び動作は、ツールを実施する例示的な形式として開示されている。
【図１】
0005249450.tif 000002
【図２】
0005249450.tif 000003
【図３】
0005249450.tif 000004
【図４】
0005249450.tif 000005
【図５】
0005249450.tif 000006
【図６】
0005249450.tif 000007
【図７】
0005249450.tif 000008
【図８】
0005249450.tif 000009
【図９】
0005249450.tif 000010
【図１０】
0005249450.tif 000011
【図１１】
0005249450.tif 000012