(57)【要約】  本文書は、保護エージェントを有効にして、オペレーティングシステムの特権モードからアクセス不可能なメモリから、１つ又は複数のオペレーティングシステムの資源が、変更されたかどうかを判断することが可能なツールについて説明する。いくつかの例において、これらのツールは、保護エージェントが仮想マシンモニター内に存在することを可能にすることができる。他の例において、ツールは、保護エージェントが仮想マシンモニターにより提供される明確な仮想パーティション内に存在することを可能にすることができる。オペレーティングシステムの特権モードの外で動作することにより、保護エージェントは、オペレーティングシステムの特権モード内で動作するエンティティーによる攻撃に対して強くなることができる。
2010517164.tif 000002
【特許請求の範囲】
【請求項１】
コンピューター可読命令を自身内に有する１つ又は複数のコンピューター可読媒体であって、コンピューターデバイス（１０２）により実行されるとき、前記コンピューター可読命令は、コンピューターデバイス（１０２）に、
オペレーティングシステム特権モード（１２６）内で動作するエンティティーによってアクセス不可能なメモリから、オペレーティングシステム（１１４）の１つ又は複数の資源（１２０）の組を識別するステップ（７０４）と、
前記１つ又は複数の資源（１２０）の１つ又は複数の組が改変されたかどうかを、前記メモリから判断するステップ（７０６）と
を含む行動を実行させることを特徴とするコンピューター可読媒体。
【請求項２】
前記１つ又は複数の資源（１２０）の組を識別するステップ（７０４）及び前記１つ又は複数の資源（１２０）の１つ又は複数の組が改変されたかどうかを判断するステップ（７０６）は、前記オペレーティングシステム特権モード（１２６）よりも上位の特権を有する仮想マシンモニター（１０８）内で起こることを特徴とする請求項１に記載の媒体。
【請求項３】
前記オペレーティングシステム（１１４）は、複数のパーティションを備える仮想マシンモニター（１０８）により提供される第１のパーティション（１１０）で動作し、前記１つ又は複数の資源（１２０）の組を識別するステップ（７０４）及び前記１つ又は複数の資源（１２０）の１つ又は複数の組が改変されたかどうかを判断するステップ（７０６）は、仮想マシンモニター（１０８）により提供される第２のパーティション（１１２）内で起こることを特徴とする請求項１に説明の媒体。
【請求項４】
前記オペレーティングシステム特権モード（１２６）内で動作するエンティティーによってアクセス不可能な前記メモリにおいて、前記１つ又は複数の資源（１２０）の組を識別する実施方針を受け取るステップ（７０２）をさらに含むことを特徴とする請求項１に記載の媒体。
【請求項５】
前記実施方針はデジタル署名されたマニフェスト（１３８）を含み、デジタル署名されたマニフェスト（１３８）を受け取るステップ（７０２）及び前記１つ又は複数の資源（１２０）の１つ又は複数の組が改変されたかどうかを判断するステップ（７０６）は、前記オペレーティングシステム（１１４）がブートする前又はその間に起こることを特徴とする請求項４に記載の媒体。
【請求項６】
アプリケーションプログラムインターフェース（ＡＰＩ）を前記オペレーティングシステム（１１４）に対して露出するステップと、ＡＰＩを介して前記１つ又は複数の資源（１２０）の１つ又は複数の組の識別を受け取るステップとをさらに含むことを特徴とする請求項１に記載の媒体。
【請求項７】
前記１つ又は複数の資源（１２０）の組が、システムサービスディスパッチテーブル（ＳＳＤＴ）、割り込みディスパッチテーブル（ＩＤＴ）、又はグローバル記述子テーブル（ＧＤＴ）を含むことを特徴とする請求項１に記載の媒体。
【請求項８】
前記１つ又は複数の資源（１２０）の１つ又は複数の組が改変されたという判断に応答して、前記オペレーティングシステム（１１４）を終了するステップ（７０８）をさらに含むことを特徴とする請求項１に記載の媒体。
【請求項９】
前記１つ又は複数の資源（１２０）の１つ又は複数の組が改変されたという判断に応答して、リブート時に、不正な動作についてオペレーティングシステム（１１４）に通知するステップ（７１０）をさらに含むことを特徴とする請求項１に記載の媒体。
【請求項１０】
仮想マシン・モニター・インターセプト・マネージャー（１４６）を効果的に改変して、オペレーティングシステムの資源（１２０）に関連するメモリのページ又はレジスターが改変されたという表示の受け取りを可能にするステップ（８０２）と、
前記オペレーティングシステムの資源（１２０）に関連するメモリのページ又はレジスターが改変されたという表示を受け取るステップ（８０６）と、
オペレーティングシステム特権モード（１２６）を効果的にシャットダウンして、前記表示の受け取りに応答して、前記オペレーティングシステムの資源（１２０）に関連するオペレーティングシステム（１１４）をシャットダウンするステップ（８０８）とを含むことを特徴とする方法。
【請求項１１】
前記オペレーティングシステムの資源（１２０）は前記メモリのページにおける割り込みディスパッチテーブル（ＩＤＴ）であり、前記オペレーティングシステムの資源（１２０）に関連する前記レジスターが、ＩＤＴレジスターであることを特徴とする請求項１０に記載の方法。
【請求項１２】
前記オペレーティングシステムの資源（１２０）は、システムサービスディスパッチテーブル（ＳＳＤＴ）又はグローバル記述子テーブル（ＧＤＴ）であることを特徴とする請求項１０に記載の方法。
【請求項１３】
前記オペレーティングシステム特権モード（１２６）をシャットダウンするステップ（８０８）は、仮想マシンモニター（１０８）により実行されることを特徴とする請求項１０に記載の方法。
【請求項１４】
前記オペレーティングシステムの資源（１２０）と、１つ又は複数の追加のオペレーティングシステムの資源（１２０）とを識別する実施方針を受け取るステップ（８０４）をさらに含むことを特徴とする請求項１０に記載の方法。
【請求項１５】
前記実施方針は、前記識別されたオペレーティングシステムの資源（１２０）のそれぞれに関連する保護属性も記述し、少なくとも１つの前記保護属性は、対応する資源（１２０）を読み出し専用として記述することを特徴とする請求項１４に説明の方法。
【請求項１６】
読み出し専用の保護属性に関連する前記資源（１２０）に対する不変性を強化するステップをさらに含むことを特徴とする請求項１５に記載の方法。
【請求項１７】
オペレーティングシステム特権モード（１２６）内で動作するように設計された１つ又は複数のオペレーティングシステムの資源（１２０）を識別することと、前記１つ又は複数のオペレーティングシステムの資源（１２０）の１つ又は複数が改変されたかどうかを判断すること（７０６）とを可能にする１つ又は複数のコンピューター可読媒体であって、前記１つ又は複数のコンピューター可読媒体が、前記オペレーティングシステム特権モード（１２６）内からの攻撃にさらされないことを特徴とする媒体。 
【請求項１８】
前記１つ又は複数のコンピューター可読媒体が、コンピューターデバイス（１０２）を１つ又は複数の仮想マシンのパーティションに仮想化することと、前記オペレーティングシステム特権モード（１２６）に関連するオペレーティングシステム（１１４）が動作するパーティション（１１０）を含む前記パーティションをホスティングすることとを可能にする仮想マシンモニター（１０８）内で動作することを特徴とする請求項１７に記載の媒体。
【請求項１９】
前記１つ又は複数のコンピューター可読媒体は、仮想マシンモニター（１０８）を含むコンピューターデバイス（１０２）上で動作し、前記仮想マシンモニター（１０８）は、コンピューターデバイス（１０２）を少なくとも第１の仮想マシンのパーティション（１１０）と第２の仮想マシンのパーティション（１１２）とに仮想化し、前記第１の仮想マシンのパーティション（１１０）と前記第２の仮想マシンのパーティション（１１２）とをホスティングし、及び前記オペレーティングシステム特権モード（１２６）に関連するオペレーティングシステム（１１４）が前記第１のパーティション（１１０）内に存在し、前記１つ又は複数のコンピューター可読媒体が前記第２のパーティション（１１２）内に存在することを特徴とする請求項１７に記載の媒体。
【請求項２０】
前記１つ又は複数のコンピューター可読媒体が、前記１つ又は複数のオペレーティングシステムの資源（１２０）の１つ又は複数が改変されたという判断に応答して、オペレーティングシステム特権モード（１２６）に関連するオペレーティングシステム（１１４）をシャットダウンすること（７０８）がさらに可能であることを特徴とする請求項１７に記載の媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、オペレーティングシステム資源の保護に関する。
【背景技術】
【０００２】
コンピューターデバイス内のプロセッサーは、特権モード及び非特権モードを含むことが多い。特権モードで稼動するソフトウェアは、一般にプロセッサーによってサポートされる全ての命令を実行することができる。典型的には、オペレーティングシステムのカーネルは、特権モード内で稼動するが、この特権モードは、時には「リング０」、「スーパーバイザーモード」又は「カーネルモード」とも呼ばれる。 
一方、コンピューターデバイス上で稼動するソフトウェアには、非特権モードのみで稼動するよう制約されるものがある。このモードでは、一般にソフトウェアはプロセッサーの命令のサブセットを実行することが可能である。オペレーティングシステムは、従って、非特権モードを使用して、このモードで稼動するソフトウェアの活動を制限することができる。例えば、ソフトウェアは、コンピューターデバイスのメモリの特定のサブセットに制限される場合がある。この非特権モードは、「リング３」又は「ユーザーモード」としても知られる。一般に、コンピューターデバイス・ユーザーアプリケーションは、この非特権モードで動作する。
【０００３】
ソフトウェアアプリケーションが、この非特権モードで動作する場合、そのアプリケーションは、非特権モードからは直接アクセスできないメモリの一部分へのアクセスを要求することができる。そのアプリケーションが、例えば、このメモリの一部分での動作「新しいファイルの作成」等を実行したいとする。典型的には、この要求はこの非特権モードのコードを特権モードのコードに移行する、コールゲート又は他のシステムコール命令を通して行われる。この移行により、特権モードのみからアクセス可能として指定されるメモリに、非特権モードが直接アクセスしないことを確実にする。 
【発明の概要】
【発明が解決しようとする課題】
【０００４】
これらのモードに従って、悪意のあるコードの製作者は、特権モードにアクセスし、コンピューターデバイスの動きを変えるマルウェアをインストールすることができる。このマルウェアは、例えば、ファイルの位置の改変、ファイルの隠蔽、ファイルの変更、キー・ストロークの改変などをすることができる。このマルウェアには、「ルートキット」を含むものがあり、ルートキットはコンピューターデバイスの動きを変えるだけでなく、特権モードのメモリ内にそれ自身を隠してしまう。コンピューターデバイス上で稼動するアンチウィルスアプリケーションは、それ故この隠れたルートキットを発見することができず、従ってマルウェアはその悪意のある行いを続けることができる。さらに、以下で検討するように、そのようなマルウェアを、オペレーティングシステムの内蔵保護システム全体でパッチすることができる。 
マルウェアの製作者は、特権モードにアクセスし、マルウェアをコンピューターデバイスに種々の方法でロードすることができ、その方法にはコンピューターデバイスのユーザーをだまして、知らないうちにマルウェアをユーザー所有のコンピューターデバイスにインストールすることが含まれる。その結果、現在のオペレーティングシステムは、そのようなマルウェアを検出するための１つ又は複数の保護システムを用いることが多い。これらの保護システムは、一般に特定の重要なオペレーティングシステムの資源を監視して、これらの資源に対するいかなる変化も検出する。そのような保護システムがそのような変化を検出すると、保護システムは、特定の資源がマルウェアに感染されたと判断することができる。これらの保護システムは、また、ユーザーのアンチウィルスアプリケーションに、非特権モードのメモリ内に現在存在するアプリケーションの一覧を提供することができる。もちろん、マルウェアが隠れることに成功していると、提供される一覧には現れない。さらに、マルウェアが保護システムのパッチに成功していると、保護システムは、稼動することができない、又は重要なオペレーティングシステムの資源に対するいかなる変化も検出することができない。
【０００５】
これらの保護システムは効果的である一方、いくつかの弱点にも悩まされる。第一に、これらのシステムは遮蔽をすることに依存していることが多く、それ故マルウェアに識別された場合はセキュリティ上の弱点には脆弱である。すなわち、マルウェアが保護システムのアイデンティティを解明し、保護システムの位置を見つけた場合は、保護システムそのものを無効にすることができる。マルウェアの製作者は、また、他のものに対しても同じことを行う方法について指示することができる。さらに、第一の点に関して、これらの保護システムは、一般に、オペレーティングシステム（例えば、特権モード自身の内部で）の保護ドメインと同じ保護ドメインで動作する。従って、マルウェアが特権モードへのアクセスを獲得し、遮蔽された保護システムの姿を暴露することができると、保護システムは、自分自身が攻撃にさらされる。最終的には、これらの保護システムは、オペレーティングシステム又は特権モードと同時に初期化する。従って、マルウェア又はマルウェアの製作者は、この初期化の前にコンピューターデバイスの制御を掌握すれば、保護システムが初期化するのを阻止することができる。
【課題を解決するための手段】
【０００６】
本文書は、保護エージェントを有効にして、オペレーティングシステムの特権モードからアクセス不可能なメモリから、１つ又は複数のオペレーティングシステムの資源が変更されたかどうかを判断することが可能なツールについて説明する。いくつかの実施形態において、これらのツールにより、保護エージェントが仮想マシンモニター内に存在することができる。他の実施形態において、それらのツールにより、保護エージェントが仮想マシンモニターにより提供される明確な仮想パーティション内に存在することができる。オペレーティングシステムの特権モードの外で動作することにより、保護エージェントは、オペレーティングシステムの特権モード内で動作するエンティティーによる攻撃に対して強くなることができる。
【０００７】
本要約は、以下の「発明を実施するための形態」でさらに述べる概念を選択して簡略化した形式で紹介するために提供するものである。本要約は、請求の主題の重要な特徴又は主要な特徴を確認することを意図しておらず、また請求の主題の範囲を決定するために助言するものとして意図してもいない。用語「ツール」は、例えば、上記の及び本文書全体の文脈により認められるような、システム、方法、コンピューター可読命令及び／又は技術に言及することができる。
【図面の簡単な説明】
【０００８】
【図１】ツールの種々の実施形態が動作する、例示の動作環境を示す図である。
【図２】図１に例示されるモジュールの変化するコンピューターデバイスのメモリの権利を示す図である。
【図３】図１に例示されるいくつかのモジュールが存在するコンピューターデバイスメモリの変化する部分を表す図である。
【図４】仮想マシンモニターが保護エージェントに関連するメモリの一部分を保護し、タイマーをセットしてエージェントを稼動することができる例示の方法を示すフロー図である。
【図５】物理的なプロセッサーを、多数のオペレーティングシステム仮想プロセッサー及び保護エージェント仮想プロセッサーに仮想化することができる仮想マシンモニターを有する例示のアーキテクチャーを示す図である。
【図６】図５の物理的プロセッサーの帯域幅をどのように種々の仮想プロセッサーの間に割り当てるかを例示する図である。
【図７】ツールが、オペレーティングシステムの特権モードからアクセス不可能な位置に存在する保護エージェントを有効にして稼動するいくつかの方法を示す例示のプロセスの図である。
【図８】ツールが、仮想マシンモニターを改変してオペレーティングシステムの特権モードからアクセス不可能な位置に存在する保護エージェントを有効にして稼動するいくつかの方法を示す例示のプロセスの図である。
【図９】ツールが仮想マシンモニターに要求を出すことにより保護エージェントの特権モードを形成するいくつかの方法を示す例示のプロセスの図である。
【図１０】ツールが現実のコンピュータープロセッサーを仮想コンピュータープロセッサーに仮想化することにより保護エージェントの特権モードを形成し、仮想コンピュータープロセッサーの少なくとも１つが保護エージェントを稼動するいくつかの方法を示す例示のプロセスの図である。
【図１１】ツールが根底にある物理的プロセッサー上には存在しない特権モードの追加を有効にするいくつかの方法を示す例示のプロセスの図である。
【０００９】
同じ数字は、本開示及び図面を通して使用し、同様の構成要素及び特徴に言及する。
【発明を実施するための形態】
【００１０】
概要
以下の文書は、保護エージェントをオペレーティングシステム特権モードから改変不可能又はアクセス不可能にする方法で、保護エージェントを動作することが可能なツールについて説明する。これらのツールは、従って、保護エージェント自身の保護を可能にし、それによって、重要なオペレーティングシステムの資源に対する改変を検出する保護エージェントの能力を確実にする。加えて、これらのツールは、資源の改変の検出に応答して、又は保護エージェント自身の変更が企てられたことに応答して、オペレーティングシステム又はオペレーティングシステム特権モードをシャットダウンすることができる。さらに、これらのツールは、その後の資源の変更を検出する必要なしに、保護エージェントがオペレーティングシステムの資源に対する不変性を強化することを可能にする。
【００１１】
ツールがこれらの行為及び他の行為を有効にする環境については、以下の「例示の動作環境」と題される章に説明される。その後に「自律的な保護エージェント」と題される章が続き、これは２つの下位の章を含む。第１の下位の章は、「仮想マシンモニター保護エージェント」と題され、保護エージェントが仮想マシンモニター内に存在し、仮想マシンモニター内で実行することができる一例示の方法を説明する。次に、「仮想パーティション保護エージェント」と題される別の下位の章が続き、オペレーティングシステムのパーティションとは別個の仮想パーティション内に存在し、その仮想パーティション内で実行することができる一例示の方法を説明する。 
次に「自律的な保護エージェントの特権モード」と題される別の章が続き、これもまた２つの下位の章を含む。第１の下位の章は、仮想マシンモニターのタイマーが、根底にあるプロセッサーに保護エージェントの特権モードを追加する一例示の方法を説明し、「仮想マシンモニターに対する保護要求」と題される。次に「保護エージェントの仮想プロセッサー」と題される下位の章が続き、保護エージェント特権モードを形成することができる別の方法が説明されるが、この場合、保護エージェントの特権モードで保護エージェントを稼動するように構成されるものを含む多数の仮想プロセッサーが使用される。次に「ツールの例示の使用」と題される章が続き、先に説明したツールの動作中の例を説明する。最後に、「ツールの他の実施形態」と題される章では、種々の他の実施形態、及びツールが動作する方法を説明する。本概要は、これらの章の題名と要約とを含むが、読み手の便宜のために提供されるものであり、請求項又は表題の章の範囲を制限することを意図しない。 
【００１２】
例示の動作環境
ツールについて詳細に述べる前に、以下の、例示の動作環境についての検討が提供され、ツールの種々の発明の態様が採用されるいくつかの方法を読み手が理解することを支援する。以下に説明される環境は、ほんの一例を構成するが、ツールの応用を任意の特定の動作環境に限定することを意図しない。他の環境を、請求の主題の精神及び範囲から逸脱することなく使用することができる。例えば、後続の章は、単一の保護エージェントを用いる実施形態を説明するが、多数の保護エージェントを利用することもできる。ある場合には、これらの保護エージェントは、独立に並列して稼動することができる。そのような場合、保護エージェントは、典型的には、それぞれのパーティション内のメモリにアクセスできるだけである。さらに、以下に説明する技術は同時に利用可能である。すなわち、様々な保護エージェントが、同じ動作環境内で様々な技術を利用することができる。 
現在の例に戻ると、図１は、そのような一例示の動作環境の全体を１００として例示する。この環境はコンピューターデバイス１０２を含み、それ自身が１つ又は複数のプロセッサー１０４及びコンピューター可読媒体１０６を含む。コンピューター可読媒体１０６は、仮想マシンモニター１０８（例えば、ハイパーバイザー）を含み、これは１つ又は複数のプロセッサーを多数の仮想プロセッサーに仮想化することが可能である。仮想マシンモニター１０８は、また、多数の仮想パーティションを有効にすることができる。１つ又は複数の仮想プロセッサーは、各パーティションと関連付けられることが可能で、これらの仮想プロセッサーは、利用可能な物理的プロセッサー上にスケジューリングされる。例示するように、いくつかの実施形態においては、仮想マシンモニターは、第１の仮想パーティション１１０及び第２の仮想パーティション１１２を有効にすることができる。以下で詳細に検討するように、これらのパーティションは、オペレーティングシステムの機能を保護エージェントサービスから切り離す働きをすることができる。
【００１３】
また例示するように、コンピューター可読媒体１０６は、ＯＳ（オペレーティングシステム）１１４及び１つ又は複数のユーザーアプリケーション１１６をさらに含む。オペレーティングシステム１１４は、オペレーティングシステムサービス１１８をユーザーアプリケーション１１６に提供し、そのアプリケーションをコンピューターデバイス上で稼動することを可能にする。加えて、１つ又は複数のオペレーティングシステムの資源１２０は、オペレーティングシステム上に存在する。例示の資源は、システムサービスディスパッチテーブル（ＳＳＤＴ）、割り込みディスパッチテーブル（ＩＤＴ）、グローバル記述子テーブル（ＧＤＴ）等を含む。また例示するように、オペレーティングシステムは、マルウェア１２２（すなわち、悪意のあるコード）を含むことができ、これが上記で検討した方法又は他の方法でコンピューターデバイス上にロードされる場合がある。１つ又は複数の保護エージェントは、以下で検討するが、オペレーティングシステムの資源に対してマルウェアにより及ぼされる変化を検出し、その検出に応答して防御の行動をとることができる。エージェントがそのような判断を行うと、保護エージェントは、オペレーティングシステム及び／又はコンピューターデバイスをシャットダウンするか、又は他の対応策をとることができる。
【００１４】
コンピューターデバイス構造について検討してきたが、ここで、根底にある１つ又は複数の物理的プロセッサー１０４上に存在する、変化する特権モードに注目する。仮想マシンモニター特権モード１２４は、図１に例示する最も高い特権モードを表す。この特権モードは、全て又はほとんど全てのデバイスの資源及びメモリに対してアクセスすることができる。仮想マシンモニター特権モード１２４から、仮想マシンモニターは、プロセッサーを指定し、各仮想パーティションのためのメモリの領域へのアクセスを許可することができる。パーティション内で稼動しているオペレーティングシステムは、物理的プロセッサーの全ての資源を制御しているとするであろうが、実際は、仮想マシンモニターにより判断される一部分を制御しているだけである。 
仮想マシンモニター特権モードより特権が低いオペレーティングシステム特権モード１２６は、全てのオペレーティングシステムの資源１２０、及び、ほとんど又は全てのオペレーティングシステムのメモリに対するアクセスを有する。この特権モードは、しかしながら、第２の仮想パーティション１１２等の他のパーティションに関連する資源又はメモリへのアクセスを有さない。それにもかかわらず、この特権モードは一般に全てのオペレーティングシステムのメモリに対するアクセスを有するため、「特権モード」と呼ばれることがある。「リング０」、「スーパーバイザーモード」又は「カーネルモード」もまた、この特権モードを表現する。上記で検討したように、オペレーティングシステム特権モード１２６内で動作するユーザーアプリケーションは、一般に、仮想マシンモニターモードに対して予約される命令を除いて、プロセッサーにより与えられるほとんどの命令を実行することができる。 
このオペレーティングシステム特権モードは、ユーザー特権モード１２８と対比されて、「非特権モード」、「リング３」又は単に「ユーザーモード」と呼ばれることがある。また上記で検討したように、ユーザーアプリケーションは、特権モード１２８から動作しているときは、オペレーティングシステムに関連する特定のメモリにアクセスすること又はそのメモリを改変することができない。一般に、基本の動作を実行するときには、コンピューターデバイス・ユーザーアプリケーションは、このユーザー特権モードで動作する。
【００１５】
上記で検討したモードに加えて、図１は、第２の仮想パーティション特権モード１３０及び保護エージェント特権モード１３２もまた例示している。以下で詳細に検討するように、保護エージェント特権モード１３２は、オペレーティングシステム特権モードがアクセスできない、メモリの一部分へのアクセスを有するが、一方で、仮想マシンモニター特権モードができるようなメモリアクセスを一般に有さない。そのように、この特権モードは、オペレーティングシステム特権モードより特権が高く、仮想マシンモニター特権モードより特権が低い。
【００１６】
また以下に詳細に検討するように、第２の仮想パーティション特権モードは、一般に、第２の仮想パーティション１１２に関連するメモリへのアクセスを有する。加えて、このモードは、第１の仮想パーティションへのアクセスを有することができる。そのような追加のアクセスにより、例えば、第２の仮想パーティションに存在する保護エージェントが、第１の仮想パーティション及びその対応するオペレーティングシステムに関連するメモリをスキャンすることが可能になる。このモードは、一般に、仮想マシンモニターへのアクセスを有さず、従って仮想マシンモニター特権モードより特権が低い。それにもかかわらず、第２の仮想パーティション特権モードは、さらにオペレーティングシステム特権モードがアクセスできない、メモリの一部分へのアクセスを有する。
【００１７】
その一方、図２は、コンピューターデバイスのメモリの権利２００を例示する。この図は従って、図１のモジュールがアクセス可能なメモリの量を表す。例示するように、仮想マシンモニター特権モード１２４で動作する仮想マシンモニター１０８は、例示される全てのモジュールの中で最も大きなメモリの権利を有する。実際、仮想マシンモニターは、メモリの一部分２０２に存在し、唯一、メモリの一部分２０２へのアクセスを有する。次に、保護エージェント２０４（例えば、図１に例示する任意の保護エージェント）は、保護エージェント特権モード１３２で動作し、仮想マシンモニターに対応する部分２０２以外の全てのメモリへのアクセスを有する。保護エージェントは、しかしながら、メモリの一部分２０６へのアクセスを有するが、これは保護エージェント自身が存在するメモリの一部分である。 
オペレーティングシステム１１４は、一方、オペレーティングシステム特権モード１２６で動作し、部分２０２及び部分２０６以外の全てのメモリへのアクセスを有する。オペレーティングシステムは、保護エージェントに関連するメモリの一部分２０６へのアクセスを有さないが、一方、オペレーティングシステム及びその関連する特権モードは、メモリの一部分２０８へのアクセスを有するのである。このメモリの一部分２０８は、時にはカーネルメモリ又はオペレーティングシステムの最下位レベルのコンポーネントとして知られ、一般に、図１に示す資源を含む。しかしながら、マルウェアがメモリの一部分２０８にロードされて動作するとしても、マルウェアは保護エージェントに関連するメモリの一部分２０６にアクセスすることができない。
【００１８】
最後に、図２は、ユーザーアプリケーション１１６がメモリの一部分２１０へのアクセスを有するだけであることを例示している。これらのユーザーアプリケーション及び対応するユーザー特権モードは、オペレーティングシステムの最下位レベルのコンポーネントに関連するメモリの一部分２０８へのアクセスを有さない。この動作環境を念頭に置いて、以下の４つの章では、保護エージェントを、オペレーティングシステム特権モードから改変不可能又はアクセス不可能にする例示の方法を詳細に説明する。
【００１９】
自律的な保護エージェント
以下の章は、オペレーティングシステム特権モード内で動作するエンティティーによってアクセス不可能なメモリから、１つ又は複数のオペレーティングシステムの資源が変更されたかどうかを判断することが可能なツールについて説明する。上記のように、そのツールは、保護エージェントがオペレーティングシステムのメモリ自身の位置以外の位置に存在することを可能にする。さらに特には、以下の下位の章では、保護エージェントがどのように仮想マシンモニター内又は自律的な仮想パーティション内に存在することができるかを説明する。
【００２０】
仮想マシンモニター保護エージェント
この下位の章では、図１に例示するように、保護エージェント１３４が、どのように仮想マシンモニター自身の内部に存在することができるかを説明する。オペレーティングシステム特権モードが仮想マシンモニターにアクセスできないため、この位置では、保護エージェントがオペレーティングシステムのメモリ内に置かれる任意のマルウェアから保護される。この位置から動作するために、保護エージェントは、保護エージェント１３４が監視することができる１つ又は複数のオペレーティングシステムの資源１２０の識別を受け取る。この識別を、資源識別子１３６を介して受け取ることができる。例示するように、オペレーティングシステムは、この情報を仮想マシンモニターへのアプリケーションプログラミングインターフェース（ＡＰＩ）コールを介して提供することができ、又はそのオペレーティングシステムは、マニフェスト（一覧）１３８の形式の情報を提供することができる。上記で検討したように、これらの資源は、ＳＳＤＴ、ＩＤＴ、及びＧＤＴを含むことができる。
【００２１】
保護エージェント１３４は、資源の識別を受け取ると、保護エージェントサービス１４０をオペレーティングシステム１１４まで拡大する。これらの保護エージェントサービスは、一般に、任意の識別された資源が改変されたかどうかを判断することを含む。そのような判断がなされると、保護エージェント又は仮想マシンモニターは、例えば、オペレーティングシステムをシャットダウンすることができる。保護エージェントサービスは、改変不可能である（例えば、「読み出し専用」）とされるどのような資源に対しても不変性を強化することを含むこともできる。
【００２２】
そのようなアーキテクチャーを採用することは、仮想マシンモニターをロード又は初期化することにより始まり、仮想マシンモニターは、１つ又は複数のオペレーティングシステムをホスティングすることが可能である。この例において、仮想マシンモニターは、単一のオペレーティングシステム１１４をホスティングするが、このオペレーティングシステム１１４は仮想マシンモニターにロードされた後、自分自身で初期化を開始する。オペレーティングシステムの初期化の間、オペレーティングシステムの最下位レベルのコンポーネント（例えば、カーネル）に関連するメモリの一部分２０８が最初にロードする。オペレーティングシステムの資源１２０のあるもの又は全て（例えば、ＳＳＤＴ、ＧＤＴ、ＩＤＴ）は、一般に、このメモリの一部分２０８に存在する。
【００２３】
オペレーティングシステムが初期化する前、又はその間、保護エージェント１３４は仮想マシンモニター内から稼動を開始することができる。上記で検討したように、保護エージェントは、一般に、１つ又は複数のオペレーティングシステムの資源の組の識別を受け取り、１つ又は複数の識別された資源が改変されたかどうかを判断する。各々の識別された資源は多くの場合、多数の位置に多数のコンポーネントを含み、保護エージェントは、資源全体を完全に保護するために各コンポーネントを監視することができることに留意すべきである。例えば、マニフェストが、ＳＳＤＴを監視かつ保護すべき資源として識別すると、保護エージェントは、実際のテーブルだけでなく、ＳＳＤＴの他のコンポーネントも保護する。例えば、保護エージェントは、また、テーブルの位置を指し示すレジスターを監視及びスキャンすることができる。さらに、保護エージェントは、ＳＳＤＴの仮想アドレスを物理アドレスに変換するメモリ変換のデータ構造（例えば、ページテーブル）を監視することもできる。保護エージェントがそれをできないと、悪意のあるコードは、様々なページのテーブルマッピングで別のテーブルを作成することができる（すなわち、ＳＳＤＴ自身をバイパスする）。 
識別に加えて、保護エージェントは、対応する資源をどのように保護するかについて保護エージェントに命令する保護属性を受け取ることもできる。例えば、保護エージェントは、ＳＳＤＴ資源の識別、及び、「読み出し専用」の対応する保護属性を受け取ることができる。保護エージェントは、従って、ＳＳＤＴが読み出し専用であるべきこと、及び、そのことにより改変されるべきではないことを知る。「初期後読み出し専用（Ｉｎｉｔ  ｒｅａｄ−ｏｎｌｙ）」は、他の考えられる保護属性であり、対応する資源は、初期化の間に１回書き込むことができ、その後は読み出し専用であるべきことを保護エージェントに命令する。 
保護エージェントは、資源及び資源の保護属性のこの識別を、積極的にも受動的にも多数の方法で受け取ることができる。例えば、オペレーティングシステムは、保護エージェントが監視することができる資源を識別する、デジタル署名されたマニフェストを提供することができる。このデジタル署名されたマニフェストは、メモリの一部分２０８の対応する位置に資源をマッピングする、名称（例えば、ＳＳＤＴ、ＩＤＴ、ＧＤＴ等）によって、又はアドレスによってなど多数の方法で、資源を識別することができる。後者の例において、マニフェストは、資源のゲストの物理アドレス、資源のゲストの仮想アドレス、又は資源のシステムの物理アドレスを識別することができる。いくつかの例において、ゲストの物理アドレスは、対応する資源コンポーネントの実際の物理的位置を発見するために、実際のシステムの物理アドレスにマッピングすることができる。
【００２４】
仮想マシンモニター又は保護エージェントがマニフェストを受け取った後、これらのコンポーネントは、マニフェストが改ざん又は変更されたかどうかを判断することができる。仮想マシンモニター又は保護エージェントがそのような判断をすると、仮想マシンモニター又は保護エージェントは、オペレーティングシステムの開始を行わないという選択をすることができる。加えて、資源のリストに関連する暗号化が無効にされ、こうしてそのセキュリティを保護することができる。
【００２５】
マニフェストに加えて、又はその代替として、保護エージェントは、資源及び保護属性の識別を仮想マシンモニターへの１つ又は複数のアプリケーションプログラミングインターフェース（ＡＰＩ）コール（例えば、「ハイパーコール」）を介して受け取ることができる。オペレーティングシステムが初期化するときに、オペレーティングシステム（及び、おそらくオペレーティングシステム２０８の最下位レベルのコンポーネント）は、監視又は保護することができる特定の資源の保護エージェントを通知する仮想マシンモニターにハイパーコールを行うことができる。これらのハイパーコールは、上記で検討したのと同じ方法で、関連資源を識別することができる。また、上記で検討したように、これらのハイパーコールは、資源の保護属性も識別することができる。 
デジタル署名されたマニフェスト及び１つ又は複数のハイパーコールを利用する実施形態において、保護エージェントは、最初に、オペレーティングシステムがブートする前又はその間に、マニフェスト内で識別される資源をスキャンすることができる。この初期スキャンの後、オペレーティングシステムは、次に、保護エージェントに命令する仮想マシンモニターへのハイパーコールを行い、ハイパーコール識別されるページが改変されたかどうかを判断することができる。このように、マニフェストは、オペレーティングシステムのブート毎に資源を識別してスキャンし、一方で、ハイパーコールは、それぞれの初期化時に資源を識別して動的にスキャンする。
【００２６】
監視すべき資源を識別すると、保護エージェントは、次に、資源（例えば、上記で検討したＳＳＤＴの全ての部分）が改変されたか否かを判断する。保護エージェントは、識別された資源に対する不変性を強化することもできる。例えば、保護エージェントは、「読み出し専用」に指定される任意の資源が「書き込み可能」に変わらないことを確実にすることができる。
【００２７】
資源をこのように監視及び保護するために、仮想マシンモニター内で実行するコードは、仮想マシン・モニター・インターセプト・マネージャー（例えば、図１のマネージャー１４６）を採用することができる。そのように命令されると、このインターセプトマネージャーを、識別された資源の種々のコンポーネント上でインターセプトするために登録することができる。この登録によって、仮想マシンモニター内の保護エージェントは、これらの識別された資源にアクセス又はその資源を変更しようとする企てがなされると、今度はインターセプトを受け取ることができる。そのようにして、保護エージェントは、識別された資源の種々のコンポーネントを検査及びスキャンすることができる。保護エージェントは、これらの資源を変更しようとする企てを積極的に阻止することもできる。
【００２８】
いくつかの実施形態において、保護エージェントは、資源をスキャンし、将来のスキャンの結果の比較に使用するために資源の初期状態を判断する。他の実施形態において、保護エージェントは、既に、将来のスキャンの結果の比較のための資源の初期状態を知っている。任意の事象において、保護エージェントは、この初期状態のハッシュ値又はチェックサム値を計算することができる。この計算の後、保護エージェントは、オペレーティングシステムのブート前、後又はその間に、資源をスキャンする。スキャン後、保護エージェントは、結果のハッシュ値又はチェックサム値を計算し、これを初期状態のハッシュ値又はチェックサム値と比較する。等しければ、保護エージェントは、対応する資源が改変されていないと判断する。もちろん、保護エージェントは、ハッシュ値又はチェックサム値をバイパスし、代わりに直接初期状態とスキャンを比較しても良い。
【００２９】
しかしながら、値が異なる場合、保護エージェント及び／又は仮想マシンモニターは、１つ又は複数に対応する行動をとることができる。最初に、保護エージェント自身が、オペレーティングシステム又はオペレーティングシステム特権モードをシャットダウンするか、又は、仮想マシンモニターにそうするように命令することができる。また、保護エージェントが仮想マシンモニターに存在するので、又は仮想マシンモニターがオペレーティングシステムをホスティングするので、これらの２つのコンポーネントは、オペレーティングシステムをそのようにシャットダウンすることが可能である。さらに、保護エージェントが仮想マシンモニター内に存在するので、オペレーティングシステムのシャットダウンをオペレーティングシステム特権モードからでさえ改ざんすることができない。
【００３０】
オペレーティングシステムのシャットダウンに加えて、保護エージェント及び／又は仮想マシンモニターは、最初に、オペレーティングシステムにシャットダウンが迫っていることを警告することができる。仮想マシンモニターとオペレーティングシステムとの間の通信チャネルにより、そのような通信を可能にすることができる。代替として、保護エージェント及び／又は仮想マシンモニターは、メモリの位置に警告を書き込むこと、又はオペレーティングシステムが監視する事象を信号で伝えることができる。
【００３１】
警告が与えられたか否かに関わらず、オペレーティングシステムのシャットダウンは、突然又は正常のどちらかであり得る。前者の場合、仮想マシンモニターは、異種のハッシュ値又はチェックサム値を察知した直後、単にオペレーティングシステムの電源を突然切ることができる。後者の場合、仮想マシンモニターは、オペレーティングシステムが一定の時間システム自身を適正にシャットダウンすることを可能にすることができる。この時、オペレーティングシステムは、例えば、任意のオープンファイルを閉じ、任意の対応するデータを一度に消去することができる。オペレーティングシステムは、割り当てられた資源を解放することもできる。さらに、シャットダウンは両方のアプローチを利用することができる。例えば、多数のパーティションをホスティングする場合、仮想マシンモニターは、異種のハッシュ値又はチェックサム値を有するパーティションを突然シャットダウンすることができる一方で、他のパーティションが適正にシャットダウンする時間を許容する。任意の事象において、シャットダウンの方法は、規定により設定することができ、調整可能である。
【００３２】
シャットダウン及び対応する警告に加えて、保護エージェント及び／又は仮想マシンモニターは、識別された資源の無許可の改変に応じて、ブート後の行動をとることができる。例えば、仮想マシンモニター及び／又は保護エージェントは、オペレーティングシステムのリブート時、オペレーティングシステムに資源の改変を通知することができる。それに応じて、オペレーティングシステムは、アンチウィルススキャンを実行して、任意のマルウェアが部分２０８（例えば、カーネル）等のオペレーティングシステムのメモリ内に実際に存在するかどうかを検出することができる。さらに、仮想マシンモニターは、オペレーティングシステムをブートしてセーフモードにするか、又はオペレーティングシステム自身がブートしてセーフモードにすることを選択することができる。また、その通知に応じて、オペレーティングシステムは自分自身が攻撃されたと認識し、そのため、接続する任意のネットワークに自分自身がアクセスすることを可能にできないようにする。
【００３３】
仮想パーティションの保護エージェント
仮想マシンモニター自身の内部に存在する代わりに、保護エージェント（例えば、図１の保護エージェント１４２）が、別個の仮想パーティション（例えば、図１の第２の仮想パーティション１１２）に存在することができる。これらの実施形態において、この別個のパーティションは、仮想マシンモニターの信頼されたデリゲート（delegate）として行動する。保護エージェント１４２は、従って、オペレーティングシステム特権モードからはアクセス不可能である。上記で検討したように、仮想マシンモニター１０８は、コンピューターデバイス１０２のそのような仮想化の準備を行う。仮想マシンモニターがコンピューターデバイスを任意の数のパーティションに仮想化することができる一方で、図１は、オペレーティングシステムをホスティングする第１のパーティションと保護エージェントをホスティングする第２のパーティションとを例示する。保護エージェントが存在する第２の仮想パーティションは、ある場合には、その主要な機能又は唯一の機能が保護エージェントを稼動することである、デリゲートされたセキュリティパーティションとすることができる。他の実施形態において、この第２の仮想パーティションは、別のオペレーティングシステムをホスティングする等の追加の機能を実行することができる。
【００３４】
第２の仮想パーティション内に存在する保護エージェント１４２は、仮想マシンモニター内に存在する保護エージェント１３４に関して上記で説明したような多くの又は全ての同様の機能を実行することが可能である。すなわち、保護エージェント１４２は、積極的又は受動的に、１つ又は複数のオペレーティングシステムの資源１２０の識別を受け取ることができる。識別に応答して、保護エージェントは保護エージェントサービス１４０を拡大することができ、この保護エージェントサービス１４０は、一般に、１つ又は複数の識別された資源が改変されたか否かを判断することを含み、改変されたと判断した場合、対応する行動をとる。これらのサービスは、特定の資源の不変性を強化することも含むことができる。保護エージェント１４２は、これらの機能を、上記で説明したものと同様の技術を介して実行することができる。 
例示するように、保護エージェント１４２は、第２の仮想パーティション特権モード１３０からアクセス可能であるが、オペレーティングシステム特権モード１２６からはアクセス不可能である。その上で、その結果としてのアーキテクチャーは、マルウェアがオペレーティングシステムの最下位レベルのコンポーネントに関連するメモリの一部分２０８内に存在する場合でも、保護エージェント自身を、そのオペレーティングシステム内に存在する任意のマルウェアから保護することができる。
【００３５】
自律的な保護エージェント特権モード
この章では、保護エージェントに関連するオペレーティングシステムのメモリの一部分を、オペレーティングシステム特権モードから改変不可能又はアクセス不可能にすることが可能な一方で、このメモリの一部分をオペレーティングシステムの物理的メモリ空間に物理的に存在させたままにすることを可能にする、ツールについて説明する。これらのツールは、従って、保護エージェントに関連するメモリの一部分、同様に、オペレーティングシステム特権モード内でアクセス可能なメモリの残りの部分にもアクセスできる、自律的な保護エージェント特権モードを形成する。この特権モードは、従って、オペレーティングシステム特権モードより特権が高い。
【００３６】
第１の下位の章では、仮想マシンモニターにより保護エージェントに関連するメモリの一部分が保護されることを要求することによって、保護エージェント特権モードを形成することが可能なツールについて説明する。一方、第２の下位の章では、保護エージェントを稼動するデリゲートされた仮想プロセッサーを含む多数の仮想プロセッサーに、物理的なプロセッサーを仮想化することによって、保護エージェント特権モードの形成を可能にするツールについて説明する。
【００３７】
仮想マシンモニターに対する保護要求
この下位の章では、保護エージェントがどのように仮想マシンモニターに要求して、保護エージェントに関連するメモリを保護することができるか、またその上でどのように保護エージェント自身を保護することができるか、について説明する。この保護の結果、図１に例示するように、保護エージェント１４４が保護エージェント特権モード１３２で動作することになる。例示するように、保護エージェント１４４は、保護エージェント特権モードに移動する前、最初はオペレーティングシステム特権モード内に存在することができる。この後者の保護エージェントの特権モードでの動作時は、保護エージェントは、一般に、オペレーティングシステム特権モード１２６で動作するエンティティーからの攻撃には影響されない。 
保護エージェント特権モード１３２での動作時は、エンティティーはオペレーティングシステム特権モード１２６で動作する場合よりもわずかに高い特権を有するが、まだ仮想マシンモニター特権モード１２４よりも特権が低い。図２に例示するように、この仮想マシンモニター特権モードで動作する保護エージェントは、保護エージェント自身に関連するメモリの一部分２０６に加えて、オペレーティングシステムに関連するメモリの全てへのアクセスを有する。仮想マシンモニター１０８は、追加の保護エージェントのアクセス可能性を強化する。
【００３８】
図３及び図４は、この保護エージェント特権モードを形成する例示の方法を示す。図３は、全ての又はほとんど全てのコンピューターデバイスメモリ３００を表す。コンピューターデバイスメモリ３００は、オペレーティングシステム特権モード（例えば、カーネル）に関連するメモリの一部分３０２と、ユーザー特権モードに関連するメモリの一部分３０４と、を含む。メモリの一部分３０２は、また、例示するように、保護エージェント１４４に関連するメモリの一部分３０６、及びドライバーがロードされるメモリの一部分３０８を含む。
【００３９】
図４に例示するように、保護エージェント特権モード１３２を形成するプロセス４００は、行動１でメモリの一部分３０２（例えば、カーネル）を初期化することにより開始される。行動２で、メモリの一部分３０６又は保護エージェント１４４自身が仮想マシンモニター１０８を呼び出して、仮想マシンモニターにより保護エージェントに関連するメモリの一部分が保護されることを要求する。そのように要求する際に、保護エージェント又は対応するメモリは、オペレーティングシステム特権モード内で稼動しているコードがメモリの一部分３０６を改変すること、又はメモリの一部分３０６に接触することを許可されないことを求める。保護エージェントは、自身を（例えば、デジタル署名により）仮想マシンモニター１０８に対して検証することもできる。このメモリの一部分、又は保護エージェント自身は、仮想マシンモニターがタイマーを設定し、タイマーの時間が来ると保護エージェントを稼動することを要求することもできる。行動３は、仮想マシンモニターがメモリをオペレーティングシステム特権モード内で動作するエンティティーから保護し、要求に応じてタイマーを設定することを表す。保護エージェントに関連するこのメモリの一部分３０６が、今度はオペレーティングシステム特権モードから改変不可能及び／又はアクセス不可能であるので、保護エージェントが保護エージェント特権モードに存在することになるということに留意されたい。
【００４０】
行動４において、ドライバーがメモリ３０８内にロードされる。マルウェアがドライバーの形式で存在することができるため、行動２の要求及び行動３の対応する保護は、一般に、ドライバーがメモリにロードされる前に起こる。「ツールの例示の使用」の章で検討したように、マルウェアの製作者は、しばしば、ユーザーをだまして悪意のあるドライバーをコンピューターデバイスにインストールする。メモリの一部分３０６が保護される前に、１つ又は複数の悪意のあるドライバーが実際にメモリ内にロードされると、悪意のあるドライバーは、保護そのものに対する要求全体を潜在的にパッチすることができる。そのようなパッチは、それによって仮想マシンモニターを介する保護エージェントの周期的な稼動を、従って保護エージェント特権モードの形成を遅らせる。しかしながら、仮想マシンモニターがタイマーを早く設定するよう要求することによって、このプロセスは、オペレーティングシステム特権モード内のコードが保護エージェントの周期的な稼動を不能にすることができないことを確実にする。
【００４１】
一方、行動５は、ドライバーがロードされた後に起こりやすい。例示するように、行動５は、仮想マシンモニターのタイマーの時間が来たこと、及び、従って保護エージェントの稼動を表す。稼動時、保護エージェント１４４は、先行する章で検討した機能と同様の又は同一の機能を実行する。また上記で検討したように、保護エージェントは、１つ又は複数の識別された資源が改変されたという判定に応答して行動をとることができる。保護エージェントは、オペレーティングシステム特権モード内で動作するエンティティーから、企てられたアクセス又は保護エージェントの改変又はその対応するメモリに応答して、そのような行動をとることもできる。
【００４２】
行動６は、稼動を終了するときに、保護エージェントが仮想マシンモニターに通知することを表す。最後に、行動７は、行動３、５、及び６が繰り返されることを表す。そのように、仮想マシンモニターは、そのタイマーをリセットし、保護エージェントを、１００ｍｓ（ミリ秒）等の周期的な時間間隔で稼動することができる。
【００４３】
仮想マシンモニターでフェイルセーフタイマーを設定することにより、プロセス４００は、保護エージェントに関連するメモリの一部分を改ざんするオペレーティングシステムコードの能力を除去する。そのように、この処理は保護エージェントが稼動を継続するか、又はオペレーティングシステム特権モード内で活動するマルウェアにより全体をパッチされないことを確実にする。代わりに、保護エージェントは、オペレーティングシステムに割り当てられた物理的なメモリ内に存在する間、自律的な特権モード内で稼動することになる。
【００４４】
保護エージェントの仮想プロセッサー
この下位の章では、仮想プロセッサーに保護エージェント１４４を稼動するようにスケジューリングすることにより、仮想マシンモニターがどのように保護エージェント特権モードを形成することができるかについて説明する。図５は、コンピューターデバイス１０２を、それぞれがオペレーティングシステムを含む２つのパーティションに仮想化する仮想マシンモニター１０８を含むアーキテクチャー５００を例示する。例示するように、本例のコンピューターデバイスは、２つの現実のプロセッサー１０４（ａ）及び１０４（ｂ）を含み、それぞれに対して仮想プロセッサーが多数の仮想プロセッサーをスケジューリングすることができる。また例示するように、仮想マシンモニターは、第１の仮想パーティション５０２及び第２の仮想パーティション５０４を作成する。第１の仮想パーティションは、第１のオペレーティングシステムを稼動する第１の仮想プロセッサー５０６を含む。同様に、第２の仮想パーティションは、第２のオペレーティングシステムを稼動する第２の仮想プロセッサー５０８を含む。しかしながら、この例においては、仮想マシンモニターは、図１の保護エージェント１４４等の保護エージェントを稼動する保護エージェントの仮想プロセッサー５１０も含む。 
アーキテクチャー５００を作成するために、仮想マシンモニターは最初にロードされ、初期化を行う。図６に例示するように、次に、仮想マシンモニターは種々の仮想プロセッサーを仮想化し、そうする際に現実のプロセッサーの帯域幅６００を割り当てる。この仮想化及び割り当てを始めるために、仮想マシンモニターは、第１の仮想プロセッサーを第１の現実のプロセッサー上に仮想化する。この例において、この仮想化は、図６に例示するように１対１で行われる。すなわち、この１つの仮想プロセッサー５０６のみが現実のプロセッサー１０４（ａ）に対応し、そのように、仮想マシンモニターが全ての現実のプロセッサーの帯域幅をこの仮想プロセッサーに割り当てる。次に、仮想マシンモニターは第２の仮想プロセッサー５０８を、第２の現実のプロセッサー１０４（ｂ）上に仮想化する。しかしながら、１対１の代わりに、仮想マシンモニターは、第２の現実のプロセッサーの帯域幅のある部分を保持する。次に、仮想マシンモニターは図６にも例示するように、保護エージェントの仮想プロセッサー５１０を第２の現実のプロセッサー１０４（ｂ）の残りの帯域幅上に仮想化する。 
第２の現実のプロセッサー上で動作する各仮想プロセッサーは、一般に、タイムスライス（time-sliced）で行動する。すなわち、第２の仮想プロセッサーは、第２の仮想プロセッサーの動作が中断する前に、第２の現実のプロセッサー上で、ある程度の時間動作できる。この時点で、第２の現実のプロセッサーは、別のある程度の時間は保護エージェントの仮想プロセッサーの動作に切り替わる。例えば、第２の仮想プロセッサーは、第２の現実のプロセッサー上で９０ｍｓ間動作することができ、この時点で、この第２の仮想プロセッサーの動作が中断し、保護エージェントの仮想プロセッサーの動作が１０ｍｓ間始まる。一般に、保護エージェントの仮想プロセッサーは、両オペレーティングシステムパーティション及び両第１と第２の仮想プロセッサーに対して透過的である。そのようなものとして、両オペレーティングシステムは、その対応する仮想プロセッサーがそれぞれの現実のプロセッサーと対応するとしている。 
現実のプロセッサーの帯域幅を割り当てることに加えて、仮想マシンモニターは、各仮想プロセッサーがアクセスすることができるメモリの一部分も管理する。この例において、第１の仮想プロセッサーは、第１のオペレーティングシステムに関連する全てのメモリにアクセスすることができる。一方、第２の仮想プロセッサーは、保護エージェントに関連するメモリの一部分を除く、第２のオペレーティングシステムに関連する全てのメモリにアクセスすることができる。保護エージェントの仮想プロセッサーだけが、第２のオペレーティングシステムに割り当てられたメモリに加えて、保護エージェントに関連するメモリの一部分へのアクセスを有する。 
さらに、第１及び第２の仮想プロセッサーのみが、それらの関連するメモリを改変する能力を有する。その上で、それぞれのオペレーティングシステムを動作する両仮想プロセッサーは、保護エージェントに関連するメモリの一部分を改変することはできない。しかしながら、保護エージェントの仮想プロセッサーは、保護エージェントに関連するメモリを改変することができ、いくつかの実施形態においては、第２の仮想プロセッサーに関連するメモリを同様に改変することができる。
【００４５】
そのプログラムされた性質上、保護エージェントの仮想プロセッサーは、周期的に保護エージェントを稼動することになる。いくつかの例において、保護エージェントの仮想プロセッサーは、他のアプリケーションを稼動することができるが、この例ではデリゲートされた保護エージェントの仮想プロセッサーを例示している。そのように、この仮想プロセッサーは、一般に、保護エージェントを周期的に稼動する働きをするのみである。この場合も、保護エージェントは、上述した保護エージェントのように、同様の又は同一の機能を、同様の又は同一の方法で稼動することができる。
【００４６】
デリゲートされた保護エージェントの仮想プロセッサーをスケジューリングすることにより、仮想マシンモニターは、保護エージェントがこのプロセッサーの制御下で、かつ自律的な保護エージェント特権モードで、周期的に稼動することを確実にする。さらに、この保護エージェントの仮想プロセッサーのみが、保護エージェントに関連するメモリの一部分へアクセスを有するため、仮想マシンモニターはこのメモリをオペレーティングシステム内のコードから保護する。従って、オペレーティングシステム特権モード内で動作するマルウェアは、保護エージェント全体をパッチすることは不可能であり、保護エージェントが稼動するのを阻止することは不可能である。そのように、この技術は、保護エージェントを改ざんするオペレーティングシステムの能力を本質的に除去するものである。
【００４７】
ツールの使用例
保護エージェントの保護を確実にすることが可能なツールについて先に説明したが、以下の章では、動作中のこれらのツールのほんの一例を説明する。最初に、コンピューターのユーザーがインターネットサーフィンを行っており、あるウェブサイトを見ている際に、悪意のあるダイアログボックスがユーザーのディスプレイにポップアップする場合を考えてみる。ダイアログボックスは、ある種のマルウェアをユーザーのコンピューター上にインストールするための、ユーザーからの許可を要求する。この要求は直接的な場合があるが、ダイアログボックスが、典型的な事例であるかのように偽装しているとする。例えば、このダイアログボックスは、偽って、ユーザーが賞金を獲得したとユーザーに通知することができる。そのように通知する際、ダイアログボックスは、賞金を受け取るためにダイアログボックスの「ＯＫ」ボタンをクリックするように、悪意を持ってユーザーに命令する。コンピューターデバイス上で稼動するソフトウェア（例えば、アンチウィルスアプリケーション）からの１つ又は複数の警告にもかかわらず、ユーザーが実際にＯＫボタンを選択し、要求される動作をユーザーが継続することを選択する場合を考えてみよう。
【００４８】
この時点で、コンピューターデバイスは、マルウェアを含むドライバーのインストールを開始する。一般にドライバーには当てはまることであるが、この悪意のあるドライバーは、オペレーティングシステム特権モードへのアクセスを許可され、この特権モード（例えば、カーネル）に関連するメモリにロードされる。カーネルにロードされると、悪意のあるドライバー及びそれに伴うマルウェアは、本質的にコンピューターのメモリ及びオペレーティングシステムに自由裁量なアクセスを有する。ユーザーにとっては残念ながら、このマルウェアが、ユーザーのキー・ストロークのログをとるキー・ロガーを含むとする。ここで、ユーザーが自分の銀行のウェブサイトへ進み、自分の銀行口座にサインインするとする。キー・ストロークのログをとるその能力により、キー・ロガーはユーザーの銀行口座のパスワードを学習し、このパスワードをインターネットを介して悪意のあるドライバーの製作者へ送出する。
【００４９】
状況をより悪くすることとして、マルウェアが「ルートキット」、すなわち保護エージェント及びユーザーのアンチウィルスソフトウェアから能動的に隠れようと企てるマルウェアであるとする。従来のシステムにおいては、保護エージェントは、カーネル内（すなわち、悪意のあるドライバーがアクセスできるメモリ内）に存在する。従って、これらの従来のシステムにおいて、マルウェアは、保護エージェントへのアクセスを有し、保護エージェントから自分自身を隠そうと企てることができる。それに成功すると、マルウェアが、カーネル内には存在しないかのように保護エージェントには見えるであろう。従って、ユーザーのアンチウィルスソフトウェアが保護エージェントを呼び出し、コンピューターのメモリに存在する全てのアプリケーションの一覧を要求すると、マルウェアは存在しないであろう。このマルウェアが存在しないということにより、マルウェアを認知し、除去するアンチウィルスソフトウェアは効果が無くなる。さらに、マルウェアは、保護エージェント全体をパッチすることができ、それによって、保護エージェントの稼動が完全に阻止される。そのように、保護エージェントは、マルウェアがどのオペレーティングシステムの資源を改変するかどうかを通知することができない。
【００５０】
しかしながら、従来のシステムのようにカーネル内に存在する代わりに、ユーザーのコンピューターデバイス上の保護エージェントが、オペレーティングシステム特権モードからはアクセス不可能なメモリ内に存在するか、又はオペレーティングシステム特権モードからはアクセス不可能なモードで稼動する場合を考える。それによると、悪意のあるドライバーがカーネル内にロードされると、保護エージェントが存在するメモリか、又は保護エージェントが稼動するモードへのアクセスを有さない。それ故に、ドライバー及びそれに伴うマルウェアは、保護エージェント自身へのアクセスを有さない。従って、マルウェアは保護エージェントから自分自身を隠すことは不可能であり、それ故、アンチウィルスソフトウェアからも同様である。この結果、アンチウィルスソフトウェアがコンピューターのメモリ内に存在する全てのアプリケーションの一覧を保護エージェントに求めるとき、返される一覧にはマルウェアは含む。次に、アンチウィルスソフトウェアは、このコードがマルウェアであることを認識し、それに応じてユーザーのコンピューターデバイスからそれを除去する。さらに、保護エージェントは、マルウェアがオペレーティングシステムの資源を改変するかどうかを自分自身に通知することができ、それに応答して、ユーザーのコンピューターデバイスをシャットダウンすることができる。 
従って、オペレーティングシステム特権モードからアクセス不可能なメモリに存在すること、又はオペレーティングシステム特権モードからアクセス不可能なモードで稼動することにより、本明細書に説明される実施形態は、マルウェアが自分自身を隠すこと、又は保護エージェント全体をパッチすることを阻止する。上記の例において、ユーザーのコンピューターデバイスは、従って、マルウェアをマシンから除去し、ある例においては、マルウェアが重要な資源を改変すると、システムをシャットダウンすることが可能である。どちらの場合においても、これらの実施形態は、害を及ぼそうとするマルウェアの有効性を減少する働きをする。
【００５１】
ツールの他の実施形態
上記の章では、保護エージェントを、オペレーティングシステム特権モードから改変不可能又はアクセス不可能にするいくつかの特定の例が説明されている。この章においては、特権モードを根底にあるプロセッサー上に存在しないプロセッサーに追加する等のツールの他の実施形態について説明される。
【００５２】
これらの例示の実施形態は、図７から図１１のプロセス７００から１１００の一部として説明される。これらのプロセスは、図１から図６を参照して説明又は例示した例示のプロセスと同様に、任意の適切なハードウェア、ソフトウェア、ファームウェア、又はそれらの組合せにおいて実装することができる。ソフトウェア及びファームウェアの場合、これらのプロセスは、コンピューター可読媒体に記憶される、及び１つ又は複数のプロセッサーにより実行可能であるコンピューター実行可能命令として実装される動作の組を表す。この章に説明されるツールのこれらの実施形態は、ツール又は請求項の範囲に限定されることを意図しない。 
図７を参照すると、ブロック７０２は、１つ又は複数のオペレーティングシステムの資源を識別する実施方針を受け取る。この実施方針は、暗号化されたデータを含むことができ、デジタル署名されたマニフェストを介して、又はアプリケーションプログラムインターフェース（ＡＰＩ）をオペレーティングシステム（例えば、ハイパーコール）に対して露出することにより、受け取ることができる。ブロック７０４は、オペレーティングシステム特権モード内で動作するエンティティーからではアクセス不可能なメモリから、１つ又は複数のオペレーティングシステムの資源を識別する。例示の資源は、システムサービスディスパッチテーブル（ＳＳＤＴ）、割り込みディスパッチテーブル（ＩＤＴ）、及び／又はグローバル記述子テーブル（ＧＤＴ）を含む。上記で説明したように、この識別は、仮想マシンモニター内で（例えば、図１の保護エージェント１３４により）、又は別個の仮想パーティション内で（例えば、図１の保護エージェント１４２により）起こることができる。
【００５３】
一方、ブロック７０６は、任意の識別された資源が改変されたかどうかを判断することを表す。この場合も、これは、仮想マシンモニター内、又は別個のパーティション内で起こることができる。ブロック７０６が、１つ又は複数の識別された資源が実際に改変されたと判断すると、ブロック７０８が、この判断に応答してオペレーティングシステムを終了する。最後に、ブロック７１０が、オペレーティングシステムのリブート時に、オペレーティングシステムに不正な動作について通知する。
【００５４】
図８は、保護エージェントが仮想マシンモニター内で稼動することを可能にするプロセス８００を例示する。ブロック８０２は、仮想マシン・モニター・インターセプト・マネージャーを効果的に改変して、オペレーティングシステムの資源に関連するメモリのページ又はレジスターが改変されたという表示の受け取りを可能にする。この資源は、図７を参照して説明した資源のうちの１つを含むことができるか、又は別のオペレーティングシステムの資源とすることができる。任意の事象において、ブロック８０４は、オペレーティングシステムの資源、及び場合によっては１つ又は複数の他のオペレーティングシステムの資源を識別する実施方針を受け取る。その場合も、この識別は、上記で検討した技術を介して行うことができる。上述したように、資源の保護属性（例えば、「読み出し専用」又は「初期後読み出し専用」）は、資源の識別に付随することができる。一方、ブロック８０６は、オペレーティングシステムの資源に関連するメモリページ、又はレジスターが実際に改変されたという表示の受け取りを表す。それに応じて、ブロック８０８は、オペレーティングシステム特権モードを効果的にシャットダウンして、オペレーティングシステムの資源に関連するオペレーティングシステムをシャットダウンする。いくつかの例において、図１の仮想マシンモニター１０８が、オペレーティングシステム特権モードのこのシャットダウンを遂行することができる。 
次に、図９は、図１に例示する保護エージェント特権モード１３２等の、保護エージェント特権モードを形成する例示のプロセス９００を説明する。ブロック９０２は、特定のメモリ領域をオペレーティングシステム特権モードから改変不可能又はアクセス不可能にするという要求を受け取る。その場合も、仮想マシンモニターは、メモリ自身の領域から又はメモリの領域に存在する保護エージェントから生じることができるこの要求を受け取ることができる。ブロック９０４は、メモリの領域を保護し、タイマーを設定してメモリの領域に存在する保護エージェントを周期的に稼動する。その場合も、仮想マシンモニターは、そのようなタイマーを設定することができ、そのタイマーは、仮想マシンモニターに命令して保護エージェントを一定間隔で稼動することができる。
【００５５】
一方、ブロック９０６は、オペレーティングシステムの資源について説明する実施方針を受け取る。その場合も、実施方針及び説明した資源は、上記で検討したものと同様又は同一とすることができる。ブロック９０８は、保護エージェントを稼動するが、これは仮想マシンモニターにより達成することができる。判定のブロック９１０は、オペレーティングシステムの資源が改変されたかどうかを問う。その保護エージェントは、上記で詳述した方法で機能することにより、この判断を行うことができる。ブロック９１０が、改変が起こった、と実際に判断する場合、ブロック９１２は、オペレーティングシステムをシャットダウンする。しかしながら、そのような判断がなされない場合、ブロック９１４は、保護エージェントが稼動を終了した、という通知を受け取る。いくつかの例においては、上記で説明したように、保護エージェント自身が、仮想マシンモニターにそのように通知することができる。一方、ブロック９１６は、保護エージェントを稼動することと保護エージェントを非稼動にすることとの間の循環を表す。最後に、保護エージェントが稼動していない間、仮想マシンモニターが、保護エージェントに関連するメモリ領域の、オペレーティングシステム特権モード内で動作するエンティティーからのアクセスが企てられるのに応じて、オペレーティングシステムをシャットダウンすることができることに留意されたい。
【００５６】
図１０は、図１に例示する保護エージェント特権モード１３２等の、保護エージェント特権モードを形成する別の例示のプロセス１０００を示す。ブロック１００２は、現実のコンピュータープロセッサーを多数の仮想コンピュータープロセッサーに仮想化する。これらの仮想プロセッサーは、図６に例示するように、１つ又は複数のオペレーティングシステムの仮想プロセッサーを含むことができ、そのそれぞれが所有するオペレーティングシステムのメモリを改変し、現実のプロセッサーの処理帯域幅の一部を使用する特権を有する。仮想プロセッサーは、所有する保護エージェントメモリを改変し、現実のプロセッサーの処理帯域幅の異なる一部を使用する特権を有する少なくとも１つの保護エージェントの仮想プロセッサーを含むことができる。全ての仮想プロセッサーを仮想マシンモニターによりスケジューリングすることができる一方で、保護エージェントの仮想プロセッサーは、オペレーティングシステムの仮想プロセッサーに対して透過的とすることができる。いくつかの場合において、オペレーティングシステムの仮想プロセッサーは、保護エージェントの仮想プロセッサーに割り当てられたメモリを改変することができない。さらに、保護エージェントの仮想プロセッサーは、上記で検討したように、その主要な目的又は唯一の目的が、保護エージェントに実行させることであるデリゲートされたプロセッサーとすることができる。
【００５７】
次に、ブロック１００４は、保護エージェントの仮想プロセッサーに保護エージェントを実行させるが、これは前記オペレーティングシステムのメモリが改変されたか否かを判断するのに効果的であり得る。一方、ブロック１００６は、オペレーティングシステムのメモリの一部分が改変されたという表示を受け取る。それに応答して、ブロック１００８は、対応するオペレーティングシステムをシャットダウンする。
【００５８】
最後に、図１１は、特権モードを現実のコンピュータープロセッサーに追加するプロセス１１００を示す。ブロック１１０２は、根底にある物理的プロセッサー上に存在する１つ又は複数の特権モードの判断、識別、又は分類を表す。一般に、これらの特権モードは、根底にある物理的プロセッサー自身により定義される。いずれにせよ、ブロック１１０４は、根底にある物理的プロセッサー上に存在しない特権モードを追加する。いくつかの場合において、追加された特権モードは、１つ又は複数の存在する特権モードにより改変可能なメモリの一部分とは異なる、コンピューターデバイスのメモリの一部分を改変することが可能である。追加された特権モードは、それまでは根底にあるプロセッサーには存在しなかった、又はそこでは実行不可能であった命令を、追加及び実行することもできる。
【００５９】
さらに、根底にある物理的プロセッサー上に存在する１つ又は複数の特権モードは、ユーザー特権モード及びオペレーティングシステム特権モードを含むことができる。これらの実施形態において、追加された特権モードは、ユーザー特権モード及びオペレーティングシステム特権モードの両方よりも特権が高いか、ユーザー特権モードより特権が高いがオペレーティングシステム特権モードより特権が低いか、又は、ユーザー特権モード及びオペレーティングシステム特権モードの両方より特権が低いものとすることができる。最後に、特権モードを追加する一例は、保護エージェント特権モード（例えば、図１に説明する保護エージェント特権モード１３２）を、上記で検討した多数の方法で追加することを含むことができることに留意されたい。例えば、保護エージェント又はその関連するメモリ領域は、メモリ領域を、オペレーティングシステム特権モード内で動作するエンティティーからアクセス不可能にする、という要求をなすことができる。仮想マシンモニターは、保護エージェントを稼動するよう保護エージェントの仮想プロセッサーをスケジューリングすることにより、この特権モード形成することもできる。
【００６０】
結論
上述したツールは、保護エージェントがオペレーティングシステム特権モードからアクセス不可能な位置に存在できるようにすることにより、又は、保護エージェント特権モードを形成することのいずれかにより、保護エージェントをオペレーティングシステム特権モードから改変不可能又はアクセス不可能にすることが可能である。ツールは、構造的特徴及び／又は方法論的な行動に特有の言語で説明されたが、添付の請求項に定義されるツールはが必ずしもこの説明された特有の特徴又は行動に限定されないことは理解されるべきである。むしろ、特有の特徴及び行動は、ツールを実装する例示の形式として開示される。
【図１】
2010517164.tif 000003
【図２】
2010517164.tif 000004
【図３】
2010517164.tif 000005
【図４】
2010517164.tif 000006
【図５】
2010517164.tif 000007
【図６】
2010517164.tif 000008
【図７】
2010517164.tif 000009
【図８】
2010517164.tif 000010
【図９】
2010517164.tif 000011
【図１０】
2010517164.tif 000012
【図１１】
2010517164.tif 000013
【国際調査報告】
2010517164.tif 000014
2010517164.tif 000015