(57)【要約】【課題】仮想マシン実行中に、例えば不正なプログラムの実行によって仮想化に影響のある問題命令が発行されたとしても、不正プログラムから仮想マシンの動作を保護する。【解決手段】仮想マシンモニタＶＭＭ２３は、仮想マシンＶＭ２１，２２が実行するゲストソフトウェアのうち、仮想化に影響のある問題命令の発行を監視するＶＭＣＳ１３とＶＴ１２と、仮想化に影響のある問題命令の発行が検知された場合、ＶＭ２１，２２に対する保護処理を実行するＶＭＭ２３，ＥＰＴ１４とを備える。【選択図】図１
2015121961.tif 000002
【特許請求の範囲】
【請求項１】
仮想マシンが実行するゲストソフトウェアのうち、仮想化に影響のある問題命令の発行を監視する監視手段と、
前記仮想化に影響のある問題命令の発行が前記監視手段によって検知された場合、前記仮想マシンに対する保護処理を実行する保護手段とを含む仮想マシンモニタ。
【請求項２】
前記監視手段は、前記仮想化に影響のある問題命令が記憶される監視メモリと、前記ゲストソフトウェアの実行中に前記問題命令の発行の有無を監視する監視ロジックとを含み、
前記保護手段は、前記問題命令の発行が前記監視ロジックで検知された場合、前記ゲストソフトウェアの動作に対して中断命令を発行し、前記中断の間に、前記問題命令の実行先のアドレスに対する保護処理を行って、前記ゲストソフトウェアの動作を再開する命令を発行する請求項１に記載の仮想マシンモニタ。
【請求項３】
前記仮想マシンは第１の動作モードで動作され、前記問題命令が発行されると、前記保護手段は、前記第１の動作モードを中断し、前記保護手段を第２の動作モードに遷移して前記問題命令の実行を無効にする保護処理を施した状態で、前記仮想マシンを前記第１の動作モードに復帰させる請求項１又は２に記載の仮想マシンモニタ。
【請求項４】
請求項１〜３のいずれかに記載の仮想マシンモニタを備えた情報処理装置。
【請求項５】
請求項１〜３のいずれかに記載の仮想マシンモニタによって仮想マシンを制御する仮想マシン制御方法。
【請求項６】
請求項５に記載の仮想マシン制御方法を仮想マシンモニタに実行させることを特徴とするプログラム。
【請求項７】
請求項６に記載のプログラムを記録したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、１又は複数の仮想マシンの動作を仮想マシンモニタによって制御する技術に関する。
【背景技術】
【０００２】
近年、仮想マシンモニタ（ＶＭＭ）を搭載したプロセッサが普及している。ＶＭＭをコンピュータ上で実行することで、複数のオペレーションシステム（ＯＳ）を、それぞれゲストの仮想マシン（ＶＭ）として独立的に実行させることができる。ＶＭを稼働させるＯＳ、アプリケーション（ＡＰ）を含むゲストソフトウェアは、それらの動作中、種々の態様で複数のハードウェアリソースへアクセスする。従って、ＶＭＭは、各ＶＭにおけるハードウェアリソースへのアクセスにおいて、衝突が生じないようにそれらの動きをモニタする。
【０００３】
特許文献１には、ゲストソフトウェアの挙動を監視する技術が提案されている。すなわち、ＶＭにおいて特権を持つ、あるフォールトイベントが生じた場合、あるいは、ゲストソフトウェアが、特権（リング０）を持つリソースへのアクセスを試みる場合、制御をＶＭＭへ遷移させるようにしている（ＶＭ終了と称する）。このＶＭ終了に続いて制御を受信した後、ＶＭＭに様々な処理を実行させ、その後、制御をゲストソフトウェアへ戻す（ＶＭエントリ）ことができるようにしている。このとき、プロセッサは、ＶＭＭにより指定された、ＶＭＣＳ内に記憶された特権レベル終了基準に基づいてＶＭ終了を生じさせるべきか否かを決定するためにゲストのＶＭの現在の特権レベルを特権レベル監視ロジック（ＰＬＭＬ）で評価させる。次いで、現在のゲスト特権レベルが特権レベル終了基準に合うことをＰＬＭＬが決定すると、処理ロジックは、ゲストソフトウェアからＶＭＭへのＶＭ終了を行うようにしている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００６−２４２０７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、特許文献１に記載された発明は、ＶＭ終了の判断が現在の特権レベルを基準とするものである。また、制御をＶＭＭへ移動させて処理を実行し、ＶＭエントリさせることが記載されているものの、ＶＭＭへの遷移は、ＶＭにおいていくつかの命令を実行する前又は実行した後に生じ得るとあるように、命令実行の前後を問わないことから、命令実行前か命令実行後の一方に格別の技術的意義を持たせた処理を施すものでもない。また、特許文献１には、不正プログラムの侵入に対する対策は示唆もなされておらず、さらに、ゲスト命令の実行中、ＶＭ終了が生じなければゲスト命令を廃棄すると記載されているが、その方法に関しては記載がない。
【０００６】
本発明は、上記に鑑みてなされたもので、仮想マシンから仮想化に影響のある問題命令（フォールトイベント）の発行を監視し、仮想マシンの保護を図る情報処理装置、仮想マシン制御方法、プログラム、及び記録媒体を提供することにある。
【課題を解決するための手段】
【０００７】
本発明に係る仮想マシンモニタは、仮想マシンが実行するゲストソフトウェアのうち、仮想化に影響のある問題命令の発行を監視する監視手段と、前記仮想化に影響のある問題命令の発行が前記監視手段によって検知された場合、前記仮想マシンに対する保護処理を実行する保護手段とを含むものである。
【０００８】
本発明によれば、第１、第２の実施形態が対応しており、監視手段によって、仮想マシンが実行するゲストソフトウェアのうち、仮想化に影響のある問題命令の発行が監視される。そして、監視手段によって前記仮想化に影響のある問題命令の発行が検知された場合、保護手段によって前記仮想マシンに対する保護処理が実行される。従って、仮想マシン実行中に、例えば、意図の有無を問わず不正なプログラムの実行によって仮想化に影響のある問題命令が発行されたとしても、不正プログラムから仮想マシンの動作は保護されるため、データの改竄、漏洩等の不正行為は抑止される。
【０００９】
また、第１の実施形態が対応する仮想マシンモニタにおいて、前記監視手段は、前記仮想化に影響のある問題命令が記憶される監視メモリと、前記ゲストソフトウェアの実行中に前記問題命令の発行の有無を監視する監視ロジックとを含み、前記保護手段は、前記問題命令の発行が前記監視ロジックで検知された場合、前記ゲストソフトウェアの動作に対して中断命令を発行し、前記中断の間に、前記問題命令の実行先のアドレスに対する保護処理を行って、前記ゲストソフトウェアの動作を再開する命令を発行するものである。この構成によれば、監視メモリに前記仮想化に影響のある問題命令が記憶され、監視ロジックによって、前記ゲストソフトウェアの実行中に前記問題命令の発行の有無が監視される。そして、前記問題命令の発行が前記監視ロジックで検知された場合、保護手段によって、前記ゲストソフトウェアの動作に対して中断命令が発行され、前記中断の間に、前記問題命令の実行先のアドレスに対する保護処理が行われて、前記ゲストソフトウェアの動作を再開する命令が発行される。従って、ゲストソフトウェアの動作が一旦中断され、その間に、検知された問題命令の実行先のアドレスに対する保護処理が行われ、その後にゲストソフトウェアの動作を再開するので、仮想マシンによる問題命令の実行は、結果的には無効となる。
【００１０】
また、前記仮想マシンモニタにおいて、前記仮想マシンは第１の動作モードで動作され、前記問題命令が発行されると、前記保護手段は、前記第１の動作モードを中断し、前記保護手段を第２の動作モードに遷移して前記問題命令の実行を無効にする保護処理を施した状態で、前記仮想マシンを前記第１の動作モードに復帰させるものである。この構成によれば、仮想マシンによる問題命令の実行は、いわゆる、空（から）実行となる。
【００１１】
また、仮想マシン制御方法、そのプログラム、及びそのプログラムを記録した記録媒体である。
【発明の効果】
【００１２】
本発明によれば、仮想マシン実行中に、例えば不正なプログラムの実行によって仮想化に影響のある問題命令が発行されたとしても、不正プログラムから仮想マシンの動作を保護することができる。
【図面の簡単な説明】
【００１３】
【図１】本発明に係る仮想マシン環境の一実施形態を示す情報処理装置の構成図である。
【図２】ＶＭＭ２３のプログラムによって実行されるＶＭ２１（又はＶＭ２２）の動作制御１の一例を示すフローチャートである。
【図３】本発明に係る仮想マシン環境の第２の実施形態を示す情報処理装置の構成図である。
【図４】ＶＭＭ２４のプログラムによって実行されるＶＭ２１（又はＶＭ２２）の動作制御２の一例を示すフローチャートである。
【発明を実施するための形態】
【００１４】
図１は、本発明に係る仮想マシン環境の一実施形態を示す情報処理装置の構成図である。本発明が適用される情報処理装置としては、コンピュータを内蔵するサーバ装置、汎用パーソナルコンピュータ、携行用の情報端末等の各種の情報処理装置を含む。
【００１５】
本情報処理装置は、仮想マシン環境１を備える。仮想マシン環境１は、ハードウェア１０（ＨＷ）、ソフトウェア２０（ＳＷ）を備える。ハードウェア１０は、プロセッサとしてのＣＰＵ（Central Processing Unit）１１と、仮想化支援技術１２（ＶＴ）と、ＲＡＭ（Random Access Memory）等から構成される制御機構であるＶＭＣＳ（Virtual Machine Control Structure）１３と、ＲＡＭからなるＥＰＴ（Extended Page Table）１４とを備える。
【００１６】
ソフトウェア２０は、１又は複数、本例では２種類のゲストＯＳ１，ＯＳ２であるゲストソフトウェア２１，２２と、ホストＯＳとしてのソフトウェアである仮想マシンモニタ２３（ＶＭＭ）を備える。なお、ゲストソフトウェア２１，２２を、以降では仮想マシンとしてのＶＭ２１，ＶＭ２２と呼ぶ。
【００１７】
ＶＭＭ２３は、外部デバイス３０内のＨＤＤに格納されており、情報処理装置の起動を受けてＨＤＤのＭＢＲ（Master Boot Record）が起動し、ＯＳのブートローダが起動されてＶＭＭ２３がソフトウェア２０の格納領域及びワーク領域であるＲＡＭにロードされる。次いで、ロードされたＶＭＭ２３が起動され、ＶＭＭ２３の管理下でゲストＯＳ１，ＯＳ２が同じくＲＡＭに順次ロードされる。
【００１８】
ＶＭＭ２３は、後述する各種の機能を実行するソフトウェア及びデータ類を備え、ＶＭＣＳ１３のデータ領域を利用してＶＭ２１、２２の動作を制御する。より具体的には、ＶＭＭ２３は、（１）ゲストＯＳ１，ＯＳ２をＶＭ２１，２２として実行するモードへの遷移プログラム（及び復帰プログラム）、（２）ＶＭ２１，２２が実行する各種のゲストソフトウェア中の、仮想化に影響のある問題命令（フォールトイベント）のデータ、（３）ＣＰＵ１１の制御をＶＭＭ２３に渡してＶＭＸｒｏｏｔモードとするＥｘｉｔ命令、逆にＣＰＵ１１の制御をゲストＯＳ１，ＯＳ２に渡してＶＭＸｎｏｎ−ｒｏｏｔモードとするＥｎｔｒｙ命令をＶＴ１２にセットする処理、（４）チップセット内のレジスタ群１１１（メモリ管理を司るレジスタＣＲ、モデル別レジスタＭＳＲ（Modified Specific Resister）を含む）に書き込まれるＶＭＭ２３、ゲストＯＳ１，ＯＳ２のレジスタ内容（状態を表すフラグや値）及びＶＭ２１，２２稼働時の物理アドレス−物理アドレスの変換テーブル内容であってＥＰＴ１４に書き込まれる内容を、ＶＭＸｒｏｏｔモードとＶＭＸｎｏｎ−ｒｏｏｔモードとの切り替え毎に、ＶＭＣＳ１３内の対応するＶＭＣＳ１３１，１３２にセーブとロード（なお、ロードとはＣＰＵ１１のレジスタ群１１１等への書き込み）とを行わせる処理プログラム、（５）ＶＭ２１、ＶＭ２２の動作中にＶＭＣＳ１３による、前記仮想化に影響のある問題命令の発行の有無の監視状態をＶＴ１２（監視ロジックを含む）に設定する機能を備える。ＶＴ１２内に設定される監視ロジックは、稼働中のＶＭ２１，２２から発行される命令プログラムとＶＭＣＳ１３１，１３２に格納された仮想化に影響のある問題命令のリストとをハードウェア的に照合し、一致があると、ＣＰＵ１１にＥｘｉｔ命令を発行するものである。ＶＴ１２は、ＶＭＭ２３が実行可能なハードウェアで構成された仮想化支援技術である。
【００１９】
また、ＶＭＭ２３は、Ｅｘｉｔ命令が発行され（動作中のＶＭ２１，２２の動作が中断され）た後、ＶＭＸｒｏｏｔモードで、後述する所定の保護処理を施し、次いでＶＴ１２を介してＥｎｔｒｙ命令を発行するプログラムを備える。
【００２０】
上記において、仮想化に影響のある問題命令とは、例えば、複数の例外（例えば、ページフォールト、システムコール（System Call）を含む一般保護違反、トラップ、異常終了など）、複数の割り込み（例えば、ハードウェア割込、ソフトウェア割込）及び複数のプラットフォームイベント（例えば、初期化（ＩＮＩＴ）及びシステム管理割り込み（ＳＭＩ））のような様々なフォールトイベントを想定している。フォールトイベントには、例えば規則に違反したプログラム、例えば、カーネル空間のメモリへ書き込みしようとするゲストＯＳのプロセスがある。
【００２１】
ＶＭＭ２３が実行するＶＭＸｒｏｏｔモードでの所定の保護処理とは、Ｅｘｉｔ命令の発行を受けてＶＭＣＳ１３１（あるいは１３２）にセーブされた、動作が中断されたＶＭ２１（あるいはＶＭ２２）の情報を元にＥｘｉｔ命令発行の原因を調べ、例えば、フォールトイベントの実行先となる物理アドレスへの書込を無効とするコマンドを設定する。そして、かかるコマンドを設定した状態で、ＶＭＸｎｏｎ−ｒｏｏｔに戻す。
【００２２】
ＶＭＣＳ１３は、Ｅｎｔｒｙ／Ｅｘｉｔ 時のレジスタ群１１１、ＥＰＴ１４の内容を保持したり、振る舞いを制御するデータ構造体である。ＶＭＣＳ１３は、ＶＭ２１，２２の状態と、ＶＭＭ２３の状態と、ＶＭＣＳ１３がいかにしてゲストソフトウェアの動作を中断（制限）するかの情報とを含む。ＶＭＣＳ１３は、ＶＭＭ２３のホスト領域とＶＭ２１のゲスト領域とからなる対応するＶＭＣＳ１３１と、ＶＭＭ２３のホスト領域とＶＭ２２のゲスト領域とからなる対応するＶＭＣＳ１３２とを含む。ＶＭＣＳ１３は、６つの論理グループ、すなわちGuest-stateエリア、Host-stateエリア、VM-execution 制御フィールド、VM-exit 制御フィールド、VM-entry 制御フィールド、VM-exit 情報フィールドに分かれており、このVM-exit 情報フィールドに、Ｅｘｉｔ命令が発行された原因の情報が格納される。
【００２３】
ＥＰＴ１４は、ＶＭＭ２３の制御によるページ・テーブル構造として実装されたものである。ＥＰＴ１４は、ゲストＯＳの物理アドレス空間（ＶＭ２１，２２の中でのＰＴＥ（Page Table Entry）２１１，２２２で記述される物理アドレス）から、ＶＭＭ２３（ホストＯＳ）の物理アドレス空間（最終的な物理アドレス）への変換をサポートする。ＥＰＴ１４は、例えば、ゲストＯＳの物理アドレス（６４bit）変換構造として、２進数に直したとき、上位側から所定ビット（９ビット）ずつ、それぞれの物理ベースアドレスを記憶するＰＭＬ４Ｅ、ＰＤＰＴＥ、ＰＤＥ、そして１２ビットのＰＴＥの各参照用テーブルを備える。そして、最終的には、最後のＰＴＥにて参照された物理ベースアドレスに参照物理アドレスの下位１２ビットが加算されてアクセスされる。ＶＭＭ２３は、ＥＰＴ１４の前記構造から書込保護を行いたい対象の物理アドレスに対応するＰＴＥに変更を加える。より具体的には、対応するＰＴＥのＷｒｉｔｅ命令ビットを“０”に書き替える。なお、書き替えられた内容は、Ｅｎｔｒｙ命令によるＶＭＸｎｏｎ−ｒｏｏｔモードへの切替で有効となる。
【００２４】
以下処理は、ｋａｒｎｅｌプログラムの保護の一例を示すものである。
【００２５】
（１）ゲストＯＳとしてのＷｉｎｄｏｗｓ（登録商標） Ｋｅｒｎｅｌの起動を初回のｓｙｓｔｅｍｃａｌｌ命令にて判断する。
【００２６】
（２）ｓｙｓｔｅｍｃａｌｌ命令の発行は、IA32_EFERMSRの「SYSCALLEnable」bitを“０”にしておくことで、ＣＰＵ１１の一般保護例外が生成されることから判断する。
【００２７】
（３）Ｗｉｎｄｏｗｓ（登録商標） Ｋｅｒｎｅｌの起動完了時、ｋｅｒｎｅｌプログラム領域であるリニアアドレス「0xFFFFFF8000000000」〜「0xFFFFFF87FFFFFFFF」に該当するＰＴＥ２１１もしくはＰＴＥ２２１内の書き込み禁止ページを検索する。
【００２８】
（４）これに該当するＰＴＥテーブル内の物理アドレスに該当するＥＰＴ１４内のＰＴＥの書き込み属性（アクセス属性）を“０”にして書き込みを禁止する。これにより、不正プログラムによる新たなＰＡＥページテーブルからのｋｅｒｎｅｌプログラム領域の書き込みも禁止できる。
【００２９】
（５）ｋｅｒｎｅｌプログラム領域への書き込みが発行されるとBasic Exit Reasonsが「EPT violation 」としてEXITされる。
【００３０】
（６）「 EPT violation 」としてEXITされたら、その時点のゲスト実行プロセスの当該命令を無視する。あるいは強制終了させる方法でもよい。
【００３１】
図２は、ＶＭＭ２３のプログラムによって実行されるＶＭ２１（又はＶＭ２２）の動作制御１の一例を示すフローチャートである。
【００３２】
仮想マシンモードにおいて、まず、ＶＭＭ２３が動作して仮想化処理が実行される（ステップＳ１）。次に、ＶＭＭ２３は、これから動作されるＶＭ（例えばＶＭ２１）を管理するためのメモリ領域であるＶＭＣＳ１３を作成する（ステップＳ３）。
【００３３】
次に、ＶＭＭ２３によって、ＣＰＵ１１の動作モードがＶＭＸｎｏｎ-ｒｏｏｔモードに切り替えられ（ステップＳ５）、これによってＶＭ２１が動作可能な状態とされる。
【００３４】
ＶＭ２１が動作状態になると、ＶＴ１２の監視ロジックによってＶＭ２１からの命令が監視される。そして、ＶＭ２１で、フォールトイベントに該当する命令、すなわちＶＭＭ２３が処理すべき命令がＶＴ１２からＣＰＵ１１に発行されると（ステップＳ７）、ＣＰＵ１１により、当該命令の実行が、実行される前に中断され、そのときのレジスタ群１１１の状態や、実行しようとした命令の種類などがＶＭＣＳ１３に保存され（ステップＳ９）、ＶＭＭ２３に制御が遷移する（ＶＭＸｒｏｏｔモードに切り替えられる）（ステップＳ１１）。
【００３５】
なお、ステップＳ７，Ｓ９は、ＶＴ１２、ＣＰＵ１１による処理であるが、説明の便宜上、まとめて説明した。また、ステップＳ７では、フォールトイベントが発生した場合を示しているもので、フォールトイベントが発生しない間は、ＶＭＸｎｏｎ−ｒｏｏｔモードでの動作が継続される。
【００３６】
ＶＭＭ２３は、ＶＭＣＳ１３１の内容を調べ（ステップＳ１３）、前述したように、ＥＰＴ１４内の対応する物理アドレスを記述しているＰＴＥ中のアクセス属性のＷｒｉｔｅビットを“０”（ＶＭ２１からのアクセスを無視するコマンド）に書き替える処理を行い（ステップＳ１５）、次いで、ゲストＯＳの処理が終了でないことを確認して（ステップＳ１７）、ステップＳ５に戻り、ＶＭＸｎｏｎ−ｒｏｏｔモードに切り替えられることで、ＶＭ２１での処理が続行される。
【００３７】
これによって、仮にＶＭ２１（又はＶＭ２２）での不正プログラムによって、例えばカーネルやデバイスドライバのアドレス領域へのデータ（例えばデータ破壊目的とか不正な潜伏用のプログラム）の書き込みが意図されても、その命令は無効（無視）とされて、情報や処理が保護されることになる。
【００３８】
図３は、本発明に係る仮想マシン環境の第２の実施形態を示す情報処理装置の構成図である。仮想マシン環境１’は、図１の構成と相違する点として、ゲストＯＳ３を備える。ゲストＯＳ３は、ＶＭＭ２４と同じ動作環境を有し、その一部の機能を実行するプログラムを備えている。ゲストＯＳ１，ＯＳ２，ＯＳ３（以下、ＶＭ２１，ＶＭ２２，ＶＭ２４１という）は、Ｅｎｔｒｙ命令を受けてＶＭＸｎｏｎ−ｒｏｏｔモードで動作する。また、ＶＭＣＳ１３は、ＶＭ２１，ＶＭ２２，ＶＭ２４１に対応して、ＶＭＣＳ１３１，１３２，１３３を備える。
【００３９】
また、ＶＭ２４１は、ＶＭＭ２４と同一環境にあることから、ＶＭ２１，２２に対して、特にＰＴＥ２１１，２２１へのアクセスが可能（図中、「○」で示す）とする一方、ゲストＯＳ１，ＯＳ２からのアクセスを不可（図中、「×」で示す）としている。ＶＭ２４１は、ＶＭ２１，２２のＰＴＥ２１１，２２１を参照して、過去の（主には前回監視時の）ＰＴＥ２１１，２２１の内容との異同を照合することで監視を行うプログラムを備える。そして、不一致があれば、異常有りと判断して異常対応処理を行う。例えば、図１に示す外部デバイス３０に含まれる図略のモニタやスピーカを介して警告報知を行う。あるいは強制シャットダウンして再起動させるようにしてもよい。
【００４０】
監視は、ＰＴＥ２１１，２２１内の全域でもよいが、好ましくは、カーネル領域、デバイスドライバ領域、非スワップ領域に含まれる物理アドレスを照合対象とすればよい。
【００４１】
ＶＴ１２内のＴＳＣ１２１（Time Stamp Counter）は、ＣＰＵ１１の基準クロックパルスのカウント動作を繰り返し実行する。ＶＭＭ２４は、ＴＳＣ１２１のカウント動作が設定された所定値に達する毎に、カウント終了信号を発して、Ｅｘｉｔ，Ｅｎｔｒｙ命令を交互に発行する。ＴＳＣ１２１のカウント動作に設定される所定値としては、例えば１命令／１クロックとして、数百〜数万クロックの範囲内で設定すればよい。また、所定値は固定でもよいし、ＶＭ２１，２２側の実行中のソフトウェア負担を考慮して一定でなくてもよい。
【００４２】
第２の実施形態は、周期的な照合処理の主体をゲストＯＳ３であるＶＭ２４１側で実行させることで、ＶＭＭ２４で全ての処理を実行する場合に比して、ＶＭＭ２４の負担を軽減し、ＶＭ２１，２２の動作の不連続さ（モニタ画面上での一時的なフリーズ）の発生を抑制することが可能となる。
【００４３】
図４は、ＶＭＭ２４のプログラムによって実行されるＶＭ２１（又はＶＭ２２）の動作制御２の一例を示すフローチャートである。
【００４４】
仮想マシンモードにおいて、図２のステップＳ１，Ｓ３と同様、まず、ＶＭＭ２４が動作して仮想化処理が実行され、次いで、ＶＭＭ２４によって、これから動作されるＶＭ（例えばＶＭ２１）を管理するためのメモリ領域であるＶＭＣＳ１３１が作成される。
【００４５】
次に、ＶＭＭ２４によって、ＣＰＵ１１の動作モードがＶＭＸｎｏｎ-ｒｏｏｔモードに切り替えられて、ＶＭ２１が動作可能な状態にされる（ステップＳ３１）。この時点で（あるいは別の開始タイミングで）、カウント動作を開始したＴＳＣ１２１が所定値までのカウントを終了したか否かが判断され（ステップＳ３３）、カウント終了したのであれば、カウント終了信号を受けてＥｘｉｔ命令が発行され、このＥｘｉｔ命令を受けてＶＭＸｒｏｏｔモードに切り替えられ、制御がＶＭＭ２４に遷移される（ステップＳ３５）。
【００４６】
ＶＭＭ２４は、ＶＴ１２を経由してＥＸｉｔ命令を発行させて、ＶＭ２４１をＶＭＸｎｏｎ−ｒｏｏｔモードで動作制御可能にする（ステップＳ３７）。ＶＭ２４１は、ＶＭＣＳ１３１に格納されているＶＭ２１の前回のＰＴＥ１２１の内容と今回のＰＴＥ１２１の内容との異同を照合する調査を行う（ステップＳ３９）。照合によって相違が発見され、異常と判断された場合（ステップＳ４１）、異常対応処理が実行されて（ステップＳ４３）、本フローを終了する。
【００４７】
一方、ステップＳ４１で、異常が確認できずにＴＳＣ１２１がカウントを終了した場合（ステップＳ４５）、ＶＴ１２を介してＥｘｉｔ命令が発行され、このＥｘｉｔ命令を受けてＶＭＸｒｏｏｔモードに切り替えられ、制御がＶＭＭ２４に遷移される（ステップＳ４７）。
【００４８】
そして、ＶＭ２１の処理が終了でないことを確認して（ステップＳ４９）、ステップＳ３１に戻り、ＶＭＸｎｏｎ−ｒｏｏｔモードに切り替えられることで、同様にしてＶＭ２１の処理が続行される。なお、Ｅｎｔｒｙ命令、Ｅｘｉｔ命令はＶＴ１２が、ステップＳ３９の処理はゲストＯＳ３が実行するものであるが、説明の便宜上、まとめて説明した。
【００４９】
これによって、仮にＶＭ２１（又はＶＭ２２）からの不正プログラムによって、ＰＴＥ２１１（又は２２１）の例えばカーネルやデバイスドライバのアドレス領域へのデータ（例えばデータ破壊目的とか不正な潜伏用のプログラム）の書き込みが意図されても、その命令は所定の時間毎に検知されるので、早急に警告などの対応策を講じることが可能となる。なお、警告に加えて、異常箇所によっては、仮想マシン環境１’をシャットダウンさせるようにしてもよい。この場合、仮想マシン環境１’の再起動、乃至はゲストＯＳ１（又はＯＳ２）の再インストールを提案するようにすればよい。
【００５０】
なお、本実施形態では、Ｉｎｔｅｌ（登録商標）ＶＭＭに基づいて説明したが、これに限定されず、ＡＭＤ社のＶＭＭ、ゲストＯＳをリング１あるいは２（ゲストアプリケーションをさらに下位のリング）で制御する態様にも適用可能である。また、第１の実施形態と第２の実施形態とを同時に実施する態様としてもよい。
【符号の説明】
【００５１】
１，１’  仮想マシン環境（情報処理装置）
１０  ハードウェア
１１  ＣＰＵ
１２  ＶＴ（監視手段、監視ロジック）
１２１  ＴＳＣ
１３，１３１，１３２，１３３  ＶＭＣＳ（監視手段、監視メモリ）
１４  ＥＰＴ（保護手段）
２０  ソフトウェア
２１，２２，２４１  ＶＭ（仮想マシン）
２１１，２２１  ＰＴＥ（保護手段）
２３，２４  ＶＭＭ（保護手段、仮想マシンモニタ）
３０  外部デバイス（記録媒体）
【図１】
2015121961.tif 000003
【図２】
2015121961.tif 000004
【図３】
2015121961.tif 000005
【図４】
2015121961.tif 000006