(57)【要約】【課題】  ソフトウェアの挙動の検証速度を向上させ、キャッシュメモリの使用量の増大を抑制しながら、ソフトウェアの挙動を簡易に検証することを可能とするソフトウェア挙動モデル化装置、ソフトウェア挙動モデル化方法、ソフトウェア挙動検証装置及びソフトウェア挙動検証方法を提供する。【解決手段】  ソフトウェア挙動モデル化装置１００は、スタック情報（ｉ）とスタック情報（ｉ−１）との差分情報とイベント情報（ｉ）とに基づいて、ソフトウェアの挙動モデルを生成する挙動モデル生成部１４０と、イベント情報（ｉ−１）とイベント情報（ｉ）とスタック情報（ｉ−１）とスタック情報（ｉ）とに基づいて、ソフトウェアにおける出現パターンを生成する出現パターン生成部１５０とを備える。【選択図】  図１
2008305085.tif 000002
【特許請求の範囲】
【請求項１】
ソフトウェアの挙動をモデル化するソフトウェア挙動モデル化装置であって、
前記ソフトウェアの実行中に発生したｉ−１番目のイベントを示すイベント情報（ｉ−１）と、前記ソフトウェアの実行中に発生したｉ番目のイベントを示すイベント情報（ｉ）を取得するイベント情報取得部と、
前記ｉ−１番目のイベントが発生した時点でコールスタックに格納されたスタック情報（ｉ−１）を取得するとともに、前記ｉ番目のイベントが発生した時点で前記コールスタックに格納されたスタック情報（ｉ）を取得するスタック情報取得部と、
前記スタック情報（ｉ）と前記スタック情報（ｉ−１）との差分である差分情報を取得する差分情報取得部と、
前記イベント情報（ｉ）と前記差分情報とに基づいて、前記ソフトウェアの挙動モデルを生成するモデル生成部と、
前記イベント情報（ｉ−１）と前記イベント情報（ｉ）と前記スタック情報（ｉ−１）と前記スタック情報（ｉ）とに基づいて、前記ソフトウェアにおけるイベントの関係をパターン化した出現パターンを生成する出現パターン生成部とを備えることを特徴とするソフトウェア挙動モデル化装置。
【請求項２】
前記スタック情報（ｉ−１）及び前記スタック情報（ｉ）は、リターンアドレス列であることを特徴とする請求項１に記載のソフトウェア挙動モデル化装置。
【請求項３】
前記出現パターン生成部は、前記ソフトウェアの実行中において順に発生した所定数のイベントについて、前記ソフトウェアにおけるイベントの関係をパターン化した出現パターンを生成することを特徴とする請求項１に記載のソフトウェア挙動モデル化装置。
【請求項４】
前記出現パターン生成部は、前記出現パターンのうち、特定の出現パターンを除外することを特徴とする請求項１に記載のソフトウェア挙動モデル化装置。
【請求項５】
前記特定の出現パターンは、前記出現パターンのうち、出現頻度が所定値よりも低い出現パターンであることを特徴とする請求項４に記載のソフトウェア挙動モデル化装置。
【請求項６】
前記特定の出現パターンは、前記出現パターンのうち、前記出現パターンの一部分のみが一致しており、前記出現パターンの他部分が一致していない出現パターンであることを特徴とする請求項４に記載のソフトウェア挙動モデル化装置。
【請求項７】
前記出現パターン生成部は、前記スタック情報（ｉ）の情報量が所定値以上である場合にのみ、前記ｉ番目のイベントを対象として前記出現パターンを生成することを特徴とする請求項１に記載のソフトウェア挙動モデル化装置。
【請求項８】
ソフトウェアの挙動をモデル化するソフトウェア挙動モデル化方法であって、
前記ソフトウェアの実行中に発生したｉ−１番目のイベントを示すイベント情報（ｉ−１）と、前記ソフトウェアの実行中に発生したｉ番目のイベントを示すイベント情報（ｉ）を取得するステップＡと、
前記ｉ−１番目のイベントが発生した時点でコールスタックに格納されたスタック情報（ｉ−１）を取得するとともに、前記ｉ番目のイベントが発生した時点で前記コールスタックに格納されたスタック情報（ｉ）を取得するステップＢと、
前記スタック情報（ｉ）と前記スタック情報（ｉ−１）との差分である差分情報を取得するステップＣと、
前記イベント情報（ｉ）と前記差分情報とに基づいて、前記ソフトウェアの挙動モデルを生成するステップＤと、
前記イベント情報（ｉ−１）と前記イベント情報（ｉ）と前記スタック情報（ｉ−１）と前記スタック情報（ｉ）とに基づいて、前記ソフトウェアにおけるイベントの関係をパターン化した出現パターンを生成するステップＥとを含むことを特徴とするソフトウェア挙動モデル化方法。
【請求項９】
ソフトウェアの挙動を検証するソフトウェア挙動検証装置であって、
前記ソフトウェアの実行中に発生したｉ−１番目のイベントを示すイベント情報（ｉ−１）と、前記ソフトウェアの実行中に発生したｉ番目のイベントを示すイベント情報（ｉ）を取得するイベント情報取得部と、
前記ｉ−１番目のイベントが発生した時点でコールスタックに格納されたスタック情報（ｉ−１）を取得するとともに、前記ｉ番目のイベントが発生した時点で前記コールスタックに格納されたスタック情報（ｉ）を取得するスタック情報取得部と、
前記スタック情報（ｉ）と前記スタック情報（ｉ−１）との差分である差分情報を取得する差分情報取得部と、
前記イベント情報（ｉ−１）と前記イベント情報（ｉ）と前記スタック情報（ｉ−１）とに基づいて、前記ソフトウェアにおけるイベントの関係をパターン化した出現パターンを特定する出現パターン特定部と、
第１イベントが発生した時点で前記コールスタックに格納されるべき第１スタック情報と第２イベントが発生した時点で前記コールスタックに格納されるべき第２スタック情報との差分情報と前記第２イベントとの関係をモデル化した挙動モデルを取得する挙動モデル取得部と、
前記第１イベントと前記第２イベントと前記第１スタック情報と前記第２スタック情報との関係をパターン化した出現パターンを取得する出現パターン取得部と、
前記イベント情報取得部によって取得された前記イベント情報（ｉ）と前記差分情報取得部によって取得された前記差分情報とに基づいて、前記ソフトウェアの挙動が前記挙動モデルから乖離しているか否かを検証する挙動検証部と、
前記出現パターン特定部によって特定された前記出現パターンが前記出現パターン取得部によって取得された前記出現パターンと一致するか否かを判定するパターンマッチング部とを備えることを特徴とするソフトウェア挙動検証装置。
【請求項１０】
前記挙動検証部は、前記パターンマッチング部によって前記出現パターンが一致すると判定された場合に、前記ソフトウェアの挙動が前記挙動モデルから乖離しているか否かの検証を省略して、前記ソフトウェアの挙動が正常であると判定することを特徴とする請求項９に記載のソフトウェア挙動検証装置。
【請求項１１】
前記パターンマッチング部は、前記ソフトウェアの実行中において順に発生したｋ回のイベントについて前記出現パターンが一致すると判定した場合に、ｋ＋１回目のイベントについて、前記出現パターンが一致するか否かの判定を省略することを特徴とする請求項９に記載のソフトウェア挙動検証装置。
【請求項１２】
前記スタック情報取得部は、前記パターンマッチング部によって前記出現パターンが一致すると判定された場合に、前記スタック情報（ｉ）の取得を省略することを特徴とする請求項９に記載のソフトウェア挙動検証装置。
【請求項１３】
前記差分情報取得部は、前記パターンマッチング部によって前記出現パターンが一致すると判定された場合に、前記差分情報の取得を省略することを特徴とする請求項９に記載のソフトウェア挙動検証装置。
【請求項１４】
ソフトウェアの挙動を検証するソフトウェア挙動検証方法であって、
前記ソフトウェアの実行中に発生したｉ−１番目のイベントを示すイベント情報（ｉ−１）と、前記ソフトウェアの実行中に発生したｉ番目のイベントを示すイベント情報（ｉ）を取得するステップＡと、
前記ｉ−１番目のイベントが発生した時点でコールスタックに格納されたスタック情報（ｉ−１）を取得するとともに、前記ｉ番目のイベントが発生した時点で前記コールスタックに格納されたスタック情報（ｉ）を取得するステップＢと、
前記スタック情報（ｉ）と前記スタック情報（ｉ−１）との差分である差分情報を取得するステップＣと、
前記イベント情報（ｉ−１）と前記イベント情報（ｉ）と前記スタック情報（ｉ−１）とに基づいて、前記ソフトウェアにおけるイベントの関係をパターン化した出現パターンを特定するステップＤと、
第１イベントが発生した時点で前記コールスタックに格納されるべき第１スタック情報と第２イベントが発生した時点で前記コールスタックに格納されるべき第２スタック情報との差分情報と前記第２イベントとの関係をモデル化した挙動モデルを取得するステップＥと、
前記第１イベントと前記第２イベントと前記第１スタック情報と前記第２スタック情報との関係をパターン化した出現パターンを取得するステップＦと、
前記ステップＡで取得された前記イベント情報（ｉ）と前記ステップＢで取得された前記差分情報とに基づいて、前記ソフトウェアの挙動が前記挙動モデルから乖離しているか否かを検証するステップＧと、
前記ステップＤで特定された前記出現パターンが前記ステップＦで取得された前記出現パターンと一致するか否かを判定するステップＨとを含むことを特徴とするソフトウェア挙動検証方法。
【請求項１５】
前記ステップＧでは、前記ステップＨで前記出現パターンが一致すると判定された場合に、前記ソフトウェアの挙動が前記挙動モデルから乖離しているか否かの検証を省略して、前記ソフトウェアの挙動が正常であると判定することを特徴とする請求項１４に記載のソフトウェア挙動検証方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソフトウェアの挙動をモデル化するソフトウェア挙動モデル化装置及びソフトウェア挙動モデル化方法、ソフトウェアの挙動を検証するソフトウェア挙動検証装置及びソフトウェア挙動検証方法に関する。
【背景技術】
【０００２】
ＰＣ、ワークステーション、サーバ、ルータ、携帯電話、ＰＤＡなどの計算機は、計算機の外部又は計算機の内部から攻撃を受ける可能性がある。代表的な攻撃としては、計算機上で実行されているソフトウェアの脆弱性を悪用する攻撃が挙げられる。攻撃者は、ソフトウェアの脆弱性を悪用するコードを計算機に送り込み、計算機上で実行されているソフトウェアに含まれるプロセスの制御を奪う。攻撃者は、制御を奪ったプロセスの権限を利用して不正な操作を行う。
【０００３】
これに対して、ソフトウェアの脆弱性を悪用する攻撃、特に、計算機にとって未知の攻撃を検出する異常検出システムが知られている。
【０００４】
具体的には、異常検出システムでは、ソフトウェアの正常な挙動が予めモデル化されており、モデル化された挙動モデルが格納されている。異常検出システムは、ソフトウェアの実行中において、ソフトウェアの挙動が挙動モデルから乖離しているか否かを判定する。
【０００５】
ここで、攻撃者は、プロセスがカーネルに重要な処理を依頼するシステムコールを用いて、計算機に任意の動作を行わせる。従って、ソフトウェアの挙動を監視する際において、システムコールの正当性を検証することが重要である。
【０００６】
ソフトウェアの実行中において、システムコールの正当性を検証する検証方法として、以下に示す方法（以下、検証方法１）が提案されている（例えば、特許文献１）。
【０００７】
検証方法１では、ソフトウェア（プロセス）から発行されたシステムコール要求に応じて、正当性検査機能が呼び出される。正当性検査機能は、システムコールの発行元の関数がメモリのコード領域に存在する場合に、システムコールが正常であると判定する。一方で、システムコールの発行元の関数がメモリのデータ領域に存在する場合に、システムコールが正常でないと判定する。
【０００８】
また、ソフトウェアの実行中において、システムコールの正当性を検証する検証方法として、以下に示す方法（以下、検証方法２）が提案されている（例えば、非特許文献１）。
【０００９】
検証方法２では、リターンアドレスなどが格納されるコールスタックの状況を利用する。具体的には、この検証方法は、ソフトウェアの挙動を学習する段階と、ソフトウェアの挙動を検証する段階とを含む。
【００１０】
ソフトウェアの挙動の学習段階では、ソフトウェアを予め正常に実行した上で、ソフトウェアの挙動モデルを生成する。
【００１１】
具体的には、システムコールが発生した際に、コールスタックの状況、（コールスタックに格納されるリターンアドレスの列）を取得するとともに、プログラムカウンタの値を取得する。リターンアドレスの列及びプログラムカウンタの値が記録された仮想スタックリスト（Ｖｉｒｔｕａｌ  Ｓｔａｃｋ  Ｌｉｓｔ）を生成する。続いて、一のシステムコールが発生した際に生成された仮想スタックリストと、一のシステムコールに続いて他のシステムコールが発生した際に生成された仮想スタックリストとの差分情報（Ｖｉｒｔｕａｌ  Ｐａｔｈ）を取得する。さらに、仮想スタックリスト（Ｖｉｒｔｕａｌ  Ｓｔａｃｋ  Ｌｉｓｔ）及び差分情報（Ｖｉｒｔｕａｌ  Ｐａｔｈ）に基づいてハッシュテーブルを生成して、ハッシュテーブルを挙動モデルとして利用する。
【００１２】
ソフトウェアの挙動の検証段階では、ソフトウェアの実行中においてシステムコールが発生した際に、ソフトウェアの挙動の学習段階と同様に、ハッシュテーブルを生成する。続いて、ソフトウェアの挙動の学習段階で生成されたハッシュテーブルと、ソフトウェアの実行中において生成されたハッシュテーブルとのマッチングを行う。ハッシュテーブルが合致する場合には、システムコールが許可され、ハッシュテーブルが合致しない場合には、ソフトウェアの挙動が異常であると判定される。
【００１３】
さらに、ソフトウェアの実行中において、システムコールの正当性を検証する検証方法として、以下に示す方法（以下、検証方法３）が提案されている（例えば、非特許文献２）。
【００１４】
検証方法３では、ソフトウェアのバイナリコードを解析することによって、関数毎にモデル（オートマン）を生成する。なお、モデル（オートマン）において、節点は、（１）関数の入口、（２）関数の出口、（３）関数の呼び出しである。
【００１５】
具体的には、システムコールが発生した際に、コールスタックの状況からリターンアドレス列が取得される。続いて、リターンアドレス列に基づいて、システムコールによって呼び出された関数のリスト（スタックバックトレース）が生成される。ｉ番目のシステムコールの正当性を検証する場合には、ｉ−１番目のシステムコールに対応するスタックバックトレース（ｉ−１）とｉ番目のコールスタックに対応するスタックバックトレース（ｉ）とが比較される。スタックバックトレース（ｉ−１）からスタックバックトレース（ｉ）に至る制御フローがモデル（オートマン）に合致する場合に、ｉ番目のシステムコールが正当であると判定される。
【特許文献１】特開２００４−１２６８５４号公報（請求項１、［００１６］、［００１７］など）
【非特許文献１】Ｈ.Ｆｅｎｇ等、“Ａｎｏｍａｌｙ  Ｄｅｔｅｃｔｉｏｎ  Ｕｓｉｎｇ  Ｃａｌｌ  Ｓｔａｃｋ  Ｉｎｆｏｒｍａｔｉｏｎ”、Ｔｈｅ  ｐｒｏｃ.  ｏｆ  ＩＥＥＥ  Ｓｙｍｐｏｓｉｕｍ  ｏｎ  Ｓｅｃｕｒｉｔｙ  ａｎｄ  Ｐｒｉｖａｃｙ  2003、  ｐｐ.62.
【非特許文献２】阿部等、“静的解析に基づく侵入検知システムの最適化”、情報処理学会論文誌：コンピューティングシステム、ｖｏｌ．４５、Ｎｏ．ＳＩＧ３（ＡＣＳ５）、ｐｐ．１１−２０
【発明の開示】
【発明が解決しようとする課題】
【００１６】
ここで、ＬｉｎｕｘなどのＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）では、システムコールがＷｒａｐｐｅｒ関数を介して発行され、Ｗｒａｐｐｅｒ関数はコード領域に存在する。Ｒｅｔｕｒｎ−ｔｏ−ｌｉｂｃ攻撃では、攻撃者は、ソフトウェアをｌｉｂｃへ復帰させて任意のシステムコールを発行する。従って、上述した検証方法１では、システムコールの正当性を十分に検証することができない。
【００１７】
一方で、検証方法２では、仮想スタックリスト（Ｖｉｒｔｕａｌ  Ｓｔａｃｋ  Ｌｉｓｔ）及び差分情報（Ｖｉｒｔｕａｌ  Ｐａｔｈ）を生成するために、メモリ上に展開されたコールスタックの状況を取得する必要がある。従って、ソフトウェアの実行中において、低速なメモリアクセスが頻繁に生じるため、時間的な負荷が大きい。
【００１８】
検証方法３では、スタックバックトレースに含まれる関数毎にモデルを読み込んだ上で、制御フローを検証する必要がある。システムコールの検証を高速に行うために、関数毎に読み込まれたモデルをキャッシュメモリに予め格納することも考えられる。しかしながら、結果的にはシステムコールの検証に用いられないモデルについても、キャッシュメモリに格納されるため、キャッシュメモリの使用量が増大する。
【００１９】
そこで、本発明は、上述した課題を解決するためになされたものであり、ソフトウェアの挙動の検証速度を向上させ、キャッシュメモリの使用量の増大を抑制しながら、ソフトウェアの挙動を簡易に検証することを可能とするソフトウェア挙動モデル化装置、ソフトウェア挙動モデル化方法、ソフトウェア挙動検証装置及びソフトウェア挙動検証方法を提供することを目的とする。
【課題を解決するための手段】
【００２０】
本発明の一の特徴では、フトウェアの挙動をモデル化するソフトウェア挙動モデル化装置は、前記ソフトウェアの実行中に発生したｉ−１番目のイベントを示すイベント情報（ｉ−１）と、前記ソフトウェアの実行中に発生したｉ番目のイベントを示すイベント情報（ｉ）を取得するイベント情報取得部（イベント情報取得部１１０）と、前記ｉ−１番目のイベントが発生した時点でコールスタックに格納されたスタック情報（ｉ−１）を取得するとともに、前記ｉ番目のイベントが発生した時点で前記コールスタックに格納されたスタック情報（ｉ）を取得するスタック情報取得部（スタック情報取得部１２０）と、前記スタック情報（ｉ）と前記スタック情報（ｉ−１）との差分である差分情報を取得する差分情報取得部（差分情報取得部１３０）と、前記イベント情報（ｉ）と前記差分情報とに基づいて、前記ソフトウェアの挙動モデルを生成するモデル生成部（挙動モデル生成部１４０）と、前記イベント情報（ｉ−１）と前記イベント情報（ｉ）と前記スタック情報（ｉ−１）と前記スタック情報（ｉ）とに基づいて、前記ソフトウェアにおけるイベントの関係をパターン化した出現パターンを生成する出現パターン生成部（出現パターン生成部１５０）とを備える。
【００２１】
なお、以下において、イベント情報（ｉ−１）及びイベント情報（ｉ）は同時に取得しなくてもよいことは勿論である。すなわち、ｉ−１番目のイベントが発生した際にイベント情報（ｉ−１）を取得して記憶した後に、ｉ番目のイベントが発生した際にイベント情報（ｉ）を取得する。
【００２２】
かかる特徴によれば、出現パターン生成部は、イベント情報（ｉ−１）とイベント情報（ｉ）とスタック情報（ｉ−１）とスタック情報（ｉ）とに基づいて出現パターンを生成し、モデル生成部は、スタック情報（ｉ）とスタック情報（ｉ−１）との差分情報とイベント情報（ｉ）とに基づいて挙動モデルを生成する。
【００２３】
従って、ソフトウェアの挙動を監視する際において、ｉ番目のイベントにおいて出現パターンが一致した場合には、ｉ番目のイベントが正当である可能性が高い。出現パターンと挙動モデルとを組み合わせることによって、正当である可能性が高いイベントについて、過剰な処理（スタック情報（ｉ）の取得、差分情報の取得、ソフトウェアの挙動の検証など）を省略することができる。
【００２４】
また、挙動モデルがイベント単位で生成されるため、挙動モデルが関数単位で生成される場合に比べて、挙動モデルのデータ量の増大を抑制することができる。
【００２５】
従って、ソフトウェアの挙動の検証速度を向上させ、キャッシュメモリの使用量の増大を抑制しながら、ソフトウェアの挙動を簡易に検証することができる。
【００２６】
本発明の上述した特徴において、前記スタック情報（ｉ−１）及び前記スタック情報（ｉ）は、リターンアドレス列であることが好ましい。
【００２７】
本発明の上述した特徴において、前記出現パターン生成部は、前記ソフトウェアの実行中において順に発生した所定数のイベントについて、前記ソフトウェアにおけるイベントの関係をパターン化した出現パターンを生成することが好ましい。
【００２８】
本発明の上述した特徴において、前記出現パターン生成部は、前記出現パターンのうち、特定の出現パターンを除外することが好ましい。
【００２９】
本発明の上述した特徴において、前記特定の出現パターンは、前記出現パターンのうち、出現頻度が所定値よりも低い出現パターンであることが好ましい。
【００３０】
本発明の上述した特徴において、前記特定の出現パターンは、前記出現パターンのうち、前記出現パターンの一部分のみが一致しており、前記出現パターンの他部分が一致していない出現パターンであることが好ましい。
【００３１】
本発明の上述した特徴において、前記出現パターン生成部は、前記スタック情報（ｉ）の情報量が所定値以上である場合にのみ、前記ｉ番目のイベントを対象として前記出現パターンを生成することが好ましい。
【００３２】
本発明の一の特徴では、ソフトウェアの挙動をモデル化するソフトウェア挙動モデル化方法は、前記ソフトウェアの実行中に発生したｉ−１番目のイベントを示すイベント情報（ｉ−１）と、前記ソフトウェアの実行中に発生したｉ番目のイベントを示すイベント情報（ｉ）を取得するステップＡと、前記ｉ−１番目のイベントが発生した時点でコールスタックに格納されたスタック情報（ｉ−１）を取得するとともに、前記ｉ番目のイベントが発生した時点で前記コールスタックに格納されたスタック情報（ｉ）を取得するステップＢと、前記スタック情報（ｉ）と前記スタック情報（ｉ−１）との差分である差分情報を取得するステップＣと、前記イベント情報（ｉ）と前記差分情報とに基づいて、前記ソフトウェアの挙動モデルを生成するステップＤと、前記イベント情報（ｉ−１）と前記イベント情報（ｉ）と前記スタック情報（ｉ−１）と前記スタック情報（ｉ）とに基づいて、前記ソフトウェアにおけるイベントの関係をパターン化した出現パターンを生成するステップＥとを含む。
【００３３】
本発明の一の特徴では、ソフトウェアの挙動を検証するソフトウェア挙動検証装置は、前記ソフトウェアの実行中に発生したｉ−１番目のイベントを示すイベント情報（ｉ−１）と、前記ソフトウェアの実行中に発生したｉ番目のイベントを示すイベント情報（ｉ）を取得するイベント情報取得部（イベント情報取得部２１０）と、前記ｉ−１番目のイベントが発生した時点でコールスタックに格納されたスタック情報（ｉ−１）を取得するとともに、前記ｉ番目のイベントが発生した時点で前記コールスタックに格納されたスタック情報（ｉ）を取得するスタック情報取得部（スタック情報取得部２２０）と、前記スタック情報（ｉ）と前記スタック情報（ｉ−１）との差分である差分情報を取得する差分情報取得部（差分情報取得部２６０）と、前記イベント情報（ｉ−１）と前記イベント情報（ｉ）と前記スタック情報（ｉ−１）とに基づいて、前記ソフトウェアにおけるイベントの関係をパターン化した出現パターンを特定する出現パターン特定部（出現パターン特定部２３０）と、第１イベントが発生した時点で前記コールスタックに格納されるべき第１スタック情報と第２イベントが発生した時点で前記コールスタックに格納されるべき第２スタック情報との差分情報と前記第２イベントとの関係をモデル化した挙動モデルを取得する挙動モデル取得部（挙動モデル取得部２７０）と、前記第１イベントと前記第２イベントと前記第１スタック情報と前記第２スタック情報との関係をパターン化した出現パターンを取得する出現パターン取得部（出現パターン取得部２４０）と、前記イベント情報取得部によって取得された前記イベント情報（ｉ）と前記差分情報取得部によって取得された前記差分情報とに基づいて、前記ソフトウェアの挙動が前記挙動モデルから乖離しているか否かを検証する挙動検証部（挙動検証部２８０）と、前記出現パターン特定部によって特定された前記出現パターンが前記出現パターン取得部によって取得された前記出現パターンと一致するか否かを判定するパターンマッチング部（パターンマッチング部２５０）とを備える。
【００３４】
本発明の上述した特徴において、前記挙動検証部は、前記パターンマッチング部によって前記出現パターンが一致すると判定された場合に、前記ソフトウェアの挙動が前記挙動モデルから乖離しているか否かの検証を省略して、前記ソフトウェアの挙動が正常であると判定することが好ましい。
【００３５】
本発明の上述した特徴において、前記パターンマッチング部は、前記ソフトウェアの実行中において順に発生したｋ回のイベントについて前記出現パターンが一致すると判定した場合に、ｋ＋１回目のイベントについて、前記出現パターンが一致するか否かの判定を省略して、スタック情報（ｉ＋１）を取得することが好ましい。
【００３６】
本発明の上述した特徴において、前記スタック情報取得部は、前記パターンマッチング部によって前記出現パターンが一致すると判定された場合に、前記スタック情報（ｉ）の取得を省略することが好ましい。
【００３７】
本発明の上述した特徴において、前記差分情報取得部は、前記パターンマッチング部によって前記出現パターンが一致すると判定された場合に、前記差分情報の取得を省略することが好ましい。
【００３８】
本発明の一の特徴では、ソフトウェアの挙動を検証するソフトウェア挙動検証方法は、前記ソフトウェアの実行中に発生したｉ−１番目のイベントを示すイベント情報（ｉ−１）と、前記ソフトウェアの実行中に発生したｉ番目のイベントを示すイベント情報（ｉ）を取得するステップＡと、前記ｉ−１番目のイベントが発生した時点でコールスタックに格納されたスタック情報（ｉ−１）を取得するとともに、前記ｉ番目のイベントが発生した時点で前記コールスタックに格納されたスタック情報（ｉ）を取得するステップＢと、前記スタック情報（ｉ）と前記スタック情報（ｉ−１）との差分である差分情報を取得するステップＣと、前記イベント情報（ｉ−１）と前記イベント情報（ｉ）と前記スタック情報（ｉ−１）とに基づいて、前記ソフトウェアにおけるイベントの関係をパターン化した出現パターンを特定するステップＤと、第１イベントが発生した時点で前記コールスタックに格納されるべき第１スタック情報と第２イベントが発生した時点で前記コールスタックに格納されるべき第２スタック情報との差分情報と前記第２イベントとの関係をモデル化した挙動モデルを取得するステップＥと、前記第１イベントと前記第２イベントと前記第１スタック情報と前記第２スタック情報との関係をパターン化した出現パターンを取得するステップＦと、前記ステップＡで取得された前記イベント情報（ｉ）と前記ステップＢで取得された前記差分情報とに基づいて、前記ソフトウェアの挙動が前記挙動モデルから乖離しているか否かを検証するステップＧと、前記ステップＤで特定された前記出現パターンが前記ステップＦで取得された前記出現パターンと一致するか否かを判定するステップＨとを含む。
【００３９】
本発明の上述した特徴において、前記ステップＧでは、前記ステップＨで前記出現パターンが一致すると判定された場合に、前記ソフトウェアの挙動が前記挙動モデルから乖離しているか否かの検証を省略して、前記ソフトウェアの挙動が正常であると判定することが好ましい。
【発明の効果】
【００４０】
本発明によれば、ソフトウェアの挙動の検証速度を向上させ、キャッシュメモリの使用量の増大を抑制しながら、ソフトウェアの挙動を簡易に検証することを可能とするソフトウェア挙動モデル化装置、ソフトウェア挙動モデル化方法、ソフトウェア挙動検証装置及びソフトウェア挙動検証方法を提供することができる。
【発明を実施するための最良の形態】
【００４１】
以下において、本発明の実施形態に係るソフトウェア挙動モデル化装置及びソフトウェア挙動検証装置について、図面を参照しながら説明する。なお、以下の図面の記載において、同一又は類似の部分には、同一又は類似の符号を付している。
【００４２】
ただし、図面は模式的なものであり、各寸法の比率などは現実のものとは異なることに留意すべきである。従って、具体的な寸法などは以下の説明を参酌して判断すべきである。また、図面相互間においても互いの寸法の関係や比率が異なる部分が含まれていることは勿論である。
【００４３】
［第１実施形態］
（ソフトウェア挙動モデル化装置）
以下において、第１実施形態に係るソフトウェア挙動モデル化装置の構成について、図面を参照しながら説明する。図１は、第１実施形態に係るソフトウェア挙動モデル化装置１００の構成を示すブロック図である。
【００４４】
図１に示すように、ソフトウェア挙動モデル化装置１００は、監視対象ソフトウェア（プログラム）の正常挙動をモデル化して、監視対象ソフトウェアの挙動モデルを生成する。具体的には、ソフトウェア挙動モデル化装置１００は、イベント情報取得部１１０と、スタック情報取得部１２０と、差分情報取得部１３０と、挙動モデル生成部１４０と、出現パターン生成部１５０とを備える。
【００４５】
イベント情報取得部１１０は、監視対象ソフトウェアの実行中において、監視対象ソフトウェアに含まれる各プロセスが発行するイベント（例えば、システムコール）を示すシステムコール情報を取得する。システムコールは、ソフトウェアに含まれるプロセスがオペレーションシステム（カーネル）に重要な処理を依頼する際に発行される命令である。
【００４６】
具体的には、イベント情報取得部１１０は、ｉ−１番目のシステムコールを示すシステムコール情報（ｉ−１）と、ｉ番目のシステムコールを示すシステムコール情報（ｉ）とを取得する。なお、ｉは自然数であることに留意すべきである。
【００４７】
スタック情報取得部１２０は、コールスタックに格納された情報であるスタック情報を取得する。スタック情報は、複数のリターンアドレスがコールスタックに格納されている順に記録されたものである。リターンアドレスは、プロセスの実行中に呼ばれたサブルーチンが終了した際に、処理を戻すべきプロセスのアドレスである。
【００４８】
ここで、第１実施形態では、コールスタックには、コールスタックの下位（底）からコールスタックの上位に向けて、複数のリターンアドレスが処理順序に従って格納されている。例えば、各リターンアドレスの格納位置としては、コールスタックの上位から順に、すなわち、最も直近に処理されたリターンアドレス順に、「０」、「１」・・・「ｎ」が割り当てられている。
【００４９】
具体的には、スタック情報取得部１２０は、ｉ−１番目のシステムコールが発行された時点でコールスタックに格納されたスタック情報（ｉ−１）と、ｉ番目のシステムコールが発行された時点でコールスタックに格納されたスタック情報（ｉ）とを取得する。
【００５０】
差分情報取得部１３０は、スタック情報（ｉ）とスタック情報（ｉ−１）との差分である差分情報を取得する。
【００５１】
例えば、図２（ａ）に示すように、スタック情報（ｉ−１）がリターンアドレスｍ、ｙ、ｘ、ｐ、ｑ、ｒ及びｓであり、スタック情報（ｉ）がリターンアドレスｍ、ｙ、ｘ、ｆ、ｇ及びｈである場合を例に挙げる。図２（ｂ）に示すように、スタック情報（ｉ）とスタック情報（ｉ−１）との一致部分は、リターンアドレスｍ、ｙ及びｘである。一方で、図２（ｃ）に示すように、スタック情報（ｉ）とスタック情報（ｉ−１）との差分は、リターンアドレスｐ、ｑ、ｒ及びｓとリターンアドレスｆ、ｇ及びｈで有る。
【００５２】
従って、差分情報取得部１３０は、図２（ｄ）に示すように、リターンアドレスｈ、ｇ、ｆ、ｐ、ｑ、ｒ及びｓを差分情報として取得する。
【００５３】
挙動モデル生成部１４０は、イベント情報取得部１１０からシステムコール情報を取得するとともに、差分情報取得部１３０から差分情報を取得する。挙動モデル生成部１４０は、システムコール情報及び差分情報に基づいて、監視対象ソフトウェアの挙動モデルを生成する。
【００５４】
具体的には、挙動モデル生成部１４０は、差分情報取得部１３０によって取得された差分情報（スタック情報（ｉ）とスタック情報（ｉ−１）との差分）とシステムコール情報（ｉ）とに基づいて、監視対象ソフトウェアの挙動モデルを生成する。
【００５５】
出現パターン生成部１５０は、イベント情報取得部１１０からシステムコール情報を取得するとともに、スタック情報取得部１２０からスタック情報を取得する。出現パターン生成部１５０は、システムコール情報とスタック情報とに基づいて、監視対象ソフトウェアにおけるイベントの関係をパターン化した出現パターンを生成する。
【００５６】
具体的には、出現パターン生成部１５０は、システムコール情報（ｉ−１）とシステムコール情報（ｉ）とスタック情報（ｉ−１）とスタック情報（ｉ）とに基づいて、監視対象ソフトウェアにおける出現パターンを生成する。
【００５７】
ここで、スタック情報（ｉ−１）とスタック情報（ｉ）は、リターンアドレス列そのものであってもよく、リターンアドレス列を識別する識別子であってもよい。
【００５８】
例えば、出現パターン生成部１５０は、図３に示すように、システムコール情報（Ｓ１）とスタック情報（Ｔ１）とシステムコール情報（Ｓ２）とスタック情報（Ｔ２）との組み合わせを出現パターン（出現パターン１）として生成する。同様に、出現パターン生成部１５０は、出現パターン２〜出現パターン４などを生成する。
【００５９】
ここで、出現パターン生成部１５０は、出現パターンのうち、特定の出現パターンを除外してもよい。具体的には、出現パターン生成部１５０は、出現パターンのうち、出現頻度（出現回数）が所定値よりも低い出現パターンを除外してもよい。また、出現パターン生成部１５０は、出現パターンのうち、出現パターンの一部分が一致しており、出現パターンの他部分が一致していない出現パターンを除外してもよい。
【００６０】
具体的には、出現パターン生成部１５０は、出現パターンのうち、システムコール情報（ｉ−１）、システムコール情報（ｉ）及びスタック情報（ｉ−１）が一致しており、スタック情報（ｉ）が一致しない出現パターンを除外してもよい。例えば、図３に示すように、出現パターン１及び出現パターン３では、システムコール情報（ｉ−１）、システムコール情報（ｉ）及びスタック情報（ｉ−１）が“Ｓ１−Ｔ１−Ｓ２”で一致しているが、スタック情報（ｉ）が“Ｔ２／Ｔ３”で一致していない。従って、出現パターン生成部１５０は、出現パターン１及び出現パターン３を除外する。
【００６１】
（ソフトウェア挙動モデル化方法）
以下において、第１実施形態に係るソフトウェア挙動モデル化方法について、図面を参照しながら説明する。図４は、第１実施形態に係るソフトウェア挙動モデル化方法を示すフロー図である。なお、図４では、監視対象ソフトウェアが正常に動作することを前提として説明する。
【００６２】
図４に示すように、ステップ１０において、ソフトウェア挙動モデル化装置１００は、監視対象ソフトウェアの挙動モデルを生成するために必要な情報の学習を開始する。
【００６３】
ステップ１１において、ソフトウェア挙動モデル化装置１００は、監視対象ソフトウェアに含まれる各プロセスが発行するシステムコールを示すシステムコール情報を取得する。具体的には、ソフトウェア挙動モデル化装置１００は、ｉ−１番目のシステムコールを示すシステムコール情報（ｉ−１）と、ｉ番目のシステムコールを示すシステムコール情報（ｉ）とを取得する。
【００６４】
ステップ１２において、ソフトウェア挙動モデル化装置１００は、システムコールが発生した時点において、コールスタックに格納されているスタック情報を取得する。具体的には、ソフトウェア挙動モデル化装置１００は、ｉ−１番目のシステムコールが発生した時点でコールスタックに格納されているスタック情報（ｉ−１）と、ｉ番目のシステムコールが発生した時点でコールスタックに格納されているスタック情報（ｉ）とを取得する。
【００６５】
ステップ１３において、ソフトウェア挙動モデル化装置１００は、スタック情報（ｉ）とスタック情報（ｉ−１）との差分である差分情報を取得する。
【００６６】
ステップ１４において、ソフトウェア挙動モデル化装置１００は、システムコール情報（ｉ）と、スタック情報（ｉ）とスタック情報（ｉ−１）との差分情報とに基づいて、監視対象ソフトウェアの挙動モデルを生成する。
【００６７】
ステップ１５において、ソフトウェア挙動モデル化装置１００は、システムコール情報（ｉ−１）とシステムコール情報（ｉ）とスタック情報（ｉ−１）とスタック情報（ｉ）とに基づいて、監視対象ソフトウェアにおける出現パターンを生成する。
【００６８】
具体的には、図５に示すように、ステップ１５１において、ソフトウェア挙動モデル化装置１００は、全ての出現パターンを取得するまで待ち状態となる。
【００６９】
ステップ１５２において、ソフトウェア挙動モデル化装置１００は、出現パターンの重複を排除する。また、ソフトウェア挙動モデル化装置１００は、出現パターンの出現頻度（出現回数）を算出する。
【００７０】
ステップ１５３において、ソフトウェア挙動モデル化装置１００は、出現パターンの一部分が一致しており、出現パターンの他部分が一致していない出現パターンを除外する。
【００７１】
ステップ１５４において、ソフトウェア挙動モデル化装置１００は、出現頻度が所定値よりも低い出現パターンを除外する。
【００７２】
ステップ１６において、ソフトウェア挙動モデル化装置１００は、挙動モデルの生成が完了したか否か、例えば、監視対象ソフトウェアの実行が終了したか否かを判定する。ソフトウェア挙動モデル化装置１００は、挙動モデルの生成が完了した場合には、一連の処理を終了する。一方で、ソフトウェア挙動モデル化装置１００は、挙動モデルの生成が完了していない場合には、ステップ１１〜ステップ１５の処理を繰り返す。
【００７３】
なお、ステップ１５２〜ステップ１５４の処理のうち、いずれか一つの処理又は二つの処理のみが行われてもよい。また、ステップ１５２〜ステップ１５４の処理は省略されてもよい。
【００７４】
（作用及び効果）
第１実施形態に係るソフトウェア挙動モデル化装置１００（ソフトウェア挙動モデル化方法）によれば、出現パターン生成部１５０は、システムコール情報（ｉ−１）とシステムコール情報（ｉ）とスタック情報（ｉ−１）とスタック情報（ｉ）とに基づいて出現パターンを生成し、挙動モデル生成部１４０は、スタック情報（ｉ）とスタック情報（ｉ−１）との差分情報とシステムコール情報（ｉ）とに基づいて挙動モデルを生成する。
【００７５】
従って、ソフトウェアの挙動を監視する際において、ｉ番目のシステムコールにおいて出現パターンが一致した場合には、ｉ番目のシステムコールが正当である可能性が高い。出現パターンと挙動モデルとを組み合わせることによって、正当である可能性が高いシステムコールについて、過剰な処理（スタック情報（ｉ）の取得、差分情報の取得、ソフトウェアの挙動の検証など）を省略することが可能となる。
【００７６】
また、挙動モデルがシステムコール単位で生成されるため、挙動モデルが関数単位で生成される場合に比べて、挙動モデルのデータ量の増大を抑制することができる。
【００７７】
従って、ソフトウェアの挙動の検証速度を向上させ、キャッシュメモリの使用量の増大を抑制しながら、ソフトウェアの挙動を簡易に検証することができる。［第２実施形態］
（ソフトウェア挙動検証装置）
以下において、第２実施形態に係るソフトウェア挙動検証装置の構成について、図面を参照しながら説明する。図６は、第２実施形態に係るソフトウェア挙動検証装置２００の構成を示すブロック図である。
【００７８】
図６に示すように、ソフトウェア挙動検証装置２００は、イベント情報取得部２１０と、スタック情報取得部２２０と、出現パターン特定部２３０と、出現パターン取得部２４０と、パターンマッチング部２５０と、差分情報取得部２６０と、挙動モデル取得部２７０と、挙動検証部２８０とを備える。
【００７９】
イベント情報取得部２１０は、監視対象ソフトウェアの実行中において、監視対象ソフトウェアに含まれる各プロセスが発行する特定のイベント（システムコール）を示すシステムコール情報を取得する。
【００８０】
具体的には、イベント情報取得部２１０は、ｉ−１番目のシステムコールを示すシステムコール情報（ｉ−１）と、ｉ番目のシステムコールを示すシステムコール情報（ｉ）とを取得する。なお、ｉは自然数であることに留意すべきである。
【００８１】
スタック情報取得部２２０は、システムコールが発生した時点において、コールスタックに格納されたスタック情報を取得する。
【００８２】
具体的には、スタック情報取得部２２０は、ｉ−１番目のシステムコールが発行された時点でコールスタックに格納されたスタック情報（ｉ−１）を取得する。なお、スタック情報取得部２２０は、パターンマッチング部２５０の指示に応じて、ｉ番目のシステムコールが発行された時点でコールスタックに格納されたスタック情報（ｉ）とを取得する。
【００８３】
出現パターン特定部２３０は、システムコール情報（ｉ−１）とシステムコール情報（ｉ）とスタック情報（ｉ−１）とに基づいて、監視対象ソフトウェアにおける出現パターンを特定する。
【００８４】
出現パターン取得部２４０は、第１実施形態で示したように、システムコール情報及びスタック情報を用いてパターン化された出現パターンを取得する。ここで、挙動モデル取得部２７０は、監視対象ソフトウェアに対応する出現パターンを取得することは勿論である。
【００８５】
パターンマッチング部２５０は、出現パターン特定部２３０によって特定された出現パターンが出現パターン取得部２４０によって取得された出現パターンと一致するか否かを判定する。
【００８６】
ここで、パターンマッチング部２５０は、出現パターンが一致しない場合には、スタック情報（ｉ）の取得をスタック情報取得部２２０に指示する。
【００８７】
すなわち、スタック情報取得部２２０は、出現パターンが一致する場合には、スタック情報（ｉ）の取得を省略する。差分情報取得部２６０は、出現パターンが一致する場合には、差分情報の取得を省略する。挙動検証部２８０は、出現パターンが一致する場合には、挙動モデルから乖離しているか否かの検証を省略する。
【００８８】
パターンマッチング部２５０は、出現パターンが一致すると判定した場合には、出現パターン取得部２４０によって取得された出現パターンからスタック情報（ｉ）を取得して、出現パターンから取得したスタック情報（ｉ）を差分情報取得部２６０に出力してもよい。なお、出現パターンから取得したスタック情報（ｉ）は、ｉ＋１番目のシステムコールが発生した際に、出現パターンの一致判定（マッチング）や差分情報の取得に用いられる。
【００８９】
差分情報取得部２６０は、パターンマッチング部２５０の指示に応じて、スタック情報（ｉ）とスタック情報（ｉ−１）との差分である差分情報を取得する。
【００９０】
挙動モデル取得部２７０は、第１実施形態で示したように、システムコール情報及びスタック情報を用いてモデル化された挙動モデルを取得する。ここで、挙動モデル取得部２７０は、監視対象ソフトウェアに対応する挙動モデルを取得することは勿論である。
【００９１】
挙動検証部２８０は、パターンマッチング部２５０の指示に応じて、監視対象ソフトウェアの挙動が挙動モデルから乖離しているか否かを検証する。具体的には、挙動検証部２８０は、差分情報取得部２６０によって取得された差分情報とシステムコール情報（ｉ）とに基づいて、監視対象ソフトウェアの挙動が挙動モデルから乖離しているか否かを検証する。
【００９２】
このように、第２実施形態では、パターンマッチング部２５０によって出現パターンが一致すると判定された場合に、スタック情報（ｉ）の取得、差分情報の取得、監視対象ソフトウェアの挙動が挙動モデルから乖離しているか否かの検証が省略される。
【００９３】
（ソフトウェア挙動検証方法）
以下において、第２実施形態に係るソフトウェア挙動検証方法について、図面を参照しながら説明する。図７は、第２実施形態に係るソフトウェア挙動検証方法を示すフロー図である。
【００９４】
図７に示すように、ステップ２０において、ソフトウェア挙動検証装置２００は、監視対象ソフトウェアの挙動モデルを取得する。
【００９５】
ステップ２１において、ソフトウェア挙動検証装置２００は、監視対象ソフトウェアにおける出現パターンを取得する。
【００９６】
ステップ２２において、ソフトウェア挙動検証装置２００は、監視対象ソフトウェアの監視を開始する。
【００９７】
ステップ２３において、ソフトウェア挙動検証装置２００は、監視対象ソフトウェアに含まれる各プロセスが発行するシステムコールを示すシステムコール情報を取得する。具体的には、ソフトウェア挙動検証装置２００は、ｉ−１番目のシステムコールを示すシステムコール情報（ｉ−１）と、ｉ番目のシステムコールを示すシステムコール情報（ｉ）とを取得する。
【００９８】
ステップ２４において、ソフトウェア挙動検証装置２００は、システムコールが発生した時点において、コールスタックに格納されているスタック情報を取得する。具体的には、ソフトウェア挙動検証装置２００は、ｉ−１番目のシステムコールが発生した時点でコールスタックに格納されているスタック情報（ｉ−１）を取得する。
【００９９】
なお、ｉ−１番目のシステムコールが発生した際に、出現パターンからスタック情報（ｉ−１）が既に取得されている場合には、ステップ２４の処理を省略することが可能であることに留意すべきである。
【０１００】
ステップ２５において、ソフトウェア挙動検証装置２００は、システムコール情報（ｉ−１）とシステムコール情報（ｉ）とスタック情報（ｉ−１）とに基づいて、監視対象ソフトウェアにおける出現パターンを特定する。
【０１０１】
ステップ２６において、ソフトウェア挙動検証装置２００は、ステップ２５で特定された出現パターンがステップ２１で取得された出現パターンと一致するか否かを判定する。ソフトウェア挙動検証装置２００は、出現パターンが一致する場合には、ステップ３０の処理に移る。一方で、ソフトウェア挙動検証装置２００は、出現パターンが一致しない場合には、ステップ２７の処理に移る。
【０１０２】
ステップ２７において、ソフトウェア挙動検証装置２００は、ｉ番目のシステムコールが発生した時点でコールスタックに格納されているスタック情報（ｉ）を取得する。
【０１０３】
ステップ２８において、ソフトウェア挙動検証装置２００は、スタック情報（ｉ）とスタック情報（ｉ−１）との差分である差分情報を取得する。
【０１０４】
ステップ２９において、ソフトウェア挙動検証装置２００は、ステップ２８で取得された差分情報とシステムコール情報（ｉ）とに基づいて、監視対象ソフトウェアの挙動が挙動モデルから乖離しているか否かを検証する。
【０１０５】
ステップ３０において、ソフトウェア挙動検証装置２００は、監視対象ソフトウェアの実行が終了したか否かを判定する。ソフトウェア挙動検証装置２００は、監視対象ソフトウェアの実行が終了していない場合には、ステップ２３〜ステップ２９の処理を繰り返す。
【０１０６】
（作用及び効果）
第２実施形態に係るソフトウェア挙動検証装置２００（ソフトウェア挙動検証方法）によれば、挙動検証部２８０は、パターンマッチング部２５０によって出現パターンが一致すると判定された場合に、監視対象ソフトウェアの挙動が挙動モデルから乖離しているか否かの検証を省略して、監視対象ソフトウェアの挙動が正当であると判定する。
【０１０７】
従って、ソフトウェア挙動検証装置２００（ソフトウェア挙動検証方法）は、正当である可能性が高いシステムコールについて、過剰な処理（スタック情報（ｉ）の取得、差分情報の取得、ソフトウェアの挙動の検証など）を省略することができる。
【０１０８】
従って、ソフトウェアの挙動の検証速度を向上させ、キャッシュメモリの使用量の増大を抑制しながら、ソフトウェアの挙動を簡易に検証することができる。
【０１０９】
［その他の実施形態］
本発明は上述した実施形態によって説明したが、この開示の一部をなす論述及び図面は、この発明を限定するものであると理解すべきではない。この開示から当業者には様々な代替実施形態、実施例及び運用技術が明らかとなろう。
【０１１０】
例えば、上述した実施形態では、出願パターンは、システムコール情報（ｉ−１）とシステムコール情報（ｉ）とスタック情報（ｉ−１）とスタック情報（ｉ）とに基づいて生成されるが、これに限定されるものではない。具体的には、出願パターンは、システムコール情報（ｉ−ｎ）〜システムコール情報（ｉ）とスタック情報（ｉ−ｎ）〜スタック情報（ｉ）とに基づいて生成されてもよい。すなわち、ソフトウェアの実行中において順に発生した所定数（ｎ個）のシステムコールについて、一つの出願パターンが生成されてもよい。
【０１１１】
上述した第１実施形態では特に触れていないが、出現パターン生成部１５０は、スタック情報（ｉ）の情報量（リターンアドレス列の長さ）が所定値以上である場合に、ｉ番目のシステムコールを対象として出現パターンを生成してもよい。
【図面の簡単な説明】
【０１１２】
【図１】第１実施形態に係るソフトウェア挙動モデル化装置１００の構成を示すブロック図である。
【図２】第１実施形態に係るスタック情報の一例を示す図である。
【図３】第１実施形態に係る出現パターンの一例を示す図である。
【図４】第１実施形態に係るソフトウェア挙動モデル化方法を示すフロー図である。
【図５】第１実施形態に係るソフトウェア挙動モデル化方法を示すフロー図である。
【図６】第２実施形態に係るソフトウェア挙動検証装置２００の構成を示すブロック図である。
【図７】第２実施形態に係るソフトウェア挙動検証方法を示すフロー図である。
【符号の説明】
【０１１３】
１００・・・ソフトウェア挙動モデル化装置、１１０・・・イベント情報取得部、１２０・・・スタック情報取得部、１３０・・・差分情報取得部、１４０・・・挙動モデル生成部、１５０・・・出現パターン生成部、２００・・・ソフトウェア挙動検証装置、２１０・・・イベント情報取得部、２２０・・・スタック情報取得部、２３０・・・出現パターン特定部、２４０・・・出現パターン取得部、２５０・・・パターンマッチング部、２６０・・・差分情報取得部、２７０・・・挙動モデル取得部、２８０・・・挙動検証部
【図１】
2008305085.tif 000003
【図２】
2008305085.tif 000004
【図３】
2008305085.tif 000005
【図４】
2008305085.tif 000006
【図５】
2008305085.tif 000007
【図６】
2008305085.tif 000008
【図７】
2008305085.tif 000009