(57)【要約】【課題】複数の侵入検知装置を備えるコンピュータシステムにおいて、迂回攻撃を迅速に検出できる手段を提供すること。【解決手段】プロセスの実行順序に従って呼び出す複数の侵入検知装置（１１１〜１１３）を備えるコンピュータシステムにおいて、侵入検知装置（１１１〜１１３）を迂回する迂回攻撃を検知する監査装置１２０が実行する攻撃検出方法であって、前記の監査装置１２０が、コンピュータシステムで実行される所定の処理単位における侵入検知装置（１１１〜１１３）の使用回数を計測し、所定の処理単位において、すべての侵入検知装置（１１１〜１１３）の使用後に、計測した使用回数と予め設定された侵入検知装置（１１１〜１１３）の使用数である計画数とを比較し、計測した使用回数と計画数が一致しない場合に、異常を示す信号を出力する攻撃検出方法とする。【選択図】図１
2008242915.tif 000002
【特許請求の範囲】
【請求項１】
プロセスの実行順序に従って呼び出す複数の侵入検知装置を備えるコンピュータシステムにおいて、前記侵入検知装置を迂回する迂回攻撃を検知する監査装置が実行する攻撃検出方法であって、
前記監査装置が、
前記コンピュータシステムで実行される所定の処理単位における前記侵入検知装置の使用回数を計測し、
前記所定の処理単位において、すべての前記侵入検知装置の使用後に、前記計測した使用回数と予め設定された前記侵入検知装置の使用数である計画数とを比較し、
前記計測した使用回数と前記計画数が一致しない場合に、異常を示す信号を出力する
ことを特徴とする攻撃検出方法。
【請求項２】
前記使用回数は、各前記侵入検知装置が使用されたことを示す信号を受信することで計測される
ことを特徴とする請求項１に記載の攻撃検出方法。
【請求項３】
プロセスの実行順序に従って呼び出す複数の侵入検知装置を備えるコンピュータシステムにおいて、前記侵入検知装置を迂回する迂回攻撃を検知する監査装置が実行する攻撃検出方法であって、
前記監査装置は、第１レジスタ、第２レジスタ、減算器及び比較器を備え、
前記コンピュータシステムで実行される所定の処理単位において、予め設定された前記侵入検知装置の使用数である計画数が、前記第１レジスタに記憶され、
前記減算器が、前記所定の処理単位の入口において、前記第１レジスタの値を前記第２レジスタの初期値に設定し、
前記減算器が、前記侵入検知装置が使用されたことを示す信号を取得すると、前記第２レジスタから１を減算し、
前記比較器が、前記所定の処理単位の出口において、前記第２レジスタの値が０でなければ異常と判定する
ことを特徴とする攻撃検出方法。
【請求項４】
前記所定の処理単位は、前記プロセスが発行するシステムコールであり、前記計画数は、前記システムコールごとに設定された値である
ことを特徴とする請求項１ないし請求項３のいずれか１項に記載の攻撃検出方法。
【請求項５】
前記所定の処理単位は、前記プロセスであり、前記計画数は、前記プロセスごとに設定された値である
ことを特徴とする請求項１ないし請求項３のいずれか１項に記載の攻撃検出方法。
【請求項６】
プロセスの実行順序に従って呼び出す複数の侵入検知装置を備えるコンピュータシステムにおいて、前記侵入検知装置を迂回する迂回攻撃を検知する監査装置が実行する攻撃検出方法であって、
前記監査装置は、第１レジスタ、第２レジスタ、第３レジスタ、第１加算器、第２加算器、乗算器及び比較器を備え、
前記プロセスが発行するシステムコールにおいて、予め設定された前記侵入検知装置の使用数である計画数が、前記第１レジスタに記憶され、
前記プロセスの入口において、前記第１加算器が前記第２レジスタを０に設定して、前記第２加算器が前記第３レジスタを０に設定し、
前記第２加算器が、前記システムコールが発行されるたびに、前記第３レジスタの値に１を加算し、
前記第１加算器が、前記プロセスにおいて、前記侵入検知装置が使用されたことを示す信号を取得するたびに前記第２レジスタに１を加算し、
前記乗算器が、前記プロセスの出口において、前記第２レジスタ及び前記第３レジスタの値を乗算して出力し、
前記比較器が、前記乗算器の出力と、前記第１レジスタの値とが一致しない場合に、異常を示す信号を出力する
ことを特徴とする攻撃検出方法。
【請求項７】
プロセスの実行順序に従って呼び出す複数の侵入検知装置を備えるコンピュータシステムにおいて、前記侵入検知装置を迂回する迂回攻撃を検知する監査装置であって、
前記コンピュータシステムで実行される所定の処理単位において、予め設定された前記侵入検知装置の使用数である計画数を記憶する第１レジスタと、
前記侵入検知装置が使用されるたびに減算される第２レジスタと、
前記所定の処理単位の入口において、前記第１レジスタの値を、前記第２レジスタに記憶し、前記所定の処理単位において、前記侵入検知装置が使用されたことを示す信号を取得するたびに前記第２レジスタから１を減算する減算器と、
前記所定の処理単位の出口において、前記第２レジスタが０であるか否かを判定し、０ではない場合に、異常を示す信号を出力する比較器と、
を備えることを特徴とする監査装置。
【請求項８】
前記所定の処理単位は、前記プロセスが発行するシステムコールであり、前記計画数は、前記システムコールごとに設定された値である
ことを特徴とする請求項７に記載の監査装置。
【請求項９】
前記所定の処理単位は、前記プロセスであり、前記計画数は、前記プロセスごとに設定された値である
ことを特徴とする請求項８に記載の監査装置。
【請求項１０】
プロセスの実行順序に従って呼び出す複数の侵入検知装置を備えるコンピュータシステムにおいて、前記侵入検知装置を迂回する迂回攻撃を検知する監査装置であって、
前記プロセスが発行するシステムコールにおいて、予め設定された前記侵入検知装置の使用数である計画数を記憶する第１レジスタと、
前記侵入検知装置の実際の使用数が記憶される第２レジスタと、
前記システムコールの発行数が記憶される第３のレジスタと、
前記プロセスの入口において、前記第２レジスタを０に設定し、前記プロセスにおいて、前記侵入検知装置が使用されたことを示す信号を取得するたびに前記第２レジスタに１を加算する第１加算器と、
前記プロセスの入口において、前記第３レジスタを０に設定し、前記システムコールが発行されるたびに前記第３レジスタの値に１を加算する第２加算器と、
前記プロセスの出口において、前記第２レジスタ及び前記第３レジスタの値を乗算して出力する乗算器と、
前記乗算器の出力と、前記第１レジスタの値とが一致しない場合に、異常を示す信号を出力する比較器と、
を備えることを特徴とする監査装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラムの実行順序にしたがって、複数の侵入検知装置を呼び出すコンピュータシステムに関し、特に侵入検知装置を迂回する攻撃を検出する攻撃検出方法及び監査装置に関する。
【背景技術】
【０００２】
コンピュータシステムにおいて、外部から内部への不正アクセスを検知するために、複数の侵入検知装置（以下、検知装置と略す）を用いるセキュリティ技術がある。このような技術の例として、特許文献１には、網と網の中継装置から異種の検知装置を呼び出す方法が記載されている。また、特許文献２には、網の要所に同種の検知装置を配置する検知システムが記載されている。
【０００３】
このような検知装置の例として、例えば、特許文献３及び特許文献７に記載されたメモリ保護装置や、特許文献４に記載されたサンドボックスや、特許文献５に記載された強制アクセス制御装置や、特許文献６に記載された電子署名装置等が挙げられる。
【０００４】
前記のような侵入検知装置を複数備えるコンピュータシステムにおいて、各検知装置が発する警報を収集する監査装置を設置することがある。監査装置を設置することで、複数の検知装置の検査結果が記録され、これを調査することで、検知漏れの防止、侵入された計算機の特定が期待できる。一方で、従来技術では、検査対象であるコンピュータシステムや網の構成に応じて、検知装置の種類や配置を再調整しなければならない。
【０００５】
監査装置と検知装置とが独立した構成では、監査装置は、各検知装置からの警報の有無により各検知装置の状態を認知することができる。このとき、ある検知装置の警報が到着しない要因としては、（ａ）検知漏れの可能性、（ｂ）検知装置の無効化、（ｃ）装置や中継器の故障等が考えられる。ただし、従来技術の監査装置は、要因（ａ）と要因（ｂ）とを識別することはできない。
【０００６】
前記の要因（ｂ）の検知装置を無効化する攻撃は、障害の現れ方により、陰と陽とに分類でき、攻撃の種別に応じて検出方法も異なる。陽な攻撃、例えば、ＤｏＳ（denial of service）攻撃に対しては、コンピュータシステム資源の使用量を計測することで検出可能である。このため、コンピュータシステムによる検出の自動化は容易である。
一方、陰な攻撃、例えば、検知装置を迂回する攻撃に対しては、監査装置の監査履歴を、人手を使って参照することで検出可能である。この場合、コンピュータシステムによる検出の自動化は困難である。
【０００７】
前記の監査履歴とは、検知装置の内部処理を時系列に記録したものである。したがって、検知装置の内部処理のすべてが監査履歴として記録されるのが理想的である。しかし、監査装置の記憶媒体は有限であり、検知装置が異常を検知しない際は、監査履歴として残さない場合が一般的である。この場合、検知装置を迂回すると、監査履歴としては残らない。また、検知装置の内部処理のすべてを記録する場合であっても、履歴の前後関係から迂回がなされたことを類推するしかない。ゆえに、監査履歴から検知装置の迂回を抽出する作業は、人手による確認を少なからず必要とする。
なお、セキュリティ機能を迂回する陰な攻撃を、以下では迂回攻撃と呼ぶ。
【特許文献１】特表２００５−５１７３４９号公報
【特許文献２】特開２００４−０３０２８６号公報
【特許文献３】特開２００１−２１６１６１号公報
【特許文献４】特開２００５−１５７５０２号公報
【特許文献５】特表２００４−５２９４０８号公報
【特許文献６】特開平０３−０４１５３５号公報
【特許文献７】特開平１０−３３３９０２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
したがって、本発明の解決しようとする課題は、複数の侵入検知装置を備えるコンピュータシステムにおいて、迂回攻撃を迅速に検出できる手段を提供することである。
【課題を解決するための手段】
【０００９】
前記の課題を解決するために本発明は、プロセスの実行順序に従って呼び出す複数の侵入検知装置を備えるコンピュータシステムにおいて、侵入検知装置を迂回する迂回攻撃を検知する監査装置が実行する方法であって、前記の監査装置が、コンピュータシステムで実行される所定の処理単位における侵入検知装置の使用回数を計測し、所定の処理単位において、すべての侵入検知装置の使用後に、計測した使用回数と予め設定された侵入検知装置の使用数である計画数とを比較し、計測した使用回数と計画数が一致しない場合に、異常を示す信号を出力する攻撃検出方法を提供する。
【００１０】
本発明のその他の態様については、後記する実施の形態において詳しく説明する。
【発明の効果】
【００１１】
本発明によると、コンピュータシステムにおける処理単位の出口において、迂回攻撃の発生を検出することで迂回攻撃の検知が可能となり、迂回攻撃の検知にかかる時間を短縮することができる。
【発明を実施するための最良の形態】
【００１２】
以下、迂回攻撃を検出する監査装置またはそれを検出する方法について、本発明を適用した好適な実施の形態（以下、実施形態）に基づいて説明する。
【００１３】
（第１実施形態）
第１実施形態の特徴は、監査装置を、コンピュータシステムにおけるシステムコールの出口に設置したことにある。この構成により、（ａ）システムコールごとに検知装置の使用が確認できる、（ｂ）計画した検知装置について使用を確認できる、（ｃ）システムコールの出口に戻らない場合に、検知装置のみならず監査装置自体が迂回されたことがわかるという効果が得られる。
【００１４】
図１は、システムコールの出口に監査装置を設置したコンピュータシステムのブロック図の例である。図１を参照しつつ、本実施形態のコンピュータシステムの構成を説明する。
【００１５】
図１に示すように、コンピュータシステムは、実行中のプログラムのプロセスＰ１０１と、ＯＳ（Operating System）       においてコンピュータシステムのリソースを管理するカーネルＫ１０２と、ファイルを格納したデバイスＤ１０３と、３台の検知装置Ｓ１（１１１）、Ｓ２（１１２）、Ｓ３（１１３）とから構成される。このコンピュータシステムに監査装置Ｔ１２０が追加されている。この監査装置Ｔ１２０は、迂回攻撃を検出するための計数器（３０１又は５０１）を備えている。
【００１６】
なお、コンピュータシステムは、ハードウェア構成として、ＣＰＵ（Central Processing Unit）、ＲＡＭ（Random Access Memory）、ハードディスク等のストレージデバイスを備える。また、プロセスＰ１０１及びカーネルＫ１０２は、例えば、ストレージデバイスに記憶されたプロセスＰ１０１及びカーネルＫ１０２として実行されるプログラムを、ＲＡＭに展開してＣＰＵが実行することで具現される。
さらに、監査装置Ｔ１２０及び各検知装置Ｓ１（１１１）、Ｓ２（１１２）、Ｓ３（１１３）は、ストレージデバイスに記憶されたプログラムとして具現したり、コンピュータシステムに内蔵されたボード型コンピュータや、コンピュータシステムの外部に接続される他のコンピュータシステム等の専用のハードウェアとして具現することができる。また、計数器（３０１又は５０１）の構成及びその動作は後記する。
【００１７】
図１に示したコンピュータシステムでは、プロセスＰ１０１が発行するシステムコールｅの入口から、３台の検知装置Ｓ１（１１１）、Ｓ２（１１２）、Ｓ３（１１３）が、Ｓ１（１１１）→Ｓ２（１１２）→Ｓ３（１１３）の順に侵入検知を実行する。そして、各検知装置Ｓ１（１１１）、Ｓ２（１１２）、Ｓ３（１１３）は、その処理の出口において、異常の有無と併せて、自装置が使用されたことを監査装置Ｔ１２０に通知する。この通知を監査装置Ｔ１２０は記憶する。そして、カーネルＫ１０２は、すべての検知装置Ｓ１（１１１）、Ｓ２（１１２）、Ｓ３（１１３）の検査がなされ、異常が見つからない場合に、システムコールｅ処理の本体を実行する。たとえば、デバイスＤ１０３経由でファイルにアクセスした後に、システムコールｅの出口に戻る。そして、出口において、異常の有無を確認するために監査装置Ｔ１２０が呼び出される。
【００１８】
ここで、検知装置Ｓ２（１１２）、Ｓ３（１１３）を迂回する迂回攻撃が発生する場合を例にとると、３台の検知装置Ｓ１（１１１）、Ｓ２（１１２）、Ｓ３（１１３）のうちで、検知装置Ｓ１（１１１）では正常と判定するもの（実際には検知漏れ）の、検知装置Ｓ２ （１１２）及び検知装置Ｓ３（１１３）は使用されず、直接デバイスＤ１０３経由でファイルにアクセスする。これにより、本来ならばアクセスできないファイルが改ざんされたり、漏洩する恐れがある。また、プロセスＰ１０１の制御を奪取し、さらなる攻撃や侵入を繰り返す恐れもある。
【００１９】
図１に示したように、システムコールｅの出口に監査装置Ｔ１２０を設置することで、システムコールｅの出口で、監査装置Ｔ１２０が呼び出された際に、各検知装置Ｓ１（１１１）、Ｓ２（１１２）、Ｓ３（１１３）が使用されたことを示す通知を、監査装置Ｔ１２０が検知できないことにより、迂回攻撃が発生したと検出することができる。この場合、履歴を参照する従来方式にくらべてより早く迂回攻撃の検出が可能となる。
【００２０】
なお、ＯＳのプロセス制御方式によっては、システムコールｅの出口ではなく、デバイスＤ１０３を呼び出す入口において、監査装置Ｔを呼び出すこともできる。その際に、迂回攻撃に付随する不正アクセスや特権奪取を未然に食止めることが期待できる。つまり、図１に示したコンピュータシステムに限らず、システムコールｅにおいて、複数設置された検知装置の後段側に監査装置Ｔ１２０を設置することで、迂回攻撃を検出することができる。
【００２１】
また、例えば、２つのプロセスがあって、一方のプロセスがデバイスＤ１０３を呼び出すときに他方のプロセスへ制御が移る割り込みがなされる場合、割り込みが発生した時点で監査装置Ｔ１２０を呼び出すことにしてもよい。
また、図１に示したコンピュータシステムでは、検知装置Ｓ１（１１１）はメモリ保護装置、検知装置Ｓ２（１１２）はサンドボックス、検知装置Ｓ３（１１３）は強制アクセス制御装置を想定しているが、本発明は、それらに限定されるものではなく、検知装置の種類に関係なく適用可能である。
【００２２】
さらに、本実施形態では、履歴や警報出力などの検知装置Ｓの内部処理に依存せず、検知装置Ｓの出口において、検知装置Ｓが使用されたことを示す通知を監査装置Ｔ１２０が受け取ることで、検知装置Ｓの使用数を計測することができる。この方法により、（ａ）検査装置Ｓの使用数の計測にフックを用いることができ、カーネルＫや検知装置Ｓへの影響が小さい、（ｂ）監査装置Ｔを任意の場所で呼び出しても使用数の計測誤りがなくなる、（ｃ）監査装置Ｔから問い合わせる、または履歴解析の場合にくらべて計測による性能低下が小さくなるという効果を奏することができる。
【００２３】
次に、コンピュータシステムにおける検知装置の使用数の計測手順について説明する。ここで、図２は、検知装置の使用数の計測手順を説明するシーケンス図の例である。
【００２４】
図２に示したシーケンス図におけるコンピュータシステムは、図１に示したコンピュータシステムと同様の構成として、プロセスＰ１０１と、カーネルＫ１０２と、デバイスＤ１０３と、３台の検知装置Ｓ１（１１１）、Ｓ２（１１２）、Ｓ３（１１３）とを備えることを想定している。さらに、図２に示したコンピュータシステムは、システムコールｅに依存しない検知装置として、プロセスＰ１０１の改ざんを検知する電子署名装置である検知装置Ｓ４と、プロセスＰ１０１の稼働時のライブラリコールの際に、ライブラリの改ざんを検知する、検知装置Ｓ１とは別のメモリ保護装置である検知装置Ｓ５とを備えていることを想定する。
【００２５】
また、図２において、チェックポイントＣＰｉ（ｉ＝１，…，５）は、検知装置Ｓｉ（ｉ＝１，…，５）の出口を示したものである。このチェックポイントＣＰｉを通過する場合に、その検知装置Ｓｉを使用したとみなすフックが設けられている。このフックは、後記する計数器（３０１又は５０１）を呼び出す処理を含んでいる。このフックは、カーネルＫ内部の任意の場所に組み込むことが容易であることが望ましいソフトウェアである。
【００２６】
図２を参照して、コンピュータシステムにおいて、プロセスＰ１０１を含むプログラムが実行されると、カーネルＫ１０２は、検知装置Ｓ４を呼び出し、プロセスＰ１０１の改ざんを検知し、検知装置Ｓ４の出口（ＣＰ４）において、監査装置Ｔ１２０に、検知結果と併せて、前記のフックにより検知装置Ｓ４の使用を通知する。
そして、プログラムがプロセスＰ１０１のライブラリを呼び出す。その際、検知装置Ｓ５を呼び出し、呼び出したライブラリの改ざんを検知し、検知装置Ｓ５の出口（ＣＰ５）において、監査装置Ｔ１２０に、検知結果と併せて、前記のフックにより検知装置Ｓ４の使用を通知する。
【００２７】
その後、システムコールｅによりサービスルーチンが開始され、検知装置Ｓ１（１１１）→検知装置Ｓ２（１１２）→検知装置Ｓ３（１１３）の順で検知装置が呼び出され、各検知装置の出口（ＣＰ１，ＣＰ２，ＣＰ３）において、監査装置Ｔ１２０に、検知結果と併せて、前記のフックにより各検知装置の使用を通知する。
そして、システムコールｅによるサービスルーチンの出口において、異常の有無を確認するために監査装置Ｔ１２０が呼び出される（図示せず）。
【００２８】
検知装置Ｓ２（１１２）、Ｓ３（１１３）を迂回する前記の迂回攻撃の例では、検知装置Ｓ１→検知装置Ｓ２→検知装置Ｓ３の順で繰り返すところを迂回されたため、例えば、次のようにチェックポイントＣＰｉを通過したとする。
【００２９】
ＣＰ１→ＣＰ２→ＣＰ３→ＣＰ１→ＣＰ２→ＣＰ３→ＣＰ１→ＣＰ１→ＣＰ２→ＣＰ３
（検知装置：Ｓ１→Ｓ２→Ｓ３→Ｓ１→Ｓ２→Ｓ３→Ｓ１→Ｓ１→Ｓ２→Ｓ３）
【００３０】
この例の場合、システムコールｅが４回繰り返され、３回目から４回目の繰り返しにおいて、ＣＰ２→ＣＰ３を計測できないことがわかるので、その場合に少なくとも１つ以上の検知装置が迂回されたことが分かる。
【００３１】
次に、監査装置Ｔ１２０に内蔵された計数器について、２つの実施形態例を示して詳しく説明する。
（第１実施形態例）
ここで、図３は、監査装置Ｔ１２０に内蔵される第１実施形態例の計数器３０１の構成を示す図面である。図３を参照して、計数器３０１の構成について詳しく説明する。
【００３２】
監査装置Ｔ１２０に内蔵される計数器３０１は、減算器Ｃ３１１と、比較器Ａ３１２と、レジスタｍ３１４と、レジスタｎ３１３とを備える。なお、監査装置Ｔ１２０は、検知装置Ｓｉ（ｉ＝１，２，３）の検知結果や実行履歴を記録するための記憶媒体を備えることにしてもよい。
【００３３】
レジスタｎ３０３には、システムコールの監査開始（入口）から監査終了（出口）までの検知装置Ｓｉの実際の使用数ｎが、チェックポイントＣＰｉの度に変化する変数として記憶される。
また、レジスタｍ３０４には、システムコールの監査開始から監査終了までの検知装置Ｓｉの予め設定された使用回数である計画数Ｍが、監査装置Ｔ５１２を介して定数として記憶される。
【００３４】
減算器Ｃ３１１は、検知装置Ｓｉを計測する場合に動作し、システムコールの監査開始の初期動作として、レジスタｎ３０３の値をレジスタｍ３０４の値にリセットする。また、監査開始から監査終了までの間、チェックポイントＣＰｉ（ｉ＝１，２，３）の通過を確認すると、レジスタｎ３０３の値から１を減算する。
【００３５】
比較器Ａ３１２は、監査装置Ｔ１２０を呼び出す場合に動作し、レジスタｎ３１３の値と０とを比較する。この比較において、レジスタｎ３１３が０であれば、０（正常）、０ではない場合は１（異常）を出力する。
【００３６】
図３に示した計数器３０１の構成では、入力経路が２系統となっている。すなわち、計画する系統（レジスタｍ３１４）と、計測する系統（減算器Ｃ３１１及びレジスタｎ３１３）とである。計画する系統は、システムコールの入口で書き込みを完了し、それ以降は読み出し専門である。一方、計測する系統はシステムコールの入口で初期化され、それ以降は減算のみを実行する。このような構成をとることで、計画数Ｍ及び使用数ｎの改ざんを防止している。ただし、減算器Ｃ３１１を介して計画数Ｍを取得することで、入力系統を１系統とすることもできる。
また、図３に示した計数器３０１の構成では、出力経路が１系統となっている。したがって、監査装置Ｔ１２０全体への影響を及ぼすことを防止できる。
また、システムコールにおける検知装置Ｓｉの予め設定された使用回数である計画数Ｍは、たとえば、監査装置Ｔ１２０の内部の記憶領域に記憶されている。この計画数Ｍは、システムコールの種類に応じて設定することができる。
【００３７】
なお、本実施形態のコンピュータシステムにおいて監査装置Ｔ１２０の監査対象となる監査期間は、システムコールｅ単位としたが、複数のシステムコールを実行するプロセスＰ１０１を監査期間として、プロセスＰ１０１の出口において監査装置Ｔ１２０を呼び出すことにしてもよい。この場合、監査装置Ｔ１２０は、プロセスＰ１０１を通しての検知装置Ｓ１（１１１）、Ｓ２（１１２）、Ｓ３（１１３）の計画数Ｍを用いて、迂回攻撃の検知を実行する。この場合、プロセスごとの検知装置Ｓｉの計画数Ｍを、プロセスの内部テーブルに記憶したり、監査装置Ｔ１２０の内部の記憶領域に記憶することができる。
【００３８】
次に、前記の構成を有する本実施形態例の計数器３０１の動作について説明する。
ここで、図４は、計数器３０１の動作を説明するフローチャートである。
【００３９】
ここでは、計画数Ｍが３であり、＜Ｓ１，Ｓ２，Ｓ３＞＜Ｓ１，Ｓ２，Ｓ３＞＜Ｓ１，Ｓ２，Ｓ３＞＜Ｓ１，Ｓ２，Ｓ３＞の順に検知装置Ｓｉが呼び出される例を用いて説明する。なお、以下では、＜＞は、システムコールｅの入口と出口を表す。
【００４０】
まず、監査装置Ｔ１２０は、システムコールの入口において、レジスタｍ３１４を計画数Ｍにセットする。そして、減算器Ｃ３１１は、レジスタｍ３１４をレジスタｎ３１３に設定することでリセットする。これにより、計画数Ｍがレジスタ（使用数）ｎ３１３にセットされる（ステップ４０１）。
【００４１】
次に、減算器Ｃ３１１は、検知装置Ｓｉ（ｉ＝１，２，３）が呼び出されたか否かを判定し（ステップ４０２）、呼び出された場合は（ステップ４０２でＹ）、減算器Ｃ３１１が、レジスタ（使用数）ｎ３１３から１を減算する（ステップ４０３）。
【００４２】
そして、比較器Ａ３１２は、システムコールの出口において、監査装置Ｔ１２０が呼び出されたか否かを判定し（ステップ４０４）、監査装置Ｔ１２０が呼び出されない場合は（ステップ４０４でＮ）、ステップ４０２に戻り、再び検知装置Ｓｉが呼び出されたか否かを判定する。
【００４３】
一方、監査装置Ｔ１２０が呼び出された場合は（ステップ４０４でＹ）、比較器Ａ３１２は、レジスタｎ３１３が、０であるか否かを判定する（ステップ４０５）。ここで、レジスタｎ３１３が０であれば（ステップ４０５でＹ）、比較器Ａ３１２は迂回攻撃無と判定して（ステップ４０６）、監査装置Ｔ１２０の戻り値として、０（正常）を出力して処理を終了する。その後、システムコールの出口に戻って、プロセスＰの処理を継続し、２回目以降のシステムコールにおいても同様に繰り返す。
【００４４】
ここで、例えば、＜Ｓ１，Ｓ２，Ｓ３＞＜Ｓ１，Ｓ２，Ｓ３＞＜Ｓ１，Ｓ２＞＜Ｓ１，Ｓ２，Ｓ３＞の順に検知装置が呼び出されたとする。この場合、３回目のシステムコールでＳ３が呼び出されない。したがって、３回目のシステムコールは、１回目、２回目の場合と異なり、ステップ４０５の判定において、レジスタｎ３１３は２であるため、定数０とは一致しない（ステップ４０５でＮ）。このため、比較器Ａ３１２は迂回攻撃有と判定して（ステップ４０７）、監査装置Ｔ１２０の戻り値として、１（異常）を出力して処理を終了する。その後、システムコールの出口に戻って、プロセスＰの処理を継続し、２回目以降のシステムコールにおいても同様に繰り返す。
【００４５】
以上、説明した本実施形態では、システムコールにおいてコンピュータシステムに共通の計画数Ｍと使用数ｎとを比較する場合について説明した。本実施形態の変更例として、例えば、異なるシステムコールが実行される場合や、異なる複数のプロセスが実行される場合であっても対応可能である。その場合、各システムコール又は各プロセスの計画数Ｍをレジスタｍ３１４に設定する。
【００４６】
また、実施形態では減算器Ｃ３１１を用いた例を説明したが、減算器Ｃ３１１に換えて加算器を用い、使用数ｎの積算値と計画数Ｍとを比較することでも、同様の判定が実現可能である。
【００４７】
以上、本実施形態例に係る計数器３０１を備える監査装置Ｔ１２０によると、システムコールの出口において監査を実行するため、検知装置Ｓｉの配置によらず、迂回攻撃を検出することができる。したがって、監査装置の保守性が向上する。
【００４８】
（第２実施形態例）
第１実施形態例の計数器は、システムコールごとに監査装置Ｔ１２０を呼び出す場合を対象とした。これに対して、第２実施形態例の計数器は、プロセス単位、つまり複数のシステムコールを束ねて監査を実施する場合を対象とする。この場合は、システムコール数あるいは使用数の累計を保持する必要があるので加算器を用いることが望ましい。
【００４９】
ここで、図５は監査装置Ｔ１２０に内蔵される第２実施形態例の計数器の構成を示す図面である。図５を参照して、計数器５０１の構成について詳しく説明する。
【００５０】
監査装置Ｔ１２０に内蔵される計数器５０１は、加算器Ｃ１（５１１）と、加算器Ｃ２（５１３）と、乗算器（比較器５１４を含む）Ａ５１２と、レジスタｍ５２２と、レジスタｎ５２１と、レジスタｔ５２３とを備える。本実施形態例では、第１実施形態例の装置構成との相違点を示すために、乗算器Ａ５１２のなかに比較器５１４を備える形態をとったが、比較器５１４と乗算器Ａ５１２とは別構成であっても構わない。また、監査装置Ｔ１２０は、検知装置Ｓｉの検知結果や実行履歴を記録するための記憶媒体を備えることにしてもよい。
【００５１】
レジスタｎ５２１には、監査開始（入口）から監査終了（出口）までの検知装置Ｓｉの実際の使用数ｎが、チェックポイントＣＰｉを通過するたびに変化する変数として記憶される。
また、レジスタｍ５２２には、システムコールごとの検知装置Ｓｉの予め設定された使用回数である計画数Ｍが、監査装置Ｔ１２０を介して定数として記憶される。なお、本実施形態例では、計画数Ｍは、システムコールの種別に関係なく、コンピュータシステム共通の値を用いることとする。
さらに、レジスタｔ５２３には、監査開始から監査終了までのシステムコールの実行回数が、システムコールの入り口のたびに変化する変数として記憶される。
【００５２】
乗算器Ａ５１２は、監査装置Ｔ１２０を呼び出す場合に動作し、その時点のレジスタｍ５２２とレジスタｔ５２３との値を乗算する。
比較器５１４は、レジスタｎ５２１と乗算器Ａ５１２の乗算結果とを比較する。また、レジスタｎ５２１と乗算結果とが一致する場合は０（正常）、一致しない場合は１（異常）を出力する。
【００５３】
加算器Ｃ１（５１１）は、検知装置Ｓｉを計測する場合に動作し、初期動作として、監査開始時にレジスタｎ５２１の値を０にリセットし、検知装置Ｓｉの出口においてチェックポイントＣＰｉの通過を確認した後に、レジスタｎ５２１の値に１を加算する。
【００５４】
加算器Ｃ２（５１３）は、システムコールが呼び出される場合に動作し、初期動作として、監査開始時にレジスタｔ５２３の値を０にリセットし、システムコールの入口の通過を確認する度に、レジスタｔ５２３の値に１を加算する。
【００５５】
次に、前記の構成を有する本実施形態例の計数器５０１の動作について説明する。
ここで、図６は、計数器３０１の動作を説明するフローチャートである。
【００５６】
ここでは、コンピュータシステムに共通して、検知装置Ｓｉ（ｉ＝１，２，３）の使用回数である計画数Ｍは３であり、＜Ｓ１，Ｓ２，Ｓ３＞＜Ｓ１，Ｓ２，Ｓ３＞＜Ｓ１，Ｓ２，Ｓ３＞＜Ｓ１，Ｓ２，Ｓ３＞の順に検知装置Ｓｉが呼び出される例を用いて説明する。なお、以下では、＜＞はシステムコールの入口と出口を表す。
【００５７】
まず、監査装置Ｔ１２０は、システムコールの入口において、レジスタｍ５２２を計画数Ｍ（＝３）にセットする（ステップ６０１）。そして、加算器Ｃ１（５１１）は、レジスタ（使用数）ｎ５２１を０にセットし（ステップＳ６０２）、加算器Ｃ２（５１３）は、レジスタ（システムコール数）ｔ５２３を０にセットする（ステップ６０３）。
【００５８】
次に、監査用の計測が開始され、加算器Ｃ２（５１３）は、システムコールが発行されたか否かを判定する（ステップ６０４）。ここで、システムコールを検出した場合は（ステップ６０４でＹ）、レジスタ（システムコール数）ｔ５２３を１だけ加算して（ステップ６０５）、ステップ６０４の判定に戻る。
【００５９】
一方、システムコールを検出しない場合は（ステップ６０４でＮ）、加算器Ｃ１（５１１）は、検知装置Ｓｉ（ｉ＝１，２，３）が呼び出されたか否かを判定し（ステップ６０６）、呼び出された場合は（ステップ６０６でＹ）、加算器Ｃ１（５１１）が、レジスタ（使用数）ｎに１を加算して（ステップ６０７）、ステップ６０４の判定に戻る。
【００６０】
一方、検知装置Ｓｉが呼び出されない場合は（ステップ６０６でＮ）、乗算器Ａ５１２は、システムコールの出口において、監査装置Ｔ１２０が呼び出されたか否かを判定し（ステップ６０８）、監査装置Ｔ１２０が呼び出されない場合は（ステップ６０８でＮ）、ステップ６０４に戻って、システムコールの発行及び検知装置Ｓｉの呼び出しの検知を繰り返す。
【００６１】
一方、監査装置Ｔ１２０が呼び出された場合は（ステップ６０８でＹ）、監査用の計測を終了して、乗算器Ａ５１２は、レジスタ（計画数）ｍ５２２とレジスタ（システムコール数）ｔ５２３とを参照して（ステップ６０９）、レジスタｍ５２２の値とレジスタｔ５２３の値とを掛け合わせた累計数（ｍ×ｔ）を計算する（ステップ６１０）。
そして、比較器５１４は、レジスタ（使用数）ｎ５２１を参照して（ステップ６１１）、レジスタ（使用数）ｎ５２１の値と、累計数（ｍ×ｔ）とが一致するか否かを判定する（ステップ６１２）。
【００６２】
この例では、レジスタｔ５２３の値は４であり、レジスタｍ５２２の値は３であり、レジスタｎ５２１の値は１２であるため、レジスタｎ５２１の値と、累計数（ｍ×ｔ）とが一致し（ステップ６１２でＹ）、比較器５１４は迂回攻撃無と判定して（ステップ６１３）、監査装置Ｔ１２０の戻り値として、０（正常）を出力して処理を終了する。その後、システムコールの出口に戻り、次のプロセスの処理を継続する。
【００６３】
ここで、＜Ｓ１，Ｓ２，Ｓ３＞＜Ｓ１，Ｓ２，Ｓ３＞＜Ｓ１，Ｓ２＞＜Ｓ１，Ｓ２，Ｓ３＞の順に検知装置が呼び出される例を用いて、図６に示したフローチャートにおいて迂回攻撃を検出する場合を説明する。この例では、３回目のシステムコールで検知装置Ｓ３が呼び出されなかった。
【００６４】
この場合、レジスタｔ５２３の値は４であり、レジスタｍ５２２の値は３であり、レジスタｎ５２１の値は１１であるため、レジスタｎ５２１の値と、累計数（ｍ×ｔ）とが一致しないため（ステップ６１２でＮ）、比較器５１４は迂回攻撃有と判定して（ステップ６１４）、監査装置Ｔ１２０の戻り値として、１（異常）を出力して処理を終了する。その後、システムコールの出口に戻り、次のプロセスの処理を継続する。
【００６５】
以上の説明では、検知装置Ｓ１、Ｓ２、Ｓ３は、レジスタｎを用いて併せて累計している。そのため、厳密には検出漏れが発生する危険性がある。たとえば、正常＜Ｓ１，Ｓ２，Ｓ３＞＜Ｓ１，Ｓ２，Ｓ３＞＜Ｓ１，Ｓ２，Ｓ３＞に対して、異常＜Ｓ１，Ｓ２，Ｓ３＞＜Ｓ１，Ｓ３＞＜Ｓ１，Ｓ１，Ｓ２，Ｓ３＞を検出できない。しかし、レジスタｎの代わりに、検知装置Ｓｉ（ｉ＝１，２，３）ごとにレジスタｎ１、ｎ２、ｎ３を備えることで、別途検証することができる。この例では、正常値が、ｎ１＝ｎ２＝ｎ３＝３であるのに対し、ｎ１＝４、ｎ２＝２、ｎ３＝３であるため、各レジスタを比較することで異常を検出することができる。
【００６６】
以上説明した本実施形態例に係る計数器を備える監査装置Ｔ１２０によると、複数のシステムコールをまとめて、迂回攻撃の検出をすることができる。また、システムコールの種類に関係なく適用可能であり、監査装置Ｔ１２０を柔軟に運用することができる。
【図面の簡単な説明】
【００６７】
【図１】システムコールの出口に監査装置を設置するコンピュータシステムのブロック図である。
【図２】検知装置の使用数を計測する手順を説明するシーケンス図である。
【図３】第１実施形態例に係る計数器の構成を示す図面である。
【図４】第１実施形態例に係る計数器の動作を説明するフローチャートである。
【図５】第２実施形態例に係る計数器の構成を示す図面である。
【図６】第２実施形態例に係る計数器の動作を説明するフローチャートである。
【符号の説明】
【００６８】
１０１  プロセスＰ
１０２  カーネルＫ
１１１  検知装置Ｓ１
１１２  検知装置Ｓ２
１１３  検知装置Ｓ３
１２０  監査装置Ｔ
３１２  比較器Ａ
３１１  減算器Ｃ
３１３，５２１  レジスタｎ
３１４，５２２  レジスタｍ
５１２  乗算器Ａ
５１４  比較器
５２３  レジスタｔ
【図１】
2008242915.tif 000003
【図２】
2008242915.tif 000004
【図３】
2008242915.tif 000005
【図４】
2008242915.tif 000006
【図５】
2008242915.tif 000007
【図６】
2008242915.tif 000008