(57)【要約】【課題】リソースに対する処理要求のためのカーネルへのシステムコール命令の監視と、監視状態の維持とを可能にする。【解決手段】仮想マシンモニタ３２は、リソースに対する処理要求のためのカーネルへのシステムコール命令が前記仮想マシンから発行されたことを検出すると、イグジットを行って制御を前記仮想マシンモニタに遷移させるフック処理部３２２と、検出されたシステムコール命令の正否を評価する正否評価部３２５と、評価結果に応じた処置の命令を発行して、エントリーする処置部３２６と、システムコール命令の発行を検出するためのフック条件に対する書き換えアクセスの発行を監視する環境監視手部３２７とを備える。環境監視部３２７は、ＭＳＲのうちの、システムコール命令に関するレジスタへのフック条件に対する書き換えアクセスの発行を、ＶＭＣＳのイグジット対象リストを参照して検出し、イグジット処理を行って書込命令無効処理を実行してエントリーする。【選択図】図４
2018174001.tif 000002
【特許請求の範囲】
【請求項１】
仮想マシンの動作を監視する監視ソフトウェアを仮想マシンモニタに備えた情報処理装置において、
リソースに対する処理要求のためのカーネルへのシステムコール命令が前記仮想マシンから発行されたことを検出すると、イグジット処理を行って制御を前記仮想マシンモニタに遷移させる検知手段と、
前記検知手段によって検出された前記システムコール命令の正否を評価する評価手段と、
評価結果に応じた処置の命令を発行して、エントリー処理を行う処置手段と、
前記システムコール命令の発行を検出するためのフック条件に対する書き換えアクセスの発行を監視する環境監視手段とを備え、
前記環境監視手段は、
ＭＳＲのうちの、前記システムコール命令に関するレジスタへの前記フック条件に対する書き換えアクセスの発行を、ＶＭＣＳのイグジット対象リストを参照して検出し、イグジット処理を行って前記書き換えアクセスに対して書込命令無効処理を実行して、エントリー処理を行うことを特徴とする情報処理装置。
【請求項２】
前記書込命令無効処理は、前記ＭＳＲのうちの、前記システムコール命令に関するレジスタのDisable bitに０を書き込むことである請求項１に記載の情報処理装置。
【請求項３】
前記検知手段は、前記システムコール命令を無効オペコード違反として検知することを特徴とする請求項１又は２に記載の情報処理装置。
【請求項４】
前記処置手段は、前記評価手段が前記システムコール命令を正当と判断した場合、前記システムコール命令と同一の内容を前記カーネルへ発行し、前記評価手段が前記システムコール命令を不当と判断した場合、前記システムコール命令をスルーする命令を前記カーネルへ発行するか、又は前記システムコール命令をスキップする命令を前記システムコール命令の発行元に戻すことを特徴とする請求項１〜３のいずれかに記載の情報処理装置。
【請求項５】
仮想マシンの動作を仮想マシンモニタの監視ソフトウェアにより監視する情報処理監視方法であって、
リソースに対する処理要求のためのカーネルへのシステムコール命令が前記仮想マシンから発行されたことを検出すると、イグジット処理を行って制御を前記仮想マシンモニタに遷移させる検知ステップと、
前記検知ステップによって検出された前記システムコール命令の正否を評価する評価ステップと、
評価結果に応じた処置の命令を発行して、エントリー処理を行う処置ステップと、
前記システムコール命令の発行を検出するためのフック条件に対する書き換えアクセスの発行を監視する環境監視ステップとを備え、
前記環境監視ステップは、
ＭＳＲのうちの、前記システムコール命令に関するレジスタへの前記フック条件に対する書き換えアクセスの発行を、ＶＭＣＳのイグジット対象リストを参照して検出し、イグジット処理を行って前記書き換えアクセスに対して書込命令無効処理を実行して、エントリー処理を行うことを特徴とする情報処理監視方法。
【請求項６】
仮想マシンの動作を監視する仮想マシンモニタにロードされる監視ソフトウェアとしてのプログラムであって、
リソースに対する処理要求のためのカーネルへのシステムコール命令が前記仮想マシンから発行されたことを検出すると、イグジット処理を行って制御を前記仮想マシンモニタに遷移させる検知手段、
前記検知手段によって検出された前記システムコール命令の正否を評価する評価手段、
評価結果に応じた処置の命令を発行して、エントリー処理を行う処置手段、
及び前記システムコール命令の発行を検出するためのフック条件に対する書き換えアクセスの発行を監視する環境監視手段として前記仮想マシンモニタを機能させ、
前記環境監視手段は、
ＭＳＲのうちの、前記システムコール命令に関するレジスタへの前記フック条件に対する書き換えアクセスの発行を、ＶＭＣＳのイグジット対象リストを参照して検出し、イグジット処理を行って前記書き換えアクセスに対して書込命令無効処理を実行して、エントリー処理を行うことを特徴とするプログラム。
【請求項７】
仮想マシンの動作を監視する仮想マシンモニタにロードされる監視ソフトウェアとしてのプログラムを記録したコンピュータ読み取り可能な記録媒体であって、
前記プログラムは、
リソースに対する処理要求のためのカーネルへのシステムコール命令が前記仮想マシンから発行されたことを検出すると、イグジット処理を行って制御を前記仮想マシンモニタに遷移させる検知手段、
前記検知手段によって検出された前記システムコール命令の正否を評価する評価手段、
評価結果に応じた処置の命令を発行して、エントリー処理を行う処置手段、
及び前記システムコール命令の発行を検出するためのフック条件に対する書き換えアクセスの発行を監視する環境監視手段として前記仮想マシンモニタを機能させ、
前記環境監視手段は、
ＭＳＲのうちの、前記システムコール命令に関するレジスタへの前記フック条件に対する書き換えアクセスの発行を、ＶＭＣＳのイグジット対象リストを参照して検出し、イグジット処理を行って前記書き換えアクセスに対して書込命令無効処理を実行して、エントリー処理を行うことを特徴とする記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プロセッサが実行する情報処理動作を監視する技術に関する。
【背景技術】
【０００２】
昨今、不正かつ有害な動作を行う意図で作成された悪意のあるプログラム（以下、不正プログラム）によるファイルの書き換えやシステムの設定変更等によってコンピュータのセキュリティーが大きく損われている。不正プログラムの挙動は、外部からコンピュータ内のメモリに侵入した後、アプリケーションプログラム（ＡＰ）の実行に伴うユーザモードからカーネル空間のリソースへのアクセスに便乗して特権レベル（リング０）を取得し、以後、リソースの制御を支配することで、意図した不正行為を実行可能にする。今日、不正プログラムの実行を監視し、不正動作を規制する各種の対応ソフトウェアが提案されている。
【０００３】
特許文献１には、ＡＰＩの利用制限を図るべく、アプリケーションの起動を検出するステップと、起動されたアプリケーションから発行されたリソースに対する処理要求を一時保留するステップと、起動されたアプリケーションが正規のアプリケーションであるか否かを認証するステップと、起動されたアプリケーションの認証結果が成功の場合にのみ、前記一時保留した処理要求による処理を許可するステップとを備えて、リソースの情報漏洩防止を図るアプリケーションの監視方法が記載されている。
【０００４】
特許文献２には、コンピュータ上で実行されるアプリケーションがハードディスクＨＤＤ等の記憶装置に記憶された情報にアクセスする時点で、オペレーティングシステム（ＯＳ）のフック機能を利用してこのアプリケーションをフックし、予め設定されたアクセス許容条件を満たすかどうかを判定部によって判定し、ウイルス等の不正なアクセスと判定された場合には前記記憶装置に記憶された情報のアプリケーションへの受け渡しを禁止するコンピュータの情報漏洩防止システムが記載されている。
【０００５】
特許文献３には、仮想マシンモニタ（ＶＭＭ）をコンピュータ上で実行することで、複数のオペレーションシステム（ＯＳ）を、それぞれゲストの仮想マシン（ＶＭ）として独立的に実行させることができ、かつＶＭのゲストソフトウェアの挙動を監視する技術が記載されている。すなわち、ＶＭ動作中において特権を持つ、あるフォールトイベントが生じた場合、あるいはゲストソフトウェアが、特権（リング０）を持つリソースへのアクセスを試みた場合、プロセッサの制御をＶＭＭへ遷移させるようにしている（ＶＭ終了と称する）。このＶＭ終了に続いて、制御が遷移されたＶＭＭに様々な処理を実行させ、その後、制御をゲストソフトウェアへ戻す（ＶＭエントリ）ことができるようにしている。このとき、プロセッサは、ＶＭＭにより指定された、ＶＭＣＳ内に記憶された特権レベル終了基準に基づいてＶＭ終了を生じさせるべきか否かを決定するために、ゲストのＶＭの現在の特権レベルを特権レベル監視ロジック（ＰＬＭＬ）で評価させ、次いで現在のゲスト特権レベルが特権レベル終了基準に合うことをＰＬＭＬが決定すると、処理ロジックは、ゲストソフトウェアからＶＭＭへのＶＭ終了を行うようにしている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００３−１０８２５３号公報
【特許文献２】特開２００７−１４０７９８号公報
【特許文献３】特開２００６−２４２０７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
特許文献１に記載された、リソースの情報漏洩防止を図るためのアプリケーション監視方法では、フックを行うフィルタモジュール及び認証モジュールがアプリケーションと同一プロセス空間に設けられた構成であるため、これらモジュールによるフック動作及び認証動作の両信頼性に大きな問題がある。また、フックされたアプリケーションと予め登録されているアプリケーションとのハッシュ値同士を照合によって認証し、この認証が不成功の場合、当該アプリケーションを強制終了又は管理者に通知するようにしているため、コンピュータの動作が停止してしまう場合があるという問題がある。
【０００８】
特許文献２に記載された情報漏洩防止システムは、ファイルシステムの入出力に関する機能を対象とするもので、アクセス許容条件として、コンピュータのユーザインタフェースを介して入力される、ファイルデータの書き込みなどの操作を表すＩＯタイプ、アプリケーション名、データ・ファイル名、実行プログラムの実行制約条件（日時、範囲等）などの所定のチェック項目を活用し、これによってユーザの設定によりファイルシステム自身にウイルスに対する監視機能と判断機能を保持させるものである。従って、ファイルデータの読み出しと関連せず、ユーザ空間からカーネル空間のリソースへアクセスするプロセス全般に対して適切な監視を行うには限界がある。
【０００９】
また、特許文献３に記載された発明は、ＶＭ終了の判断が現在の特権レベルを基準としたものであり、しかも不正プログラムのハードウェア資源への侵入プロセスに対する対策は示唆されていない。
【００１０】
本発明は、上記に鑑みてなされたもので、リソースに対する処理要求のためのカーネルへのシステムコール命令の監視と、監視状態の維持とを可能にする情報処理装置、情報処理監視方法、プログラム、及び記録媒体を提供することにある。
【課題を解決するための手段】
【００１１】
本発明に係る情報処理装置は、仮想マシンの動作を監視する監視ソフトウェアを仮想マシンモニタに備えた情報処理装置において、リソースに対する処理要求のためのカーネルへのシステムコール命令が前記仮想マシンから発行されたことを検出すると、イグジット処理を行って制御を前記仮想マシンモニタに遷移させる検知手段と、前記検知手段によって検出された前記システムコール命令の正否を評価する評価手段と、評価結果に応じた処置の命令を発行して、エントリー処理を行う処置手段と、前記システムコール命令の発行を検出するためのフック条件に対する書き換えアクセスの発行を監視する環境監視手段とを備え、前記環境監視手段は、ＭＳＲのうちの、前記システムコール命令に関するレジスタへの前記フック条件に対する書き換えアクセスの発行を、ＶＭＣＳのイグジット対象リストを参照して検出し、イグジット処理を行って前記書き換えアクセスに対して書込命令無効処理を実行して、エントリー処理を行うことを特徴とするものである。
【００１２】
また、本発明に係る情報処理監視方法は、仮想マシンの動作を仮想マシンモニタの監視ソフトウェアにより監視する情報処理監視方法であって、リソースに対する処理要求のためのカーネルへのシステムコール命令が前記仮想マシンから発行されたことを検出すると、イグジット処理を行って制御を前記仮想マシンモニタに遷移させる検知ステップと、前記検知ステップによって検出された前記システムコール命令の正否を評価する評価ステップと、評価結果に応じた処置の命令を発行して、エントリー処理を行う処置ステップと、前記システムコール命令の発行を検出するためのフック条件に対する書き換えアクセスの発行を監視する環境監視ステップとを備え、前記環境監視ステップは、ＭＳＲのうちの、前記システムコール命令に関するレジスタへの前記フック条件に対する書き換えアクセスの発行を、ＶＭＣＳのイグジット対象リストを参照して検出し、イグジット処理を行って前記書き換えアクセスに対して書込命令無効処理を実行して、エントリー処理を行うことを特徴とするものである。
【００１３】
また、本発明に係るプログラムは、仮想マシンの動作を監視する仮想マシンモニタにロードされる監視ソフトウェアとしてのプログラムであって、リソースに対する処理要求のためのカーネルへのシステムコール命令が前記仮想マシンから発行されたことを検出すると、イグジット処理を行って制御を前記仮想マシンモニタに遷移させる検知手段、前記検知手段によって検出された前記システムコール命令の正否を評価する評価手段、評価結果に応じた処置の命令を発行して、エントリー処理を行う処置手段、及び前記システムコール命令の発行を検出するためのフック条件に対する書き換えアクセスの発行を監視する環境監視手段として前記仮想マシンモニタを機能させ、前記環境監視手段は、ＭＳＲのうちの、前記システムコール命令に関するレジスタへの前記フック条件に対する書き換えアクセスの発行を、ＶＭＣＳのイグジット対象リストを参照して検出し、イグジット処理を行って前記書き換えアクセスに対して書込命令無効処理を実行して、エントリー処理を行うことを特徴とするものである。
【００１４】
また、本発明に係る記録媒体は、仮想マシンの動作を監視する仮想マシンモニタにロードされる監視ソフトウェアとしてのプログラムを記録したコンピュータ読み取り可能な記録媒体であって、前記プログラムは、リソースに対する処理要求のためのカーネルへのシステムコール命令が前記仮想マシンから発行されたことを検出すると、イグジット処理を行って制御を前記仮想マシンモニタに遷移させる検知手段、前記検知手段によって検出された前記システムコール命令の正否を評価する評価手段、評価結果に応じた処置の命令を発行して、エントリー処理を行う処置手段、及び前記システムコール命令の発行を検出するためのフック条件に対する書き換えアクセスの発行を監視する環境監視手段として前記仮想マシンモニタを機能させ、前記環境監視手段は、ＭＳＲのうちの、前記システムコール命令に関するレジスタへの前記フック条件に対する書き換えアクセスの発行を、ＶＭＣＳのイグジット対象リストを参照して検出し、イグジット処理を行って前記書き換えアクセスに対して書込命令無効処理を実行して、エントリー処理を行うことを特徴とするものである。
【００１５】
これらの発明によれば、リソースに対する処理要求のためのカーネルへのシステムコール命令が発行されると、検知手段によってこのシステムコール命令が検知され、イグジット処理され、仮想マシンモニタに制御が遷移される。検知手段によって検知されたシステムコール命令は、評価手段によって正否が評価される。評価は、不正プログラムの可能性に関連する方法で行われる。そして、処置手段によって、評価結果に応じた処置の命令が発行される。評価結果とは、評価が正当な場合と不当な場合とを想定しており、いずれの場合にも、処置手段によって新たに命令を発行するようにし、発行元からの原アクセス命令を不使用としている。従って、不正プログラムのカーネルを介してのリソースへの侵入、さらに潜伏が阻止される。さらに、環境監視手段によって、ＭＳＲのうちの、前記システムテムコール命令に関するレジスタへの前記フック条件に対する書き換えアクセスの発行がイグジット処理されて書込命令無効処理されることで、監視状態の維持が図れる。
【００１６】
また、前記書込命令無効処理は、前記ＭＳＲのうちの、前記システムコール命令に関するレジスタのDisable bitに０を書き込むことであり、これによってシステムコール命令に対するフック処理が維持される。
【００１７】
また、前記検知手段は、前記システムコール命令を無効オペコード違反として検知することで、問題となるシステムコール命令が確実にフックされる。
【００１８】
また、前記処置手段は、前記評価手段が前記システムコール命令を正当と判断した場合、前記システムコール命令と同一の内容を前記カーネルへ発行し、前記評価手段が前記システムコール命令を不当と判断した場合、前記システムコール命令をスルーする命令を前記カーネルへ発行するか、又は前記システムコール命令をスキップする命令を前記システムコール命令の発行元に戻すことを特徴とする。この構成によれば、この構成によれば、アクセス命令が正当、不当いずれの場合であっても、処置手段によって新たに命令を作成するので、不正プログラムの感染の危険が抑止される。
【発明の効果】
【００１９】
本発明によれば、不正プログラムの実行によってリソースがアクセスされる場合であっても当該アクセスを検知して、不正プログラムのカーネルを介してのリソースへの侵入を阻止することができる。
【図面の簡単な説明】
【００２０】
【図１】本発明に係る情報処理装置の一実施形態を示す構成図である。
【図２】図１の情報処理装置が仮想マシンに適用された場合の機能構成図の一例である。
【図３】監視処理の手順を示す説明図である。
【図４】ＶＭＭが実行する監視ソフトウェアの一例を示す機能構成図である。
【図５】起動処理の一例を示すフローチャートである。
【図６】Syscall監視処理の一例を示すフローチャートである。
【図７】ＭＳＲ監視処理の一例を示すフローチャートである。
【図８】ログ処理の一例を示すフローチャートである。
【図９】環境監視処理の一例を示すフローチャートである。
【発明を実施するための形態】
【００２１】
図１は、本発明に係る情報処理装置の一実施形態を示す構成図である。本発明が適用される情報処理装置１としては、コンピュータを内蔵するサーバ装置、汎用パーソナルコンピュータ、携行用の情報処理端末等、更にはネットワークを介して通信する機能を備えた各種の情報処理装置を含む。
【００２２】
情報処理装置１は、マイクロコンピュタで構成され、プロセッサとしてのＣＰＵ（Central Processing Unit）１１を含むチップセットとしてのハードウェア部（ＨＷ）１０を備える。ＣＰＵ１０は、バスＢＡを介してフラッシュＲＯＭ（Read Only Memory）２１とハードディスクドライブ（ＨＤＤ）２２とを含む補助記憶装置２０、ＲＡＭ（Random Access Memory）３０、入力部４０、出力部５０、及び必要に応じて設けられるログ記憶部６０と接続されている。
【００２３】
フラッシュＲＯＭ２１は、ＢＩＯＳ（Ｂａｓｉｃ Input/Output System）を格納する。ＨＤＤ２２は、各種プログラム及び必要なデータ類を格納する。本実施形態では、情報処理装置１を仮想マシンに適用した例で説明する。ＨＤＤ２２に格納される各種プログラムは、図２に示すように、ハードウェア部（ＨＷ）１０と、ＲＡＭ３０に読み出（ロード）された機能を表したソフトウェア（ＳＷ）とを備える仮想マシン環境を構築するのに必要な各プログラム及びデータを含む。詳細は図２において説明する。
【００２４】
ＲＡＭ３０は、情報処理装置１が起動する際に補助記憶装置２０に格納されているプログラム等がロードされると共に、処理途中の情報が一時的に格納される。情報処理装置１は、補助記憶装置２０に格納されているプログラム等がＲＡＭ３０にロードされ、ＣＰＵ１１によって実行されることで、図４に示すように各種の処理実行部として機能する。
【００２５】
入力部４０は、テンキー等を備えたキーボードやマウス、タッチパネル等を含み、所要の情報の入力や処理の指示を行うものである。出力部５０は、画像を表示する表示部を想定している。なお、出力部５０としては、プリンタ部やインターネット等のネットワークに接続して情報の授受を行う通信部等でもよく、更にこれらが併設されたものでもよい。ログ記憶部６０は、後述するように、情報処理装置１の動作中において発生する、リソースに対する処理要求である特権命令によるアクセス（Syscall、Sysenter、コールゲート等）の履歴（プログラム）及び、かかる命令に関する処理内容のログを経時的に記録する。
【００２６】
図２は、情報処理装置１が仮想マシンに適用された場合の機能構成図の一例を示すもので、ＣＰＵ１１を含むハードウェア部（ＨＷ）１０と、ＲＡＭ３０にロードされたソフトウェア部（ＳＷ）とで構成される。
【００２７】
ハードウェア部１０は、プロセッサとしてのＣＰＵ１１の他、仮想化支援技術１２（ＶＴ）と、ＲＡＭ（Random Access Memory）等から構成される仮想マシン毎の制御機構であるＶＭＣＳ（Virtual Machine ControlStructure）１３と、ＲＡＭからなるＥＰＴ（Extended Page Table）１４とを備える。また、ハードウェア部１０は、現在のＣＰＵ１１の状態を表すフラグレジスタやＭＳＲ（Model Specific Register）１１１１、データ格納用の汎用レジスタ１１１２の他、メモリのアドレス指定等に関係するインデックスレジスタや特殊レジスタ、メモリ管理方式に関係するセグメントレジスタ等を備えたレジスタ群１１１を有する。レジスタ群１１１には、前記のようにＣＰＵ１１の動作状態、動作指示を示すフラグやデータ等が設定される。
【００２８】
ソフトウェア部（ＳＷ）は、１つ以上のゲストＯＳ（ゲストソフトウェア）である仮想マシンＶＭ３１と、ホストＯＳ（ホストソフトウェア）である仮想マシンモニタＶＭＭ３２とを備える。なお、図２では仮想マシンＶＭ、ＶＭ−２のように２つ示しているが、以降では仮想マシンＶＭ３１を代表にして説明する。
【００２９】
ホストソフトウェアであるＶＭＭ３２は、補助記憶装置２０内のＨＤＤ２２に格納されており、情報処理装置１の起動を受けてＨＤＤ２２からＲＡＭ３０の所定領域（領域Ａ、図３参照）にロードされる。ＶＭＭ３２には、本発明に係る監視ソフトウェア（図３参照）が含まれ、ＶＭＭ３２のロードに併せてロードされる。仮想マシンであるＶＭ３１のゲストソフトウェアは、ロードされたＶＭＭ３２が起動されて、それらの管理下でＲＡＭ３０の所定領域にロードされる。ＶＭ３１のロード時には、ＶＭ３１のゲストソフトウェアを動作させるためのＧＤＴ（Global Descriptor Table）、ＩＤＴ（InterruptDescriptor Table）、さらにＧＤＴからのリニアアドレスを物理アドレスに変換するＰＴＥ（Page Table Entry）等を含むシステムテーブル３１Ａが作成される。
【００３０】
ＶＭ３１は、ゲストソフトウェアとして、図３に示すようにオペレーティングシステムＯＳ（主にカーネル（Kernel））３１１及びカーネル３１１の環境下で動作する各種のアプリケーションプログラムであるＡＰ（１）３１２〜ＡＰ（ｎ）３１３を含む。カーネル３１１は、図３に示すようにＲＡＭ３０の領域Ｂに格納される。さらに、ＡＰ（１）３１２〜ＡＰ（ｎ）３１３からＯＳ（カーネル）３１１へのアクセスを実行するための関数であるＡＰＩ（Application Programming Interface）の動的なリストであるダイナミックリンクライブラリｄｌｌ（dynamic link library）（ＡＰＩ）３１４を備える。ＡＰ（１）３１２〜ＡＰ（ｎ）３１３及びｄｌｌ（ＡＰＩ）３１４は、図３に示すようにＲＡＭ３０の領域Ｃに格納される。ｄｌｌ（ＡＰＩ）３１４で作成された、リソースへの処理要求の際の特権レベル０でのカーネル３１１に対して発行されるＡＰＩ構造をSyscall命令という。
【００３１】
なお、ＡＰＩとは、複数のプログラムが共通に利用できる種々の機能（ソフトウェア）の呼び出し時の手順やデータ形式などを定めた仕様をいう。ｄｌｌ（ＡＰＩ）とは、モジュール化して実装されたＡＰＩを、動的なリンクによって実行時にプログラムの結合を行うようにした共有ライブラリをいう。
【００３２】
図４は、ＶＭＭ３２が実行する監視ソフトウェアの一例を示す機能構成図である。ＶＭＭ３２は、ＲＡＭ３０にロードされたプログラム及びハードウェアによる処理を実行することによって、ロード処理部３２１、フック処理部３２２、モード切替部３２３、フック内容分析部３２４、正否評価部３２５、処置部３２６、環境監視部３２７、及びログ処理部３２８として機能する。
【００３３】
ロード処理部３２１は、ＨＤＤ２２からＲＡＭ３０にロードされたＭＢＲ（Master Boot Record）によってＲＡＭ３０にロードされたＶＭＭ３２のホストソフトウェアが起動して、ＶＭＭ３２環境の設定と、カーネル３１１等のロードの指示、及びロード中の監視を行う。上記において、ＶＭＭ３２はＲＡＭ３０の領域Ａにロードされる際に自己のシステムテーブルを作成し、そのうちのＧＤＴやＰＴＥに高い特権レベル０（リング０）の設定を行う。また、ＶＭＭ３２は、通常と同様に、すなわちカーネル３１１を特権レベル０（リング０）でロードさせ、ＡＰ（１）３１２〜ＡＰ（ｎ）３１３及びｄｌｌ３１４を特権レベル３（リング３）でロードさせる。さらに、ワーク領域となる物理アドレスもＶＭＭ３２のロード領域以外の、それぞれの領域Ｂ、Ｃ内に設定する。
【００３４】
ＶＭＭ３２は、後述する各種の機能を実行するソフトウェア及びデータ類を備え、レジスタ群１１１及びＶＭＣＳ１３のデータ領域を利用してＶＭ３１の動作を制御する。より具体的には、ＶＭＭ３２は、概ね、（１）ゲストソフトウェアをＶＭ３１として実行するモードへの遷移プログラム（及び復帰プログラム）の設定、（２）ＣＰＵ１１の制御をＶＭＭ３２に渡してＶＭＸｒｏｏｔモードとするＥｘｉｔ命令、逆にＣＰＵ１１の制御をＶＭ３１に渡してＶＭＸｎｏｎ−ｒｏｏｔモードとするＥｎｔｒｙ命令をＶＴ１２にセットする処理、（３）ＶＭ３１が実行する各種のゲストソフトウェア中の、仮想化に影響のある問題命令（フォールトイベント）、その他の例外や割込対象となる命令等をそれぞれ各フック対象とするためのデータのレジスタ群１１１への設定、（４）チップセット内のレジスタ群１１１（例えば命令ポインタＥＩＰ(InstructionPointer)やＭＳＲ１１１１等）に書き込まれるＶＭＭ３２、ＶＭ３１動作時のレジスタ内容（状態を表すフラグや値）及びＶＭ３１動作時の物理アドレス−物理アドレスの変換テーブル内容であってＥＰＴ１４に書き込まれる内容を、ＶＭＸｒｏｏｔモードとＶＭＸｎｏｎ−ｒｏｏｔモードとの切り替え毎に、ＶＭＣＳ１３内の対応する領域にセーブとロード（なお、ロードとはＣＰＵ１１のレジスタ群１１１等への書き込み）とを行わせる（なお、ＭＳＲ１１１１へのセーブとロードとはレジスタ群１１１のみで行われる。）プログラムの処理、（５）ＶＭ３１の動作中にＶＭＣＳ１３による、前記（３）で設定した各命令の発行の有無の監視機能のＶＴ１２への設定を行う機能を備える。
【００３５】
ＶＭＣＳ１３は、Ｅｎｔｒｙ／Ｅｘｉｔ 時のレジスタ群１１１、ＥＰＴ１４等の内容を保持したり、振る舞いを制御したりするためのデータ構造体である。ＶＭＣＳ１３内のゲスト側のリスト１３１には、前記（３）で設定した内容、すなわちＥｘｉｔ原因に該当する照合用データが全て設定されている。Ｅｘｉｔ原因としては、各種の例外、割込、無効オペコード違反の発生等がある。本実施形態では、前述のリソースへの処理要求を発行する特権リング０でのアクセス、ここではSyscall命令は、無効オペコード違反（Invalid Opcode Fault）として設定している。無効オペコード違反とは、例えば正当なコンピュータ命令が存在しない場合とかプロセッサが無効なオペランドを含む命令を実行しようとした場合をいい、無効オペコード違反の種類によっては、この違反から回復できず、すなわちシステムの再起動又はシャットダウンを強いられる。リソースへの処理要求のためのアクセス手段がSyscall命令であることから、Syscall命令中に不正プログラムが関与（潜伏など）する可能性を考慮して、本実施形態では、Syscall命令を一律に無効オペコード違反とするフック対象としている。
【００３６】
より具体的には、フック処理部３２２は、前記ＶＭＭ３２の行う機能の内の（３）〜（５）の他、レジスタ群１１１のＭＳＲ１１１１の内、Syscall命令に関するレジスタに対してdisableのフック条件設定を行う。ＶＭ３１動作中に、図３に示すように、例えばＡＰ（１）３１２が、所定のリソースへの処理要求を発する場合、ｄｌｌ（ＡＰＩ）３１４に対してアクセスし（図３、工程（１）参照）、ＡＰＩを構築してSyscall命令を作成する（図３、工程（２）参照）。次いで、Syscall命令は特権レベル０でカーネル３１１にアクセスする（図３、工程（３）参照）。このとき、Syscall命令を発行すると、フック処理部３２２によって無効オペコード違反としてフックされ、この無効オペコード違反がＶＭＣＳ１３のリスト１３１に設定されている結果、ＶＴ１２の監視ロジックによる照合によって、ＣＰＵ１１にＥｘｉｔ命令を発行するようにし、モード切替部３２３によってＣＰＵ１１の制御がＶＭＸｒｏｏｔモードに遷移する（図３、工程（４）参照）。ＶＴ１２は、ＶＭＭ３２が実行可能なハードウェアで構成された仮想化支援技術である。ＶＴ１２は、Ｅｘｉｔ命令を受けた時点のＶＭ３１の状態、例えばＥｘｉｔの原因となった無効オペコード違反の内容をＶＭＣＳ１３にセーブする。
【００３７】
ところで、無効オペコード違反となる対象は、Syscall命令以外にもあることから、ＶＴ１２がＥｘｉｔを発生した状態でＶＭＸｒｏｏｔモードに遷移したＶＭＭ３２によって、Ｅｘｉｔ原因の分析、さらにSyscall命令の分析が行われる。すなわち、Syscall命令に関してはＥｘｉｔ直後に一律に無効処理対象（例えばSyscall命令自体の破棄）とする一方、その正否（正当性）の評価結果に応じてＶＭＭ３２の処置部３２６が後述する処置を行うようにしている（図３、工程（５１），（５２）参照）。次いでＶＭＭ３２のモード切替部３２３は、ＶＴ１２を介するＥｎｔｒｙ命令を受けてＶＭＸｎｏｎ−ｒｏｏｔモードに遷移する。
【００３８】
ＶＭＭ３２は、Ｅｘｉｔ命令を受けるとモード切替部３２３によってＶＭＸｒｏｏｔモードに遷移し、フック内容分析部３２４によってＥｘｉｔ発行の原因となったプログラム命令を分析する。フック内容分析部３２４は、Ｅｘｉｔ発生時にＶＭＣＳ１３にセーブされたＥＸＩＴReason（Ｅｘｉｔの原因）を参照して、例えば無効オペコード違反が発生したことを認識する。また、フック内容分析部３２４は、ＶＭＣＳ１３内にセーブされた命令ポインタＥＩＰのデータ、すなわち無効オペコード違反が発生した命令の実行アドレスを参照して、原因がSyscall命令であったか否かを判断する。
【００３９】
さらに、正否評価部３２５は、原因がSyscall命令であった場合、その時点でＶＭＣＳ１３にセーブされた、汎用レジスタ１１１２内の例えばeax、ebx、ecx、edxの各レジスタ等や直前の処理内容を退避保存しているスタックの内容（Syscall命令のコード等）からカーネル３１１の呼び出し機能とそのパラメータの正否を判断する。ここでいう正否とは、Syscall命令が不正プログラムによって発行された可能性の有無の評価に関する。なお、ＶＭＭ３２の例えば正否評価部３２５は、この時点で、Syscall命令の実行先となる物理アドレスへの書込を無効とするコマンドを設定する。あるいは、他の処理部例えばフック処理部３２２で、無効オペコード違反が判別された乃至はＥｘｉｔの時点で、前記無効とするコマンドを設定してもよい。
【００４０】
正否評価部３２５による、カーネル３１１の呼び出し機能とそのパラメータの正否の判断は、予め設定された、ＶＭＭ３２内の参照情報３２Ａ、及びＶＭ３１のロード領域内にロードされるプロセス管理情報３１Ｂのそれぞれの属性情報を利用して、例えば照合によって行われる。参照情報３２Ａは、Syscall命令を構成するＡＰＩのコードの内、不当性が高い候補が設定されている。不当性が高いＡＰＩ候補としては、例えば、（ａ）現状では未使用乃至は非公開のＡＰＩ、（ｂ）Ｃ：￥ ＷＩＮＤＯＷＳ（登録商標）やＣ：￥ ＰｒｏｇｒａｍＦｉｌｅｓ 配下のファイルへの読み書き（改竄や新たな作成など）、（ｃ）カーネルから付与される権限（Token）の制御（例えば、ユーザ権限から管理者権限への昇格要求など）がある。また、プロセス管理情報３１Ｂは、ＡＰ（１）３１２〜ＡＰ（ｎ）３１３について、スレッドやプロセスの関連を記述するＰＣＲ（Processor Control Region）を参照して、（ａ）動作を許可されているＡＰかどうか（例えば、ＡＰのパス（フォルダ）がインストールの許可がなされているフォルダであるかどうか）、（ｂ）データの書込先のフォルダが書込許可されているフォルダであるかどうかを判断するものである。また、（ｃ）ＡＰＩがどのプロセス(アプリケーションプログラム)から発行されたかを含めて区別する、例えば通信する筈のないプロセスが通信のＡＰＩを発行したかどうか、（ｄ）通信のＡＰＩを発行したプロセスが人が操作するプロセスによって生成されたプロセスであったかどうかを区別する内容を含めることで、入力部４０を経由しての人為的な操作に依拠するものか、プログラムに依拠する（一般的には不正プログラム）ものかの区別を可能にすることが好ましい。正否評価部３２５は、参照情報３２Ａ及びプロセス管理情報３１Ｂの内、少なくとも参照情報３２Ａの情報との参照によって正否の判断を行う。
【００４１】
処置部３２６は、評価結果が正当であると判断された場合、カーネル３１１へ制御を移行する代行して処理を行う（図３、工程（５１）参照）。カーネル３１１へ制御を移行する代行処理は、ＶＭＣＳ１３の命令ポインタＥＩＰをカーネル３１１のエントリポイントに書き替えると共に、エントリポイントのスタックの内容を書き替えて、ＶＴ１２に対してＥｎｔｒｙ命令の発行を指示する。処置部３２６は、カーネル３１１への制御のための命令として、無効オペコード違反として無効にしたSyscall命令と同一内容を発行する。
【００４２】
一方、処置部３２６は、不当であると判断した場合、カーネル３１１へ制御を移行するか（図３、工程（５２）参照）、あるいはSyscall命令に続く次の命令を発行元のＡＰに戻す（図３、工程（５２−２）参照）処置を行う。カーネル３１１へ制御を移行する処置は、正当の場合と同様な手順で行う。なお、処置部３２６によって作成されるSyscall命令は、プログラムの強制終了を指示するもの、すなわち何らの処理を行うことなく（スルーさせて）、リターンさせるものである。また、Syscall命令に続く次の命令を発行元のＡＰに戻す処理は、Syscall命令のバイト数分だけ加算して、ＶＴ１２に対してＥｎｔｒｙ命令の発行を指示する。Syscall命令のバイト数分だけ加算したアドレスに戻してＥｎｔｒｙさせることで、Syscall命令をスキップしたと同様に、続きの命令に制御が戻されることになる。
【００４３】
環境監視部３２７は、ＶＭ３１の稼働中に、ＭＳＲ１１１１の内のSyscall命令に関するレジスタへの書込命令のアクセスを受けると、Ｅｘｉｔするように設定する。すなわち、ＶＭＣＳ１３のリスト１３１に、ＭＳＲ１１１１の内のSyscall命令に関するレジスタへの書込命令ｗｒｍｓｒをＥｘｉｔ対象とするよう含める。ＶＭＭ３２はＶＭ３１のカーネル３１１をリング０として動作させているため、特権命令は例外とならない。従って、ＶＭＭ３２のＥｘｉｔ機能を利用する必要がある。ＶＭ３１のカーネルがＭＳＲ１１１１内のSyscall命令に関するレジスタへの書込のためのｗｒｍｓｒ命令を発行すると、ＶＴ１２によってＥｘｉｔ命令が発行され、ＣＰＵ１１のモードがＶＭＸ-rootモードに切り替わる。このモードにおいて、環境監視部３２７は、Ｅｘｉｔ時点でＶＭＣＳ１３に格納されたＥＸＩＴReason（Ｅｘｉｔの原因）を参照して、原因がカーネルによるｗｒｍｓｒ命令であるかどうかを判断する。環境監視部３２７は、Ｅｘｉｔ原因がｗｒｍｓｒ命令であった場合、ＭＳＲ１１１１内の当該レジスタのDisable bitに０を書き込む。さらに、環境監視部３２７は、ＶＭ３１に制御を戻すべく、ＶＭＣＳ１３のＥＩＰに、ｗｒｍｓｒ命令のバイト数分加算して、Ｅｎｔｒｙ（vmresume命令）を発行することで、ＶＭ３１の前記ｗｒｍｓｒ命令に続く次の命令に制御を戻す。これによって、ＶＭ３１稼働中におけるＣＰＵ１１からの、ＭＳＲ１１１１の内のSyscall命令に関するレジスタへの不当な書込命令に対してかかる書込命令無効処理を施すことで阻止することができ、その結果、Syscall命令を無効オペコード違反としてＥｘｉｔ対象とするためのＭＳＲ１１１１の監視可能状態を維持できる。
【００４４】
ところで、ＶＭ３１の稼働中は、レジスタ群１１１等の管理はＶＭ３１を制御するＣＰＵ１１にあることから、レジスタ群１１１内の特定のレジスタ等の内容が悪意のプログラムによって書き替えられる可能性がある。そこで、環境監視部３２７は、レジスタ群１１１内の特定のレジスタ等への書き込みのアクセスが発行されると、このアクセスに対してＥｘｉｔ命令が発行されるように、リスト１３１にＥｘｉｔ対象として設定する。この結果、特定のレジスタ等への書き込みのアクセス命令は、ＶＭＣＳ１３のリスト１３１によってフックされ、ＶＴ１２によってＥｘｉｔ命令が発行される。特定のレジスタ等とは、ＣＰＵ１１の動作に必要とされる根本的な環境設定値が設定されるレジスタ（及びＶＭＣＳ１３）である。なお、根本的な環境設定値には、下記のものを含む。環境監視部３２７は、これらの環境設定値が設定される特定のレジスタ等へのアクセス、特に書込アクセスを、一般保護例外あるいは無効オペコード違反等としてＥｘｉｔし、後述するように、ＣＰＵ１１をＶＭＸ−ｒｏｏｔモードに遷移させてアクセスを阻止（無効、禁止、元に戻すなど）した後、ＥｎｔｒｙさせてＶＭＸｎｏｎ−ｒｏｏｔモードに戻すようにしている。
【００４５】
根本的な環境設定値には、（１）プロセス管理情報（Windows（登録商標） ＯＳのPCR,PRCB,ETHREAD,EPROCESSなど）を指すOS（カーネル）の環境設定値、（２）コントロールレジスタ（CR0,CR4,CR3）、デバッグレジスタ（DR0〜DR7）、ＭＳＲ（IA32E_EFERなど）、及びGDTR、IDTR、LDTRへのアクセスをＶＭＣＳ１３の設定によりＥｘｉｔさせ、監視するためのＣＰＵ１１の環境設定値、（３）ＶＭＣＳ１３への設定により、ＣＰＵ１１のクロック（Clock）カウントのしきい値をもってＶＭ３１をＥｘｉｔさせ、ＶＭＭ３２のExective（ＶＭ３１のカーネル状態をチェックしたり、ＰＴＥのチェックを行う）にスイッチさせるためのＣＰＵ Clockの環境設定値、（４）ＶＭ毎に作成するＶＭＣＳはＶＭＭ３２内の物理メモリ領域に作成し、ＶＭ側からは使用不可領域としている。この使用不可領域への強制アクセスを考慮しＥＰＴによってアクセス監視を行う。また、ＶＭＣＳに対するアクセス命令（vmread,vmwrite）もＥｘｉｔするためのＶＭＣＳ１３の環境設定値、（５）カーネルに依頼する直前とカーネルからの戻り直後のパラメータやデータを監視するＡＰＩの環境設定値、（６）コンピュータの電源制御とハードウェア構成要素を規格化したもので、ＶＭＭ３２が構成する物理メモリマップがＶＭ３１に分からなくするためのＡＣＰＩ（Advanced Configuration and PowerInterface）の環境設定値、（７）ＶＭ３１がリアルモードの時にソフトウェア割込みを使用して使用されるBIOS Functionの改ざんや不正使用を防止する目的でリアルモードの割込ベクタをフックするためのＢＩＯＳジャンプ命令の環境設定値、（８）ドライバにより「ＣＰＵ１１の環境設定値」を変更しようとした場合、その命令を無視してアンロードし、また、アプリケーションからドライバのロードを禁止するためのKernel Driverの環境設定値が含まれる。
【００４６】
また、ログ処理部３２８は、リスト１３１に設定されたＥｘｉｔ原因が発生した際の当該プログラム内容を全てログ記憶部６０に経時方向に格納する。好ましくは発生時刻情報を含めて格納する。ログ記憶部６０がインターネット等のネットワークを介してデータサーバ装置としての位置づけである場合、送信元ＩＰアドレスを付して送信し格納させる。外部のデータサーバ装置の場合には、ＩＰアドレス毎にソートすることで、情報処理装置毎のログ管理が可能となる。なお、ログ情報としては無効オペコード違反のSyscall命令が少なくとも含まれていればよい。また、ログ処理部３２８の機能は、フック内容分析部３２４〜処置部３２６、環境監視部３２７の機能部分とは無関係な態様で、あるいは環境監視部３２７の機能部分とは無関係な態様で、不正プログラムの挙動の可能性のあるアクセスのログを保管するという課題解決手段を構成する。この場合、Syscall命令を無効オペコード違反以外でＥｘｉｔ対象としてもよい。そして、Ｅｘｉｔ時点でセーブされた内容をログ記憶部６０に取り込むようにしてもよい。このように、全ての乃至は特定範囲内のＥｘｉｔ原因となるプログラムを、ＶＭＭ３２の管理下でログ保管用として格納することで、格納が適正に行われる。なお、従来、例えば特開２０１２−１９４８１４号公報には、ＶＭＭのメモリアクセス監視部３１が、監視対象プロセス５０が図示しない仮想メモリ上で実行する展開処理に係る読み込み命令及び書き込み命令それぞれについて、データが読み書きされたメモリアドレス、読み書きされたデータの値、プログラムカウンタなどをログとして取得することで、アンパッキングに係る作業の効率化を可能にするものが記載されている。一方、本実施形態によれば、後に、ログ記憶部６０のセーブ内容を分析することで、異常動作や処理があった場合に対する確実かつ適正な事後解析に供することが可能となる。また、解析を通して、以後の教訓材料とすることができ、不正の抑止効果にもつながる。
【００４７】
なお、本実施形態におけるログ対象情報としては、プロセス一覧、ファイルＩ／Ｏログ、ネットワーク送受信ログ、環境設定値アクセスログ、及び監視及びロギング内容の少なくとも１つ乃至は全てが含まれる。プロセス一覧は、実行されたプログラムはプロセスとしてＯＳに管理され、ＰＣＲに格納される。実行されたプロセスは、必ずSyscallを経てカーネル３１１とのやり取りが発生するため、実行されたプロセスの一覧が取得できる。取得情報としては、例えば、プログラムファイル名とそのパス、プロセスＩＤ、起動時間を含む。これらを取得することで、不知もしくは不要なプログラムの実行の有無が把握できる。また、取得情報から異常なプログラムか否かが判断できる。
【００４８】
ファイルＩ／Ｏログは、Syscall時点でのＡＰＩ機能番号(レジスタeax)より、ファイルＩ／Ｏの要求を取得し、そのパラメーター値（汎用レジスタ１１１２の内容やスタック内のデータ)からファイルパス及びその操作（読み書き）として取得される。取得情報としては、例えば、ファイルパス、操作方法（書き込みもしくは読み込み）、プロセスＩＤを含む。これらを取得することで、プログラムファイルの書込みやシステムフォルダもしくはユーザ指定の特定フォルダに対する操作から不正の有無が判断できる。
【００４９】
ネットワーク送受信ログは、Syscall及びSysret時点でのＡＰＩ機能番号(レジスタeax)より送受信要求を取得し、そのパラメーター値（汎用レジスタ１１１２の内容やスタック内のデータ）から送受信データ及びその操作（connect、send、receive、accept）として取得される。取得情報としては、例えば、操作方法（connect、send、receive、accept）、送受信テータ、送受信ポート、送受信ＩＰアドレス（IPV4及びIPV6）を含む。これらを取得することで、情報漏洩の基本となる送受信操作が監視できる。また、送信先ＩＰアドレス及び受信元ＩＰアドレスを元に不正アクセスが追跡できる。さらに送受信データの解析に基づく保護を可能とする。
【００５０】
環境設定値アクセスログは、カーネルモードからの不正操作がSyscallを介さないため、環境設定値へのアクセスが監視されており、その監視内容として取得される。取得情報としては、例えば、ＭＳＲ１１１１へのアクセスとその内容、コントロールレジスタ(CR0, CR2,CR4)へのアクセスとその内容、デバッグレジスタへのアクセスとその内容、キャッシュ制御命令の実行、CPUID命令の実行、ＶＭＭ拡張命令の実行（VMCSアクセス命令を含む）、ＶＭＭ実行メモリ空間へのアクセス（VMCS１３を含む）、ページテーブルPML4へのアクセス、ソフトウェア割込み命令の実行、ＣＰＵシステムテーブル（GDT、IDT、LDT、TSS）へのアクセスとロード命令、実行ＥＩＰとそのモジュール名（カーネルプログラムやカーネルドライバ）、及び未使用割込みベクタへの割込みと割込み先実行コードを含む。
【００５１】
監視及びロギング内容には、物理アドレス１Mbyte以下へのアクセスを含む。これは、ＯＳ起動後、使用されない領域であるため、不正利用と見なすことができる。物理アドレスACPI管理テーブルへのアクセスは、端末情報の不正取得と見なすことができる。全ページテーブルに対するデバイスアクセス（MMIO）物理アドレスの設定は、カーネル以外からの直接デバイスアクセスは不正と判断できる。カーネルプログラム領域の比較は、カーネルプログラムの改ざんをチェックできる。
【００５２】
図５は、情報処理装置１の起動処理の一例を示すフローチャートである。情報処理装置１の電源が投入されると、フラッシュＲＯＭ２１からＢＩＯＳがＲＡＭ３０の所定領域にロードされ、次いでＢＩＯＳが起動される（ステップＳ１）。ＢＩＯＳはＨＤＤ２２からＭＢＲをＲＡＭ３０にロードし、このＭＢＲによってＨＤＤ２２のアクティブな先頭パーティションが指定されて、ここに格納されているＶＭＭ３２のホストソフトウェアが、前述したようにして、ＲＡＭ３０の領域Ａにロードされ、次いで、その一部のＯＳローダが起動される（ステップＳ３）。ＯＳローダによって各ＶＭのＯＳ（カーネル）が、前述したようにロードされて、順次起動され（ステップＳ５）、次いでＶＭ毎にアプリケーションソフトウエアＡＰが、前述したようにロードされる（ステップＳ７）ことで、起動処理が修了する。
【００５３】
図６は、Syscall監視処理の一例を示すフローチャートである。まず、ＶＭＭ３２が起動された状態にあり、ＶＭＭ３２によって、動作予定のＶＭ（ここではＶＭ３１）をＥｎｔｒｙするべくＶＭＣＳ１３が作成されて、ＶＭＸｎｏｎ−ｒｏｏｔモードへ切り替えられる（ステップＳ１１）。ＶＭ３１２に動作中において、無効オペコード違反となるアクセス、例えばSyscall命令が発行されると、当該命令がフックされる（ステップＳ１３）。無効オペコード違反はＶＭＣＳ１３のリスト１３１にＥｘｉｔ対象として設定されていることから、Ｅｘｉｔが発行され、ＣＰＵ１１はＶＭＸｒｏｏｔモードに遷移する（ステップＳ１５）。次いで、フック内容分析部３２４によって、Ｅｘｉｔ原因となった無効オペコードに対して分析が行われる（ステップＳ１７）。分析の結果、その原因がSyscall命令以外であれば（ステップＳ１９でＮＯ）、他の無効オペコードに対する対応処理が施される（ステップＳ２１）。
【００５４】
一方、原因がSyscall命令の場合（ステップＳ１９でＹｅｓ）、正否評価部３２５によって正否の評価が行われ（ステップＳ２３）、処置部３２６によって評価結果に応じた対応処理が実行される（ステップＳ２５）。次いで、ＶＭＭ３２によってＶＭＸｎｏｎ−ｒｏｏｔモードへの遷移指示が発行されると、ＶＴ１２によってＥｎｔｒｙ処理が施され（ステップＳ２７）、ＣＰＵ１１の制御がＶＭ３１に戻る。そして、ＶＭ３１の動作状態が終了したか否かが判断され（ステップＳ２９）、終了していなければ、ステップＳ１３に戻り、終了したのであれば本フローを抜ける。
【００５５】
図７は、ＭＳＲ監視処理の一例を示すフローチャートである。まず、ステップＳ１１と同様、ＶＭＸｎｏｎ−ｒｏｏｔモードへ切り替えられる（ステップＳ４１）。ＶＭ３１の動作中において、フックの対象となるアクセス、例えばＭＳＲ１１１１内のSyscall命令に関するレジスタへの書込のためのｗｒｍｓｒ命令が発行されると、当該命令がフックされる（ステップＳ４３）。当該命令は、リスト１３１に設定された内容と一致するアクセスであことから、ＶＴ１２によってＥｘｉｔが発行され、ＣＰＵ１１はＶＭＸｒｏｏｔモードに遷移する（ステップＳ４５）。次いで、ＥＸＩＴReason（Ｅｘｉｔの原因）を参照する分析が行われる（ステップＳ４７）。分析の結果、原因がカーネルによるｗｒｍｓｒ命令以外であれば（ステップＳ４９でＮＯ）、他の対応処理が施される（ステップＳ５１）。
【００５６】
一方、原因がカーネルによるｗｒｍｓｒ命令の場合（ステップＳ４９でＹｅｓ）、環境監視部３２７によって、前述した書込命令無効処理が実行される（ステップＳ５３）。次いで、ＶＭＭ３２によってＶＭＸｎｏｎ−ｒｏｏｔモードへの遷移指示が発行されると、ＶＴ１２によってＥｎｔｒｙ処理が施され（ステップＳ５５）、ＣＰＵ１１の制御がＶＭ３１に戻る。そして、ＶＭ３１の動作状態が終了したか否かが判断され（ステップＳ５７）、終了していなければ、ステップＳ４３に戻り、終了したのであれば本フローを抜ける。
【００５７】
図８は、ログ処理の一例を示すフローチャートである。まず、Syscall命令がフックされたかどうかが判断され（ステップＳ７１）、フックされていなければ、本フローを抜ける。一方、フックされた場合、前述したようにＶＴ１２を介して、Ｅｘｉｔ処理が実行されて（ステップＳ７３）、ＣＰＵ１１の制御がＶＭＭ３２に移行する。ＶＭＭ３２は、Ｅｘｉｔ発生原因をＶＭＣＳ１３を参照して、ログ記憶部６０に読み出して、記録する（ステップＳ７５）。次いで、Ｅｎｔｒｙ処理が実行されて（ステップＳ７７）、ＶＭ３１の動作の終了まで（ステップＳ７９でＮＯ）、同様なログ処理が継続される。ここでは、Syscall命令をログ対象としたが、特定のフック理由、例えば無効オペコード違反に該当する命令をログ対象とする場合も同様となる。
【００５８】
図９は、環境監視処理の一例を示すフローチャートである。まず、ステップＳ１１と同様、ＶＭＸｎｏｎ−ｒｏｏｔモードへ切り替えられる（ステップＳ１０１）。ＶＭ３１の動作中において、フックの対象となるアクセス、すなわち前記した根本的な環境設定値が設定されたレジスタ群１１１やＶＭＣＳ１３（リスト１３１と一致するレジスタ等（特定のレジスタ等））へのアクセス命令が発行されると（ステップＳ１０３）、当該命令がフックされ、ＶＴ１２を介してＥｘｉｔされる（ステップＳ１０５）。ＣＰＵ１１はＶＭＸｒｏｏｔモードに遷移し、次いで、ＥＸＩＴReason（Ｅｘｉｔの原因）を参照する分析が行われる（ステップＳ１０７）。分析の結果、原因が特定のレジスタ等への書込アクセス命令以外であれば（ステップＳ１０９でＮＯ）、他の対応処理が施される（ステップＳ１１１）。
【００５９】
一方、原因が特定のレジスタ等への書込アクセス命令の場合（ステップＳ１０９でＹｅｓ）、環境監視部３２７によって、前述したようにアクセスを阻止する処理が実行される（ステップＳ１１３）。次いで、ＶＭＭ３２によってＶＭＸｎｏｎ−ｒｏｏｔモードへの遷移指示が発行されると、ＶＴ１２によってＥｎｔｒｙ処理が施され（ステップＳ１１５）、ＣＰＵ１１の制御がＶＭ３１に戻る。そして、ＶＭ３１の動作状態が終了したか否かが判断され（ステップＳ１１７）、終了していなければ、ステップＳ１０３に戻り、終了したのであれば本フローを抜ける。これによって、仮にＶＭ動作中に不正プログラムによって、リソースに対する処理要求が意図されても、その命令は阻止、無効とされる。
【００６０】
なお、本実施形態では、Syscall命令を無効オペコード違反としてＥｘｉｔ対象とごしたが、無効オペコード違反に限定されず、Ｅｘｉｔ対象としてフックできれば他の条件でフックするようにしてもよい。
【００６１】
また、本実施形態では、Ｉｎｔｅｌ（登録商標）ＶＭＭに基づいて説明したが、これに限定されず、ＡＭＤ社のＶＭＭ、ゲストカーネルをリング１あるいは２（ゲストアプリケーションをリング３など）で制御する態様にも同様に適用可能である。
【００６２】
また、環境監視部３２７の機能は、Syscall命令を無効オペコード違反としてＥｘｉｔし、分析し、正否評価し、さらに代行して処置する機能部分と（前記実施形態のように）関連させる場合の他、それらとは無関係に、根本的な環境設定値の適正保持を目的とした課題解決手段である。
【００６３】
そして、本発明に係る情報処理装置は、リソースに対する処理要求のためのカーネルへのアクセス命令の発行を検知する検知手段と、前記検知手段によって検知された前記アクセス命令の正否を評価する評価手段と、評価結果に応じた処置の命令を発行する処置手段とを備えたものである。また、かかる構成を各手段としてプロセッサを機能させるプログラム、記録媒体とし、さらに情報処理監視方法としたものである。
【００６４】
これらの発明によれば、リソースに対する処理要求のためのカーネルへのアクセス命令が発行されると、検知手段によってこのアクセス命令が検知される。検知は、特権命令違反や仮想マシンモニタを利用する方法がある。検知手段によって検知されたアクセス命令は、評価手段によって正否が評価される。評価は、不正プログラムの可能性に関連する方法で行われる。そして、処置手段によって、評価結果に応じた処置の命令が発行される。評価結果とは、評価が正当な場合と不当な場合とを想定しており、いずれの場合にも、処置手段によって新たに命令を発行するようにし、発行元からの原アクセス命令を不使用としている。従って、不正プログラムのカーネルを介してのリソースへの侵入、さらに潜伏が阻止される。
【００６５】
また、前記アクセス命令を無効にする無効手段を備えることが好ましい。検知されたアクセス命令の内容を変更したり、そのままアクセスさせた直後に元に書き直したりする方法も考えられる（請求項１に含まれる態様）が、より好ましくは、無効手段によって原アクセス命令を無効にすることで、不正プログラムの感染の危険をより抑止するようにしている。
【００６６】
また、仮想マシンの動作を監視する仮想マシンモニタを含み、前記検知手段、前記評価手段及び前記処置手段は、前記仮想マシンモニタに備えられ、前記検知手段は、前記アクセス命令が前記仮想マシンから発行される時点で制御を前記仮想マシンモニタに遷移させることが好ましい。この構成によれば、仮想マシンからの前記アクセス命令を仮想マシンモニタで監視するようにしたので、仮想マシンのカーネルを特権命令を変更することなくそのままロードして実行させることが可能となる。
【００６７】
また、前記アクセス命令を無効にする無効手段が、前記仮想マシンモニタに備えられることが好ましい。この構成によれば、原アクセス命令を無効にすることで、不正プログラムの感染の危険がより抑止される。
【００６８】
また、前記検知手段は、前記アクセス命令を無効オペコード違反として検知することが好ましい。この構成によれば、問題となるアクセス命令が確実に検知可能となる。
【００６９】
また、前記アクセス命令は、システムコール命令であり、前記評価手段は、前記システムコール命令を構成するＡＰＩに関する情報との照合に基づいて正否を評価することが好ましい。この構成によれば、アプリケーションプログラムからリソースへのアクセスを可能にするシスコール（Syscall）命令に注目して検知し、シスコールを構成するＡＰＩ（Application Programming Interface）に関する情報、例えば属性、格納場所、出典等を参照情報等と照合することで正否評価するので、不正なプログラムか否かが適正に評価される。
【００７０】
また、前記処置手段は、前記評価手段が前記アクセス命令を正当と判断した場合、前記アクセス命令と同一の内容を前記カーネルへ発行し、前記評価手段が前記アクセス命令を不当と判断した場合、前記アクセス命令をスルーする命令を前記カーネルへ発行するか、又は前記アクセス命令をスキップする命令を前記アクセス命令の発行元に戻すことが好ましい。この構成によれば、アクセス命令が正当、不当いずれの場合であっても、処置手段によって新たに命令を作成するので、不正プログラムの感染の危険が抑止される。
【符号の説明】
【００７１】
１  情報処理装置
１１  ＣＰＵ（プロセッサ）
１１１  レジスタ群
１２  ＶＴ
１３  ＶＭＣＳ
１３１  リスト
３０  ＲＡＭ
３１  ＶＭ
３２  ＶＭＭ
３２２  フック処理部（検知手段）
３２４  フック内容分析部（検知手段）
３２５  正否評価部（評価手段）
３２６  処置部（処置手段）
３２７  環境監視部
３２８  ログ処理部
６０  ログ記憶部
【図１】
2018174001.tif 000003
【図２】
2018174001.tif 000004
【図３】
2018174001.tif 000005
【図４】
2018174001.tif 000006
【図５】
2018174001.tif 000007
【図６】
2018174001.tif 000008
【図７】
2018174001.tif 000009
【図８】
2018174001.tif 000010
【図９】
2018174001.tif 000011