説明

ゲスト仮想マシンメモリの保護

【課題】ハッカー又は悪意のあるプログラムが特権的地位を持ち、当然の成り行きとして、その状態をリセットし、コードが改変されてしまう可能性がある。
【解決手段】ハイパーバイザーは、ホストコンピューターシステム上で稼働し、少なくとも1つの仮想マシンを定義する。仮想マシンのアドレス空間が、ハイパーバイザーの制御の下、ホストコンピューターシステムの物理メモリ上にある。ゲストオペレーティングシステムが、仮想マシンにおいて稼働する。ハイパーバイザー及びホストオペレーティングシステムの少なくとも一方が、仮想マシンのアドレス空間の部分に対応するホストコンピューターシステムのアドレス空間の部分を、当該部分が読出し可能であるが書き込み不能なロック状態にセットする。

【発明の詳細な説明】
【背景技術】
【0001】
ホストコンピューター内の処理で独立コンピューターに見える、ホストコンピューター内の領域の「仮想マシン」(VM)にてコンピューター上の処理の実行が可能であるが、実際は、仮想マシンは、ホストコンピューターの他の部分において稼働する「ハイパーバイザー」の制御の下、ゲストとして稼働する小さな領域である。ハイパーバイザーは、仮想マシンの識別可能なリソースに対応する実機内での物理リソースを提供することを担う。ある場合には、ゲスト仮想マシンが、自身が物理コンピューター上で稼働するホスト仮想マシン内で稼働する。
【0002】
例えば、セキュリティー又はリソース管理のために、そのような構成を使用し、仮想マシン内での処理がホストコンピューターの他の部分と干渉することを制限し、又は、実際の理由としては、例えば、アプリケーションが要求する場合、仮想マシンは、ホスト装置のネイティブのオペレーティングシステムとは異なるゲストオペレーティングシステム(OS)を提供する。
【0003】
一般的に、ハイパーバイザーは、様々な形態をとることができ、限定するわけではないが、「ベアメタル」ハイパーバイザー、ホストコンピューターのオペレーティングシステムに組み込まれた又は一体化されたハイパーバイザー、又はホストコンピューターのオペレーティングシステムの下のアプリケーション空間で稼働する1以上のハイパーバイザーを含む。「ベアメタル」ハイパーバイザーは、典型的には、オペレーティングシステムが必要とする多くを含むが、仮想マシンの範囲内ではないアプリケーション処理はサポートしない。統合した又は別々のホストオペレーティングシステム及びハイパーバイザーの他の形態は、必須ではないが、ホストオペレーティングシステムの空間内でのアプリケーション処理をサポートしても良い。ホストオペレーティングシステム及びハイパーバイザーが十分に統合されていない場合には、それらの間での機能の分配が変動するかもしれない。
【0004】
署名を認証して信頼されていないコードを阻止する、又は、それが不適切に改変されていればロードされることを阻止するホストコンピューター内のハードウェア装置、トラスティッド・プラットホーム・モジュール(TPM)チップの使用がトラスティッド・コンピューティング・グループ(TCG)により提案されている。そのような管理は、ホストコンピューター自身のコード及びオペレーティングシステムとゲスト仮想マシン内で稼働するべきアプリケーションコードの両方の検証(ベリファイ)も含み得る。
【0005】
しかしながら、その取り組みによっても、ロード後、仮想マシン内のコードの改変を阻止するものではなく、仮に、ハッカー又は悪意のある又は欠陥のあるプログラムが、特権的地位を獲得できたならば、仮想マシンのオペレーティングシステムのレベルまで少なくとも他のコードを変更できてしまう。TPMは、不適切に修正されたコードのリロードを検出するが、仮想マシンがリブートされる次回まで検出されず、連続性確保のため、オペレーティングシステムは、数週間又はそれよりも長くリブートされないかもしれない。仮にハッカーが十分に用心深く恒常的な修正を残さないのであれば、TPMは何も検出しないかもしれない。このようなことは、ハッカーが次指令を簡単にすることよりも自身の軌跡を被覆することが重要と考える場合に生じるかもしれない。ハッカーは、自身の指令が検出されないとすれば、将来の好機に同様の方法にてシステムに再侵入することができると推測するかもしれない。また、ハッカーの中には同一のコンピューターに再訪問することを望まない者もいるかもしれず、従って、コードに対して永続的な改変を行わないかもしれない。
【0006】
近代的オペレーティングシステムの多くにおいては、(オペレーティングシステム及びアプリケーションコード双方の)プログラムコードにより占有されるメモリページ群は、読出し/実行オンリー(read/execute only)に設定される。しかしながら、ハッカー又は悪意のあるプログラムが特権的地位を持ち、当然の成り行きとして、その状態をリセットし、コードが改変されてしまう可能性がある。
【発明の概要】
【課題を解決するための手段】
【0007】
本システム、方法、及びプログラムの一つの実施形態によれば、ゲスト仮想マシンのオペレーティングシステム又はプログラムコードを含むメモリページ群が、ホスト又はハイパーバイザーレベル、又はゲスト仮想マシン外の他のレベルにおいて識別される。そのようなページ群は、次に、ゲスト仮想マシン外において読出し/実行オンリーのステータスにセットされる。
【0008】
ゲスト仮想マシン外で読出し/実行オンリーステータスを設定することにより、ゲスト仮想マシン内で特権的地位を獲得したハッカー又は悪意のあるプログラムが、これらのページ上のプログラムコードを改変することを妨げることができる。ゲスト仮想マシン内のプログラムコードの不適切な改変を絶対的に阻止するものではないが、それにより、そのような改変が格段に困難になる。これは、ハッカーが、ゲスト仮想マシンからメモリページ群が保護されているレベルまで脱することが必要になるためである。複合システムにおいては、メモリハードウェアとゲスト仮想マシンとの間に2以上の抽象レベルが存在し、システムオペレーターの都合又はハッカーの更なるフラストレーションのために、読出し/実行オンリーの保護が1、2、又はそれ以上のレベルにおいて設定され得る。
【0009】
本発明の他の側面においては、方法、コンピューター、及びコンピューターシステム、コンピュータープログラム、及びコンピュータープログラムを含む非一時的なコンピューター読み取り可能記憶媒体を含む。
【0010】
本発明の上述の及び他の側面、特徴、及び効果は、以下の図面と共に提示された本発明の実施形態に係る以下のより端的な説明からより明らかになるだろう。
【図面の簡単な説明】
【0011】
【図1】図1は、コンピューターシステムの実施形態の模式図である。
【図2】図2は、コンピューターシステムの実施形態の機能ブロック図である。
【図3】図3は、コンピューターシステムの実施形態の機能ブロック図である。
【図4】図4は、フローチャートである。
【発明を実施するための形態】
【0012】
本発明の実施形態の詳細な次の記述及びこれに付随する図面を参照することにより、本方法及び装置の様々な特徴及び効果を十分に理解することができるだろう。これらの図面により熟考された方法及び装置の実施形態が図示されるが、これらは、当業者にとって明白な代替又は均等な実施形態を排除するものと理解されるべきではない。
【0013】
図面を参照して図1を最初に参照すると、参照番号20により略して示されたコンピューター装置の一例は、他の装置と共に、プロセッサ22、入力及び出力装置24、26、ランダムアクセスメモリ(RAM)28、リードオンリーメモリ(ROM)30、磁気ディスク又は他の長期ストレージ32、及び外部ネットワーク又は他の通信メディアへのインターフェイス34を有する。
【0014】
ここで図2も併せて参照すると、コンピューター20の動作の一例において、コンピューター20のプロセッサ22上においてハイパーバイザー38が稼働する。ハイパーバイザー38は、オペレーティングシステム(OS)を干渉することが無いコンピューター20のハードウェア上で稼働する「ベアメタル」ハイパーバイザーであっても良く、実際上、それ自体の最小のオペレーティングシステムを含む。本実施形態においては、「ベアメタル」ハイパーバイザーは、次に、コンピューター20のネイティブ環境とは異なる環境の仮想マシン(VM)44を生成するために単に動作する。ハイパーバイザー38は、どのプロセス(ハイパーバイザー38自体を含む)がRAM28及び長期ストレージ32の各領域を使用することが許されるかをトラック(記録/記憶)するページ及びアドレス変換テーブル群42を備えるメモリマネージャ40を含む。ページテーブル群42は、仮想マシン44のアドレス空間内のメモリアドレスをメモリハードウェアの機械アドレスに適合させる。
【0015】
ハイパーバイザー38は、コンピューター20のアドレス空間の領域を制御し、この範囲内でハイパーバイザー38が仮想マシン44に空間を割り当てることができる。仮想マシン44は、仮想マシン44のローカルなアドレス空間内で稼働する「ゲスト」オペレーティングシステム46を有する。1以上のアプリケーション又は他のプロセス50が、ゲストオペレーティングシステム46の下、仮想マシン44上で実行される。プロセス50は、ゲストオペレーティングシステム46により制御されたページテーブル群48を介して仮想マシン44のアドレス空間内でメモリアクセスが許される。プロセス50は、ハイパーバイザー38の制御の下、入出力装置24、26及び外部インターフェイス34といったコンピューター20の物理リソースに対するアクセスが許可される。しかしながら、ハイパーバイザー38により許可される場合を除いて、仮想マシン44外のリソース及び活動は、仮想マシン44内のプロセス50には不可視である。
【0016】
図3も併せて参照すると、コンピューター20の動作の他の例においては、オペレーティングシステム(OS)52が、コンピューター20のプロセッサ22上で稼働する。ハイパーバイザー56を含む様々なアプリケーションプログラム及び他のプロセス54が、オペレーティングシステム52の下で稼働する。オペレーティングシステム52は、どのアプリケーション又は他のプロセス54がRAM28及び長期ストレージ32の各領域を使用することが許されるのかをトラック(記録/記憶)するページテーブル群60を有するメモリマネージャ58を含む。ページテーブル群60は、プロセス54により使用されるメモリアドレスをメモリハードウェアの機械アドレスに適合させても良く、これにより、プロセス54が、コンピューター20の特定のハードウェア資源用に構成されることなく実行される。
【0017】
ハイパーバイザー56は、オペレーティングシステム52のアドレス空間の領域を制御し、この範囲内で、ハイパーバイザー56が1以上の仮想マシン72に空間を割り当てることができる。各仮想マシン(VM)72は、仮想マシン72にローカルなアドレス空間内で稼働する「ゲスト」オペレーティングシステム74を有する。ハイパーバイザー56は、アドレス変換テーブル62を管理し、これにより、仮想マシン72のアドレス空間内のアドレスが「ホスト」オペレーティングシステム52のアドレス空間内のアドレスにマップ化(対応/関連付け)される。1以上のアプリケーション又は他のプロセス76が、ゲストオペレーティングシステム74の下、仮想マシン72上で実行される。プロセス76は、ゲストオペレーティングシステム74により制御されたページテーブル群78を介して仮想マシン72のアドレス空間の範囲内でメモリアクセスすることが許される。プロセス76は、ハイパーバイザー56の制御の下、入力及び出力装置24、26及び外部インターフェイス34といったコンピューター20の物理リソースへのアクセスが許可される。しかしながら、ハイパーバイザー56により許可される場合を除いて、仮想マシン72外のリソース及び活動は、仮想マシン72内のプロセス76には不可視である。
【0018】
ページテーブル及びアドレス変換テーブルは、典型的には、これらが関連するメモリページの属性を記憶し、ページの内容が変更可能である程度/範囲の特定を含む。ある共通の属性値は、「読出し/実行オンリー」であり、この下では、オペレーティングシステムは、非特権(unprivileged)のアプリケーションにページ上のデータの読み出しを許し、これは、ページ上のプログラムコードが特権無しに実行されることを包含するが、そのページが改変されることは許さない。ページテーブル自体が保護されており、これにより、非特権のプロセス又はユーザーによりそれが編集され得ることはない。
【0019】
独自のコードを含むプログラムコードの望まない改変を防止するためには、ゲストオペレーティングシステム46、74は、ページテーブル48、78内の「読出し/実行オンリー」属性値を、保護されるべきコードを含むページ群に対して、スタートアップ時、関連するコードがこれらのページにロードされるや直ぐに割り当てても良い。しかしながら、もしハッカー又は悪意のある又は欠陥のあるコードが仮想マシン44、72内で特権的地位を獲得したとしたら、ページテーブル属性値を変更することができ、改変されるべきではないコードの改変が許容されてしまう。
【0020】
ここで図4を参照すると、コンピューター20が図3に示す構成にて起動すると、ステップ102においてホストオペレーティングシステム52が起動/ブートする。ステップ104において、安全なメモリからのその起動、又は安全なハードウェア装置、例えば、オペレーティングシステムプログラムのハッシュ又はデジタル署名を検証するトラスティッド・プラットホーム・モジュール・チップにより、ホストオペレーティングシステム52の健全性/完全性(integrity)が確保されている。オペレーティングシステム52は、起動される直前、ディスクストレージ32上のプログラムを検査することにより、又は起動直後かつプロセッサ22の制御がオペレーティングシステム52へ移行する前にRAMイメージを検査することにより検証/ベリファイされるかもしれない。簡潔の便宜において、ステップ104は、ステップ102の後に示されている。ステップ106では、オペレーティングシステム52を含むページ群用のページテーブル60のエントリー群が、読出し/実行オンリーにセットされる。現実のコンピューターシステムにおいては、典型的なオペレーティングシステム52が、単一実行可能なプログラムよりも多くから構成されるものと理解でき、ステップ102、104、及び106が、繰り返し、連続的、並列的、又は重複して、オペレーティングシステム52の異部分/異パーツのために実行される必要があるかもしれない。適切に順序立てをすることは、当該分野における通常の技術の範囲内にあり、適切な順序は、包含されるコンピューターハードウェア及びオペレーティングシステムに依存して変動するだろう。簡潔性の便宜においては、従って、繰り返し説明は、更に詳細には記述されない。
【0021】
オペレーティングシステム52が起動して保護された後に限り、ハイパーバイザー56及び他のプロセス54がステップ108にて立ち上げられる。アプリケーション群54がオペレーティングシステム52よりも信頼されていないため、オペレーティングシステム52が保護された後に限り、それらは起動される。オペレーティングシステム52が保護された後に限りアプリケーション群54が起動されるため、それらは、オペレーティングシステム52ほど信頼される必要がない。好ましくは、ステップ108が、ステップ102、104、及び106と同様、アプリケーション群54の認証、起動、及び保護の各ステップを含む。特に、本実施形態においては、ハイパーバイザー56が、十分に検証されて保護される。なぜなら、ハイパーバイザー56との悪意性の干渉が、仮想マシン72の健全性/完全性(integrity)を脅かし得るためである。
【0022】
図2に示す構成では、ハイパーバイザー38及びホストオペレーティングシステムが異なる構成要素ではなく、ステップ103では、ハイパーバイザー38が起動する。上述のように、これが、それ独自がオペレーティングシステムである「ベアメタル」ハイパーバイザーであっても良い。次に、ハイパーバイザー38がステップ105において検証され、ステップ107においてそれ自身のメモリページ群をロックし、つまりは、ハイパーバイザーの起動のステップ108と差異がない。
【0023】
ステップ110において、ハイパーバイザー38、56が仮想マシン44、72を作成する。ステップ112において、ゲストオペレーティングシステム46、74が、ステップ102、104、及び106と同様、起動され、検証され、そして保護される。ゲストオペレーティングシステム46、74の検証は、ロード後にRAMイメージの検査によりなされるが、その検査は、ホスト装置内で所望のように行われる。しかしながら、仮に、ホストオペレーティングシステム52又はハイパーバイザー38及びゲストオペレーティングシステム46、74の双方が、トラスティッド・プラットホーム・モジュール・チップといったハードウェアによる検証をサポートするとしても、トラスティッド・プラットホーム・モジュール・チップが、両方のオペレーティングシステムにその検証を報告するように構成されるだろう。ホストオペレーティングシステム52について上述したように、ゲストオペレーティングシステム46、74は、そのメモリページ群が自身のページテーブル48、78で読出し/実行オンリーに設定することにより保護される。しかしながら、ゲストオペレーティングシステム46、74が仮想マシン44、72にあるため、そのページテーブル48、78が、仮想メモリページ群に関連し、これは、図2のテーブル42といったホストページ及びアドレス変換テーブル群を介してマッピングされ、又は図3においては、アドレス変換テーブル62を介してページテーブル60へマッピングされ、ページテーブル60を介して実際の機械メモリハードウェアへマッピングされる。
【0024】
ステップ114においては、ゲストオペレーティングシステム46、74は、ハイパーバイザー38、56に信号を送り、仮想マシンのアドレス空間の特定のページ群がロードされロックされる。本実施形態においては、その信号が、仮想マシン44、72のアドレス空間内におけるロックされるべきページの位置を含む。もし特定のゲストオペレーティングシステム46、74が十分に理解され、高度に予測可能なロード手順を有し、そして、変化しないのであれば、オペレーティングシステムが占有する仮想マシン44、72のアドレス空間の範囲を事前に同意することが可能であり、とすれば、ロックされるべきページがその信号により特定される必要がないかもしれない。ゲストオペレーティングシステム46、74が一般的に入手可能なオペレーティングシステムに基づくものであるとき、ハイパーバイザー38、56に信号を送信するコードが、本方法を実施するために改変された、ゲストオペレーティングシステム46、74の唯一の部分であるかもしれない。できる限り、ロックされたページ群にあるゲストオペレーティングシステム46、74の部分に仮想マシン44、72の制御が移行する前、ページテーブル48、78がロックされ、この信号が送信される。ゲストオペレーティングシステム46、74の信頼部分は、つまりは、あるオペレーティングシステムにおいては、ゲストオペレーティングシステム46、74のメインコードの部分というよりは、むしろ起動ローダーの部分にある。ゲストオペレーティングシステム46、74が、トラスティッド・プラットホーム・モジュール・チップ又はロード時にコードを認証するための他の規定(措置)をサポートする場合、その規定(措置)に信号が関連付けられて、認証されたものとコードを認定する通常工程への付加としてハイパーバイザー38、56に信号送信する。このコードを置く最適な場所は、ゲストオペレーティングシステム46、74として用いられる特定のオペレーティングシステムの設計及び挙動により大きく決定されるだろう。
【0025】
ステップ116では、ゲストオペレーティングシステム46、74を含む特定のページ(群)を読出し/実行オンリーにロックするべく、ハイパーバイザー56が、アドレス変換テーブル62を、及び/又はホストオペレーティングシステム52又はハイパーバイザー56がページテーブル60を、又はハイパーバイザー38が、ページテーブル42をセットする。ゲストオペレーティングシステム46、74から信号を受信するコードは、本方法を実行するために修正されたハイパーバイザー38、56の唯一の部分であるかもしれない。
【0026】
ホストオペレーティングシステム52又はハイパーバイザー38が、仮想マシン44、72に可視的なページスワッピングをサポートするとき、ページテーブル42又は60又はアドレス変換テーブル62で「ロック」されたページ群をスワップすることが必要になるかもしれない。この場合、スワップアウトされるページ群を単純に欠落させても良い。なぜなら、これらは、如何様にも改変されるべきものではなく、そして、スワップインされるページ群が、改変に対して保護されたROM30又は長期ストレージ32内の特定の位置からのみロードされるように許可される。そして、もしロックされたページがなぜか改変されたとしても、その改変は、通常のページスワッピングの結果としてキャンセルされるかもしれない。典型的な構成においては、仮想マシン44、72のアドレス空間内のロックされたページ群の位置が変化せず、従って、問題のページ群が、仮想マシン側のページ及びアドレス変換テーブル42又はアドレス変換テーブル62上で簡単にトラックされ得る。しかしながら、もしロックされたページ群がホスト装置側のテーブル42、62上において、例えば、ページテーブル群60においてトラックされるならば、どのページがロックされているのかを示す属性は、ページ変換業務の変化に動的にアップデート(更新)される必要があるだろう。
【0027】
ゲストオペレーティングシステム46、74が十分に保護された後に限り、ステップ118において、アプリケーション50、76が、ゲストオペレーティングシステム46、74内で実行される。アプリケーション54について上述したように、アプリケーション50又は76が、オペレーティングシステム46又は74よりも信頼されていないため、これらは、オペレーティングシステム46又は74が保護された後に限り立ち上げられる。アプリケーション50、76が、オペレーティングシステム46又は74が保護された後に限り起動するため、これらは、オペレーティングシステム46又は74ほど信頼される必要がない。好ましくは、ステップ118が、ステップ112、114、及び116と同様、アプリケーション群50又は76の検証、起動、及び保護の各ステップを含む。
【0028】
ステップ120において、アプリケーション群50又は76が稼働し、意図したように稼働する利用価値がある任意の目的を達成する。
【0029】
ステップ122では、ハッカー90(図1参照)が、外部インターフェイス34を介して仮想マシン44、72へのアクセスを獲得し、ステップ124において、ハッカーが、何らかの不正目的に従事させるようにゲストオペレーティングシステム46、74、又はアプリケーション50、76を改変又は改変しようと試みる。ゲストオペレーティングシステム46、74、及びアプリケーション50、76を含むページ群が、読出し/実行オンリーとしてページテーブル48、78により規定されるため、ハッカー90は、そのように為すことができない。
【0030】
ステップ126では、ハッカーが、仮想マシン44、72の範囲内で特権(レベル)を獲得し、これにより、ページテーブル48、78の保護を無効にすることが可能になり、そして、ゲストオペレーティングシステム46、74、又はアプリケーション50、76を含むメモリページ群の編集権限が与えられる。ステップ128では、ハッカーが、そのようなページ群を編集するように試みる。しかしながら、ステップ130において、編集が失敗する。なぜなら、問題となっているページは、依然として、ページテーブル60又はアドレス変換テーブル62、又は双方、又はページ及びアドレス変換テーブル42において、読出し/実行オンリーとして規定されているためである。もしハッカー90が、仮想マシンにいることを理解しないのであれば、この失敗は不可解であるだろう。仮に、ハッカー90が、仮想マシン内にいることを理解していたとしても、ホスト装置のページテーブル42、60を編集するため、仮想マシン44、72から脱出するという課題にまず直面する。
【0031】
通常の動作においては、ステップ130は生じるべきものではない。なぜなら、ステップ130にて阻止された如何なる書き込みは、ステップ124にて事前に阻止されるべきであったためである。メモリマネージャ40、58、又はハイパーバイザー56が、ステップ124において阻止されるべきであったライト動作をステップ130において識別することができたならば、それは、何か不適当な事態が生じている強い示唆になるだろう。ページテーブル群48、78の保護が失敗した又はハッキングされた、又は、ホストシステム内の誤動作により、生じるべきではないメモリアクセスを生じさせていることが例示される。
【0032】
専用のアドレス変換テーブル62においてページ群がロックされているとき、唯一のロックされたページ群は、ステップ114において信号送信されたものであるべきであり、これらのページの全てがゲストページテーブル48、78においてロックされるべきである。この場合において、ロックされたページに対する如何なる書き込みトライも疑わしい。ページテーブル42、60においてページがロックされているとき、そのページテーブルは、ホストオペレーティングシステム52、ハイパーバイザー38、56、及び/又はホストアプリケーション群54のページをロックしているかもしれない。しかしながら、明示的な属性をページテーブル42、60に設定するか、又は、仮想マシンに割り当てられたことが既知であるアドレス空間の範囲に対してページ群を適合させることにより、ロックされた仮想マシンのページ群が識別されるだろう。これら実施形態の如何なる態様においても、不適切な書き込みトライが、ステップ130において阻止されると、その不適切な書き込みトライがそのように識別され、そして、ステップ132において、適切な警告が発令されるだろう。例えば、後の診断での使用のために侵犯がログ付され、コンソール上においてメッセージが表示され、そうでなければヒト管理者に対して送信され、又は、当業者に知られたように他の警戒策が活性化されるだろう。
【0033】
ステップ134において、ハッキングが失敗し、コンピューター20がステップ120に戻り、通常動作を継続する。
【0034】
具体的な実施形態を記述してきたが、本発明の精神又は添付請求項の範囲から逸脱することなく様々な変形が可能であり、異なる実施形態の特徴が一つの実施形態に組み合わせることもできる。
【0035】
例えば、簡潔性の便宜のため、単一のプロセッサ22を有するコンピューター20を記述してきた。実際には、コンピューター20が、複数のプロセッサを有し、複数のコンピューターのネットワーク又は他の構成であっても良い。単一のホストオペレーティングシステム52の下に稼働する単一の仮想マシン72について記述してきたが、実際には、単一ハイパーバイザー下の複数の仮想マシンを含む構成、及び/又は物理コンピューターのネイティブオペレーティングシステム下で稼働するホスト仮想マシン群内で稼働するゲスト仮想マシン群を包含する複雑構成が可能である。
【0036】
ベアメタルハイパーバイザー38の実施形態、及び別々のプログラムとしてのホストオペレーティングシステム52及びハイパーバイザー56の実施形態であって、ホストオペレーティングシステム52の下のアプリケーション空間で稼働するハイパーバイザー56を具備する実施形態について記述してきた。更なる実施形態においては、ハイパーバイザー56が、ホストオペレーティングシステム52に統合され、ホストオペレーティングシステム52が、ホストレベルプロセス54及び/又は複数のハイパーバイザー56をサポートする全面的なオペレーティングシステムである。
【0037】
システム構成の選択を担当するヒト管理者の識別は、未決であれば、システム間で異なるだろう。しかしながら、大きなシステムにおいては、仮想マシン72が、ホストコンピューター20の管理者とは異なる「仮想」管理者を有するかもしれない。従って、ゲストオペレーティングシステム74にとっては、ステップ114において信号を発行することができたほうが望ましく、信号の発行時点又はその事前のいずれかにおいて、仮想マシンとホストコンピューターの各領域間の他の通信を伴うことなく、ハイパーバイザー56がこれらの信号に応じて稼働しても良い。
【0038】
本実施形態においては、ハッカーによる外部からの直接攻撃に対して保護されるものとして仮想マシン72を説明したが、当業者は、開示されたシステム及び方法が、仮想マシン72の範囲内から生じる混乱、例えば、バギーコード(バグのあるコード)又は事前に潜在的に導入された悪意のあるコードにより生じる混乱に対して有効な保護も提供することができるものと理解するだろう。
【0039】
ゲストページテーブル78においてページをロックすることなく、ページテーブル60又はアドレス変換テーブル62においてアドレスページをロックすることも可能であろう。しかしながら、これにより、ゲストオペレーティングシステム74がロックされたページの変更を真摯に許可し、仮想マシン72内で解決することができないエラーが生じてしまうというリスクを招く。従って、ホストレベルにおいてロックされた全てのページ群が仮想マシン72内でもロックされることが望ましい。
【0040】
上述のところからすれば、本発明の範囲を示唆するものとして、前述の明細書よりは添付請求項を参照すべきである。
【符号の説明】
【0041】
20 :ホストコンピューター
22 :プロセッサ
24 :入出力装置
32 :長期ストレージ
34 :外部インターフェイス
38 :ベアメタルハイパーバイザー
40 :メモリマネージャ
42 :ページテーブル
42 :アドレス変換テーブル
44 :仮想マシン
46 :ゲストオペレーティングシステム
48 :ページテーブル
50 :アプリケーション
50 :プロセス
52 :ホストオペレーティングシステム
54 :ホストアプリケーション群
56 :ハイパーバイザー
58 :メモリマネージャ
60 :ページテーブル群
62 :アドレス変換テーブル
72 :仮想マシン
74 :ゲストオペレーティングシステム
76 :プロセス
78 :ページテーブル
90 :ハッカー

【特許請求の範囲】
【請求項1】
プロセッサ及び当該プロセッサ上で実行可能なプログラムコードを備えるホストコンピューターシステムであって、前記プログラムコードが、
少なくとも1つの仮想マシンを定義するハイパーバイザーのプログラムコードであって、前記仮想マシンのアドレス空間が、当該ハイパーバイザーの制御の下で前記ホストコンピューターシステムの物理メモリ上に存在する、プログラムコードと、
前記仮想マシンのゲストオペレーティングシステムのプログラムコードと、を含み、
前記ハイパーバイザー及び前記ホストコンピューターシステムのホストオペレーティングシステムの少なくとも一方が、前記仮想マシンのアドレス空間の部分に対応する前記ホストコンピューターシステムのアドレス空間の部分を、当該部分が読出し可能であるが書き込み不能なロック状態にセットするように動作する、ホストコンピューターシステム。
【請求項2】
前記仮想マシンのアドレス空間の前記部分が、前記ゲストオペレーティングシステムのプログラムコード、又は前記ゲストオペレーティングシステムの下で稼働するアプリケーションのプログラムコードにより占有される空間を含む、請求項1に記載のホストコンピューターシステム。
【請求項3】
前記ゲストオペレーティングシステムが、前記仮想マシンのアドレス空間の前記部分を、当該部分が読出し可能であるが書き込み不能なロック状態にセットするように動作する、請求項1又は2に記載のホストコンピューターシステム。
【請求項4】
前記仮想マシン内においてロック状態にセットされた前記仮想マシンのアドレス空間の一部に対応すると識別された前記ホストコンピューターシステムのアドレス空間の部分への書き込みのリクエストの受信を識別するべく更に動作する、請求項3に記載のホストコンピューターシステム。
【請求項5】
前記ゲストオペレーティングシステムは、前記ゲストオペレーティングシステムの他の構成要素又は前記ゲストオペレーティングシステムの下で稼働する前記プログラムの他の構成要素が、前記仮想マシンの動作メモリ中にロードされる後であり、前記他の構成要素の稼働の開始前、前記ハイパーバイザーへ信号送信するべく動作する構成要素を含み、
前記ハイパーバイザーは、前記信号に応答し、前記他の構成要素のプログラムコードを含む前記ホストコンピューターシステムのアドレス空間の部分を前記ロック状態にする、請求項1乃至4のいずれか一項に記載のホストコンピューターシステム。
【請求項6】
前記ハイパーバイザー又は前記ホストオペレーティングシステムが、前記仮想マシンのアドレス空間のページのページイン及びページアウトを許容するものであって、前記ロック状態のページがページインするとき、改変に対して保護された特定の記憶領域からのみの前記ページのロードが許容される、請求項1乃至5のいずれか一項に記載のホストコンピューターシステム。
【請求項7】
前記プログラムコードの健全性を、前記仮想マシンへのそのコードのロード時、前記仮想マシン外で検証するべく更に動作する、請求項1乃至6のいずれか一項に記載のホストコンピューターシステム。
【請求項8】
コンピューターシステムの保護方法であって、
少なくとも1つの仮想マシンを規定するハイパーバイザーを前記コンピューターシステム上で稼働させるステップであって、前記仮想マシンのアドレス空間が、前記ハイパーバイザーの制御の下で前記ホストコンピューターシステムの物理メモリ上に存在する、ステップと、
前記仮想マシン上でゲストオペレーティングシステムを稼働するステップと、
前記仮想マシンのアドレス空間の部分に対応する前記ホストコンピューターシステムのアドレス空間の部分を、当該部分が読出し可能であるが書き込み不能なロック状態にセットする、ステップと、
を含む、方法。
【請求項9】
前記仮想マシンのアドレス空間の前記部分が、前記ゲストオペレーティングシステム又は前記ゲストオペレーティングシステムの下で稼働するアプリケーションにより占有される、請求項8に記載のコンピューターシステムの保護方法。
【請求項10】
前記仮想マシンのアドレス空間の前記部分を、当該仮想マシン内において当該部分が読出し可能であるが書き込み不能なロック状態にセットするステップを更に含む、請求項8又は9に記載のコンピューターシステムの保護方法。
【請求項11】
前記仮想マシン内においてロックされたアドレス空間に対応するロックされたアドレス空間を前記ホストコンピューターシステムにおいて識別し、当該識別されたロック状態のアドレス空間への書き込みリスエストを前記ホストコンピューターシステムにおいて受信する時にレスポンスを生成する、請求項10に記載のコンピューターシステムの保護方法。
【請求項12】
前記ゲストオペレーティングシステムの他の構成要素又は前記ゲストオペレーティングシステムの下で稼働する前記プログラムの他の構成要素が、前記仮想マシンの動作メモリ中にロードされる後であり、前記他の構成要素の稼働の開始前、前記ゲストオペレーティングシステムが、前記ハイパーバイザーへ信号送信し、
前記ハイパーバイザーが、前記信号に応答し、前記他の構成要素のプログラムコードを含む前記ホストコンピューターシステムのアドレス空間の部分を前記ロック状態とする、請求項8乃至11のいずれか一項に記載のコンピューターシステムの保護方法。
【請求項13】
前記ハイパーバイザー又はホストオペレーティングシステムが、前記仮想マシンのアドレス空間のページのページイン及びページアウトを許容し、そして、前記ロック状態のページがページインするとき、改変に対して保護された特定の記憶領域からのみの前記ページのロードを許容する、請求項8乃至12のいずれか一項に記載のコンピューターシステムの保護方法。
【請求項14】
前記プログラムコードの健全性を、前記仮想マシンへのそのコードのロード時、前記仮想マシン外で検証する、請求項8乃至13のいずれか一項に記載のコンピューターシステムの保護方法。
【請求項15】
コンピューター上で実行される際、ホストオペレーティングシステム内のハイパーバイザーを生じさせ、かつ少なくとも1つの仮想マシンを規定させるべく機能するコンピュータープログラムコードを含む非一時的な記憶媒体であって、
前記仮想マシンのアドレス空間が、前記仮想マシンのゲストオペレーティングシステム及び前記ハイパーバイザーの制御の下で前記ホストコンピューターシステムの物理メモリ上に存在し、
前記ホストオペレーティングシステム及び前記ハイパーバイザーの少なくとも一方に、前記仮想マシンのアドレス空間の部分に対応する前記ホストコンピューターシステムのアドレス空間の部分を、当該部分が読出し可能であるが書き込み不能なロック状態にセットさせる、非一時的な記憶媒体。
【請求項16】
前記コンピュータープログラムコードは、前記ゲストオペレーティングシステムの下で稼働するアプリケーションにより又は前記ゲストオペレーティングシステムにより占有された空間を含む前記仮想マシンのアドレス空間の部分に対応する前記ホストコンピューターシステムのアドレス空間の前記部分を前記ロック状態にセットさせるべく機能する、請求項15に記載の非一時的な記憶媒体。
【請求項17】
前記コンピュータープログラムコードが、前記ゲストオペレーティングシステムに、前記仮想マシンのアドレス空間の前記部分を、当該部分が読出し可能であるが書き込み不能なロック状態にセットさせるように機能するコードを含む、請求項15又は16に記載の非一時的な記憶媒体。
【請求項18】
前記コンピュータープログラムコードは、前記ゲストオペレーティングシステムの他の構成要素又は前記ゲストオペレーティングシステムの下で稼働する前記プログラムの他の構成要素が、前記仮想マシンの動作メモリ中にロードされる後であり、前記他の構成要素の稼働の開始前、前記ゲストオペレーティングシステムから前記ハイパーバイザーへ信号送信させるコードを含み、
前記ハイパーバイザーに、前記信号に応答して、前記他の構成要素のプログラムコードを含む前記ホストコンピューターシステムのアドレス空間の部分を前記ロック状態にさせるコードを含む、請求項15乃至17のいずれか一項に記載の非一時的な記憶媒体。
【請求項19】
前記ハイパーバイザー又は前記ホストオペレーティングシステムが、前記仮想マシンのアドレス空間のページのページイン及びページアウトを許容するものであって、
前記コンピュータープログラムコードが、前記ロック状態のページがページインするとき、改変に対して保護された特定の記憶領域からのみの前記ページのロードを許容させるコードを含む、請求項15乃至18のいずれか一項に記載の非一時的な記憶媒体。
【請求項20】
前記プログラムコードの健全性を、前記仮想マシンへのそのコードのロード時、前記仮想マシン外で検証させるコードを更に含む、請求項15乃至19のいずれか一項に記載の非一時的な記憶媒体。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate