(57)【特許請求の範囲】
【請求項１】
電子的コードを記憶する手段と、
ゲスト・オペレーティング・システム（ＯＳ）がブートされるとき、前記ゲストＯＳのゲスト・カーネル・ページの複製ページを作成し、ブート後に前記複製ページの変更は許可されず、ハイパーバイザを備えるハイパーバイザ環境で前記ゲストＯＳの前記ゲスト・カーネル・ページに対応するエントリを有するソフト・ホワイトリストを作成する処理手段とを有し、前記エントリは、作成された前記ゲスト・カーネル・ページの複製ページであり、前記処理手段は、プロセスが前記ゲスト・カーネル・ページへのアクセスを試みるとページ・フォルトを発生させ、前記ページ・フォルトが命令ページ・フォルトである場合、前記プロセスを、前記ゲスト・カーネル・ページに対応する複製ページにリダイレクトする、装置。
【請求項２】
前記処理手段は、前記ゲスト・カーネル・ページに対応する複製ページをポイントするように前記ハイパーバイザのシャドー・ページ・テーブル内のマシン・ページ・フレーム番号を変更することにより、前記プロセスをリダイレクトする、請求項１に記載の装置。
【請求項３】
前記処理手段は、前記ページ・フォルトがデータ・ページ・フォルトである場合、
前記ページ・フォルトを解決し、
前記ゲスト・カーネル・ページに対応するページ・テーブル・エントリを実行不可能かつ書き込み可能とマークする、請求項１または２に記載の装置。
【請求項４】
前記処理手段は、前記ページ・フォルトが命令ページ・フォルトである場合、前記ゲスト・カーネル・ページに対応するページ・テーブル・エントリを読み出し専用とマークする、請求項１ないし３いずれか一項に記載の装置。
【請求項５】
前記処理手段は、前記ハイパーバイザのシャドー・ページ・テーブル内で、前記ゲスト・カーネル・ページのページ・テーブル・エントリをＮＯＴ＿ＰＲＥＳＥＮＴとマークする、請求項１ないし４いずれか一項に記載の装置。
【請求項６】
前記処理手段は、ルートキットからの保護を可能にするドメインの作成中に、前記ハイパーバイザ内にロックダウン機能ビットを設定する、請求項１ないし５いずれか一項に記載の装置。
【請求項７】
前記処理手段は、
ブート時に前記ゲストＯＳがカーネル・コンポーネントをロードした後に前記ソフト・ホワイトリストを作成し、
前記ハイパーバイザのシャドー・ページ・テーブルを調べ、
前記ゲスト・カーネル・ページの仮想アドレスを、対応する複製ページのマシン・ページ・フレーム番号に対応付ける、請求項１ないし６いずれか一項に記載の装置。
【請求項８】
前記ゲストＯＳは少なくとも一部のカーネル・コンポーネントをロードしておらず、前記処理手段は、前記ゲスト・カーネル・ページの仮想基底アドレスを、対応する複製ページのマシン・ページ・フレーム番号に対応付ける、請求項１ないし７いずれか一項に記載の装置。
【請求項９】
プロセッサにより実行されると、前記プロセッサに、
ゲスト・オペレーティング・システム（ＯＳ）がブートされるとき、前記ゲストＯＳのゲスト・カーネル・ページの複製ページを作成し、ブート後に前記複製ページの変更は許可されない、ステップと、
ハイパーバイザを備えるハイパーバイザ環境で前記ゲストＯＳのゲスト・カーネル・ページに対応するエントリを有するソフト・ホワイトリストを作成するステップであって、前記エントリは、作成された前記ゲスト・カーネル・ページの複製ページである、ステップと、
プロセスが前記ゲスト・カーネル・ページへのアクセスを試みるとページ・フォルトを発生させるステップと、
前記ページ・フォルトが命令ページ・フォルトである場合、前記プロセスを、前記ゲスト・カーネル・ページに対応する複製ページにリダイレクトするステップと
を実行させるコンピュータプログラム。
【請求項１０】
前記リダイレクトするステップは、前記ゲスト・カーネル・ページに対応する複製ページをポイントするように前記ハイパーバイザのシャドー・ページ・テーブル内のマシン・ページ・フレーム番号を変更するステップを含む、請求項９に記載のコンピュータプログラム。
【請求項１１】
前記プロセッサに、
前記ページ・フォルトがデータ・ページ・フォルトである場合、
前記ページ・フォルトを解決するステップと、
前記ゲスト・カーネル・ページに対応するページ・テーブル・エントリを実行不可能かつ書き込み可能とマークするステップと
をさらに実行させる、請求項９または１０に記載のコンピュータプログラム。
【請求項１２】
前記プロセッサに、
前記ページ・フォルトが命令ページ・フォルトである場合、前記ゲスト・カーネル・ページに対応するページ・テーブル・エントリを読み出し専用とマークするステップをさらに実行させる、請求項９ないし１１いずれか一項に記載のコンピュータプログラム。
【請求項１３】
前記プロセッサに、
前記ハイパーバイザのシャドー・ページ・テーブル内で、前記ゲスト・カーネル・ページのページ・テーブル・エントリをＮＯＴ＿ＰＲＥＳＥＮＴとマークするステップをさらに実行させる、請求項９ないし１２いずれか一項に記載のコンピュータプログラム。
【請求項１４】
前記ソフト・ホワイトリストを作成するステップは、ブート時に前記ゲストＯＳがカーネル・コンポーネントをロードした後に行われ、
前記プロセッサに、
前記ハイパーバイザのシャドー・ページ・テーブルを調べるステップと、
前記ゲスト・カーネル・ページの仮想アドレスを、対応する複製ページのマシン・ページ・フレーム番号に対応付けるステップと
をさらに実行させる、請求項９ないし１３いずれか一項に記載のコンピュータプログラム。
【請求項１５】
前記プロセッサに、
ルートキットからの保護を可能にするドメインの作成中に、前記ハイパーバイザ内にロックダウン機能ビットを設定するステップをさらに実行させる、請求項９ないし１４いずれか一項に記載のコンピュータプログラム。
【請求項１６】
前記ゲストＯＳは少なくとも一部のカーネル・コンポーネントをロードしておらず、
前記プロセッサに、
前記ゲスト・カーネル・ページの仮想基底アドレスを、対応する複製ページのマシン・ページ・フレーム番号に対応付けるステップをさらに実行させる、請求項９ないし１５いずれか一項に記載のコンピュータプログラム。
【請求項１７】
ゲスト・オペレーティング・システム（ＯＳ）がブートされるとき、前記ゲストＯＳのゲスト・カーネル・ページの複製ページを作成し、ブート後に前記複製ページの変更は許可されない、ステップと、
ハイパーバイザを備えるハイパーバイザ環境で前記ゲストＯＳのゲスト・カーネル・ページに対応するエントリを有するソフト・ホワイトリストを作成するステップであって、前記エントリは、作成された前記ゲスト・カーネル・ページの複製ページである、ステップと、
プロセスがゲスト・カーネル・ページへのアクセスを試みるとページ・フォルトを発生させるステップと、
前記ページ・フォルトが命令ページ・フォルトである場合、前記プロセスを、前記ゲスト・カーネル・ページに対応する複製ページにリダイレクトするステップと
を含む方法。
【請求項１８】
前記リダイレクトするステップは、前記ゲスト・カーネル・ページに対応する複製ページをポイントするように前記ハイパーバイザのシャドー・ページ・テーブル内のマシン・ページ・フレーム番号を変更するステップを含む、請求項１７に記載の方法。
【請求項１９】
前記ページ・フォルトがデータ・ページ・フォルトである場合、
前記ページ・フォルトを解決するステップと、
前記ゲスト・カーネル・ページに対応するページ・テーブル・エントリを実行不可能かつ書き込み可能とマークするステップと
をさらに含む請求項１７または１８に記載の方法。
【請求項２０】
前記ページ・フォルトが命令ページ・フォルトである場合、前記ゲスト・カーネル・ページに対応するページ・テーブル・エントリを読み出し専用とマークするステップをさらに含む、請求項１７ないし１９いずれか一項に記載の方法。
【請求項２１】
前記ハイパーバイザのシャドー・ページ・テーブル内で、前記ゲスト・カーネル・ページのページ・テーブル・エントリをＮＯＴ＿ＰＲＥＳＥＮＴとマークするステップをさらに含む請求項１７ないし２０いずれか一項に記載の方法。
【請求項２２】
ルートキットからの保護を可能にするドメインの作成中に、前記ハイパーバイザ内にロックダウン機能ビットを設定するステップをさらに含む請求項１７ないし２１いずれか一項に記載の方法。
【請求項２３】
前記ソフト・ホワイトリストを作成するステップは、ブート時に前記ゲストＯＳがカーネル・コンポーネントをロードした後に行われ、
前記ハイパーバイザのシャドー・ページ・テーブルを調べるステップと、
各ゲスト・カーネル・ページの仮想アドレスを、対応する複製ページのマシン・ページ・フレーム番号に対応付けるステップと
をさらに含む請求項１７ないし２２いずれか一項に記載の方法。
【請求項２４】
電子的コードを記憶するように構成されたメモリ要素と、
ゲスト・オペレーティング・システム（ＯＳ）がブートされるとき、前記ゲストＯＳのゲスト・カーネル・ページの複製ページを作成し、ブート後に前記複製ページの変更は許可されず、ハイパーバイザを備えるハイパーバイザ環境で前記ゲストＯＳのゲスト・カーネル・ページに対応するエントリを有するソフト・ホワイトリストを作成するように構成されたプロセッサとを備える装置であって、
前記エントリは、作成された前記ゲスト・カーネル・ページの複製ページであり、前記プロセッサは、プロセスがゲスト・カーネル・ページへのアクセスを試みるとページ・フォルトを発生させ、前記ページ・フォルトが命令ページ・フォルトである場合、前記プロセスを、前記ゲスト・カーネル・ページに対応する複製ページにリダイレクトするようにさらに構成された、
装置。
【請求項２５】
前記プロセッサは、さらに、
ブート時に前記ゲストＯＳがカーネル・コンポーネントをロードした後に前記ソフト・ホワイトリストを作成し、
前記ハイパーバイザのシャドー・ページ・テーブルを調べ、
前記ゲスト・カーネル・ページの仮想アドレスを、対応する複製ページのマシン・ページ・フレーム番号に対応付ける、請求項２４に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、一般にはコンピュータ・ネットワークの分野に関し、より詳細には、ハイパーバイザ環境内でカーネル・ルートキットから保護するシステムおよび方法に関する。
【背景技術】
【０００２】
コンピュータ・ネットワーク・セキュリティの分野は、現在の社会で重要性を増し、複雑化している。コンピュータ・ネットワーク環境は、実質的にすべての企業や組織で構築され、通例は相互接続された複数のコンピュータ（例えばエンド・ユーザ・コンピュータ、ラップトップ、サーバ、印刷装置等）を含む。さらに、クラウド・サービスの提供者（および複数のアプリケーションおよびオペレーティング・システムを稼働させる他の組織）は、ハイパーバイザ技術を使用して各種の異なるゲスト・オペレーティング・システムを１つのホスト・デバイスで同時に実行する場合がある。ハイパーバイザは、複数のオペレーティング・システムを１つのホスト・コンピュータで同時に実行することを可能にするコンピュータ・ソフトウェア／ハードウェア・プラットフォームの仮想化ソフトウェアである。セキュリティ上の脅威はハイパーバイザ環境の外部および内部で発生する可能性がある。ハイパーバイザ環境内のそのような脅威は、ＩＴ管理者にとってさらなる課題となる可能性がある。
【発明の概要】
【課題を解決するための手段】
【０００３】
一実施形態による方法は、ハイパーバイザを備えるハイパーバイザ環境でゲスト・オペレーティング・システム（ＯＳ）の各ゲスト・カーネル・ページに対応するエントリを有するソフト・ホワイトリストを作成するステップであって、各エントリは、対応するゲスト・カーネル・ページの複製ページである、ステップと、プロセスがゲスト・カーネル・ページへのアクセスを試みるとページ・フォルトを発生させるステップと、前記ページ・フォルトが命令ページ・フォルトである場合、前記プロセスを、前記ゲスト・カーネル・ページに対応する複製ページにリダイレクトするステップとを含む。
【０００４】
また、一実施形態による装置は、メモリと、プロセッサと、ハイパーバイザとを備える装置であって、ハイパーバイザを備えるハイパーバイザ環境でゲストＯＳの各ゲスト・カーネル・ページに対応するエントリを有するソフト・ホワイトリストを作成し、各エントリは、対応するゲスト・カーネル・ページの複製ページであり、プロセスがゲスト・カーネル・ページへのアクセスを試みるとページ・フォルトを発生させ、前記ページ・フォルトが命令ページ・フォルトである場合、前記プロセスを、前記ゲスト・カーネル・ページに対応する複製ページにリダイレクトするように構成される。
【０００５】
また、一実施形態によるロジックは、持続性の媒体に符号化されたロジックであって、実行されるコードを含み、プロセッサによって実行されると、ハイパーバイザを備えるハイパーバイザ環境でゲストＯＳの各ゲスト・カーネル・ページに対応するエントリを有するソフト・ホワイトリストを作成するステップであって、各エントリは、対応するゲスト・カーネル・ページの複製ページである、ステップと、プロセスがゲスト・カーネル・ページへのアクセスを試みるとページ・フォルトを発生させるステップと、前記ページ・フォルトが命令ページ・フォルトである場合、前記プロセスを、前記ゲスト・カーネル・ページに対応する複製ページにリダイレクトするステップとを含む動作を行うように動作可能である。
【０００６】
本開示ならびにその特徴および利点のより完全な理解を提供するために、添付図面と併せて以下の説明を参照する。図面では、同様の部分は同様の参照符号で示す。
【図面の簡単な説明】
【０００７】
【図１】例示的な実施形態に係る、ハイパーバイザ環境でカーネル・ルートキットから保護するシステムの構成要素を説明する概略的ブロック図である。
【図２】本開示の実施形態に関連する可能性のある例示的な動作ステップを説明する概略的流れ図である。
【発明を実施するための形態】
【０００８】
概要
例示的実施形態のシステムおよび方法は、ハイパーバイザ環境でゲスト・オペレーティング・システムの各ゲスト・カーネル・ページに対応するエントリを有するソフト・ホワイトリストを作成し、各エントリは、対応するゲスト・カーネル・ページの複製ページであり、プロセスがゲスト・カーネル・ページへのアクセスを試みるとページ・フォルトを発生させ、ゲスト・カーネル・ページに対応する複製ページにプロセスをリダイレクトするモジュールを含む。ページ・フォルトがデータ・ページ・フォルトである場合、方法は、ページ・フォルトを解決し、そのゲスト・カーネル・ページに対応するページ・テーブル・エントリを実行不可能かつ書き込み可能とマークするステップを含む。ページ・フォルトが命令ページ・フォルトである場合、方法は、そのゲスト・カーネル・ページに対応するページ・テーブル・エントリを読み出し専用とマークするステップを含む。
【０００９】
例示的実施形態で、プロセスをリダイレクトするステップは、ゲスト・カーネル・ページの仮想アドレスで、ゲスト・カーネル・ページに対応する複製ページのマシン・ページ・フレーム番号をポイントさせるステップを含む。他の実施形態は、ハイパーバイザのシャドー・ページ・テーブル内で、各ゲスト・カーネル・ページのページ・テーブル・エントリをＮＯＴ＿ＰＲＥＳＥＮＴとマークするステップを含む。他の実施形態は、ルートキットからの保護を可能にするドメインの作成中に、前記ハイパーバイザ内にロックダウン機能ビットを設定するステップを含むことができる。
【００１０】
一部の実施形態では、ソフト・ホワイトリストは、ブート時にゲストＯＳがカーネル・コンポーネントをロードした後に行われる。ソフト・ホワイトリストは、ハイパーバイザのシャドー・ページ・テーブルを調べ、各ゲスト・カーネル・ページの仮想アドレスを、それに対応する複製ページのマシン・ページ・フレーム番号に対応付けることによって作成することができる。さらに他の実施形態では、ゲストＯＳが少なくとも一部のカーネル・コンポーネントをロードしていない場合、方法は、各ゲスト・カーネル・ページの仮想基底アドレスを、対応する複製ページのマシン・ページ・フレーム番号および他の特徴に対応付けるステップを含む。
【００１１】
例示的実施形態
図１は、ハイパーバイザ環境でカーネル・ルートキットから保護するためのシステム１０の例示的な実装を示す概略的ブロック図である。本明細書で使用される場合、「ハイパーバイザ」は、１つまたは複数のオペレーティング・システム（ＯＳ）（「ゲストＯＳ」と称する）をホスト・デバイス（例えばコンピュータ）で同時に実行することを可能にするハードウェア仮想化エンティティである。仮想化により、ホスト・デバイスの物理的特性と挙動が再現される分離した仮想環境（通例は仮想マシン、またはゲストと呼ばれる）で、変更を加えることなくゲストＯＳを実行することができる。より具体的には、ゲストは、仮想ハードウェア（プロセッサ、メモリ、ディスク、ネットワーク・インターフェース等）を備えた、切り離された仮想環境を表すことができる。図１に示す実施形態によると、システム１０はハイパーバイザ１２を備え、ハイパーバイザ１２はゲスト１４に仮想化環境を提供する。本開示の広い範囲内で、任意数のゲストをハイパーバイザ１２にホストすることができる。図１では説明を容易にするために、代表として１つのゲストを示す。
【００１２】
ハイパーバイザ１２は、ゲスト１４が使用するために割り当てられるホスト・デバイス（図示せず）のハードウェア１６を制御し、管理する。ゲスト１４は、ハイパーバイザ１２でゲストＯＳ１８を実行することができる。ゲストＯＳ１８は、１つまたは複数のアプリケーション２０（本明細書では単数でアプリケーション２０と参照して複数のアプリケーションの１つを言及する）をサポートすることができる。本明細書で使用する場合、用語「アプリケーション」は、広い意味で使用し、コンピュータが支援（例えばコンパイルや解釈等）を利用して、または支援なしで理解し、処理することが可能な命令を含む、ソフトウェア・ファイル、ライブラリ・モジュール、関数、サブルーチン、バイナリ・データ、命令セット、コード・ブロック、または、他の同様の動作単位を総称的に指す。
【００１３】
ハイパーバイザ１２は、プロセッサ２２やマシン・メモリ２４等の基本的なハードウェア１６へのアプリケーション２０のアクセスを管理することができる。本明細書で使用する「マシン・メモリ」とは、ホスト・デバイスで利用可能なものとしてハイパーバイザ１２から見える記憶要素を意味する。ゲストＯＳ１８は、アプリケーション２０にゲスト仮想メモリ２６を提供し、ゲスト仮想メモリ２６はゲスト物理メモリ２８にアクセスする。本明細書で使用する用語「ゲスト仮想メモリ」とは、ゲスト１４の内部で実行されるアプリケーション２０から見える、実質的に連続した仮想アドレス空間を言う。アドレス空間とはある範囲の離散したアドレスを言い、各アドレスは、アプリケーション（例えばアプリケーション２０）がデータを記憶し、後にデータを取り出すことができる１つの記憶位置（すなわちアドレス）に対応することができる。本明細書で使用する用語「ゲスト物理メモリ」とは、ゲストＯＳ１８から見える仮想メモリを意味する。
【００１４】
ゲスト物理メモリ２８は、動作中にカーネル・ページ３０を作成することができる。ゲストＯＳが自身のゲスト・カーネルをメモリにロードする時、ゲスト・カーネルはページ（例えばゲスト・カーネル・ページ３０）に分割され、あるページはカーネル命令を保持し、他のページはカーネル・データを保持する。各ゲスト・カーネル・ページ３０を含めて各ページは通例は標準的なサイズ（例えば４ｋＢ）であり、アドレス（例えばゲスト仮想アドレス）に関連付けられる。ゲストＯＳ１８は、ページ・テーブルを通じて、各ページの仮想アドレスを対応する「物理」アドレスに対応付ける。ゲスト・メモリ（例えばゲスト仮想メモリ２６やゲスト物理メモリ２８）は仮想的であるが、ゲストＯＳ１８は、ゲスト物理メモリ２８が本物、すなわち「物理的」であると見なす。しかし、ゲスト物理メモリ（例えばゲスト物理メモリ２８）は、（実際の）ホスト物理アドレス（マシン・アドレスとも呼ぶ）への正しい対応付けを維持するためにハイパーバイザ１２によって利用される抽象化に過ぎない。
【００１５】
ページ・テーブルは、ゲストＯＳ１８が仮想アドレスと「物理」アドレス間の対応付けを記憶するために使用するデータ構造である。ページ・テーブルはいくつかのページ・テーブル・エントリ（ＰＴＥ）を含み、各ＰＴＥは、仮想アドレスをそれに対応する「物理」アドレスに対応付ける（例えば、ゲスト仮想アドレスからゲスト物理アドレス、またはゲスト物理アドレスからマシン・アドレス）。ＰＴＥは、「物理」アドレス（例えばゲスト物理アドレスまたはマシン・アドレス）および該当する記憶要素（例えばゲスト物理メモリ２８やマシン・メモリ２４）にあるページに関連する他の情報、例えばそのページが存在するかどうか、そのページが読み出し専用であるかまたは読み出しと書き込みが可能か等の情報を含む。
【００１６】
シャドー・ページ・テーブル３２は、現在実行中のプロセスについてゲスト物理メモリ２８をマシン・メモリ２４に対応付けるためにハイパーバイザ１２によって使用することができる。「プロセス」とは、命令が実行中のアプリケーション（またはその一部）のインスタンスである。シャドー・ページ・テーブル３２は、ゲスト・カーネル・ページ３０に対応するページ・テーブル・エントリ（ＰＴＥ）３４を含む。各ＰＴＥ３４は、マシン・アドレス、および、マシン・メモリ２４にロードされるそれぞれのカーネル・ページに関連する他の情報を含む。例示的な実施形態によると、ＰＴＥ３４は、シャドー・ページ・テーブル３２内で「ＮＯＴ＿ＰＲＥＳＥＮＴ（存在せず）」とマークすることができる。
【００１７】
ハイパーバイザ１２のルートキット防御モジュール３６は、ゲストＯＳ１８内の対応するゲスト・カーネル・ページ３０の複製ページ３８をハイパーバイザ１２に作成することができる。プロセスがゲスト・カーネル・ページ３０へのアクセスを試みると、ページ・フォルト・ハンドラ４０が、該当するゲスト・カーネル・ページ３０へのアクセスまたはその実行を条件付きで許可または拒否することができる。ハイパーバイザ１２で実行されるドメイン０（ＤＯＭ０）４２は、物理ハードウェア１６にアクセスし、システム上で実行される他のゲストと対話する特別な権利を有することができる。ＤＯＭ０  ４２は、ハイパーバイザ１２のルートキット防御モジュール３６の特定のロックダウン機能を制御するロックダウン・モジュール４４を有することができる。
【００１８】
システム１０の技術を説明するために、図１に示すシステムなどの所与のシステムに存在する可能性のある動作とセキュリティの問題を理解することが重要である。以下の基本的な情報は、本開示を適切に説明するための基礎と捉えることができる。そのような情報は説明の目的のみで提供され、したがって、本開示の広い範囲とその潜在的な応用例を制限するものとは決して解釈すべきでない。
【００１９】
典型的なコンピューティング・アーキテクチャは４つのリング（番号０〜３）の特権レベルをサポートし、システム・コードおよびデータが特権度の低いコードで意図的でなくまたは悪意を持って上書きされないように保護する。リング０が最も高い特権レベルであり、リング３が最も低い特権レベルである。ＯＳは、異なるプロセスに異なる特権レベルを使用することができる。例えば、Ｗｉｎｄｏｗｓ（登録商標）ＯＳでは、プロセスおよびデータのセキュリティのために２つの特権レベル（リング０および３）を使用する。Ｉｎｔｅｒｎｅｔ  ＥｘｐｌｏｒｅｒやＭｉｃｒｏｓｏｆｔ  Ｗｏｒｄなどのアプリケーション、および多数のＷｉｎｄｏｗｓ（登録商標）サービス（例えばサービス・コントロール・マネジャ、ローカル・システム・セキュリティ権限、Ｗｉｎｌｏｇｏｎ、セッション・マネジャ、ＲＰＣサーバ等）のコードはリング３で実行される。
【００２０】
カーネル・レベルのコードはリング０内で実行され、仮想メモリ、キャッシュ、入出力、オブジェクト、プラグ・アンド・プレイ、ハードウェア抽象化層、グラフィック・サブシステム、ファイル・システム、およびネットワーク・プロトコルの実装のためのマネジャなどのデバイス・ドライバおよびカーネル・コンポーネントで使用される。カーネルは、アプリケーションをコンピューティング・デバイスのハードウェアに接続する。一般に、カーネルは、ＯＳによって異なる可能性のある数個の構成要素を含む。例えば、Ｌｉｎｕｘ（登録商標）  ＯＳは、低レベル・ドライバ（例えば中央演算処理装置（ＣＰＵ）、メモリ管理装置（ＭＭＵ）、およびオンボード・デバイスの初期化を担うアーキテクチャ固有のドライバ）、プロセス・スケジューラ（例えば異なるプロセスへの公平なＣＰＵ時間スライスの割り当てを担う構成要素）メモリ・マネジャ（例えば、異なるプロセスにメモリを割り当て、共有させる構成要素）、ファイル・システム（例えば基礎となるファイル・システムを抽象化することにより、統一されたファイル・システム・インターフェースをユーザに提示する構成要素）、ネットワーク・インターフェース（例えば種々のネットワーキング・デバイスへのアクセスを提供し、制御する構成要素）、デバイス・ドライバ（例えば高レベル・ドライバ）などの構成要素を含むことができる。アプリケーションは、一般に、システム関数呼び出し（例えばＷｉｎ  ３２  ＡＰＩ呼び出し）を使用してカーネルと通信する。
【００２１】
ルートキット（rootkit）は、（例えばアプリケーション中のプロセスの）通常の実行経路の流れを変えて、自身の隠蔽された実装を成功させる。ルートキットは、標準的なＯＳ機能を破壊することにより自身の存在を積極的に隠蔽しながら、デバイスへの継続的な特権アクセスを可能にするソフトウェアである。ルートキットは、通常、システム関数呼び出しで返されるデータに変更を加えて、そのバイナリ・ファイル、プロセス、およびレジストリ・エントリを隠蔽する。ルートキットは、実行される場所とシステム内のどの領域を乗っ取るかによって、一般にユーザ・モード・ルートキットとカーネル・ルートキットの２種類の１つに分類することができる。ユーザ・モード・ルートキットは、ユーザ・モード特権で実行されるため、検出および修復が比較的容易である。一方、カーネル・ルートキットは、システム特権で実行され、そのため検出と修復がより難しい。カーネル・ルートキットは、典型的にはカーネル・モードのデバイス・ドライバをインストールすることにより、ルートキットのコードをカーネル・アドレス空間にロード（すなわち注入）する。例えば、カーネル・ルートキットは、カーネル・モジュールを使用して実行中のカーネルにカーネル・コードを注入することにより、または使用されていないカーネル・メモリに新しいコードを書き込むことにより、またはカーネル・モジュール・ファイルを挿入すること等により、インストールすることができる。この引渡し機構が機能するようになると、カーネル・ルートキットは、プロセスの通常の実行経路の流れを妨害することができる。
【００２２】
カーネル・ルートキットは、デスクトップのセキュリティでは重大な問題となる。カーネル・ルートキットは、システム・バックドアを開く、私的情報を盗む、セキュリティ対策を無効にする、他のマルウェア・アプリケーションを実行するなどの様々な攻撃を引き起こすことができる。通例、攻撃者は、既知の脆弱性を利用するか、またはパスワードを入手する（例えばソーシャル・エンジニアリングを通じて暗号化を破ることによる）ことによってまずルート・レベルのアクセス権を入手してから、コンピュータにカーネル・ルートキットをインストールする。カーネル・ルートキットがインストールされると、攻撃者は進行中の侵入を隠蔽し、通常の認証および権限付与機構を迂回することによりコンピュータへの特権アクセスを維持することができるようになる。カーネル・ルートキットは、ルートキットを発見するためのソフトウェアを無効化できる場合があるため、検出が難しい場合がある。検出方法には、代替の信頼できるオペレーティング・システムの使用、挙動に基づく方法、署名のスキャン、差分のスキャン、およびメモリ・ダンプ分析がある。特にカーネル・ルートキットがカーネルに存在する場合には、除去が困難であるか、または実際上不可能である場合がある。
【００２３】
ハイパーバイザ環境では、攻撃の影響が大きくなる場合がある。感染した１つのゲストが、ホスト・デバイス上のすべての他のゲストを感染させる可能性もある。例えば、攻撃者がゲストを感染させることによってハードウェアに対する管理者特権を入手し、ハイパーバイザ環境を介して１つのゲストから他のゲストに移動することができる。ハイパーバイザが数千個のゲストをホストしている状況では、そのようなゲスト間攻撃は壊滅的な結果をもたらす可能性がある。
【００２４】
ハイパーバイザ環境は、ゲストに常駐する保護用ソフトウェアを必要とせずに、カーネル・ルートキットからの保護を得る機会を提供する。ゲストは、仮想化されたホスト・デバイス内のハイパーバイザの上で実行される。従来のカーネル・ルートキット防御機構は、ハイパーバイザで実行されるゲストの各インスタンスにインストールすることができるが、そのような方法では、結果としてメモリ、実行時間性能、および管理の点でオーバーヘッドが著しくなる。カーネル・ルートキットの防御機構は、（その機構によって保護されている）カーネルの外部にあることが理想的であるが、それは非仮想化環境では可能でない場合がある。さらに、クラウド（仮想化）環境でゲストを実行する顧客は、クラウド・サービスの提供者がカーネル・ルートキットからの保護を透過的に提供することを望む場合がある。
【００２５】
カーネル・ルートキットから保護する一方法では、ハードウェアの仮想化を利用するハーバード・アーキテクチャを使用して、製品ＯＳのカーネルをカーネル・ルートキットの攻撃から保護する。この手法は命令取り出しのページ・レベルのリダイレクトに基づくが、これは、命令レベルのリダイレクトを行う従来の方式とは異なる。この手法の別の技術では、カーネル命令の取り出しのみをリダイレクトすることにより、モードに応じたリダイレクトを可能にする。ただし、この手法ではゲストごとにエージェントが必要となり、インフラストラクチャのオーバーヘッドが増す。また、この手法では、実行およびリンク可能フォーマット（ＥＬＦ）ローダ（Ｌｉｎｕｘ（登録商標）  ＯＳ）に変更を加えて、ルートキットからの保護を助けるが、そのようなＯＳの変更は煩雑である。また、この手法は、コードとデータ・ページ・テーブルを切り替えるために変換索引バッファ（ＴＬＢ）キャッシュの操作を使用するが、これは実装が難しい場合がある。
【００２６】
図１に概略的に示すハイパーバイザ環境でカーネル・ルートキットから保護するシステムは、とりわけ上記のような問題を解決することができる。本開示の実施形態は、既存技術の能力を大幅に向上させて、より頑強な解決を可能にしようとするものである。例示的実施形態では、システム１０の構成要素がゲスト・カーネル・ページ３０のソフト・ホワイトリスト、例えば複製ページ３８をハイパーバイザ１２の内部に作成することができる。ソフト・ホワイトリスト（すなわち複製ページ３８）の各エントリは、それに対応するゲスト・カーネル・ページの複製ページである。ゲスト・カーネル・コードは、ゲストＯＳ１８のブート後にゲスト・カーネル・ページ３０に変更が加えられている場合でも、複製ページ３８から実行することができる。同様に、対応するページが最初のホワイトリスト（すなわち複製ページ３８）に存在しないため、新しいコードの実行を許可しないことができる。シャドー・ページ・テーブル３２のＮＯＴ＿ＰＲＥＳＥＮＴビットを使用してハイパーバイザ１２へのアクセスを途中で捕捉することができる。ＰＴＥ３４は、書き込み可能または実行可能とマークすることができる（初期状態ではＮＯＴ＿ＰＲＥＳＥＮＴとマークされる）（例えば、それによりページ・フォルトを最小に抑えて性能を向上させることを保証する）。
【００２７】
複製ページ３８は、ゲストＯＳ１８が完全にブートされ、そのカーネル・コンポーネント（例えばプロセス・スケジューラ、メモリ・マネジャ、ファイル・システム等）がロードされた後に作成することができる。本明細書で使用する場合、用語「ブート」はブート・シーケンスを意味し、これは、電源が投入された時にコンピュータが行う初期動作のセットである。例示的実施形態では、複製ページ３８は、新しいページを実行することができないように、ブート時にのみ作成することができる（すべての実行は複製ページを介して送られるため）。さらに、新しいカーネル・ページが作成されると、そのページはデフォルトでＮＯＴ＿ＰＲＥＳＥＮＴとマークされる。その後、システム１０の構成要素は、既存のカーネル・ページの変更（ブート後の新しいページの追加や既存ページの変更を含む）は一切実行が許可されないことを保証することができる。例示的な実装では、システム１０は、ホワイトリストの作成を利用するため、デイ・ゼロ（day  zero）脅威を防ぐことができる。システム１０は、公衆のクラウド・インフラストラクチャの提供者および社内クラウドを利用する企業によって実装することができる。システム１０は、透過的なセキュリティ層を提供することができる。この解決法は、基本のＯＳ構成を頻繁には変えないがその中に記憶されるデータを変更する顧客（例えばウェブ・ホスト・サービスの提供者）に特に有用である可能性がある。
【００２８】
次いでハイパーバイザ環境内のメモリ管理に説明を移すと、ゲストＯＳ（例えばゲストＯＳ１８）は、ゲスト仮想メモリ（例えばゲスト仮想メモリ２６）の仮想アドレス空間の配置をアプリケーション（例えばアプリケーション２０）に提供する。ゲスト仮想メモリのアドレス空間は、アプリケーション（例えばアプリケーション２０）からアクセスできるユーザ空間と、ブート・ドライバ、プロセス・ページ・テーブル、システム・キャッシュ、ページ化および非ページ化プール等を含むシステム空間とに分割することができる。通例、システム・ページのアドレス位置はハードコードされる（すなわち事前に分かっている）。例えば、４ＧＢのゲスト仮想メモリを、アドレス範囲が０ｘＢＦＦＦＦＦＦＦ〜０ｘ００００００００の３ＧＢのユーザ空間と、アドレス範囲が０ｘＦＦＦＦＦＦＦＦ〜０ｘＣ０００００００のシステム空間に分けることができる。
【００２９】
ゲストＯＳは、ページ・テーブルを通じて仮想アドレスから物理アドレスへの対応付けを扱う。仮想アドレス空間（例えばゲスト仮想メモリ２６）は一般に連続しているが、アドレスは、物理アドレス空間（例えばゲスト物理メモリ２８）の連続していないブロックに対応付けることができる。仮想−物理アドレス対応付けの情報は、ページ・テーブル・エントリ（ＰＴＥ）と呼ばれる構造でページ・テーブルに入れられる。ＰＴＥの形式はＯＳによって異なる場合があり、例えばＬｉｎｕｘ（登録商標）  ＯＳではある形式が指定され、Ｗｉｎｄｏｗｓ（登録商標）  ＸＰ  ＯＳでは別の形式が指定される。一般に、ＰＴＥは、通例、そのＰＴＥで参照されるページが存在するか（または有効であるか）どうかを示すビットを含む。例えば、マシン・メモリ（例えばマシン・メモリ２４）にプロセスのロードが開始されると、ゲストＯＳは、ページがゲスト物理メモリ（例えばゲスト物理メモリ２８）にロードされていると想定し、対応するページ・テーブルを生成する。マシン・メモリにロード中のページに対応する現在のビットは、すべてのページがメモリにロードされるまでは０に設定される（ＮＯＴ＿ＰＲＥＳＥＮＴを意味する）。すべてのページがロードされると、それぞれのＰＴＥでそれらのページに対応する現在のビットを１に設定することができる（ＰＲＥＳＥＮＴ（「存在する」）を意味する）。ロード中に、ＮＯＴ＿ＰＲＥＳＥＮＴとマークされたページへのアクセスが（プロセスによって）試みられる場合は、ページ・フォルトを発生させることができる。
【００３０】
例示的実施形態では、ゲスト１４によって維持されるページ・テーブルはいずれも対応するシャドー・ページ・テーブル（例えばシャドー・ページ・テーブル３２）を有することができ、シャドー・ページ・テーブルはハイパーバイザ１２によって生成され、維持される。ゲストＯＳ１８は、シャドー・ページ・テーブル３２にはアクセスすることができない。ブート時に、ゲストＯＳ１８は、自身のカーネルをコンピュータのハード・ディスクからメモリにロードすることができる（例えばゲスト・カーネル・ページ３０の形態で）。ルートキット防御モジュール３６は、ゲスト・カーネル・ページ３０に対応するＰＴＥ３４をシャドー・ページ・テーブル３２中でＮＯＴ＿ＰＲＥＳＥＮＴとマークすることができる。一例では、ルートキット防御モジュール３６は、ページの仮想アドレスを読み出すことにより、そのページがゲスト・カーネル・ページ３０の１つであると判定することができる。仮想アドレスが特定の範囲（例えば予め決められた範囲）内にある場合、そのページは、ゲスト・カーネル・ページ３０の１つである可能性があり、対応するＰＴＥ３４をＮＯＴ＿ＰＲＥＳＥＮＴとマークすることができる。
【００３１】
ページ・フォルトが発生すると、そのページ・フォルトを生じさせた命令を実行しているプロセッサ（例えばプロセッサ２２）からハイパーバイザ（例えばハイパーバイザ１２）に制御が移る。ハイパーバイザのページ・フォルト・ハンドラ（例えばページ・フォルト・ハンドラ４０）が例えば命令ポインタおよびフォルトが発生したアドレスを判定して、そのページ・フォルトが命令ページ・フォルトであるかデータ・ページ・フォルトであるかを判断することができる。例えば、命令ポインタ（すなわち、プロセッサが次に実行を試みるメモリ・アドレスを指すポインタ）がフォルトの発生したアドレスを指す場合は、ページ・フォルトは命令ページ・フォルトである。
【００３２】
図１のインフラストラクチャを参照すると、ハイパーバイザ１２は、ゲストＯＳのインスタンスを複数実行することができる。ハイパーバイザ１２は、サーバ、ファイアウォール、ウィルス対策の一部、またはより一般的にはコンピュータの一部とすることができる。例示的な実装の１つでは、ハイパーバイザ１２はＸｅｎ要素であり、これはハードウェア自体で実行され、同じハードウェア上でＯＳの複数のインスタンスを同時に実行する能力を提供する。典型的なＸｅｎの設定は、Ｘｅｎを複数のＯＳの下で実行するものであり、アプリケーションはＯＳの上にあり、ＯＳはゲスト（例えばゲスト１４）の群に関連付けられる。この構成全体をサーバ（または何らかの他のネットワーク機器）に提供することができる。例示的な実施形態では、ゲスト１４は、ＤＯＭ０  ４２に関連付けられたＯＳを実行することができる。Ｘｅｎの実装は、単に本開示を適用することができる可能な例の１つを表すことに留意されたい。任意数の追加的なハイパーバイザが同様にして、本明細書に論じられる広範な教示から利益を得ることができる。
【００３３】
ハイパーバイザ１２を管理するための制御ツールをＤＯＭ０  ４２で実行することができる。ＤＯＭ０  ４２は、ハイパーバイザ１２でゲスト（例えばゲスト１４）を管理するための統一されたインターフェースを提供することができる。ＤＯＭ０  ４２は、管理者がハイパーバイザ１２を設定する手段を提供することができ、そのような設定には、記憶域の管理、ゲストの振る舞いの態様の制御、仮想ネットワークのセットアップ、ハイパーバイザおよび１つまたは複数のゲストの設定、ならびにゲストの作成、削除、シャットダウン、ブートアップ等が含まれる。例えば、この種のセットアップは、サーバがＸｅｎを実行するデータ・センターでよく行われ、Ｘｅｎはゲストの複数のインスタンスをホストする。ＤＯＭ０  ４２は、変更を加えたＬｉｎｕｘ（登録商標）カーネルを含むことができ、物理的なＩ／Ｏリソースにアクセスし、システムで実行される他の仮想マシンと対話する特別な権利を有することができる。通例、ＤＯＭ０  ４２は、システムがブートされた時に最初に起動されるドメインであり、ＤＯＭ０  ４２を使用してすべての他の通常ゲスト（例えばゲスト１４）を作成し、設定することができる。ハイパーバイザ環境は、ＤＯＭ０  ４２を実行しなければ他のゲストを開始できないようにすることができる。
【００３４】
図２を参照すると、図２は本開示の実施形態に関連することが可能な例示的な動作ステップを説明する概略的流れ図である。動作１００は１０２で開始することができ、ＤＯＭ０  ４２が起動される。１０４で、ドメイン作成時のロックダウン機能をロックダウン・モジュール４４により有効にすることができる（ゲスト・コンテクストからハイパーバイザ・コンテクストへのＶＭＥＸＩＴ遷移に関連する）。１０６で、ドメイン固有のデータ構造を持つロックダウン機能ビットをハイパーバイザ１２内に設定することができる。１０８で、ハイパーバイザ仮想マシン（ＨＶＭ）（すなわちゲスト１４）を開始することができる。１１０で、ゲストＯＳ１８がゲスト・カーネル・ページ３０のページ・テーブル・エントリ（ＰＴＥ）を作成することができ、ハイパーバイザ１２へのＶＭＥＸＩＴが発生する。１１２で、ルートキット防御モジュール３６が、シャドー・ページ・テーブル３２にゲスト・カーネル・ページ３０のＰＴＥ３４を作成することができる。１１４で、ルートキット防御モジュール３６が、ハイパーバイザ１２によって維持されているシャドー・ページ・テーブル３２にＰＴＥ３４をＮＯＴ＿ＰＲＥＳＥＮＴとマークすることができる。その結果、ＰＴＥ３４がマークされているゲスト・カーネル・ページ３０へのアクセスが試みられると、ページ・フォルトを発生させることができる。また、この動作は、１１６でプロセッサ２２に関連する仮想マシン命令（ＶＭＲＵＮ）と共に提供してもよい。
【００３５】
ルートキットからの保護が有効にされている場合（例えばゲストＯＳ１８がブートされており、そのカーネル・コンポーネントをロードしている場合）、ゲスト・カーネル・ページ３０の一部は使用されていない場合があり、そのため、それらにはページ・フォルトが発生していないことになる。そのようなページを把握するために、１１８で、ページ・フォルト／ハンドラ４０がハイパーバイザ１２のシャドー・ページ・テーブル３２を調べ、ゲスト・カーネル・ページ３０の各ページに複製ページを作成し、それに対応する仮想アドレスと複製ページのマシン・ページ・フレーム番号（ＭＦＮ）との対応付けを保持することができる。ＭＦＭは、対応する仮想アドレスについてマシン・メモリ２４で割り当てられたページ番号を指す。例示的な実施形態では、これらの動作は、ブートが完了した後に一度行うことができ、その後、システム１０はロックされた状態と見なすことができる。ルートキットからの保護が有効になっていない場合（例えばゲストＯＳ１８がブートされておらず、そのカーネル・コンポーネントがロードされていない場合）、ページ・フォルト・ハンドラ４０は、ゲスト１４のカーネルにある各ページの複製ページを作成し、それに対応する仮想基底アドレス（そのカーネル・ページの最初の１バイトが記憶される仮想アドレスに対応する）と複製ページのＭＦＮとの対応付けを保持することができる。
【００３６】
１２０で、ゲストＯＳ１４のアプリケーション２０のプロセスがゲスト・カーネル・ページ３０へのアクセスを試みることができる。ゲスト・カーネル・ページ３０へのアクセスを試みると、１２２でページ・フォルトが発生する（ゲスト・カーネル・ページ３０に対応するＰＴＥ３４がＮＯＴ＿ＰＲＥＳＥＮＴとマークされているため）。１２２でページ・フォルトが発生すると、１２４で、そのページ・フォルトが命令ページ・フォルトであるか、データ・ページ・フォルトであるかを判定する。ページ・フォルトがデータ・ページ・フォルトである場合は、１２６で、ページ・フォルト・ハンドラ４０が元の物理ページをポイントし、それに対応するＰＴＥをＮＸ（「実行せず」）かつ書き込み可能とマークすることにより、ページ・フォルトを恒久的に解決する（例えばその後のアクセス／実行を許可する）ことができる。１２８で、アプリケーション２０がシャドー・ページ・テーブル３２にアクセスするのを許可し、１３０で処理が終了する。これにより、データにアクセスする試みではページ・フォルトが生じず、コードを実行しようとするとページ・フォルトが発生してハイパーバイザ１２に制御が渡されることが保証される。
【００３７】
１２４の判定でページ・フォルトが命令フォルトであると判定される場合は、１３１でそれに対応する複製ページが複製ページ３８に存在するかどうかを判定することができる。複製ページが存在する場合、１３２で、ページ・フォルト・ハンドラ４０が、フォルトが生じた仮想アドレスのポイント先を複製ページ３８に対応するＭＦＮ（シャドー・ページ・テーブル３２）にすることによってページ・フォルトを恒久的に解決し、そのページを読み出し専用とマークしてそのページに書き込みを行うと必ずフォルトが生じるようにする。この操作により、複製ページ３８を作成した時に存在していたコードを実行させることができる。一方、対応する複製ページが複製ページ３８の中にない場合は、ページ・フォルト・ハンドラ４０は１３３で当該ページの実行を阻止することができる。したがって、新しいコードや変更を加えたコードは実行することができない。コードの変更は、発生する場合にはゲスト・カーネル・ページ３０で生じ、変更を加えたゲスト・カーネル・ページ３０の実行は、実行される場合にはハイパーバイザの複製ページ３８から実行される。１２８で、シャドー・ページ・テーブル３２にアプリケーション２０がアクセスすることができ（ただし今度はゲスト・カーネル・ページ３０ではなく、複製ページ３６を読み出すことができる）、１３０で処理が終了する。
【００３８】
カーネル・ルートキットから保護する（ならびに危険なコードの実行を阻止する）ためのソフトウェアは、様々な場所に提供することができる（例えばルートキット防御モジュール３６の内部）。例示的な実装の１つでは、このソフトウェアは、セキュリティ攻撃から保護しようとする（または書き込み可能なメモリ領域の不要または不正な操作から保護しようとする）コンピュータに常駐する。より詳細な構成では、このソフトウェアは、具体的にはハイパーバイザのセキュリティ層に常駐し、ハイパーバイザは図１に示す構成要素を含む（または他の形でそれらとインターフェースをとる）ことができる。さらに他の実施形態では、このカーネル・ルートキットからの保護を得るために、ウェブ・サーバからソフトウェアを受信またはダウンロードすることもできる（例えば、別々のデバイス、別々の仮想マシン、ゲスト、ハイパーバイザ、サーバ等のために個々のエンド・ユーザ・ライセンスを購入する状況で）。
【００３９】
他の例では、カーネル・ルートキット防御機能は、独自開発の要素を（例えばウィルス対策の一部として）伴う場合もあり、その要素は、本明細書で特定される要素の中に（もしくはその近傍に）提供するか、または他のデバイス、サーバ、ネットワーク機器、コンソール、ファイアウォール、スイッチ、情報技術（ＩＴ）デバイス等の中に提供するか、または相補的な解決法として提供する（例えばファイアウォールとの連携）か、またはネットワーク内の任意の場所に設置することができる。本明細書で使用する場合、用語「コンピュータ」は、セキュリティ環境で電子情報に作用または電子情報を処理するように動作することができる下記の可能な要素を包含するものとする（ＶＭＭ、ハイパーバイザ、Ｘｅｎデバイス、仮想デバイス、ネットワーク機器、ルータ、スイッチ、ゲートウェイ、プロセッサ、サーバ、ロードバランサ、ファイアウォール、または他の適切なデバイス、コンポーネント、要素、もしくはオブジェクト）。さらに、このコンピュータは、その動作を助ける、任意の適切なハードウェア、ソフトウェア、コンポーネント、モジュール、インターフェース、またはオブジェクトを含むことができる。これは、カーネル・ルートキットからの効果的な保護を可能にする適切なアルゴリズムおよび通信プロトコルを包含することができる。また、カーネル・ルートキット防御機能は、任意の適切な方式で統合することができる。同様の代替の設計に沿って、添付図面に図示するモジュールおよび構成要素を各種の可能な構成で組み合わせることができ、そのような構成はすべて本明細書の広い範囲内にあることが明らかである。
【００４０】
それらの要素（例えばコンピュータ、サーバ、ネットワーク機器、ファイアウォール、ハイパーバイザ、他種の仮想要素等）はいずれも、本明細書に記載されるカーネル・ルートキット防御動作を行うソフトウェアまたはアルゴリズムを実行することが可能なプロセッサを含むことができる。また、そのような各要素（例えばコンピュータ、サーバ、ネットワーク機器、ファイアウォール、ハイパーバイザ、他種の仮想要素等）は、適宜特定の必要性に応じて、記憶要素（ランダム・アクセス・メモリ（ＲＡＭ）、ＲＯＭ、ＥＰＲＯＭ、ＥＥＰＲＯＭ、ＡＳＩＣ等）、ソフトウェア、ハードウェア、または任意の他の適切な構成要素、デバイス、要素、またはオブジェクトを含むことができる。システム１０で追跡、送受信、または記憶の対象となる情報は、特定の必要性および実装に基づいて、データベース、レジスタ、テーブル、キャッシュ、待ち行列、制御リスト、または記憶構造として提供することができ、それらはすべて任意の適切な時間枠で参照することができる。
【００４１】
上記の要素および／またはモジュールは、本明細書に記載されるハイパーバイザ環境におけるカーネル・ルートキットからの保護に関連する動作を行うために、相互と協働することができる。他の実施形態では、それらの機能は上記要素の外部に設けるか、他のデバイスに含めて各自の意図される機能を実現するか、または適宜統合することができる。例えば、各種要素に関連付けられたプロセッサの一部を削除するか、他の形で統合して１つのプロセッサと１つの記憶位置が特定の動作群を担うようにすることができる。一般的な意味では、図に示される構成はその表現上論理的であるのに対し、物理的なアーキテクチャは、そのような要素の各種の置き換え、組み合わせ、および／または混合を含むことが可能である。
【００４２】
本明細書に記載されるメモリ項目（例えばゲスト・カーネル・ページ３０、シャドー・ページ・テーブル３２、マシン・メモリ２４、ゲスト仮想メモリ２６、ゲスト物理メモリ２８、ハッシュ３８等）はいずれも、広い意味の用語「記憶要素」に包含されると解釈すべきである。同様に、本明細書に記載される存在する可能性のある処理要素、モジュール、および機械はいずれも、広い用語「プロセッサ」に包含されるものと解釈すべきである。コンピュータ、ネットワーク機器、仮想要素等は各々、ハイパーバイザ環境でデータまたは情報を受信、送信、および／またはその他の形で通信するための適切なインターフェースも含むことができる。
【００４３】
プロセッサは、データに関連する任意種の命令を実行して、本明細書に詳細に述べられる動作を実現することができる。一例では、プロセッサ（図に示す）は、要素または物（例えばデータ）を１つの状態または物から別の状態または物に変換することができる。他の例では、本明細書に概説する動作は、固定されたロジックまたはプログラム可能なロジック（例えばプロセッサで実行されるソフトウェア／コンピュータ命令）で実施することができ、本明細書で特定される要素は、何らかの種のプログラム可能プロセッサ、プログラム可能なデジタル・ロジック（例えば利用者書き換え可能ゲート・アレイ（ＦＰＧＡ）、消去可能プログラム可能読み出し専用メモリ（ＥＰＲＯＭ）、電気的に消去可能なプログラム可能ＲＯＭ（ＥＥＰＲＯＭ））、またはデジタル・ロジック、ソフトウェア、コード、電子命令、もしくはそれらの適切な組み合わせを含むＡＳＩＣとすることができる。
【００４４】
特定の例示的な実装では、本明細書に概説されるカーネル・ルートキット防御機能は、１つまたは複数の有形の持続性媒体に符号化されたロジックで実装することができる（例えば、特定用途集積回路（ＡＳＩＣ）に提供される組み込みロジック、デジタル信号プロセッサ（ＤＳＰ）命令、プロセッサや他の同様の機械で実行されるソフトウェア（可能性としてはオブジェクト・コードおよびソース・コードを含む））。これらの例の一部では、記憶要素（図に示す）は、本明細書に記載の動作を行うために使用されるデータを記憶することができる。これには、記憶要素が、本明細書に記載の動作を行うために実行される、ソフトウェア、ロジック、コード、またはプロセッサ命令を記憶できることが含まれる。各種実施形態で、上記要素の一部またはすべては、本明細書に概説される動作を実現するために、連携、管理、または他の形で協働することが可能なソフトウェア（または相互連携する（reciprocating）ソフトウェア）を含む。それらの要素の１つまたは複数は、それらの動作を容易にする、適切なアルゴリズム、ハードウェア、ソフトウェア、コンポーネント、モジュール、インターフェース、またはオブジェクトを含むことができる。
【００４５】
本明細書に提供される多数の例では、２つ、３つ、４つ、またはそれ以上のネットワーク要素およびモジュールに関して対話を説明していることに留意されたい。しかし、これは、説明を分かりやすくし、例示のみを目的して行っているものである。システムは任意の適切な方式で統合できることを理解されたい。同様の代替の設計に沿って、図１に示すモジュール、コンポーネント、および要素を各種の可能な構成で組み合わせることができ、そのような構成がすべて本明細書の広い範囲内にあることは明らかである。事例によっては、限られた数の要素または構成要素だけを参照して、所与のフローのセットが持つ機能の１つまたは複数を説明する方が容易である場合もある。図１のシステム（およびその教示）は、容易にスケールを変えることができ、多数の構成要素ならびにより複雑／緻密な機構および構成に対応できることが理解されよう。したがって、ここに提供する例は、多数の他のアーキテクチャに適用される可能性のあるシステム１０の範囲を制限するものでも、その広い教示を妨げるものでもない。
【００４６】
また、上記の図面を参照して説明した動作は、本システムにより、またはシステム内で実行することが可能なシナリオのごく一部を例示するに過ぎないことに留意することも重要である。上記動作の一部を適宜削除または省略するか、本明細書に論じられる概念の範囲から逸脱することなく、上記ステップを大きく改変または変更することが可能である。また、それらの動作を行うタイミングを大きく変えつつも本開示に教示される結果を達成することができる。上述の動作の流れは、例示と説明の目的で提供した。本明細書に論じられる概念の教示から逸脱することなく、任意の適切な機構、順序、構成、およびタイミング機構を提供することができるという点で、本システムにより高い柔軟性が得られる。
【図１】
0005819535.tif 000002
【図２】
0005819535.tif 000003