(57)【要約】【課題】ソフトウェア動作の監視時のオーバーヘッドを低減しつつ、ソフトウェアの正常動作からの乖離を適切に判定するソフトウェア動作監視装置を提供する。【解決手段】ソフトウェア動作監視機構３００（ソフトウェア動作監視装置）は、ソフトウェアの監視対象動作と監視対象外動作とを選別するポリシー情報を蓄積するポリシー情報蓄積部３３０と、ソフトウェアの実行履歴を記録する実行履歴記録部３１０と、ポリシー情報に基づいて、実行中のソフトウェアの動作から監視対象動作を検出する第１の解析部３２１と、第１の解析部３２１によって検出された動作に対して、実行履歴記録部３１０に記録された実行履歴を解析し、ソフトウェアの正常動作からの乖離の有無を判定する第２の解析部３２２とを備える。【選択図】図１
2006053788.tif 000002
【特許請求の範囲】
【請求項１】
実行中のソフトウェアの動作を監視するソフトウェア動作監視装置であって、
ソフトウェアの監視対象動作と監視対象外動作とを選別するポリシー情報を蓄積するポリシー情報蓄積手段と、
ソフトウェアの実行履歴を記録する実行履歴記録手段と、
前記ポリシー情報に基づいて、前記実行中のソフトウェアの動作から監視対象動作を検出する第１の解析手段と、
前記第１の解析手段によって検出された動作に対して、前記実行履歴記録手段に記録された実行履歴を解析し、ソフトウェアの正常動作からの乖離の有無を判定する第２の解析手段と
を備えることを特徴とするソフトウェア動作監視装置。
【請求項２】
前記ポリシー情報として、前記ソフトウェアの監視対象動作、あるいは、監視対象外動作となるシステムリソースへのアクセス規則が設定されることを特徴とする請求項１に記載のソフトウェア動作監視装置。
【請求項３】
前記システムリソースは、システムコールであることを特徴とする請求項２に記載のソフトウェア動作監視装置。
【請求項４】
前記ソフトウェアの実行中に前記ポリシー情報を変更するポリシー情報管理手段を更に備えることを特徴とする請求項１〜３のいずれか１項に記載のソフトウェア動作監視装置。
【請求項５】
前記実行中のソフトウェアの動作履歴を記録する動作履歴記録手段を更に備え、
前記第１の解析手段は、前記動作履歴記録手段に記録された動作履歴と、前記ポリシー情報とに基づいて、前記実行中のソフトウェアの動作から監視対象動作を検出することを特徴とする請求項１〜４のいずれか１項に記載のソフトウェア動作監視装置。
【請求項６】
ソフトウェアの正常動作を表す動作モデルを蓄積する動作モデル蓄積手段を更に備え、
前記第２の解析手段は、前記実行履歴記録手段に記録された実行履歴が前記動作モデルに受理されるか否かを判定することにより、ソフトウェアの正常動作からの乖離の有無を判定することを特徴とする請求項１〜４のいずれか１項に記載のソフトウェア動作監視装置。
【請求項７】
前記実行履歴記録手段は、ソフトウェアがオペレーティングシステムに対して生成するシステムコールを記録し、
前記動作モデルは、ソフトウェアの正常動作で生成されるシステムコールの発生パターンを網羅したものであることを特徴とする請求項６に記載のソフトウェア動作監視装置。
【請求項８】
前記実行履歴記録手段は、ソフトウェアがオペレーティングシステムに対して生成するシステムコールの引数を記録し、
前記動作モデルは、ソフトウェアの正常動作で生成されるシステムコール引数の発生パターンを網羅したものであることを特徴とする請求項６に記載のソフトウェア動作監視装置。
【請求項９】
前記実行履歴記録手段は、ソフトウェアが関数呼び出しにおいて利用するコールスタックの内容を記録し、
前記動作モデルは、ソフトウェアの正常動作で生成されるコールスタックの内容の発生パターンを網羅したものであることを特徴とする請求項６に記載のソフトウェア動作監視装置。
【請求項１０】
前記第１の解析手段は、システムリソースへのアクセスを監視するリソースアクセス監視部と、ソフトウェアがオペレーティングシステムに対して生成するシステムコールを監視するシステムコール監視部とを備え、
前記第２の解析手段は、前記リソースアクセス監視部と前記システムコール監視部との監視結果に応じて、前記システムコールの発生パターンを解析するシステムコール解析部、前記システムコールの引数を解析する引数解析部、ソフトウェアが関数呼び出しにおいて利用するコールスタックの状態の発生パターンを解析するスタック解析部の一部あるいは全部を用いて解析を行うことを特徴とする請求項１〜９のいずれか１項に記載のソフトウェア動作監視装置。
【請求項１１】
実行中のソフトウェアの動作を監視するソフトウェア動作監視方法であって、
ソフトウェアの監視対象動作と監視対象外動作とを選別するポリシー情報を蓄積するステップと、
ソフトウェアの実行履歴を記録するステップと、
前記ポリシー情報に基づいて、前記実行中のソフトウェアの動作から監視対象動作を検出するステップと、
前記検出するステップによって検出された動作に対して、前記記録するステップにおいて記録された実行履歴を解析し、ソフトウェアの正常動作からの乖離の有無を判定するステップと
を含むことを特徴とするソフトウェア動作監視方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソフトウェア動作監視装置及びソフトウェア動作監視方法に関する。
【背景技術】
【０００２】
ＰＣやワークステーション、サーバ、ルータ、携帯電話、ＰＤＡ等、すべての計算機は外部もしくは内部からの攻撃の危険にさらされている。代表的な攻撃は、計算機上で実行されているソフトウェアの脆弱性を踏み台にしたものである。攻撃者は、ソフトウェアの脆弱性を利用した悪意のあるコードを計算機に送り込み、実行中のプロセスの制御を奪い、当該プロセスの権限を利用して不正操作を行う。
【０００３】
ソフトウェアの脆弱性を利用した攻撃への第１の対策として、ソフトウェアのアクセス権限を限定する手法がある。この手法の安全性を確保するためには、スフォトウェアの実行に必要最小限のシステムリソースを選定し、ソフトウェアに当該リソースへのアクセス権限を過不足なく設定することが重要となる（例えば、特許文献１及び非特許文献１参照）。
【０００４】
しかし、実際には、ソフトウェアのすべての動作を考慮して、必要最小限のアクセス権限を付与することは非常に困難である。又、必要最小限のアクセス権限を付与できたとしても、ソフトウェア動作の異常・正常に関わらず権限を与えるため、攻撃によりプロセスの制御が奪われた場合、与えられたアクセス権限の範囲内の攻撃を許すことになる。従って、重要なシステムリソースへのアクセス権限を有するソフトウェアが乗っ取られた場合、多大な被害を受ける可能性がある。
【０００５】
このようなソフトウェアの脆弱性を利用した攻撃への対処として、実行中のソフトウェアの異常を検知するシステムが開示されている（非特許文献２参照）。このシステムでは、ソフトウェアの正常な動作を表すモデルを作成し、ソフトウェアの実行系列がこのモデルに受理されるかどうかを検査することにより、ソフトウェアの制御が奪われた場合であっても、ソフトウェアの異常動作を即座に検知し、対処することによって、攻撃者によるアクセス権限の奪取を防ぐことが可能となる。
【０００６】
又、ファイルへの異常アクセスと不正アクセスの実行を防止するファイル保護システムが開示されている（特許文献２参照）。このシステムは、２段階の監視手順を有している。第１の監視手段では、ポリシー情報に基づいてファイルへの正常アクセスと異常アクセスとを区別し、ファイルへの異常アクセスを検出した場合、当該アクセスを禁止する。第２の監視手順では、ファイルへの異常アクセス検出以後発生する不正アクセスを検出する。より具体的には、異常アクセス検出後異常アクセス情報を記録し、記録された異常アクセス情報が判定基準を満たした場合に、当該アクセスが不正アクセスであると判定する。第２の監視手順を有することにより、ファイルへの異常アクセスを防止するだけでなく、不正アクセスを防止することができ、システム全体の安全性を向上することを可能とする。
【特許文献１】特開２００１−３３７８６４号公報
【特許文献２】特開２００３−２３３５２１号公報
【非特許文献１】Security-Enhanced Linux (ｈｔｔｐ：／／ｗｗｗ．ｎｓａ．ｇｏｖ／ｓｅｌｉｎｕｘ／ｉｎｄｅｘ．ｃｆｍ)
【非特許文献２】Wagner, Dean, “Intrusion Detection via Static Analysis”, IEEE Symposium on Security and Privacy, 2001
【発明の開示】
【発明が解決しようとする課題】
【０００７】
上述した非特許文献２のシステムでは、実行系列のモデルへの適合性検証をソフトウェアの実行中に行う必要があり、実行時オーバーヘッドが非常に大きいことが問題である。特に携帯電話やＰＤＡなどを代表する処理能力の乏しいthin端末においては、この問題は致命的であるといえる。例えば、非特許文献２の方法を電子メール配送ソフトウェア（sendmail）に適応した場合、１回の電子メール配送に要する処理時間が１時間以上となり、実用に耐えない。
【０００８】
又、上述した特許文献２のシステムでは、ファイル保護が前提となっているために、ファイルアクセスが行われない限り監視の対象とならない。又、異常ファイルアクセス検出以後の不正のみ検出するため、過去に行われた不正行為は検出されない。そのため、バッファオーバーフロー攻撃に代表されるようなバッファへの不正アクセスを利用し、システムのルート権限を奪取し、ファイルアクセスを実行、その後は不正アクセスをしないといった攻撃をされた場合には、バッファオーバーフロー攻撃を検出することができないため、ファイルアクセス以後の不正アクセスを検出するだけとなり、本来は不正アクセスをされたにも関わらず検出されない。又、検出時のオーバーヘッドの負荷については、考慮されていない。
【０００９】
そこで、本発明は、上記の課題に鑑み、ソフトウェア動作の監視時のオーバーヘッドを低減しつつ、ソフトウェアの正常動作からの乖離を適切に判定するソフトウェア動作監視装置及びソフトウェア動作監視方法を提供することを目的とする。
【課題を解決するための手段】
【００１０】
上記目的を達成するため、本発明の第１の特徴は、実行中のソフトウェアの動作を監視するソフトウェア動作監視装置であって、（イ）ソフトウェアの監視対象動作と監視対象外動作とを選別するポリシー情報を蓄積するポリシー情報蓄積手段と、（ロ）ソフトウェアの実行履歴を記録する実行履歴記録手段と、（ハ）ポリシー情報に基づいて、実行中のソフトウェアの動作から監視対象動作を検出する第１の解析手段と、（ニ）第１の解析手段によって検出された動作に対して、実行履歴記録手段に記録された実行履歴を解析し、ソフトウェアの正常動作からの乖離の有無を判定する第２の解析手段とを備えるソフトウェア動作監視装置であることを要旨とする。ここで、「実行履歴」とは、監視対象ソフトウェアが呼び出す関数やシステムコール等のソフトウェアの実行履歴を指す。
【００１１】
第１の特徴に係るソフトウェア動作監視装置によると、ソフトウェアの監視対象動作を確実に検出する第１の解析手段を、重量であるがソフトウェアの正常動作からの乖離を確実に検出できる第２の解析手段の前段に配置することにより、第２の解析手段の起動頻度を低減することができる。このため、ソフトウェア動作の監視時の、システム全体のオーバーヘッドを低減しつつ、ソフトウェアの正常動作からの乖離を適切に判定することができる。
【００１２】
又、第１の特徴に係るソフトウェア動作監視装置において、ポリシー情報として、ソフトウェアの監視対象動作、あるいは、監視対象外動作となるシステムリソースへのアクセス規則が設定されてもよい。ここで、「システムリソース」とは、ソフトウェアがアクセスするファイル、システムコール、スタックの状態、引数の状態、ヒープの状態など、ソフトウェア実行時に必要なリソースを指す。このソフトウェア動作監視装置によると、ソフトウェアからシステムリソースへのアクセスが発生した際に、第１の解析手段は監視対象外のアクセスをふるい落とすことができ、監視対象のアクセスを検出した場合に限り、第２の解析手段を起動することができる。又、重要なシステムリソースへのアクセスは監視対象となるようにアクセス規則を設定することにより、危険なアクセスが生じた場合に必ず第２の解析手段を起動することもできる。このため、危険なアクセスを確実に検出する軽量な第１の解析手段を実現でき、検出システムの安全性を向上する効果が得られる。
【００１３】
又、第１の特徴に係るソフトウェア動作監視装置において、システムリソースは、システムコールであってもよい。このソフトウェア動作監視装置によると、ソフトウェアからオペレーティングシステムに対してシステムコールを生成する際、第１の解析手段は監視対象外のシステムコールへのアクセスをふるい落とすことが可能となり、監視対象のシステムコールへのアクセスを検出した場合に限り第２の解析手段を起動することが可能となる。このため、第２の解析手段の起動頻度を低減することが可能となり、検出システム全体の実行時のオーバーヘッドを低減する効果が得られる。
【００１４】
又、第１の特徴に係るソフトウェア動作監視装置は、ソフトウェアの実行中にポリシー情報を変更するポリシー情報管理手段を更に備えてもよい。このソフトウェア動作監視装置によると、ポリシー情報を変更することにより、第１の解析手段の感度を変更し、第２の解析手段の起動頻度を調整することができる。このため、ソフトウェア動作監視装置のパフォーマンスを動的に調整できるようになる。
【００１５】
又、第１の特徴に係るソフトウェア動作監視装置は、実行中のソフトウェアの動作履歴を記録する動作履歴記録手段を更に備え、第１の解析手段は、動作履歴記録手段に記録された動作履歴と、ポリシー情報とに基づいて、実行中のソフトウェアの動作から監視対象動作を検出してもよい。ここで、「動作履歴」とは、ソフトウェアがアクセスしたファイルやソフトウェアが生成した命令など、ソフトウェアの過去の動作履歴の他、ソフトウェアが起動した順番など、当該ソフトウェアが呼び出されるまでの動作履歴を指す。このソフトウェア動作監視装置によると、第１の解析手段はソフトウェアの動作履歴を考慮して、システムリソースのアクセスを検査することが可能となる。このため、現在実行中のソフトウェアの情報だけでなく、当該ソフトウェアが呼び出されるまでの情報も加味した検査が可能となり、監視対象動作の検出制度を改善する効果が得られる。
【００１６】
又、第１の特徴に係るソフトウェア動作監視装置は、ソフトウェアの正常動作を表す動作モデルを蓄積する動作モデル蓄積手段を更に備え、第２の解析手段は、実行履歴記録手段に記録された実行履歴が動作モデルに受理されるか否かを判定することにより、ソフトウェアの正常動作からの乖離の有無を判定してもよい。このソフトウェア動作監視装置によると、ソフトウェアの動作モデルを用いて正常動作からの乖離を判定することにより、正常動作からの乖離を判定するための規則生成が容易になる効果が得られる。
【００１７】
又、第１の特徴に係るソフトウェア動作監視装置の実行履歴記録手段は、ソフトウェアがオペレーティングシステムに対して生成するシステムコールを記録し、動作モデルは、ソフトウェアの正常動作で生成されるシステムコールの発生パターンを網羅したものであってもよい。このソフトウェア動作監視装置によると、オペレーティングシステムが実行履歴を確実に記録することができる。この実行履歴手段は、オペレーティングシステムそのものの制御を攻撃者に奪われない限り安全であるため、第２の解析手段の安全性を高める効果が得られる。
【００１８】
又、第１の特徴に係るソフトウェア動作監視装置の実行履歴記録手段は、ソフトウェアがオペレーティングシステムに対して生成するシステムコールの引数を記録し、動作モデルは、ソフトウェアの正常動作で生成されるシステムコール引数の発生パターンを網羅したものであってもよい。このソフトウェア動作監視装置によると、システムへの攻撃者がシステムコールの引数を巧みに用いて無動作（ヌルオペレーション）化する疑似アタックをすることを困難にすることが可能となる。この実行履歴記録手段は、オペレーティングシステムそのものの制御を攻撃者に奪われない限り安全であるため、第２の解析手段の安全性を高める効果が得られる。
【００１９】
又、第１の特徴に係るソフトウェア動作監視装置の実行履歴記録手段は、ソフトウェアが関数呼び出しにおいて利用するコールスタックの内容を記録し、動作モデルは、ソフトウェアの正常動作で生成されるコールスタックの内容の発生パターンを網羅したものであってもよい。このソフトウェア動作監視装置によると、システムコール発生パターンだけでは検出しきれない不可能経路アタックを検出することが可能となり、システムへの攻撃者がアタックすることを困難にすることが可能となる。この実行履歴記録手段は、オペレーティングシステムそのものの制御を攻撃者に奪われない限り安全であるため、第２の解析手段の安全性を高める効果が得られる。
【００２０】
又、第１の特徴に係るソフトウェア動作監視装置の第１の解析手段は、システムリソースへのアクセスを監視するリソースアクセス監視部と、ソフトウェアがオペレーティングシステムに対して生成するシステムコールを監視するシステムコール監視部とを備え、第２の解析手段は、リソースアクセス監視部とシステムコール監視部との監視結果に応じて、システムコールの発生パターンを解析するシステムコール解析部、システムコールの引数を解析する引数解析部、ソフトウェアが関数呼び出しにおいて利用するコールスタックの状態の発生パターンを解析するスタック解析部の一部あるいは全部を用いて解析を行ってもよい。このソフトウェア動作監視装置によると、第１の解析手段の軽量な検出と、第２の解析手段の重量な検出に加え、第２の解析手段の一部を起動させる中量な検出を行うことができる。
【００２１】
本発明の第２の特徴は、実行中のソフトウェアの動作を監視するソフトウェア動作監視方法であって、（イ）ソフトウェアの監視対象動作と監視対象外動作とを選別するポリシー情報を蓄積するステップと、（ロ）ソフトウェアの実行履歴を記録するステップと、（ハ）ポリシー情報に基づいて、実行中のソフトウェアの動作から監視対象動作を検出するステップと、（ニ）検出するステップによって検出された動作に対して、記録するステップにおいて記録された実行履歴を解析し、ソフトウェアの正常動作からの乖離の有無を判定するステップとを含むソフトウェア動作監視方法であることを要旨とする。
【００２２】
第２の特徴に係るソフトウェア動作監視方法によると、ソフトウェアの監視対象動作を確実に検出する第１の解析ステップを、重量であるがソフトウェアの正常動作からの乖離を確実に検出できる第２の解析ステップの前段に配置することにより、第２の解析ステップの起動頻度を低減することができる。このため、ソフトウェア動作の監視時の、システム全体のオーバーヘッドを低減しつつ、ソフトウェアの正常動作からの乖離を適切に判定することができる。
【発明の効果】
【００２３】
本発明によると、ソフトウェア動作の監視時のオーバーヘッドを低減しつつ、ソフトウェアの正常動作からの乖離を適切に判定するソフトウェア動作監視装置及びソフトウェア動作監視方法を提供することができる。
【発明を実施するための最良の形態】
【００２４】
次に、図面を参照して、本発明の第１〜第３の実施の形態を説明する。以下の図面の記載において、同一又は類似の部分には、同一又は類似の符号を付している。ただし、図面は模式的なものであることに留意すべきである。
【００２５】
第１〜第３の実施の形態では、システムに重大な影響を及ぼす可能性のあるソフトウェアの動作を確実に検出し、かつ軽量な第１の解析部を、重量であるがソフトウェアの正常動作からの乖離を十分低い非検出率（想定外動作を検出しない）と誤検出率（正常動作を想定外動作として検出する）で検出できる第２の解析部の前段に配置する。これによって、第１の解析部によって多数のソフトウェア実行系列を第２の解析対象から除外することが可能となり、ソフトウェア動作監視に要するオーバーヘッドが大幅に小さくなるという効果が得られる。
【００２６】
但し、誤検出は、第２の解析部で除去することが可能であるため、第１の解析部においては許容することができる。つまり、誤検出は発生するが、非検出の発生確率が十分低い軽量な第１の解析部を設計すれば、本実施形態のソフトウェア動作監視機構を実現することができる。
【００２７】
＜第１の実施の形態＞
（ソフトウェア動作監視装置）
第１の実施の形態に係るソフトウェア動作監視機構（ソフトウェア動作監視装置）３００は、図１に示すように、実行履歴記録部３１０と、動作監視部３２０と、ポリシー情報蓄積部３３０と、動作履歴記録部３４０と、ポリシー情報管理部３５０とを備える。図１では、ソフトウェア動作監視機構３００は、監視対象ソフトウェア２００と同様に、ソフトウェアの実行環境１００上で実行される。
【００２８】
実行履歴記録部３１０は、監視対象ソフトウェアが呼び出す関数やシステムコール等を監視して実行履歴として記録し、動作監視部３２０内の第２の解析部３２２の要求に応じて、記録した実行履歴を提供する。動作履歴部３１０は、監視中すべての実行履歴を記録してもよい。しかし、携帯電話やＰＤＡなど能力の小さい端末上では実行履歴を記録する記憶容量が小さいことが考えられるため、記録の効率性が求められる。この問題を解決するために、例えば、実行履歴記録部３１０は実行履歴を記録する際、設定された記録期間に基づいて、履歴を古い順から削除してもよい。又、実行履歴記録部３１０は、実行履歴を記録する際、設定された記録容量制限に基づいて、削除を行ってもよい。
【００２９】
動作監視部３２０は、第１の解析部３２１と第２の解析部３２２とを備える。
【００３０】
第１の解析部３２１は、監視対象ソフトウェア２００の動作をポリシー情報蓄積部３３０から取得したポリシー情報に基づき検査し、監視対象ソフトウェア２００の監視対象動作（想定外動作）を検出した場合に、第２の解析部３２２に通知する。
【００３１】
第２の解析部３２２は、監視対象動作の検知通知を契機に監視対象ソフトウェアの実行履歴を実行履歴記録部３１０から取得し、ソフトウェアの正常動作からの乖離があるかどうかを判定し、結果を出力する。
【００３２】
動作履歴記録部３４０は、ソフトウェアの動作履歴を記録し、第１の解析部３２１の要求に応じて、記録した動作履歴を提供する。この場合、第１の解析部３２１は、動作履歴とポリシー情報とに基づき、監視対象動作を検出する。このような構成をとることによって、動作履歴に基づいた解析ができ、監視対象動作の検出精度を改善する効果が得られる。
【００３３】
ポリシー情報蓄積部３３０は、図２に示すようなポリシー情報を蓄積する。ポリシー情報としては、ソフトウェアの監視対象動作、あるいは、監視対象外動作となるシステムリソースへのアクセス規則が設定される。ここで、「システムリソース」とは、ソフトウェアがアクセスするファイル、システムコール、スタックの状態、引数の状態、ヒープの状態など、ソフトウェア実行時に必要なリソースを指す。
【００３４】
図２は、SELinux（非特許文献１参照）のセキュリティポリシーを引用したものであり、Apache HTTP serverのデフォルト設定の一部である。「httpdプロセス（httpd_tドメイン）が、タイプでグループ化されたシステムリソースに対して、どのような操作（アクセスベクター）が可能か」というルールが定義されている。例えば、ある実行環境においてhttpdプロセスがアクセスすると想定されるシステムリソースについては、ポリシー情報から除外する。これにより、httpdプロセスによる想定外アクセス（監視対象動作）のみを検出することが可能となる。
【００３５】
又、アクセスが想定されるシステムリソースであっても、顧客の個人情報を含むファイル等の重要度が極めて高いものについては、意図的にポリシー情報から除外して監視対象とすることもできる。このように設定することによって、重要度の高いシステムリソースのアクセス時は、必ず第２の解析部３２２が起動されるようになり、安全性を高めることができる。
【００３６】
ポリシー情報管理部３５０は、監視対象ソフトウェア２００のシステムリソースへのアクセスを管理し、ポリシー情報を生成し、ポリシー情報蓄積部３３０にポリシー情報を蓄積する。例えば、図２に示すポリシー情報がポリシー情報蓄積部３３０に蓄積されているとする。監視対象ソフトウェア２００がhome_root_tタイプのシステムリソースへのアクセスを実施しない場合、ポリシー情報管理部３５０は、ポリシー情報のうち、home_root_tタイプのシステムリソースに関するポリシー情報を削除したポリシー情報を新たに生成し、ポリシー情報蓄積部３３０に蓄積する。このポリシー情報の変更は、ソフトウェアの実行中に行ってもよい。
【００３７】
尚、ポリシー情報管理部３５０は、ネットワークと接続しており、ネットワークからの指示に従って、ポリシー情報を生成してもよく、外部デバイスと接続しており、外部デバイスからの指示に従ってポリシー情報を生成してもよい。更に、監視対象ソフトウェア２００のシステムリソースへのアクセスを管理した結果得られた情報と、外部からの情報（ネットワークや外部デバイスからの指示）を組み合わせてポリシー情報を生成してもよい。
【００３８】
ソフトウェア動作監視機構３００において、監視対象ソフトウェア２００の動作が正常動作から乖離していると判定された場合は、実行環境１００は当該ソフトウェアを停止させる等の対処を行うことによって、ソフトウェアの異常動作による被害を最小限に食い止めることができる。
【００３９】
又、ソフトウェア動作監視機構３００が改ざんされていないことを保証するために、ソフトウェア動作監視機構３００を書き換えのできないＲＯＭ上に実現し、提供してもよい。又、同じ目的に対し、ソフトウェア動作監視機構３００提供時に電子署名を付与し、ソフトウェア動作監視機構３００を動作させる際に電子署名検証を行ってもよい。又、同じ目的に対し、セーフブート技術を用いて、リブート時にソフトウェア動作監視機構３００を提供時の状態に戻してもよい。
【００４０】
又、実行履歴記録部３１０、ポリシー情報蓄積部３３０、動作履歴記録部３４０は、上述した情報を保存する記録媒体である。具体的な記録媒体として、例えば、ＲＡＭ、ＲＯＭ、ハードディスク、フレキシブルディスク、コンパクトディスク、ＩＣチップ、カセットテープなどが挙げられる。
【００４１】
又、図示してないが、ソフトウェア動作監視装置は、データの入力あるいは出力を行う入出力手段を備えてもよい。入力手段としては、キーボード、マウス等の機器などが用いられ、フロッピーディスク（登録商標）装置、ＣＤ−ＲＯＭ装置、ＤＶＤ装置等も含む。入力手段から入力操作が行われると対応するキー情報や位置情報が動作監視部３２０に伝達される。又、出力手段としては、モニタなどの画面が用いられ、液晶表示装置（ＬＣＤ）、発光ダイオード（ＬＥＤ）パネル、エレクトロルミネッセンス（ＥＬ）パネル等が使用可能である。出力手段は、第２の解析部３２２の判定結果を出力する。又、入出力手段は、インターネットなどを介して外部との通信を行う通信手段として機能してもよい。
【００４２】
又、第１の実施の形態に係るソフトウェア動作監視装置は、処理制御装置（ＣＰＵ）を有し、第１の解析部３２１、第２の解析部３２２などをモジュールとしてＣＰＵに内蔵する構成とすることができる。これらのモジュールは、パーソナルコンピュータ等の汎用コンピュータにおいて、所定のプログラム言語を利用するための専用プログラムを実行することにより実現することができる。
【００４３】
又、図示していないが、ソフトウェア動作監視装置は、第１の解析処理、第２の解析処理などを処理制御装置（ＣＰＵ）に実行させるためのプログラムを蓄積するプログラム保持部を備えてもよい。プログラム保持部は、例えば、ＲＡＭ、ＲＯＭ、ハードディスク、フレキシブルディスク、コンパクトディスク、ＩＣチップ、カセットテープなどの記録媒体である。このような記録媒体によれば、プログラムの蓄積、運搬、販売などを容易に行うことができる。
【００４４】
（ソフトウェア動作監視方法）
次に、第１の実施の形態に係るソフトウェア動作監視方法について、図１及び図３を用いて説明する。
【００４５】
図３のステップＳ１０１において、動作監視部３２０は、実行中の監視対象ソフトウェア２００の監視を行う。
【００４６】
まず、ステップＳ１０２において、第１の解析部３２１は、ポリシー情報蓄積部３３０に蓄積されたポリシー情報と、監視対象ソフトウェア２００の動作とを比較し、解析する。
【００４７】
そして、ステップＳ１０３において、第１の解析部３２１は、監視対象動作を検出したか否か判断する。監視対象動作を検出した場合は、ステップＳ１０４へ進み、検出しなかった場合は、ステップＳ１０２へ戻る。
【００４８】
次に、ステップＳ１０４において、第２の解析部３２２は、第１の解析部３２１によって検出された動作に対して、実行履歴記録部３１０に記録された実行履歴を解析し、ソフトウェアの正常動作からの乖離の有無を判定する。
【００４９】
又、ステップＳ１０５において、ポリシー情報管理部３５０は、監視対象ソフトウェア２００のシステムリソースへのアクセスを管理し、ポリシー情報を生成し、ポリシー情報蓄積部３３０にポリシー情報を蓄積する。このポリシー情報の変更は、どのタイミングで行ってもよく、ステップＳ１０５に示すタイミングに限られるわけではない。
【００５０】
(作用及び効果)
第１の実施の形態に係るソフトウェア動作監視装置及びソフトウェア動作監視方法によると、ソフトウェアの監視対象動作を確実に検出する第１の解析部３２１を、重量であるがソフトウェアの正常動作からの乖離を確実に検出できる第２の解析部３２２の前段に配置することにより、第２の解析部３２２の起動頻度を低減することができる。このため、ソフトウェア動作の監視時の、検出システム全体のオーバーヘッドを低減しつつ、ソフトウェアの正常動作からの乖離を適切に判定することができる。
【００５１】
又、第１の特徴に係るソフトウェア動作監視装置及びソフトウェア動作監視方法において、ポリシー情報として、ソフトウェアの監視対象動作、あるいは、監視対象外動作となるシステムリソースへのアクセス規則が設定される。このため、ソフトウェアからシステムリソースへのアクセスが発生した際に、第１の解析部３２１は監視対象外のアクセスをふるい落とすことができ、監視対象のアクセスを検出した場合に限り、第２の解析部３２２を起動することができる。
【００５２】
又、重要なシステムリソースへのアクセスは監視対象となるようにアクセス規則を設定することにより、危険なアクセスが生じた場合に必ず第２の解析部３２２を起動することもできる。このため、危険なアクセスを確実に検出する軽量な第１の解析部３２１を実現でき、検出システムの安全性を向上する効果が得られる。
【００５３】
又、上述したシステムリソースは、システムコールであることが好ましい。このようなソフトウェア動作管理装置及びソフトウェア動作管理方法によると、ソフトウェアからオペレーティングシステムに対してシステムコールを生成する際、第１の解析部３２１は監視対象外のシステムコールへのアクセスをふるい落とすことが可能となり、監視対象のシステムコールへのアクセスを検出した場合に限り第２の解析部３２２を起動することが可能となる。このため、第２の解析部３２２の起動頻度を低減することが可能となり、検出システム全体の実行時のオーバーヘッドを低減する効果が得られる。
【００５４】
又、ポリシー情報は、ソフトウェアの監視対象外動作を記述しても、監視対象動作を記述してもよい。
【００５５】
監視対象外動作を記述する場合、ポリシー情報は、システム管理者が判断しやすい、システムへの影響がほとんどない動作だけを含んでいればよい。これにより、第１の解析部３２１において、システムへの影響を及ぼす動作を確実に検出することが可能となり、検出システムの安全性を向上する効果が得られる。
【００５６】
一方、監視対象動作を記述する場合、ポリシー情報は、必要最小限の安全性を確保するための動作だけを含んでいればよい。このことは、サービス提供者がサービスを提供するにあたって必要最小限の安全性を確保しつつ、不必要な第２の解析部３２２の実行を防止することにつながり、検出システム全体の実行時オーバーヘッドを低減する効果が得られる。
【００５７】
又、第１の実施の形態に係るソフトウェア動作監視装置は、ポリシー情報管理部３５０を備えるため、第１の解析部３２１の感度を変更し、第２の解析部３２２の起動頻度を調整することができる。このため、ソフトウェア動作監視装置のパフォーマンスを動的に調整できるようになる。例えば、計算機の利用感強が安全である場合には、ソフトウェア動作監視装置のパフォーマンスを向上したり、攻撃の可能性のある利用環境では、安全性を向上したりすることができる。
【００５８】
又、第１の実施の形態に係るソフトウェア動作監視装置は、動作履歴記録部３４０を備えるため、第１の解析部３２１は、ソフトウェアが呼び出されるまでの履歴を考慮して、システムリソースのアクセスを検査することが可能となる。このため、現在実行中のソフトウェアの情報だけでなく、当該ソフトウェアが呼び出されるまでの情報も加味した検査が可能となり、監視対象動作の検出制度を改善する効果が得られる。又、アクセス規則を詳細化することにより、第２の解析手段の起動頻度を低減する効果もある。
【００５９】
更に、第２の解析部３２２は、ソフトウェアの起動履歴に含まれるソフトウェアの動作を遡って検査可能である。これにより、当該ソフトウェアを直接的又は間接的に起動したソフトウェアが異常動作をしている場合にも対処可能となる。
【００６０】
＜第２の実施の形態＞
第２の実施の形態では、第１の実施の形態において説明したソフトウェア動作監視機構を計算機の基本ソフトウェア（オペレーティングシステム）に導入する。
【００６１】
（ソフトウェア動作監視装置）
第２の実施の形態に係るソフトウェア動作監視機構（ソフトウェア動作監視装置）３００は、オペレーティングシステムの基本機能を提供するソフトウェアであるカーネル５００内に実装され、１つ以上の監視対象ソフトウェア２００ａ、２００ｂ、２００ｃを監視する。監視結果は、アクセス制御部５３０、ポリシー情報管理部５４０、プロセス管理部５５０において利用され、システムリソースへのアクセスの制限やプロセス停止等の対処を行うことが可能となる。
【００６２】
実行中のソフトウェアの動作を監視するために、ソフトウェア動作監視機構３００は、カーネルフック５１０を利用する。カーネルフック５１０は、監視対象ソフトウェア２００ａ、２００ｂ、２００ｃとカーネル５００との間の通信（システムコール等）を監視し、特定の要求メッセージを受信した場合は、当該要求メッセージの処理前に予め定められたモジュールに、当該要求メッセージを転送する機能を提供する。
【００６３】
第１の解析部３２１は、ポリシー情報に基づき、監視対象ソフトウェア２００ａ、２００ｂ、２００ｃの監視対象動作を検出する。例えば、図２に示すポリシー情報を利用し、事前に定められたシステムリソース以外へのアクセス要求を検出した場合は、第２の解析部３２２を起動する。
【００６４】
第２の実施の形態では、第１の解析部３２１が利用するポリシー情報は、プロセス本来のアクセス権限とは独立に設定することが可能である。例えば、プロセスが保有しているシステムリソースへのアクセス権限であっても、ポリシー情報からは除外することができる。これにより非常に重要なシステムリソースへのアクセス時には、第２の解析部３２２を必ず起動するという処理が可能になる。
【００６５】
又、ポリシー情報には、監視対象の動作を設定してもよい。例えば、ポリシー情報にソフトウェアがオペレーティングシステムに対して生成するシステムコールのうち、システムに影響を及ぼす可能性のあるシステムコールを列挙しておく。第１の解析部３２１において、監視対象ソフトウェア２００ａ、２００ｂ、２００ｃによって生成されたシステムコールがポリシー情報に記載されたシステムコールであるかどうかを解析してもよい。第１の解析部３２１において、ポリシー情報に記載されたシステムコールが実行中のソフトウェアから生成されたことを検出し、第２の解析部３２２において、より詳細な解析を行う。図５は、ポリシー情報の例であり、ソフトウェアの実行権限を変更するシステムコールを列挙している。これらは、システムに影響を及ぼす可能性が非常に高い。このように、ポリシー情報に監視対象の動作を設定すれば、サービスなどを提供するにあたって必要最小限のシステムの安全性を確保しながらも、検出システム全体の実行時のオーバーヘッドを低減できる。
【００６６】
第２の解析部３２１は、実行履歴記録部３１０の記録した監視対象ソフトウェア２００ａ、２００ｂ、２００ｃの実行履歴が、当該ソフトウェアの動作モデル６２０に受理されるかどうかを検査する。例えば、実行履歴システムコールが記録対象であり、ソフトウェアの正常動作で起こり得るシステムコールのパターンをすべて網羅した動作モデル６２０を利用する。記録したシステムコール列が、動作モデル６２０に記述されたパターンの何れにも合致しなかった場合は、ソフトウェアの正常動作から乖離していると判定する。
【００６７】
次に、第２の解析部３１２における具体的な解析方法について説明する。
【００６８】
図６は、動作モデルの一例であり、システムコールの発生パターンを有限オートマトン（finite state automata(FSA)）でモデル化したものである（非特許文献２参照）。図６では、図７に示すソフトウェアソースコードを静的に解析し、システムコールの発生をエッジとして、システムコール発生前と後のソフトウェアの状態をノードとしてとらえ、ＦＳＡとしている。尚、関数呼び出しに関してはε遷移としてとらえている。第２の解析部３２２は、実行中のソフトウェアがオペレーティングシステムに対して生成するシステムコールを取得し、生成された順に並べたものを動作モデルであるＦＳＡの入力例として入力し、入力列が受理されるか否かを解析する。図６を例にとると、入力列が、open getuid close geteuid exitは受理されるが、open close getuid geteiud exitcは受理されない。よって、後者のシステムコールの発生が正常動作との乖離があるとして検出する。
【００６９】
又、ＦＳＡを利用する他に、Ｎ−ｇｒａｍ判定を用いてもよい。即ち、正常動作が保証された環境の中で、ソフトウェア動作中に生成されたシステムコールを取得し、時系列で並べたシステムコール列を学習する。この学習したシステムコール列を動作モデルとし、解析時には正常動作が保証されていない環境の中で、ソフトウェア動作中に生成されたＮ個のシステムコールからなる解析対象のシステムコール列を生成し、解析対象システムコール列が動作モデル中にサブシーケンスとして存在するか否かを判定する。
【００７０】
又、第２の解析部３２２は、実行履歴記録部３１０で記録する対象をシステムコールの引数とし、ソフトウェアの正常動作で起こり得るシステムコール引数の発生パターンをすべて網羅した動作モデルを利用する。例えば、システムコール引数の統計パターン（引数の文字列長や文字の出現分布など）を動作モデルとして利用する。記録したシステムコール引数の統計パターンが、動作モデルに記述されたパターンの何れにも統計的に合致しなかった場合は、ソフトウェアの正常動作から乖離していると判定してもよい。
【００７１】
又、第２の解析部３２２は、例えば、実行履歴記録部３１０で記録する対象をシステムコールと監視対象ソフトウェア２００ａ、２００ｂ、２００ｃが関数呼び出しなどで利用するコールスタックの状態とし、ソフトウェアの正常動作で起こり得るシステムコールの発生パターン及びコールスタックの状態の発生パターンが、動作モデルに記述されたパターンの何れにも合致しなかった場合は、ソフトウェアの正常動作から乖離していると判定してもよい。図８は、コールスタックの状態の発生パターンを表す動作モデルの例である。コールスタックには関数の戻り番地や関数呼び出しの引数などが内容として含まれるが、ここでは、コールスタックの状態とはそれぞれの関数呼び出しにひもづけられた戻り番地と、コールスタックに積まれた順番としている。動作モデルは、このコールスタックの状態を時系列順に並べたものとしている。第２の解析部３２２は、システムコールの発生パターンを解析するとともに、実行履歴記録部３２２に記録されたコールスタックの状態を時系列順に並べた発生パターンが、動作モデルに表されたコールスタックの状態の発生パターン内に存在するかを判定することにより、実行中のソフトウェアが正常動作から乖離があるかを判定することとなる。
【００７２】
又、第２の解析部３２２は、実行履歴記録部３１０で記録する対象をシステムコール、システムコールの引数、及び監視対象ソフトウェア２００ａ、２００ｂ、２００ｃが関数呼び出しなどで利用するコールスタックの状態すべてあるいはそれらの組み合わせとしてもよい。その際、動作モデルは、ソフトウェアの正常動作で起こり得るシステムコールの発生パターン、システムコール引数の統計パターン、及びコールスタックの状態の発生パターンのうち、実行履歴記録部３１０の記録対象と対応するパターンとし、第２の解析部３２２は、実行履歴記録部３１０で記録する対象と対応付けられた動作モデルをそれぞれ用いて、解析する。
【００７３】
又、第２の解析部３２２による判定結果は、アクセス制御部５３０、ポリシー情報管理部５４０、プロセス管理部５５０において利用される。
【００７４】
アクセス制御部５３０は、第２の解析部３３２による判定結果に応じて、システムリソースへのアクセスを制限する。
【００７５】
ポリシー情報管理部５４０は、第２の解析部３３２による判定結果に応じて、ポリシー情報を作成、更新し、ポリシー情報６１０を蓄積する。
【００７６】
プロセス管理部５５０は、第２の解析部３３２による判定結果に応じて、プロセス（実行中のソフトウェア）を停止する。
【００７７】
尚、図４において、ポリシー情報６１０、動作モデル６２０、実行履歴６３０は、記録媒体６００に保存される。記録媒体としては、例えば、ＲＡＭ、ＲＯＭ、ハードディスク、フレキシブルディスク、コンパクトディスク、ＩＣチップ、カセットテープなどが挙げられる。ポリシー情報６１０、動作モデル６２０、実行履歴６３０は、図４に示すように記録媒体６００に保存されてもよく、カーネル５００上に実装されてもよい。
【００７８】
（ソフトウェア動作監視方法）
次に、第２の実施の形態に係るソフトウェア動作監視方法について、図４及び図９を用いて説明する。
【００７９】
まず、ステップＳ２０１〜２０３は、図３のステップＳ１０１〜１０３と同様であるので、ここでは説明を省略する。
【００８０】
ステップＳ２０４において、第２の解析部３２２は、第１の解析部３２１によって検出された動作に対して、実行履歴記録部３１０に記録された実行履歴を解析し、ソフトウェアの正常動作からの乖離の有無を判定する。このとき、第２の解析部３２２は、実行履歴が動作モデル６２０に受理されるか否かを判定することにより、ソフトウェアの正常動作からの乖離の有無を判定する。使用する動作モデルは、ソフトウェアの正常動作で生成されるシステムコールの発生パターンを網羅したもの、ソフトウェアの正常動作で生成されるシステムコール引数の発生パターンを網羅したもの、ソフトウェアの正常動作で生成されるコールスタックの内容の発生パターンを網羅したものなどである。
【００８１】
ステップＳ２０５は図３のステップＳ１０５と同様であるので、ここでは説明を省略する。
【００８２】
次に、ステップＳ２０６において、アクセス制御部５３０は、第２の解析部３３２による判定結果に応じて、システムリソースへのアクセスを制限する。
【００８３】
次に、ステップＳ２０７において、プロセス管理部５５０は、第２の解析部３３２による判定結果に応じて、プロセス（実行中のソフトウェア）を停止する。
【００８４】
（作用及び効果）
第２の特徴に係るソフトウェア動作監視装置及びソフトウェア動作監視方法によると、第２の解析部３２２は、実行履歴記録部３１０に記録された実行履歴が動作モデル６２０に受理されるか否かを判定することにより、ソフトウェアの正常動作からの乖離の有無を判定することができる。このため、正常動作からの乖離を判定するための規則生成が容易になる効果が得られる。
【００８５】
又、実行履歴記録部３１０は、ソフトウェアがオペレーティングシステムに対して生成するシステムコールを記録し、動作モデル６２０は、ソフトウェアの正常動作で生成されるシステムコールの発生パターンを網羅したものとすることができる。このため、オペレーティングシステムが実行履歴を確実に記録することができる。この実行履歴記録部３１０は、オペレーティングそのものの制御を攻撃者に奪われない限り安全であるため、第２の解析部３２２の安全性を高める効果が得られる。
【００８６】
又、実行履歴記録部３１０は、ソフトウェアがオペレーティングシステムに対して生成するシステムコールの引数を記録し、動作モデル６２０は、ソフトウェアの正常動作で生成されるシステムコール引数の発生パターンを網羅したものとすることができる。このため、システムへの攻撃者がシステムコールの引数を巧みに用いて無動作（ヌルオペレーション）化する疑似アタックをすることを困難にすることが可能となる。この実行履歴記録部３１０は、オペレーティングシステムそのものの制御を攻撃者に奪われない限り安全であるため、第２の解析部３２２の安全性を高める効果が得られる。
【００８７】
又、実行履歴記録部３１０は、ソフトウェアが関数呼び出しにおいて利用するコールスタックの内容を記録し、動作モデル６２０は、ソフトウェアの正常動作で生成されるコールスタックの内容の発生パターンを網羅したものとすることができる。このため、システムコール発生パターンだけでは検出しきれない不可能経路アタックを検出することが可能となり、システムへの攻撃者がアタックすることを困難にすることが可能となる。この実行履歴記録部３１０は、オペレーティングシステムそのものの制御を攻撃者に奪われない限り安全であるため、第２の解析部３２２の安全性を高める効果が得られる。
【００８８】
＜第３の実施の形態＞
第３の実施の形態では、第１の解析部が複数の監視対象動作を解析し、該当した監視対象動作に応じて、第２の解析部が異なる解析を行う。
【００８９】
（ソフトウェア動作監視装置）
第３の実施の形態に係るソフトウェア動作監視装置は、図１０に示すように、第１の解析部３２１と第２の解析部３２２の構成が異なる以外は、第２の実施の形態と同様の構成である。
【００９０】
第１の解析部３２１は、システムリソースへのアクセスを監視するリソースアクセス監視部３２１ａと、監視対象ソフトウェア２００ａ、２００ｂ、２００ｃがオペレーティングシステムに対して生成するシステムコールを監視するシステムコール監視部３２１ｂとを備える。
【００９１】
リソースアクセス監視部３２１ａ及びシステムコール監視部３２１ｂは、ポリシー情報６１０に基づき、監視対象ソフトウェア２００ａ、２００ｂ、２００ｃの監視対象動作を検出する。ポリシー情報は、図１１に示すように、システムリソースのアクセス規則を記述した第１のポリシー情報６１０ａと、システムに影響を及ぼす可能性のあるシステムコールを列挙した第２のポリシー情報６１０ｂとを備える。第１のポリシー情報６１０ａには、アクセス規則の対象となるファイル名と当該ファイルに対して影響を及ぼす可能性の高いシステムコールを記述している。
【００９２】
第２の解析部３２２は、システムコールの発生パターンを解析するシステムコール解析部３２２ａと、システムコール引数の統計パターンを解析する引数解析部３２２ｂと、コールスタックの状態の発生パターンを解析するスタック解析部３２２ｃとを備える。第２の解析部３２２は、第１の解析部３２１の解析結果に基づいて、これらの３つの解析部を選択する機構を備える。
【００９３】
例えば、第１の解析部３２１において、図１１のポリシー情報を利用し、監視対象ソフトウェア２００ａ、２００ｂ、２００ｃを監視した結果、リソースアクセス監視部３２１ａにおいて、第１のポリシー情報６１０ａに記載のファイル名と対応するファイルにアクセスがあったことを検出した場合、第２の解析部３２２は、システムコール解析部３２２ａによって実行履歴記録部３１０に記録された実行履歴におけるシステムコールの発生パターンを解析する。
【００９４】
同様に、第１の解析部３２１において、図１１のポリシー情報を利用し、監視対象ソフトウェア２００ａ、２００ｂ、２００ｃを監視した結果、システムコール監視部３２１ｂにおいて、第２のポリシー情報６１０ｂに記載のシステムコールが監視対象ソフトウェア２００ａ、２００ｂ、２００ｃにより生成されたことを検出した場合、第２の解析部３２２は、システムコール解析部３２２ａによって実行履歴記録部３１０に記録された実行履歴におけるシステムコールの発生パターンを解析する。
【００９５】
一方、第１の解析部３２１において、リソースアクセス監視部３２１ａが第１のポリシー情報６１０ａに記載のファイル名と対応するファイルにアクセスがあったことを検出し、更にシステムコール監視部３２１ｂが当該ファイル名とひもづけられたシステムコールが生成されたことを同時に検出した場合、第２の解析部３２２は、システムコール監視部３２２ａはだけでなく、引数監視部３２２ｂによってシステムコール引数の統計パターンの解析を、スタック解析部３２２ｃによってコールスタックの状態の発生パターンの解析を行う。
【００９６】
図１０に示すポリシー情報管理部５４０は、監視対象ソフトウェア２００のシステムリソースへのアクセスを管理し、ポリシー情報を生成し、ポリシー情報６１０を蓄積する。このとき、ポリシー情報管理部５４０は、第２の解析部３２２のシステムコール解析部３２２ａ、引数解析部３２２ｂ、スタック解析部３２２ｃそれぞれの解析結果に応じて、ポリシー情報を変更する。即ち、ポリシー情報管理部５４０は、システムコール解析部３２２ａ、引数解析部３２２ｂ、スタック解析部３２２ｃの解析結果に応じた変更テーブルを有し、どの解析部によって乖離の有無が判定されたかにより、異なるポリシー情報を変更する。
【００９７】
又、アクセス制御部５３０は、第２の解析部３３２による判定結果に応じて、システムリソースへのアクセスを制限する。このとき、アクセス制御部５３０は、第２の解析部３２２のシステムコール解析部３２２ａ、引数解析部３２２ｂ、スタック解析部３２２ｃそれぞれの解析結果に応じて、アクセスを制限する。即ち、アクセス制御部５３０は、システムコール解析部３２２ａ、引数解析部３２２ｂ、スタック解析部３２２ｃの解析結果に応じた変更テーブルを有し、どの解析部によって乖離の有無が判定されたかにより、異なるシステムリソースへのアクセスを制限する。
【００９８】
又、プロセス管理部５５０は、第２の解析部３３２による判定結果に応じて、プロセス（実行中のソフトウェア）を停止する。このとき、プロセス管理部５５０は、第２の解析部３２２のシステムコール解析部３２２ａ、引数解析部３２２ｂ、スタック解析部３２２ｃそれぞれの解析結果に応じて、アクセスを制限する。即ち、プロセス管理部５５０は、システムコール解析部３２２ａ、引数解析部３２２ｂ、スタック解析部３２２ｃの解析結果に応じた変更テーブルを有し、どの解析部によって乖離の有無が判定されたかにより、異なるプロセスを停止する。
【００９９】
実行履歴記録部３１０、記録媒体６００については、第２の実施の形態と同様であるので、ここでは説明を省略する。
【０１００】
（ソフトウェア動作監視方法）
次に、第３の実施の形態に係るソフトウェア動作監視方法について、図１０及び図１２を用いて説明する。
【０１０１】
図１２のステップＳ３０１において、動作監視部３２０は、実行中の監視対象ソフトウェア２００の監視を行う。
【０１０２】
まず、ステップＳ３０２において、第１の解析部３２１のリソースアクセス監視部３２１ａは、システムリソースへのアクセスを監視する。次に、ステップＳ３０３において、第１の解析部３２１のシステムコール監視部３２１ｂは、監視対象ソフトウェア２００ａ、２００ｂ、２００ｃがオペレーティングシステムに対して生成するシステムコールを監視する。
【０１０３】
そして、ステップＳ３０４において、リソースアクセス監視部３２１ａ、あるいは、システムコール監視部３２１ｂは、監視対象動作を検出したか否か判断する。監視対象動作を検出した場合は、ステップＳ３０５へ進み、検出しなかった場合は、ステップＳ３０２へ戻る。
【０１０４】
次に、ステップＳ３０５において、第２の解析部３２２のシステムコール解析部３２２ａは、第１の解析部３２１によって検出された動作に対して、システムコールの発生パターンを解析する。そして、ソフトウェアの正常動作からの乖離の有無を判定する。
【０１０５】
次に、ステップＳ３０６において、リソースアクセス監視部３２１ａ及びシステムコール監視部３２１ｂ両方において、監視対象動作を検出したか否か判断する。このように複数の監視対象動作を検出した場合は、ステップＳ３０７へ進み、検出しなかった場合は、ステップＳ３０９へ進む。
【０１０６】
次に、ステップＳ３０７において、第２の解析部３２２の引数解析部３２２ｂは、システムコール引数の統計パターンを解析する。そして、ソフトウェアの正常動作からの乖離の有無を判定する。
【０１０７】
次に、ステップＳ３０８において、第２の解析部３２２のスタック解析部３２２ｃは、コールスタックの状態の発生パターンを解析する。そして、ソフトウェアの正常動作からの乖離の有無を判定する。
【０１０８】
次に、ステップＳ３０９において、ポリシー情報管理部５４０は、監視対象ソフトウェア２００のシステムリソースへのアクセスを管理し、ポリシー情報を生成し、ポリシー情報６１０を蓄積する。このとき、ポリシー情報管理部５４０は、第２の解析部３２２のシステムコール解析部３２２ａ、引数解析部３２２ｂ、スタック解析部３２２ｃそれぞれの解析結果に応じて、ポリシー情報を変更する。
【０１０９】
次に、ステップＳ３１０において、アクセス制御部５３０は、第２の解析部３３２による判定結果に応じて、システムリソースへのアクセスを制限する。このとき、アクセス制御部５３０は、第２の解析部３２２のシステムコール解析部３２２ａ、引数解析部３２２ｂ、スタック解析部３２２ｃそれぞれの解析結果に応じて、アクセスを制限する。
【０１１０】
次に、ステップＳ３１１において、プロセス管理部５５０は、第２の解析部３３２による判定結果に応じて、プロセス（実行中のソフトウェア）を停止する。このとき、プロセス管理部５５０は、第２の解析部３２２のシステムコール解析部３２２ａ、引数解析部３２２ｂ、スタック解析部３２２ｃそれぞれの解析結果に応じて、アクセスを制限する。
【０１１１】
（作用及び効果）
第３の実施の形態に係るソフトウェア動作監視装置及びソフトウェア動作監視方法によると、軽量の監視を行う第１の解析部、重量の監視を行う第２の解析部に加え、第２の解析部の一部を機能させる中量の監視を行うことができ、監視対象動作に応じたオーバーヘッドの軽減が可能となる。
【０１１２】
（その他の実施形態）
本発明は上記の実施形態によって記載したが、この開示の一部をなす論述及び図面はこの発明を限定するものであると理解すべきではない。この開示から当業者には様々な代替実施形態、実施例及び運用技術が明らかとなろう。
【０１１３】
例えば、図９及び図１１において、第２の解析部３２２による解析結果に応じて、ポリシー情報の管理（Ｓ２０５、Ｓ３０９）、アクセスの制御（Ｓ２０６、Ｓ３１０）、プロセスの管理（Ｓ２０７、３１１）を行うと説明したが、これらは、図面に示した順番で行われるとは限らず、その順番は状況に応じて前後する。
【０１１４】
又、第１の解析部３２１、第２の解析部３２２をモジュールとして一つのＣＰＵに備えてもよいと説明したが、それぞれ異なるＣＰＵに備えられ、異なる装置としてもよい。その場合、複数の装置間をバスなどで接続するものとする。
【０１１５】
このように、本発明はここでは記載していない様々な実施形態等を含むことは勿論である。従って、本発明の技術的範囲は上記の説明から妥当な特許請求の範囲に係る発明特定事項によってのみ定められるものである。
【図面の簡単な説明】
【０１１６】
【図１】第１の実施の形態に係るソフトウェア動作監視装置の構成ブロック図である。
【図２】第１の実施形態に係るポリシー情報の例である。
【図３】第１の実施形態に係るソフトウェア動作監視方法を示すフローチャートである。
【図４】第２の実施の形態に係るソフトウェア動作監視装置の構成ブロック図である。
【図５】第２の実施形態に係るポリシー情報の一例である。
【図６】第２の実施形態に係る動作モデルの一例である（その１）。
【図７】第２の実施形態に係るソフトウェアソースコードの一例である。
【図８】第２の実施形態に係る動作モデルの一例である（その２）。
【図９】第２の実施形態に係るソフトウェア動作監視方法を示すフローチャートである。
【図１０】第３の実施の形態に係るソフトウェア動作監視装置の構成ブロック図である。
【図１１】第３の実施形態に係るポリシー情報の一例である。
【図１２】第３の実施形態に係るソフトウェア動作監視方法を示すフローチャートである。
【符号の説明】
【０１１７】
１００…実行環境
２００、２００ａ、２００ｂ、２００ｃ…監視対象ソフトウェア
３００…ソフトウェア動作監視機構（ソフトウェア動作監視装置）
３１０…実行履歴記録部
３２０…動作監視部
３２１…第１の解析部
３２１ａ…リソースアクセス監視部
３２１ｂ…システムコール監視部
３２２…第２の解析部
３２２ａ…システムコール解析部
３２２ｂ…引数解析部
３２２ｃ…スタック解析部
３３０…ポリシー情報蓄積部
３４０…動作履歴記録部
３５０…ポリシー情報管理部
５００…カーネル
５１０…カーネルフック
５３０…アクセス制御部
５４０…ポリシー情報管理部
５５０…プロセス管理部
６００…記録媒体
６１０…ポリシー情報
６２０…動作モデル
６３０…実行履歴
【図１】
2006053788.tif 000003
【図２】
2006053788.tif 000004
【図３】
2006053788.tif 000005
【図４】
2006053788.tif 000006
【図５】
2006053788.tif 000007
【図６】
2006053788.tif 000008
【図７】
2006053788.tif 000009
【図８】
2006053788.tif 000010
【図９】
2006053788.tif 000011
【図１０】
2006053788.tif 000012
【図１１】
2006053788.tif 000013
【図１２】
2006053788.tif 000014