(57)【特許請求の範囲】
【請求項１】
生イベントに対して、損害を引き起こす危険性の高低に応じた優先順位を指定する１以上のデータ・ソースから生イベントを受け取るステップと、
前記生イベントを分類するステップと、
前記生イベントを記憶するステップと、
前記生イベントの宛先を示す情報と、コンテキスト・データベースに格納されたコンピュータの脆弱性情報とを比較して、脆弱性の程度を示す値を各生イベントに付けるステップと、
前記生イベントに割り当てられた脆弱性の程度を示す値に基づいて、各生イベントの前記優先順位を調整すべきか判断するステップと、
前記判断するステップの結果に基づいて、各生イベントの前記優先順位を変更し、またはそのままにするステップと、
２以上の生イベントの間に関係を見つけ出すステップと、
２以上の生イベントの間に何らかの関係を見つけ出すことに対応して、前記優先順位を含む成熟相関イベント・メッセージを生成するステップと、
生イベントの間の関係を記述する１以上の前記成熟相関イベント・メッセージをコンソールに表示するステップとを含む、セキュリティ情報を管理するための方法。
【請求項２】
前記１以上のデータ・ソースから生イベントを受け取るステップが、侵入探知システム、侵入探知システム内のディテクタ、およびファイヤ・ウォールのうちの１つからリアルタイムの生イベントを受け取るステップをさらに含む請求項１に記載の方法。
【請求項３】
前記１以上のデータ・ソースから生イベントを受け取るステップがファイルおよびデータベースの１つから生イベントを受け取るステップをさらに含む請求項１に記載の方法。
【請求項４】
前記生イベントを分類するステップが、
各生イベントのためのイベント・タイプ・パラメータを見つけだすステップと、
前記イベント・タイプ・パラメータをリストのイベント・タイプ・カテゴリと比較するステップと、
各生イベントを前記リスト中の対応するイベント・タイプのカテゴリに配属するステップと、
をさらに含む請求項１に記載の方法。
【請求項５】
各生イベントに前記生イベントの環境に関係する追加のパラメータを付け加えるステップをさらに含む請求項１に記載の方法。
【請求項６】
前記追加のパラメータは、ヒストリカル頻度値、送信元ゾーン値、宛先ゾーン値、およびテキスト列のどれか１つを含む請求項５に記載の方法。
【請求項７】
前記２以上の生イベントの間の関係を見つけ出すステップが、
各生イベントを生イベントのタイプ・パラメータに対応する１以上のルールと関係付けるステップと、
各ルールを生イベントの関係付けられたグループに適用するステップと、
成功したルールの適用に基づいてコンピュータに対する攻撃またはセキュリティの侵害が起きたかどうか判断するステップと、
をさらに含む請求項１に記載の方法。
【請求項８】
前記生イベントを記憶するステップが、各生イベントをランダム・アクセス・メモリ（ＲＡＭ）を含む高速メモリ・デバイスに記憶させるステップをさらに含む請求項１に記載の方法。
【請求項９】
前記生成された前記成熟相関イベントのタイプに基づいてコンピュータに対する攻撃の意図を判断するステップをさらに含む請求項１に記載の方法。
【請求項１０】
メモリ管理リストを作成するステップと、
各生イベントのタイムスタンプを見つけるステップと、
各生イベントを前記メモリ管理リストに付け加えるステップと、
をさらに含む請求項１に記載の方法。
【請求項１１】
１以上の生イベントを監視している１以上のソフトウェア・コンポーネントを見つけ出すための生イベント追跡インデックスを作成するステップをさらに含む請求項１に記載の方法。
【請求項１２】
前記生イベントを分類するステップは、生イベント分類データベースを使用してイベント・タイプ・パラメータを割り当て、
前記生イベント分類データベースは、生イベントによって示される活動が１以上の標的コンピュータにどのようにして影響を与える可能性があるか、生イベントによって示される活動によって影響を受ける可能性があるコンピュータの数はどのくらいか、および各生イベントによって示される活動はどのようにして１以上の標的コンピュータにアクセスするか、のどれかに基づいて生イベントをカテゴリに分ける情報を含む、請求項１に記載の方法。
【請求項１３】
生イベントに対して、損害を引き起こす危険性の高低に応じた優先順位を指定する複数のデータ・ソースと、
前記複数のデータ・ソースにリンクされたイベント・コレクタと、
前記イベント・コレクタにリンクされたフュージョン・エンジンであって、前記データ・ソースによって生成された２以上の生イベントの間の関係を見つけだすフュージョン・エンジンと、
前記イベント・コレクタにリンクされた、前記フュージョン・エンジンによって生成された成熟相関イベント・メッセージを表示するためのコンソールとを含み、
前記フュージョン・エンジンは、
前記複数のデータ・ソースから前記イベント・コレクタを介して生イベントを受け取け、
前記生イベントを分類し、
前記生イベントの宛先を示す情報と、コンテキスト・データベースに格納されたコンピュータの脆弱性情報とを比較して、脆弱性の程度を示す値を各生イベントに付け、
前記生イベントに割り当てられた脆弱性の程度を示す値に基づいて、各生イベントの前記優先順位を調整すべきか判断し、
前記判断の結果に基づいて、各生イベントの前記優先順位を変更し、またはそのままにし、
２以上の生イベントの間に関係を見つけ出し、前記優先順位を含む成熟相関イベント・メッセージを生成して前記コンソールに出力する、セキュリティ管理システム。
【請求項１４】
コンピュータのカーネル・モードで動作するディテクタと前記コンピュータのユーザ・モードで動作する前記フュージョン・エンジンをさらに含む請求項１３に記載のセキュリティ管理システム。
【請求項１５】
ディテクタのチップ、およびコンピュータ上で動作するソフトウェアを含む前記フュージョン・エンジンをさらに含む請求項１３に記載のセキュリティ管理システム。
【請求項１６】
ディテクタ基板、およびコピュータ上で動作するソフトウェアを含む前記フュージョン・エンジンをさらに含む請求項１３に記載のセキュリティ管理システム。
【発明の詳細な説明】
【０００１】
優先権および関連出願
本願は２０００年４月２８日に出願された米国特許出願第６０／２００，３１６号「ネットワーク・セキュリティー・システムの侵入探知フュージョン・システム」というタイトルの仮特許出願の優先権を主張する。
【０００２】
本願はまた２００１年４月２７日に出願された米国特許出願第＿＿＿＿＿＿＿号「ネットワーク上のセキュリティ・イベントを管理するシステムおよび方法」というタイトルの非仮出願（代理人整理番号０５４５６−１５００５）と関連する。
【０００３】
発明の属する技術分野
本発明はコンピュータ・システムおよびそのようなシステムのセキュリティに関する。より詳しく言えば、本発明は各セキュリティ・イベントを危険性に従って階級指定し、またコンピュータ・システム上または内部で発生するかもしれない２つまたはそれ以上のセキュリティ・イベントの間の関係を融合すなわち見つけ出すための方法およびシステムに関する。本発明はまた他のセキュリティに関係する情報中の関係も見つけだすことができる。
【０００４】
従来の技術
インターネットのような分散ネットワークは、本質的に攻撃に対して脆弱である。インターネットは情報、データおよびファイルの可能な限り最も自由な交換を可能にするように設計された。しかしながら、この自由な情報の交換は代償を伴っている。多くのユーザがインターネットに接続されているネットワークおよびコンピュータを攻撃しようと試みるであろう。多くのユーザが他のユーザのプライバシーを侵害すること試みたり、また機密情報のデータベースの解読や、インターネットの経路を伝わる情報の傍受を企てたりもするであろう。
【０００５】
このようなコンピュータに対する攻撃を探知するかまたは防ぐために、情報を収集しそしてネットワーク・コンピュータのセキュリティ構成に変更を加える侵入探知システム（ＩＤＳ）およびソフトウェア・プログラムが開発されている。しかしながら、これらの従来の侵入探知システムには一般的に多くの問題と難点がある。従来の侵入探知システムはたいていネットワーク上の侵入探知に専用されるハードウェアを含む。他の侵入探知システムは単にホスト・コンピュータ上で動くプログラムを含むことができる。
【０００６】
多くの従来の侵入探知システムの問題と難点は、すべての探知設計の一部である少なくとも２つのパラメータにせいにすることができるであろう。第１のパラメータは、侵入探知システムのディテクタが、そのディテクタを通って流れるデータすなわち通信に対して透明であるために動作しなければならない速度である。たいてい専用のパソコン上で動作するディテクタは、ネットワークの速度が１００メガビット／秒からギガビット／秒の速度にそしてそれ以上へと増しているときに、絶えず増大する大きな情報トラフィックを扱うことができなければならない。これらの高速のために、侵入探知システムのディテクタは、明白な理由によって、そのディテクタを通って流れる情報の複雑な解析を行うことができない。すなわち、もしディテクタがそれを通って流れる情報の複雑な解析を行うとしたら、そのような解析は、そのディテクタを通過する情報の流れに遅れずについていくことはできないであろう。
【０００７】
あらゆる探知設計の一部である第２のキー・パラメータは通常ディテクタを通過するであろう情報の量である。情報がディテクタを通過する高い速度のために、ディテクタは大量のデータ・パケットを解析することができなければならない。
【０００８】
現在のネットワークの速度とそのネットワーク速度の結果として発生されるそれに対応する大量の情報を考慮すると、従来の侵入探知システムの多くのディテクタは、複雑なそしてより高度化したコンピュータ攻撃に対しては非常に限られた保護しか提供できない。この限られた保護は、侵入探知システムによって多くの誤った肯定が発生されるときに明らかになる。換言すれば、多くの従来の侵入探知システムは、なんらの脅威も攻撃も含まないコンピュータ間の通信に基づいて、偽の警報を発生する可能性がある。
【０００９】
偽の警報に加えて、従来の侵入探知システムはほとんど、現在の処理速度からの限界のために、複雑な解析を行うための機能を備えていない。例えば、多くの従来の侵入探知システムは、良く知られたＬ０ｐｈｔ  Ｃｒａｃｋのような中央処理装置を集中的に働かせるチェックを実行することができない。Ｌ０ｐｈｔ  Ｃｒａｃｋ解読は、Ｗｉｎｄｏｗｓ（ＳＭＢ）接続からの暗号の試行−応答データを用いてネットワーク上で使用されているパスワードを解読することができる。Ｌ０ｐｈｔ  Ｃｒａｃｋを実行するための従来の方法は、パケット補足ツールを使ってパケットを得て、それからオフラインでパスワードを解読することである。従来の侵入探知システムはほとんどどのようなリアルタイム解析においてもＬ０ｐｈｔ  Ｃｒａｃｋの方法を用いることができなかった。
【００１０】
従来の侵入探知システムのもう１つの障害は、ほとんどの侵入探知システムが非常に限られたまたは短期のメモリ容量しか持たないことである。換言すれば、データ・ストリームの長いヒストリは、従来の侵入探知システムのディテクタによっては決して保持されない。
【００１１】
従来の侵入探知システムのもう１つの問題は、このようなシステムのディテクタは通常単一の環境を見張るまたは観察するだけであることである。例えば、ディテクタは通常ネットワークの一部だけを観察する。従来のディテクタは、ネットワーク全体を全体として観察する代わりにネットワークの一部分だけを観察するように設計されているので、認識する範囲が限定されている。従来のディテクタはこのようにネットワークの一部分だけを監視するので、分散攻撃のようなより高度のコンピュータ攻撃を追跡することができない。
【００１２】
より高度のコンピュータ攻撃を追跡できないことに加えて、多くの従来の侵入探知システムは、コンピュータ攻撃の攻撃者または標的の能動探索ができなかった。能動探索は通常コンピュータ攻撃がその標的に対して効果があった否かを知るための判定を行うことを含む。さらに、探索は攻撃者についての追加の情報を発見するための方法も含む。しかしながら、上述したように、多くの侵入探知システムは能動探索を許容しなかった。なぜならこのような探索はディテクタの場所を明らかにする可能性があるからある。そしてもしディテクタの場所が明らかになったら、それはしばしばコンピュータ攻撃の標的になるかもしれないからである。
【００１３】
したがって、この分野には、ネットワーク全体のためにセキュリティ情報を管理するための方法およびシステム対する要求がある。すなわち、この分野にはネットワーク・コンピュータ・システム内で起こり得るコンピュータ・セキュリティ・インシデンスをログに記録し、調査し、対応し、追跡することに対する要求がある。この分野にはまた、ネットワーク内またはネットワーク全体におけるセキュリティが危うくされていないか、またあるインシデントが侵入探知システムによって無視されるべきただちょっと奇妙な振る舞いであるか判定することを求める要求がある。この分野には、かなり複雑なそして巧妙なコンピュータ攻撃が見つけ出され、阻止され、または防がれることができるように、複数のデータ・ソースからのセキュリティ情報を監視しそして解析することができる方法およびシステムに対する別の要求が存在する。この分野には、セキュリティ情報をリアルタイムで管理するための方法およびシステムに対するさらに別の要求が存在する。
【００１４】
この分野には、１つまたはそれ以上のリアルタイムのコンピュータ・イベントが互いに関係があるか否か、またそれらがより大きな企てまたは巧妙な攻撃の一部であるか否かを判定することができるようなセキュリティ情報を管理するための方法およびシステムに対するさらに別の要求がある。この分野には、複数のコンピュータ・イベントが、それらがより大きな企てすなわち攻撃の一部であるならば、互いに相関づけられることができるセキュリティ情報を管理するための方法およびシステムに対する追加の要求がある。この分野には、検出されるコンピュータ・イベントに、ネットワークまたは個々のコンピュータに対して最も大きな損害を引き起こすかもしれないコンピュータ・イベントに注意を集中させることができるように優先順位を付けることができるセキュリティ情報を管理するための方法およびシステムに対するもう１つの要求がある。同様に、この分野には、単一のコンピュータ攻撃から派生するか、またはそれから発生させられるかもしれない追加のコンピュータ攻撃の防止に加えて、既存のコンピュータ攻撃に対する迅速な対応を可能にするセキュリティ情報を管理するための方法およびシステムに対するさらにもう１つの要求がある。この分野には、リアルタイムのコンピュータ・イベントが、そのイベントが発生した環境のコンテキストの中で、それらの優先度に従って分類されかつ階級が決められるようなセキュリティ情報を管理するための方法およびシステムに対するさらに別の要求がある。
【００１５】
発明の概要
本発明は、ネットワーク接続されたコンピュータ・システム内で発生し得るコンピュータのセキュリティに関係するインシデントを記録し、調査し、対応し、そして追跡することができるコンピュータ・セキュリティ管理システムを提供することにより、上記の問題を解決することができる。本発明は、疑わしいコンピュータの活動または実際のコンピュータのセキュリティに対する脅威を追跡することができる。実際のコンピュータのセキュリティに対する脅威には、コンピュータまたはコンピュータ・ネットワークに対する完全性攻撃、秘密性攻撃、サービス拒否攻撃、多段攻撃、または他の類似の攻撃が含まれるが、これに限定されない。本発明は、典型的には、データ・ソースから得られる疑わしいコンピュータ活動の記述をリアルタイム生イベントと呼び、実際のコンピュータ・セキュリティにたいする脅威を成熟相関イベントと呼ぶ。本発明は、１つまたはそれ以上のデータ・ソースから収集されたセキュリティ情報を管理するための方法とシステムを含むことができる。より具体的に言えば、本発明は、データ・ソースによって行われる処理の速度を低下させることなく、悪意のある振る舞いを示すかも知れない生イベントの間の関係を検出して１つまたはそれ以上のコンソールに整理された情報の提示を行うために、複数のデータ・ソースからの情報を「融合」すなわち集めて整理しそしてこの情報を解析するフュージョン・エンジンを含む。
【００１６】
複数のデータ・ソースはネットワークのトラフィクまたは個々のコンピュータまたはその両方を監視するセンサまたはディテクタを含むことができる。センサは侵入探知システム（ＩＤＳ）と呼ばれることもできるデバイスを含むことができる。本発明はＩＤＳデバイスとは別であるので、大量のデータのやりとりをリアルタイムで処理することが重要なときにＩＤＳデバイスが効率的にかつ高速で動作することを可能にする。
【００１７】
データ・ソースはまたファイヤ・ウォールおよび他の類似のセキュリティまたはＩＤＳデバイスも含むことができる。さらに、データ・ソースは、関心を持つネットワークまたはコンピュータについての追加の環境情報を提供する追跡記録システムのような、リアルタイム情報を提供することができるまたはできないどんなデバイスを含んでもよい。例えば、１つのデータ・ソースはデータベースを含むことができる。データベースは、タイプの異なる生イベントのカテゴリを含む、生イベント分類データベースを含んでもよい。他のデータベースは、ホストの脆弱状態、ヒストリカルなコンピュータ・イベントの頻度値、およびネットワークのゾーンの設定のようなネットワークのコンテキスト（状況）を示す情報を含むコンテキストまたは知識データベースを含むことができる。
【００１８】
複数のデータ・ソースから、本発明のフュージョン・エンジンは、リアルタイムの生のコンピュータ・イベントを互いに関係づけ、分類することができる。すなわち、通常かなりの時間の後コンピュータ・イベントを処理する従来の技術と異なり、本発明は、１つまたはそれ以上のリアルタイムの生のコンピュータ・イベント間の関係を、それらをリアルタイムで受け取りながら、見つけ出すことができる。リアルタイムの生のコンピュータ・エベンすなわち生イベントは、１台のコンピュータまたは複数のコンピュータに対する攻撃である可能性があるものとして侵入探知システムによって追跡されるかも知れないすべてのコンピュータの活動を含むことができる。生イベントは侵入探知システムのディテクタによって生成されることができる。各生イベントは、コンピュータの活動の送信元インターネット・プロトコル・アドレス、コンピュータの活動の宛先インターネット・プロトコル・アドレス、ディテクタによって指定された優先順位、ディテクタによって指定された脆弱度、タイムスタンプおよびイベント・タイプ・パラメータなどを含む。ただしそれらに限定されず、いろいろなパラメータを持つことができる。
【００１９】
フュージョン・エンジンは、１つまたはそれ以上のリアルタイムの生イベントが互いに関係しているか否か、およびそれらがより大きなたくらみのコンピュータ攻撃の一部かそうでないか判断することができる。互いに関係があり、コンピュータ攻撃が起こりつつあるかもしれないことを示しているかもしれないリアルタイムの生イベントは、フュージョン・エンジンによって、成熟相関イベントと呼ばれる。１つの相関イベントは、１つまたはそれ以上の生イベントを含むことができる。しかしながら、相関イベントは、実際のセキュリティに対する脅威または攻撃が探知されたことを意味しない。相関イベントは典型的には関係のある生イベントを記憶し、通常その相関イベントが成熟したと見なされるときにセキュリティ・イベントすなわちコンピュータ攻撃が起こったことを示す。成熟していると見なされるためには、相関イベントは対応する相関ルールの判断基準またはアルゴリズムを満足しなければならない。したがって、成熟相関イベントまたは実際のコンピュータ・セキュリティに対する脅威またはコンピュータ攻撃として認められていない、１つまたはそれ以上の生イベントを含む多数の相関イベントを追跡することが可能である。
【００２０】
フュージョン・エンジンは、イベントが発生した環境またはコンテキストについての情報に基づいて、成熟相関イベントと同じくリアルタイム生イベントのリスクを評価し順位づけることもできる。フュージョン・エンジンはこの危険および順位情報をメッセージとしてコンソール上に表示することができる。フュージョン・エンジンは、成熟相関イベントの更新を生成し、コンソールに送ることができる。さらに、フュージョン・エンジンは、成熟相関イベントが発生しなくなったときに、それを検出して表示する。
【００２１】
リアルタイム生イベントのリスクを評価し順位づけるために、フュージョン・エンジンは、前述した生イベント分類データベースおよび知識データベースを利用することができる。生イベント分類データベースはフュージョン・エンジンが生コンピュータ・イベントを分類することを可能にし、知識デバイスはフュージョン・エンジンがその生コンピュータ・イベントのコンテキストに基づいて生コンピュータ・イベントの危険性を順位づけ評価することを可能にする。生イベント分類データベースは１つまたはそれ以上のセキュリティ情報の表を含むことができる。すなわち、生イベント分類データベースは、生イベントを、それらが標的のホストに与える衝撃（秘密性、完全性、または利用可能性）、範囲（ネットワーク、ホスト、またはサービス）、およびそれらが使う方法（裏口からの侵入、ＩＤＳの回避すなわち探知の回避、その他）に基づいて分類することができる情報を含む表を備えることができる。生コンピュータ・イベントのコンテキストは、その生イベントのパラメータを、コンテキストすなわち知識データベース中のコンテキスト・パラメータ、例えば前述したイベントの脆弱度、ヒストリカル・コンピュータ頻度値、およびゾーン設定など、と比較することにより、決定できる。
【００２２】
１つまたはそれ以上の生コンピュータ・イベントが成熟コンピュータ・イベントの一部であるか、またはそれを形成しているか判断するために、フュージョン・エンジンは、フュージョン・エンジンが生コンピュータ・イベントを分類するやり方に基づいて始動される１つまたはそれ以上のルールを適用することができる。換言すれば、フュージョン・エンジンによって適用されるルールは、生イベントの分類（タイプまたは種類の識別）にしたがって活性化され、生イベントに適用される。
【００２３】
生コンピュータ・イベントが１つの成熟コンピュータ・イベントの一部であるかまたはそれを形成しているか、または本当にセキュリティの脅威かを判断することに加えて、フュージョン・エンジンはその高速メモリ資源を非常に効率的に管理する。例えば、フュージョン・エンジンは、予め決められた時間を越えている、または予め決められた条件に適合している、またはその両方の生イベント、未成熟および成熟相関イベントを消去するメモリ管理技術を採用することができる。この高速メモリ資源は、生イベントおよび成熟相関イベントの分類に従って分けられているデータを記憶するＲＡＭを含むことができる。
【００２４】
実施の形態の詳細な説明
本発明は分散コンピューティング環境内で動くプログラム・モジュールとして実現することができる。本発明は、コンピュータのセキュリティ事件を記録し、調査し、対応し、追跡することができるコンピュータ・セキュリティ管理システムを含むことができる。本発明は、複数のコンソールに対してまとめられた、そして時にはランク付けされた情報の呈示を行うために、複数のデータ・ソースからの情報を「融合（フュージョン）」すなわち組み立てるフュージョン・エンジンを含むことができる。このフュージョン・エンジンは、１つまたはそれ以上のデータベースに基づいてリアルタイムのコンピュータ・イベントをランクづけしながら、未加工のリアルタイムのコンピュータ・イベントを分類することができる。
【００２５】
説明のための動作環境
説明のための動作環境はパーソナル・コンピュータおよびサーバ上で動作するプログラム・モジュールの面において一般的に説明されるであろうが、この分野の専門家は、他のオペレーティング・システム・プログラムとの組合せまたは他のタイプのコンピュータのための他のタイプのプログラム・モジュールとの組合せにおいて実現できること分かるであろう。さらに、この分野の専門家は、他のオペレーティング・システム・プログラムとの組合せまたは他のタイプのコンピュータのための他のタイプのプログラム・モジュールとの組合せにおいて実現できることを理解するであろう。さらに、この分野の専門家は、スタンドアロン環境または分散コンピューティング環境またはその両方において実現できることを理解するであろう。分散コンピューティング環境では、プログラム・モジュールは、物理的にいろいろなローカルおよびリモートの記憶装置に置かれてもよい。プログラム・モジュールの実行は、スタンドアロン方式でローカルに、またはクライアントサーバー方式でリモートに行われてもよい。このような分散コンピューティング環境の例には、ローカル・エリア・ネットワークおよびインターネットがある。
【００２６】
この後の詳細な説明は、大部分が、処理ユニット（プロセッサ）、記憶装置、接続された表示装置および入力装置を含む、従来のコンピュータの構成要素による処理および動作の記号表示によりなされる。さらに、これらの処理および動作は、リモート・ファイル・サーバ、コンピュータ・サーバおよび記憶装置を含む、異種分散コンピューティング環境における従来のコンピュータ構成要素を利用してもよい。これらの従来の分散コンピューティングの構成要素の各々は、通信ネットワークを通してプロセッサによりアクセスできる。
【００２７】
コンピュータにより行われる処理および動作は、プロセッサによる信号の操作および１つまたはそれ以上の記憶装置に常駐するデータ構造内にこれらの信号の保持を含む。この説明のために、処理は、一般的に、望みの結果をもたらす一連のコンピュータにより実行されるステップであるとされている。これらのステップは通常物理量の物理的な操作を必要とする。通常は、必ずそうであるわけではないが、これらの量は、記憶され、転送され、組み合わされ、比較され、または他の方法で操作されることができる電気、磁気、または光の信号の形を取る。この分野の専門家は、慣習で、これらの信号の表現をビット、バイト、ワード、情報、要素、記号、文字、数、点、データ、項目、オブジェクト、イメージ、ファイルなどと呼んでいる。しかしながら、これらのおよび類似の語は、コンピュータの動作のための物理量に関係づけられていること、およびこれらの語はコンピュータの内部および動作中に存在する物理量に付けられた約束ごとのラベルにすぎないことは憶えておかれるべきである。
【００２８】
またコンピュータの内部における操作は、しばしば人間の操作者によって行われる手操作と関係づけられる、作成る、加える、計算する、比較する、移動させる、受け取る、判断する、識別する、移植する、ロードする、実行するなどのような言葉でしばしば言及されることも理解されるべきである。ここで説明されている操作は、人間の操作者すなわちコンピュータと対話するユーザによって与えられたいろいろな入力に関係して行われるマシンの動作でもよい。
【００２９】
さらに、ここに説明されているプログラム、プロセス、メソッドなどは、特定のコンピュータまたは装置に関係づけられても、限定されてもいないことは理解されるべきである。むしろ、いろいろなタイプの汎用マシンが、ここに説明されている教示に従って作られたプログラム・モジュールと共に使用できる。同様に、配線論理またはリード・オンリ・メモリのような不揮発メモリに記憶されたプログラムを持った、特定のネットワーク・アーキテクチャの中の専用のコンピュータにより、ここに記載されている方法のステップを実行するための特殊化された装置を作ることは、有利であることがわかるであろう。
【００３０】
さて図面を参照して、本発明のいろいろな面と説明のための動作環境を説明する。なお幾つかの図を通じて類似の数字は類似の要素を示す。
【００３１】
図１および下記の説明は、本発明を実施するのに適したコンピュータ環境の短い一般的な説明を与えることを意図している。図１を参照すると、本発明を実施するための説明のための環境は、処理ユーザ１０２、リード・オンリ・メモリ（ＲＯＭ）１０４およびランダム・アクセス・メモリ（ＲＡＭ）１０８を含むシステム・メモリ、システム・メモリを処理ユニット１０２に結合するシステム・バス１０５を含む従来のパーソナル・コンピュータ１００を含む。リード・オンリ・メモリ（ＲＯＭ）１０４は、例えば起動中にパーソナル・コンピュータ１００の内部の要素間のデータの転送を助ける基本ルーチンを内蔵する、基本入／出力システム１０６（ＢＩＯＳ）を含む。パーソナル・コンピュータ１００はさらにハード・ディスク・ドライブ１１８と、例えばＣＤ−ＲＯＭディスクまたはＤＶＤディスクを読むため、または他の光メディアに対する読出しまたは書込みのための光ディスク・ドライブ１２２を含む。これらのドライブおよびそれらで使用されるコンピュータが読取り可能なメディアは、パーソナル・コンピュータ１００のための不揮発記憶を提供する。上のコンピュータが読取り可能なメディアの種類はハード・ディスク、取外し可能な磁気ディスクおよびＣＤ−ＲＯＭまたはＤＶＤ−ＲＯＭディスクのことを言っているが、磁気カセット、フラッシュ・メモリ・カード、ディジタル・ビデオ・ディスク、ベルヌイ・カートリッジなどのコンピュータにより読みとり可能な他のタイプのメディアもこの説明のための動作環境において使用できることは、この分野の専門家にはわかるはずである。
【００３２】
オペレーティング・システム１１４およびＷＷＷブラウザ１１２のようなワールド・ワイド・ウェブをブラウズするためのプログラムなどの１つまたはそれ以上のアプリケーション・プログラム１１０を含む複数のプログラム・モジュールが、ドライブやＲＡＭ１０８に記憶されていてもよい。このようなプログラム・モジュールは、ハード・ディスク・ドライブ１１８に記憶されていて、実行のためにその一部または全部がＲＡＭ１０８にロードされてもよい。
【００３３】
ユーザは、キーボード１２８およびマウス１３０のようなポインティング・デバイスで、コマンドや情報を入力できる。多の制御入力装置（図示されていない）には、マイクロフォン、ジョイスティック、ゲーム・パッド、衛星アンテナ、スキャナーなどが含まれる。これらや他の入力装置はしばしばシステム・バスに接続された入力／出力インタフェース１２０を通じて処理ユニット１０２に接続されるが、ゲーム・ポート、ユニバーサル・シリアル・バス、またはファイヤ・ポートなどの他のインタフェースによって接続することもできる。ディスプレイ・モニタ１２６または他のタイプのディスプレイ装置も、ビデオ・ディスプレイ・アダプタ１１６のようなインタフェースを介してシステム・バス１０５に接続される。モニタに加えて、パーソナル・コンピュータは通常、スピーカーやプリンタのような他の周辺出力装置（図示されていない）を含む。パーソナル・コンピュータ１００はモニタ１２６にグラフィカル・ユーザ・インタフェースを表示することができてもよい。
【００３４】
パーソナル・コンピュータ１００は、１つまたはそれ以上の、ホスト・コンピュータ１４０のようなリモート・コンピュータに対する論理接続を使って、ネットワーク化された環境で動作してもよい。ホスト・コンピュータ１４０はサーバ、ルータ、ピア・デバイスまたは他の通常のネットワーク・ノードであればよく、そして通常パーソナル・コンピュータ１００に関係するとされた要素の多くまたは全てを含む。ＬＡＮ１３６はさらにインターネット１３８へのアクセスのためにインターネット・サービス・プロバイダ（ＩＳＰ）に接続されていてもよい。このように、ＷＷＷブラウザ１１２は、ＬＡＮ１３６、ＩＳＰ１３４およびインターネット１３８を通してホスト・コンピュータ１４０に接続することができる。このようなワートワーキング環境は、オフィス、企業全体にわたるコンピュータ・ネットワーク、イントラネットおよびインターネットにおいてありふれている。
【００３５】
ＬＡＮネットワーク環境で使用されるとき、パーソナル・コンピュータ１００はネットワーク・インタフェース・ユニット１２４を介してＬＡＮ１３６に接続される。ＷＡＮネットワーク環境で使用されるとき、パーソナル・コンピュータ１００は、通常、インターネット・サービス・プロバイダ１３４を通してインターネットに対する通信を確立するためのモデム１３２または他の手段を含む。モデム１３２は、内蔵または外置きのどちらでもよく、入力／出力インタフェース１２０を介してシステム・バス１０５に接続される。図示されているネットワーク接続は説明のためのものであり、コンピュータ間の通信リンクを確立するための他の手段も使用できることはわかるであろう。
【００３６】
オペレーティング・システム１１４は入力／出力動作を含む上述したパーソナル・コンピュータ１００の動作を全体的に制御する。この説明のための動作環境では、本発明はマイクロソフト社の「Ｗｉｎｄｏｗｓ  ＮＴ」オペレーティング・システムおよびＷＷＷブラウザ１１２と共に使われている。しかしながら、本発明は、マイクロソフト社の「Ｗｉｎｄｏｗｓ  ３．１」、「Ｗｉｎｄｏｗｓ  ９５」、「Ｗｉｎｄｏｗｓ  ９８」および「Ｗｉｎｄｏｗｓ  ２０００」オペレーティング・システム、ＩＢＭ社の「ＯＳ／２」および「ＡＩＸ」オペレーティング・システム、サン・マイクロシステムズにより製造されるワークステーションに使用されるサンソフト社の「ＳＯＬＡＲＩＳ」オペレーティング・システム、アップルコンピュータ社により製造される「ＭＡＣＨＩＮＴＯＳＨ」コンピュータに使用されるオペレーティング・システムなどの他のオペレーティング・システムにおいて使用するために実現することもできる。同様に、本発明は、この分野の専門家に知られている他のＷＷＷブラウザと共に使用するために実現することもできる。
【００３７】
ホスト・コンピュータ１４０もインターネット１３８に接続され、上述したパーソナル・コンピュータ１００に含まれるものと類似の構成要素を含んでもよい。さらに、ホスト・コンピュータ１４０は、ＷＷＷページを求める要求を受け取ったり、ＷＷＷサーバ１４２のような要求者に対してそのようなページを送ったりするアプリケーション・プログラムを実行してもよい。ＷＷＷサーバ１４２は、ＷＷＷブラウザ１１２からのＷＷＷページ１５０または他の文書を求める要求を受け取ることができる。これらの要求に応じて、ＷＷＷサーバ１４２は、ハイパーテキスト・マークアップ・ラングウェッジ（「ＨＴＭＬ」）またはイーエクステンシブル・マークアップ・ラングウェッジ（ＸＭＬ）のような他のマークアップ・ラングウェッジのファイルを含むＷＷＷページ１９０をＷＷＷブラウザ１１２に送信することができる。同様に、ＷＷＷサーバ１４２は、グラフィク・イメージまたはテキスト情報などの要求されたデータ・ファイル１４８をＷＷＷブラウザ１１２に送信することもできる。ＷＷＷサーバ１４２はまたＷＷＷブラウザ１１２に対して送信するためのＷＷＷページ１５０を動的に生成するために、ＣＧＩ、ＰＥＲＬ、ＡＳＰ、またはＪＳＰ（ジャバ・サーバ・ベージ）スクリプトなどのスクリプト１４４を実行することもできる。ＷＷＷサーバ１４２はまた、ジャバスクリプトで書かれたスクリプトのようなスクリプト１４４を、実行のために、ＷＷＷブラウザ１２２に送信することもできる。
【００３８】
同様に、ＷＷＷサーバ１４２はサン・マイクロシステムズ社によって開発されたジャバ・プログラミング言語で書かれたプログラムを、実行のためにＷＷＷブラウザ１１２に送信することもできる。ＷＷＷサーバ１４２はアパッシェまたはネットスケープ・ウェブサーバを走らせるＵＮＩＸプラットフォームを含むことができる。それとは別に、ＷＷＷサーバ１４２はインターネット・インフォメーション・サーバ（ＩＩＳ）を含むことができる。本発明はこれらの列挙された例に限定されない。他のウェブ・サーバ環境も本発明の範囲を超えていない。
【００３９】
以下により詳しく説明するように、本発明のいくつかの面は、スクリプト１４４のような、ホスト・コンピュータ１４２によって実行されるアプリケーション・プログラムで実現されることもできるし、ジャバ・アプリケーション１４６のような、コンピュータ１００によって実行されるアプリケーション・プログラムで実現されることでもできる。この分野の専門家は、本発明のいくつかの面がスタンドアロンのアプリケーションで実現されることもできることを理解するであろう。
【００４０】
代表的なコンピュータ・アーキテクチャ
図２を参照して、本発明の１つの代表的な実施の形態のためのコンピュータ・アーキテクチャを説明する。図２は、１つまたはそれ以上のデータ・ソースから集められた安全情報を管理するためのシステム２０を示している。セキュリティ・システム２０は、イベント・コレクタ２４にリンクされたフュージョン・エンジン２２を含むことができる。イベント・コレクタ２４は、イベント・シンクすなわち複数のデータ・ソースから受け取ったイベントを論理的なやり方で整理することができる装置を含むことができる。イベント・コレクタ２４のさらに詳しいことは、参照によりここに組み入れられている２００１年４月２７日に提出された米国特許出願第＿＿＿＿＿＿＿号「ネットワーク上でのセキュリティ・イベントを管理するシステムおよび方法」というタイトルの関係する出願（代理人整理番号０５４５６−１５００５）に説明されている。
【００４１】
セキュリティ管理システム２０はさらに、同じくイベント・コレクタ２４にリンクされているイベント・データベース２６を含むことができる。セキュリティ管理システム２０はまた、イベント・コレクタ２４にリンクされたデータ・ソース２８および同じくイベント・コレクタ２４にリンクされたコンソール３０を含むことができる。データベースからの情報は、殆どの場合、ランダム・アクセス・メモリ（ＲＡＭ）のような高速のメモリ・デバイスを含むフュージョン・エンジン２２にロードされる。未加工データとデータベースの比較は非常に迅速にかつ非常に効率的に行われなければならないからである。フュージョン・エンジン２２において使われる大部分のメモリ資源はＲＡＭ（これ以後「キャッシュ」と呼ばれることもある）のような高速のメモリ・デバイスを含む。しかしながら、他のメモリ資源は本発明の範囲に含まれている。フュージョン・エンジン２２のメモリ資源は、大量の情報をより高速で処理するように設計されなければならない。
【００４２】
１つまたはそれ以上のデータ・ソース２８は、多くのいろいろなハードウェアおよびソフトウェア・デバイスを含むことができる。例えば、データ・ソース２８はネットワーク・ディテクタまたはホスト・ディテクタを含むことができる。同様に、データ・ソース２８はまたファイヤ・ウォールまたは追跡記録システムも含むことができる。本発明は、図に示したタイプのデータ・ソースに限定されない。データ・ソース２８の機能は、イベント・コレクタ２４にいろいろなタイプの情報を提供することである。その情報がセキュリティ管理システム２０により監視されているネットワーク、ホスト、または単一のコンピュータに関係しているかも知れないからである。他の類似のデータ・ソース２８も本発明の範囲に含まれる。１つのデータ・ソース２８は、データ・パケットの形のネットワーク・トラフィックを監視するホスト・ディテクタを含むことができる。もう１つのデータ・ソース２８は、ネットワークまたはコンピュータの活動を監視しているユーザによって行われる観察を含むことができる。
【００４３】
１つまたはそれ以上のデータ・ソース２８は、それらの情報をイベント・コレクタ２４に送る。イベント・コレクタ２４は、１つまたはそれ以上のデータ・ソース２８から受け取ったデータを記憶しそして収集するように設計された１つまたはそれ以上のプログラム・モジュールを含んでもよい。イベント・コレクタ２４はそのデータを整理してイベント・データベース２６に記憶する。イベント・コレクタ２４はまたデータ・ソース２８から受け取った情報を何でもフュージョン・エンジン２２に転送する。侵入探知システムのディテクタ２８は、予め決められたパターンを探して未加工のネットワーク・トラフィックまたはローカル・システム・イベントを細かく調べる。ディテクタが情報をこれらの予め定められたパターンと同じであるとみなしたら、ディテクタは未加工のイベントを発生する。このイベントは次にイベント・コレクタに送られ、さらにその後フュージョン・エンジン２２に送られる。フュージョン・エンジンはイベント・コレクタ２４から受け取った未加工のイベントすなわち情報を組み立てるすなわち「融合（フュージョン）」する。換言すると、フュージョン・エンジン２２は、互いに関係がある未加工のコンピュータ・イベントの相関関係を調べる（それらの間の関係を明らかにする）ことにより整理された情報の提示を行うために、１つまたはそれ以上のデータ・ソース２８から受け取った情報を整理し解析する。
【００４４】
フュージョン・エンジン２２が２つまたはそれ以上のイベントが互いに関係がある（「相関」イベントを形成している）と判断したら、フュージョン・エンジン２２はメッセージを生成し、これらのメッセージをイベント・コレクタ２４に送る。イベント・コレクタ２４は今度はそのフュージョン・エンジン２２により生成されたメッセージをコンソール３０に送る。
【００４５】
コンソール３０は単独のパーソナル・コンピュータ上で動くプログラム・モジュールを含んでもよい。フュージョン・エンジン２２はパーソナル・コンピュータ上で動く１つまたはそれ以上のプログラム・モジュールを含んでもよい。フュージョン・エンジン２２、イベント・コレクタ２４、およびイベント・データベース２６は、これらのソフトウェア・コンポーネントの各々が１つのコンピュータ上にあることを表すために、四角形で囲まれている。しかしながら、本発明はこの構成に限定されない。そしてそれゆえに、フュージョン・エンジン２２、イベント・コレクタ２４、およびイベント・データベース２６は、別々のコンピュータ装置に在ってもよい。図示されているソフトウェア・コンポーネントの他の組合せも実現できる。逆に言えば、イベント・コレクタ２４とイベント・データベース２６は１つのハードウェア・デバイスは１つのハードウェア装置上に存在することができるが、フュージョン・エンジン２２は別のハードウェア装置上に存在する。この分野の専門家は、開示されるソフトウェアのアーキテクチャは図面に示されているアーキテクチャに限定されないことを理解するであろう。
【００４６】
次に図３を参照すると、本発明の別の代表的なソフトウェア・アーキテクチャを示す機能ブロック図が示されている。図３では、フュージョン・エンジンのプログラム・モジュール２２とディテクタ・モジュール２８のようなデータ・ソースが、単一のマシンに在ることができる。すなわちディテクタ２８の高速のＩＤＳ機能は、コンピュータのカーネルの近くに常駐することができるが、フュージョン・エンジン２２はコンピュータのユーザ・モード部に常駐することができる。このように、さらに加わったフュージョン・エンジン２２の処理は、ディテクタ２４によって行われる高速の侵入探知システムの機能の速度を低下させないであろう。
【００４７】
次に図４を参照して、この図は、本発明のための代表的なソフトウェアおよびハードウェア・アーキテクチャのもう１つの機能ブロック線図を示す。この１つの例としての実施の形態においては、ディテクタを含むデータ・ソース２８は、高速侵入探知システムの機能が果たされ得るように、検出基板または検出チップのようなハードウェア・デバイスの形で実現され得るであろう。この説明のための実施の形態では、フュージョン・エンジン２２は単にソフトウェア中にプログラム・モジュールとして常駐することができるであろう。図４は、高速データ・ストリームに対するアクセスを必要とするデータ・ソース２８は、ネットワークの処理速度が、著しいインタープリテーションまたは遅延またはその両方無しに、達成され得るように、フュージョン・エンジン２２から切り離され得ることを示している。
【００４８】
次に図５Ａを参照して、この図は、コンピュータのインシデンス・ソース５００についての情報をやはりフュージョン・エンジン２２に接続されているイベント・コレクタ２４に供給するセキュリティ情報のデータ・ソース２８の機能ブロック図を示す。図５Ａはさらに、多数のデータ・ソース２８、ユーザ・ワークステーション５２０、コンピュータ・インシデンス・ソース５００の対象であるサーバ５３０、内部ルータ５４０、およびサーバ５５０を含んでもよいネットワーク５１０を示している。ネットワーク５１０は外部ルータ５８０およびファイヤ・ウォール２８によってインターネット５９０に接続されている。ファイヤ・ウォール２８はバスチョン・ホストまたは類似の装置を含むことができる。ファイヤ・ウォール２８はまた、その内部スクリーニング・ルータ５４０に入出する全てのパケットのデータを調べるかもしれない内部スクリーニング・ルータ５４０に接続されることもできる。ユーザ・ワークステーション５２０は、サーバ５３０，５５０にアクセスするスタンドアロンのパーソナル・コンピュータであってもよい。
【００４９】
コンピュータ・インシデント・ソース５００は、ネットワーク５１０およびより具体的にはサーバ５３０（攻撃されたホスト）に対する攻撃を発するコンピュータまたはコンピュータのネットワークであってもよい。コンピュータ・インシデント・ソース５００はローカル・エリア・ネットワークのサーバ５６０に接続されてもよい。または、サーバ５６０の代わりに、コンピュータ・インシデント・ソース５００は、ダイヤル−イン・インターネット・サービス・プロバイダ（ＩＳＰ）またはインターネットに接続されたどのコンピュータに接続されることもできる。サーバ５６０またはＩＳＰ（またはインターネットに接続された他のコンピュータ）は次にルータ５７０に接続され得る。ルータ５７０はインターネット５９０のような分散コンピュータ・ネットワークに対するアクセスを提供する。
【００５０】
コンピュータ・インシデント・ソース５００はネットワーク５１０の外にあってもよいが、ネットワーク５１０の内部にあることも可能である。すなわち、コンピュータ・インシデント・ソース５００はネットワーク５１０の内部にあるユーザ・ワークステーション５２０であってもよい。例えば、社内に不満をいだく社員がいる場合には、ユーザ・ワークステーション５２０は、その社員がネットワーク５１０または１つまたはそれ以上の他のワークステーション５２０の動作を妨害する決心をするとき、コンピュータ・インシデント・ソース５００として使われ得る。
【００５１】
データ・ソース２８の各々は、破線により示される、イベント・コレクタ２４に入るデータ・ラインを持つ。しかしながら、この破線のデータは実際の物理ラインを含むこともできる。しかしながら、これらのデータ・ラインは、データ・ソースの各々が操作によりイベント・コレクタ２４が操作によりイベント・コレクタ２４にリンクされることを示す目的のためである。また、イベント・コレクタ２４は、コンピュータ・インシデント・ソース５００からの直接の攻撃に対して脆弱でないように、ネットワーク５１０内に存在することができる。図５内でのイベント・コレクタ２４の配置は、イベント・コレクタ２４の収集機能を説明する。図５は、このようなシステムを支援するために実現されるであろう実際の物理アーキテクチャというよりむしろセキュリティ情報を管理するためのシステムの基本的な概念を示している。
【００５２】
フュージョン・エンジンによって処理されるデータの説明例
次に図５Ｂを参照する。この図は、侵入探知システムのディテクタにより発生される代表的な生イベント５０５である。生イベント５０５は、送信源のインターネット・プロトコル・アドレス５１５、宛先のインターネット・プロトコル・アドレス５１５、優先度５３５、ディテクタにより指定された脆弱性５４５、イベント・タイプ・パラメータ５５５、およびタイムスタンプ５６５を含む。以下にさらに詳しく説明されるであろうように、侵入探知システムのディテクタによって指定される優先度５３５は、本質的に通常は非常に控えめである。すなわち、ディテクタは情報を非常に素早く処理しなけれならないので、複雑なアルゴリズムを走らせることも、あるコンピュータの生イベントの危険性を確認するためのテストを行うこともできない。したがって、ディテクタにより発生される多くの生イベントの優先度５５は、生イベントの実際の優先度に比べて非常に高いであろう。
【００５３】
次に図５Ｃを参照する。この図はＣｏＢＲＡ（Ｃｏｎｔｅｘｔ  Ｂａｓｅｄ  Ｒｉｓｋ  Ａｄｊｕｓｔｍｅｎｔ：  コンテキスト・ベースの危険度の調整）により処理された生イベントを示す説明図である。ＣｏＢＲＡにより処理された生イベント５０２は通常は先にディテクタにより指定された生イベントのパラメータの全てと、さらにＣｏＢＲＡにより指定されるパラメータを含む。ＣｏＢＲＡにより指定されたパラメータは、次のどれでも含むことができる。すなわち、ＣｏＢＲＡにより指定された脆弱性値５０４、ＣｏＢＲＡにより指定されたヒストリカル頻度５０６、ＣｏＢＲＡにより指定されたソース・ゾーン値５０８、ＣｏＢＲＡにより指定されたデスティネーション・ゾーン値５１０、ＣｏＢＲＡにより指定されたセンサ・ゾーン値５１２、ＣｏＢＲＡにより指定されたオリジナル優先度５１４、および生イベントの優先度が調整された理由を含む優先度変更理由５１６テキスト列（調整された場合）。これらのＣｏＢＲＡにより指定される値は、この後で図１１および図１２に関してさらに詳しく説明されであろう。
【００５４】
フュージョン・エンジンにより処理される生および相関イベントの例
次に図５Ｄを参照する。この図は代表例的な、攻撃されたホストからの攻撃（Ａｔｔａｃｋ  Ｆｒｏｍ  Ａｔｔａｃｋｅｄ  Ｈｏｓｔ：  ＡＦＡＨ）コンピュータ・セキュリティの脅威を示す機能ブロック図である。図５は、インターネット・プロコトル・アドレス２．２．２．２．を持つホスト（攻撃されたホスト）に攻撃を送るインターネット・プロコトル・アドレス１．１．１．１．を持つコンピュータ・インシデント・ソース５０３を示す。コンピュータ・インシデント・ソース５０３と攻撃を受けたホストの間の攻撃は、生コンピュータ・イベントＩとして特徴づけられることができる。攻撃を受けた後、攻撃を受けたホスト５０５は次にインターネット・プロコトル・アドレス３．３．３．３．を持つ第２のホスト５０７に別の攻撃を送る。コンピュータ・インシデント・ソース５０３と攻撃を受けたホストの間の攻撃は、生コンピュータ・イベントＩとして特徴づけられるであろう。攻撃を受けた後、攻撃を受けたホスト５０５は次にインターネット・プロコトル・アドレス３．３．３．３．を持つ第２のホスト５０７に別の攻撃を送る。攻撃を受けたホスト５０５と第２のホスト５０７の間の攻撃は、第２の生コンピュータ・イベントＩＩとして特徴づけられるであろう。第２のホスト５０７はインターネット・プロコトル・アドレス４．４．４．４．を持つ第３のホスト５０９に対する攻撃を発生する。第２のホスト５０７と第３のホスト５０９の間の攻撃は、第３の生コンピュータ・イベントＩＩＩとして特徴づけられるであろう。
【００５５】
生イベントＩ，ＩＩ，ＩＩＩを処理した後、フュージョン・エンジン２２はそれぞれの生イベントの間の関係を見つけるであろう。したがって、図３に示される生イベントを処理した後、フュージョン・エンジンは、第１と第２の生イベントＩおよびＩＩに対応する成熟相関イベント５１１を発生するかも知れない。フュージョン・エンジン２２は、第２と第３の生イベントＩＩおよびＩＩＩの間の関係を特定する第２の成熟相関イベント５１１を発生するかもしれない。第１および第２の成熟相関イベント５１１および５１３を発生するためにフュージョン・エンジン２２によって行われる処理のさらにいっそうの詳細は、以下に図７および図１４に関してさらに詳しく説明されるであろう。
【００５６】
次に図５Ｅを参照する。この図は、図１５にもとづく１例の相関イベントのあり得るデータを示す説明図である。図５Ｅに示される相関イベント５１１は、２組のリストを含むであろう。第１のリストは、攻撃を受けたホスト５０５に関係する入ってくる攻撃および攻撃を受けたホスト５０５に関係する出ていく攻撃を示すかもしれない。第１の例の相関イベント５１１のより詳しいことは、図７および図１４に関して以下にさらに詳しく説明されるであろう。
【００５７】
次に図５Ｆを参照する。この図は、図１５に示されている第２の例の相関イベント５１３の考えられ得るデータを示す説明図である。第２の相関イベント５１３も２つのリスト、すなわち第２のホスト５０７に関係する入ってくる攻撃を示する第１のリストと第２のホスト５０７に関係する出ていく攻撃を示す第２のリスト、から成る。第２の例の相関イベント５１１のより詳しいことは、図７および図１４に関して以下にさらに詳しく説明されるであろう。
【００５８】
図５Ｄから５Ｆにより説明されている攻撃を受けたホストからの攻撃というコンピュータ・セキュリティに対する脅威の例は、フュージョン・エンジン２２で解析できる考え得るコンピュータ・セキュリティに対する脅威の１例にすぎない。上および以下に説明されるように、他のタイプのコンピュータ・セキュリティに対する脅威も本発明の範囲を逸脱しない。１つの例としての実施の形態では、フュージョン・エンジンは少なくとも２０の異なるタイプの可能性のある相関イベントを追跡するかもしれない。この分野に熟練した人々は、本発明が図５Ｄに示される説明のための相関イベントに限定されないこと、そしてより少ないまたはより多い相関イベントが、本発明の範囲と趣旨から逸脱することなく、本発明によって利用され得ることを理解するであろう。
【００５９】
説明のためのフュージョン・エンジンのソフトウェア・コンポーネント
図６は、図２に示されているフュージョン・エンジン２２の幾つかの構成要素を示す機能ブロック図である。基本的には、図６はフュージョン・エンジン２２のアーキテクチャを作り上げている複数のソフトウェア・コンポーネントのうちの幾つかを示している。
【００６０】
この本発明は、ここに説明され機能を具現化し、また添付されたフローチャートに示されているコンピュータ・プログラムを含む。しかしながら、本発明のコンピュータ・プログラムによる実現には多くの異なるやり方があり得ること、また本発明はどれか１組のコンピュータ・プログラム命令に限定された形で構成されるべきでないことは理解されるであろう。さらに、熟練したプログラマは、例えばこの出願書中のフローチャートや関連した説明に基づいて、開示された発明を実現するためのプログラムを困難なしに書くことができるであろう。したがって、ある特定の１組のプログラム・コード命令による開示は、本発明の実現の仕方および使い方の十分な理解のために必要であるとは考えられない。特許請求されているコンピュータ・プログラムの発明をなす機能は、プログラムのフローを示す残りの図と共に下記の説明において、より詳しく説明されるであろう。
【００６１】
１つの例としての実施の形態では、フュージョン・エンジン２２はオブジェクト指向のプログラムで実現される。したがって、図６に示されるソフトウェア・コンポーネントの幾つかは、それぞれのソフトウェア・オブジェクトに関係するデータおよびコードの両方を持ち得る。しかしながら、各ソフトウェア・オブジェクトの一般的な機能は、熟練したプログラマが、そのソフトウェア・オブジェクトの開示された機能を実現するためのコンピュータ・プログラムを書くことができるであろうように、一般的に説明されている。
【００６２】
フュージョン・エンジン２２は幾つかのソフトウェア・コンポーネントを含むことができる。図６に示されている説明のための実施の形態では、フュージョン・エンジン２２はイベント収集部２４からの生のコンピュータ・イベント情報を受け取るイベント読取り部６００を含んでもよい。イベント読取り部６００は、分類部６１５に動作によりリンクされる。分類部６１５はイベント読取り部６００から受け取った生イベントの情報を整理する。換言すれば、分類部６１５は各生イベントに含まれるイベント・タイプ・プロパティに従って生イベント情報を仕分けすることにより生イベント情報を分類する。各生イベントのイベント・タイプ・プロパティは通常は侵入探知システム内のディテクタによって生成される。
【００６３】
分類部６１５は、ＣｏＢＲＡプロセッサ６２５および１つまたはそれ以上の相関ルール６２０に対して生のイベント情報を送る責任を持つこともできる。１つまたはそれ以上の相関ルール６２０は、セキュリティに係わる出来事が発生しつつある可能性があるかどうかテストし判断するためのアルゴリズムを含むことができる。相関ルールは分類部から受け取った生のイベント情報を追跡し、その生のイベント情報を相関イベント高速メモリ６６５に記憶する。相関イベント高速メモリ６６５は、情報を記憶するためのランダム・アクセス・メモリ（ＲＡＭ）から構成されてもよい。しかしながら、本発明はＲＡＭタイプのメモリに限定されない。他の高速メモリ・デバイスも本発明の範囲を逸脱しない。分類部６１５は、メモリイベント分類データベース６３５に基づいて創設されることができる。分類部６１５は、フュージョン・エンジン２２の初期化時にイベント分類データが生イベント分類データベース６３５から分類部６１５に読み込まれるときに生成されることができる。
【００６４】
ＣｏＢＲＡプロセッサ６２５は、生のコンピュータ・イベントの状況に基づくリスク調整のためのアルゴリズムまたはソフトウェア・コンポーネントを含んでもよい。ＣｏＢＲＡプロセッサ６２５は、生のコンピュータ・イベントを、状況または知識ベースのデータベース６３０内に含まれているデータと比較することにより、生のコンピュータ・イベントの優先値を調整することができる。生イベントの優先順位は、通常は、その生イベント・データをフュージョン・エンジン２２に転送する前に、侵入探知システムのディテクタによって設定される。生のコンピュータ・イベントを処理した後、フュージョン・エンジン２２は、セキュリティ・イベントが発生しつつあるかどうかを、イベント・コレクタ２４に知らせることができる。フュージョン・エンジン２２は、通常は、１つまたはそれ以上の相関イベントをフォーマットし、イベント・リポータ６６０を介してイベント・コレクタに送る。上で述べたように、相関イベントは、フュージョン・エンジン２２によって決められて互いに関係づけられた１つまたはそれ以上のコンピュータ・イベントを含んでもよい。
【００６５】
フュージョン・エンジン２２はさらに、フュージョン・エンジン２２のためのメモリ資源を浪費しないためのメモリ管理デバイスを含んでもよい。例えば、１つの例としての実施の形態では、フュージョン・エンジン２２は、メモリ管理リスト６４０、生イベント追跡インデックス６４５および成熟イベント・リスト６５０を含んでもよい。メモリ管理リスト６４０は通常は生イベント追跡インデックス６４５にリンクされる。メモリ管理リスト６４０、生イベント追跡インデックス６４５および成熟イベント・リスト６５０に関する機能のさらに詳しいことは、図６に示されるソフトウェア・コンポーネントの簡潔な処理の説明において以下に説明されるであろう。
【００６６】
図６のための説明のためのオブジェクト指向アーキテクチャ
１つの例としての実施の形態における、ソフトウェア・オブジェクトとして実現できる、フュージョン・エンジン２２のソフトウェア・コンポーネントの１つは、イベント・リーダ６００である。イベント・リーダ６００は、イベント・コレクタ２４またはイベント・ログ・ファイル６１０から生のコンピュータ・イベントを受け取ることができる。イベント・リーダ６００は、侵入探知システムからのコンピュータ・イベント・データを記憶するための、コンマで値（Ｃｏｍｍａ  Ｓｅｐａｒａｔｅｄ  Ｖａｌｕｅ：  ＣＳＶ）を分けたフォーマットを持つファイルを含むことができる。イベント・リーダ６００は、通常は、生のコンピュータ・イベント、すなわち１つまたはそれ以上のコンピュータに対する攻撃である可能性があるものとして侵入探知システムによって追跡され得るかも知れないすべてのコンピュータ活動であり得る生のイベントを読み込む。このイベント・リーダは通常フュージョン・エンジン２２上で他のソフトウェア・コンポーネントによって処理される生イベント・データ・オブジェクトを生成する。
【００６７】
１つの例としての実施の形態では、１つまたはそれ以上のイベント・タイプ・オブジェクトを含んでもよいイベント・リーダ６００は分類部６１５にリンクされることができる。分類部６１５はイベント・リーダ６００によって生成された生イベントのオブジェクトを受け取る。分類部６１５は各生イベント・オブジェクトを、それに対応する、特定のイベント・タイプのパラメータ５５５に対して設定されているイベント・タイプのオブジェクトに関係づける。換言すれば、分類部は、生イベントのタイプに従って、生イベント・オブジェクトをイベント・タイプ・オブジェクトに指定する。イベント・リーダ６００によって受け取られる各生イベントは、その生イベントを生成した侵入探知システムに基づいてタイプまたはカテゴリを指定される。
【００６８】
分類部６１５の１つの機能は、生イベントの各々を分類またはクラス分けし、そしてそれの生イベント・オブジェクトを、それらのタイプに基づいて特定の相関ルール６２０に送ることである。相関ルール６２０は、分類部６１５から生イベントを受け取るソフトウェア・オブジェクトの形をとることもできる。
【００６９】
分類部６１５は、コンテキスト・ベースド・リスク・アジャストメント（ＣｏＢＲＡ）プロセッサ６２５に生イベント・オブジェクトを送ることもできる。ＣｏＢＲＡプロセッサは、生イベント・オブジェクトの優先度パラメータを調整することができるリスク評価の仕組みである。ＣｏＢＲＡプロセッサ６２５は、受け取った生イベント・オブジェクトの各々に対して状況に基づくリスク調整を行うために、状況または知識ベースのデータベース６３０にアクセスする。基本的には、ＣｏＢＲＡプロセッサは、攻撃の発源に加えて攻撃の宛先インターネット・プロトコル・アドレスのような環境因子との組合せでイベント・タイプ・パラメータ５５５を評価することにより、生コンピュータ・イベントのリスクを判断する。
【００７０】
状況または知識ベースのデータベース６３０は、ネットワーク内のマシンに指定されている脆弱性、ヒストリカル・イベント頻度値およびネットワーク・ゾーン設定を含むことができる。脆弱性は、攻撃に対するネットワークまたは単一のコンピュータの強さすなわち抵抗力を判断するためにフュージョン・エンジン２２の外部のデバイスにより行われる脆弱性スキャンの結果であってもよい。ヒストリカル・イベント頻度値は、署名すなわち非常に長い時間の間に発生したコンピュータ攻撃にデータを含むことができる。ネットワーク・ゾーンの定義は、ネットワークのある部分においてアクセスできるかも知れない情報の量と質に基づいてネットワークの各部分に付けられた値を含むことができる。例えば、以下に説明されるであろうように、内部、外部、および非武装化されたゾーンを区別することは役に立つ。
【００７１】
フュージョン・エンジン２２はさらに、分類部６１５を形成する異なるイベント・タイプのオブジェクトを生成する責任を持つことができる生イベント分類データベース６３５を含むことができる。生イベント分類データベース６３５は１つまたはそれ以上のセキュリティ情報の表を含むことができる。これらの表は、ディテクタによって付けられた、生イベントのタイプ・パラメータ５５５に関係する情報を含むことができる。生イベント分類データベース６３５は、生イベントを、標的にされたホストに対する衝撃（秘密保持性、完全性または利用可能性）、それらの範囲（ネットワーク、ホストまたはサービス）、およびそれらが用いる方法（裏口侵入、隠れ蓑、その他）に基づいて、生イベントを分類することができる。秘密保持性イベントは、攻撃者がホストからまたはホストについての情報を得ようと試みていることを示すイベントであり得る。完全性イベントは、攻撃者がホスト上のデータを変えようとしている、もしかすると許可されないアクセスをしようとしていることを示すイベントであり得る。
【００７２】
利用可能性イベントは、攻撃者が、例えばホストをクラッシュさせることによって、サービスの拒否を引き起こそうと試みていることを示すイベントであり得る。上記の一般的な基準に加えて、特定の相関イベントを見つけ出すのに役に立つ特別の基準が、イベントを分類するための基礎の役目を果たす。例えば、サービスの拒絶の試みの成功を確認するイベントは、成功したと信じられているサービス拒否攻撃を識別する相関ルール６２０によって使われるカテゴリにまとめられる。しかしながら、生イベント分類データベース６３５は、これらのカテゴリまたはパラメータに限定されない。さらに生イベントを定める他のカテゴリやパラメータも、本発明の範囲を逸脱しない。
【００７３】
フュージョン・エンジン２２はさらにメモリ管理リスト６４０、生イベント追跡インデックス６４５、および成熟イベント・リスト６５０を含むことができる。メモリ管理リスト６４０は、フュージョン・エンジン２２が、メモリ資源が予め決められた閾値を越えたとき（すなわち、メモリ資源が少なくなったとき）最も古い生イベントを消去または削除することにより、そのメモリ資源を管理することを可能にする。メモリ管理リスト６４０は、メモリ資源が少なくなったとき最も古いと考えられる生イベントを削除するソフトウェア・オブジェクトとして実現することができる。メモリ管理リスト６４０に関係づけられているのは、同じくもう１つのソフトウェア・オブジェクトとして実現できる生イベント追跡インデックス６４５である。生イベント追跡インデックス６４５は、ある特定の生イベントブジェクトを含むかもしれないソフトウェア・オブジェクトを特定することができる。すなわち、生イベント追跡インデックスは、今や古くなってフュージョン・エンジン２２から削除されるべき生イベントを記憶しているかも知れないソフトウェア・オブジェクトを示す。
【００７４】
メモリ管理リスト６４０と生イベント追跡インデックス６４５には、メモリ管理リスト６４０から除去されるべきでない活動パターンすなわち実際のコンピュータ脅威と認定された生イベントを追跡する成熟相関イベント・リスト６５０が関係づけられる。換言すれば、成熟相関イベント・リストは、成熟相関イベントすなわち実際のコンピュータ・セキュリティ脅威の一部であると見なされているのでフュージョン・エンジン２２から削除されるべきでない生イベントを示している。
【００７５】
フュージョン・エンジン２２はさらに、各ソフトウェア・オブジェクトの間のデータ・フローの責任を持つコントローラ６５５を含んでもよい。換言すれば、コントローラ６５５は、それより下位のレベルのソフトウェア・オブジェクトの間のデータ・フローを制御するハイ・レベルのソフトウェア・オブジェクトとして実現できる。
【００７６】
フュージョン・エンジン２２はさらに、説明のためのそして好ましいオブジェクト指向プログラミング環境におけるソフトウェア・オブジェクトとして実現されることもできるイベント・リーダ６００を含んでもよい。イベント・リーダ６００は、イベント・コレクタ２４に回送される成熟相関イベントを受け取る１つのソフトウェア・オブジェクトであってもよい。成熟相関イベントは、互いに関係づけられた１つまたはそれ以上の生イベントを含むことができる。なぜなら、その１つまたはそれ以上の生イベントが実際のコンピュータ・セキュリティ脅威である可能性があるからである。
【００７７】
セキュリティ情報を管理するためのコンピュータにより実現されたプロセス
次に図７を参照する。この図は、１つまたはそれ以上のデータ・ソースから収集されたセキュリティ情報を管理するためのコンピュータにより実現されたプロセスの説明のための論理流れ図を示す。より具体的には、図７に示されている論理流れ図は、１つまたはそれ以上のコンソールに整理された情報の提示を行うために、複数のデータ・ソースから受け取ったセキュリティ情報を融合するすなわち組み合わせてそのセキュリティ情報を分析するためのコンピュータにより実現されたプロセスを示す。図７に説明される論理の流れは、フュージョン・エンジン２２の最高レベルの処理ループの核心の論理であり、フュージョン・エンジン２２が動作しているかぎりそれ自体繰り返し実行される。
【００７８】
図７に示される論理流れ図は、図６に示されるソフトウェア・コンポーネントのうちの幾つかの初期化の後に発生するプロセスを示す。すなわち、本発明の説明のためのオブジェクト指向プログラミング・アーキテクチャにおいては、図７に示されるステップを実行するために必要とされるソフトウェア・コンポーネントすなわちソフトウェア・オブジェクトの幾つかが、図７によって説明されるプロセスの前に初期化されるかまたは生成される。したがって、この分野の通常の専門家は、図６に示されるソフトウェア・オブジェクトの初期化に関係する幾つかのステップが示されていないことがわかるであろう。例えば、上に説明したように、分類部６１５を含むソフトウェア・コンポーネントすなわちソフトウェア・オブジェクトは、フュージョン・エンジン２２の初期化の後に設立される。
【００７９】
フュージョン・エンジン２２の初期化中に、分類部６１５は、生イベント分類データベース６３５から情報を読み込むことにより構築される。分類部６１５はフュージョン・エンジン２２によって処理されることができる生イベントのタイプに対応するイベント・タイプ・オブジェクトの包括的なリスト、および生イベント分類データベース６３５に定義されている各イベント・カテゴリのための別個のイベント・タイプ・オブジェクトのリストを含んでもよい。各別個のイベント・タイプ・リストは、生イベント分類データベース６３５によって、１つのカテゴリに属するものとして定義される１組の生イベントのタイプを構成する、包括的なイベント・タイプ・リストのサブセットを含むことができる。図６に示されるいろいろなソフトウェア・コンポーネントの初期化は具体的に説明されていないが、熟練したプログラマは、この出願におけるソフトウェア・アーキテクチャの下記のフローチャートおよび関連する説明に基づいて、困難なく、開示された発明を実現するためにこのようなコンピュータ・プログラムを書くことができるであろう。
【００８０】
以下に説明されるプロセス中のあるステップは、説明されるように機能するためには、本発明の他のものよりも本来的に先に実行されなければならない。しかしながら、本発明は、このような順番または順序が本発明の機能を変えないならば、説明されているステップの順番に制限されない。すなわち、いくつかのステップは、本発明の範囲と趣旨から逸脱することなく、他のステップの前または後に実施されてもよいことが、理解されるであろう。
【００８１】
再び図７を参照する。この図は、コンピュータ・セキュリティ管理プロセスの最高レベルの処理ループの中核なす論理の概観を与える。判断ステップを７０５において、フュージョン・エンジン２２によって処理されるべき生イベントがあるかどうかが判断される。上述したように、生イベントは、侵入探知システムのディテクタから報告されるコンピュータ・イベントを含んでもよい。侵入探知システムによって識別された生のコンピュータ・イベントは、いろいろなパラメータを含んでもよい。例えば、１つの例としての実施の形態では、各生イベントは、送信源のインターネット・プロトコル・アドレス、宛先のインターネット・プロトコル・アドレス、報告されているコンピュータ・イベントのタイプ、優先度、脆弱性およびタイムスタンプを含んでもよい。
【００８２】
問い合わせて判断するステップ７０５が否定ならば、プロセスがステップ７８５に進む「ノー」枝が辿られる。問い合わせて判断するステップ７０５が肯定のときは、「イエス」枝が辿られてステップ７１０に進み、そこで生のコンピュータ・イベントまたはイベント情報がデータ・ソースから引き出される。データ・ソースは、図８に示されるように、イベント・データベース２６、イベント・ログ・ファイル６１０、またはイベント・コレクタ２４の少なくとも１つを含んでもよい。
【００８３】
図８を一時的に参照する。この図は、図６に示されているいろいろなソフトウェア・コンポーネントの間の情報の交換を示すデータ・フロー図である。図８のこのデータ・フロー図は、図７に示されているステップと並行している。例えば、データ・ソースからイベント情報を引き出すためのステップ７１０が図８に示されているが、図８では説明のためのオブジェクト指向ソフトウェア・アーキテクチャ中のイベント・リーダ・オブジェクト６００がイベント情報を読み込む。図８の参照は、図７の詳細な説明を全体を通してなされるであろう。
【００８４】
再び図７を参照すると、ステップ７１０の後そしてステップ７１５において、イベント情報すなわち生イベントは、生イベントと呼ばれる所定のフォーマットに整理される。換言すれば、説明のためのオブジェクト指向プログラミング環境において、イベント・リーダ・オブジェクト６００は、イベント・データベース２６、イベント・コレクタ２４、およびイベント・ログ・ファイル６１０のようなデータ・ソースの１つから生イベントを受け取ったとき、各生イベントに対してソフトウェア・オブジェクトを生成することができる。イベント・リーダ６００は、コントローラ６５５から受け取ったコマンドに応じて生イベント・オブジェクトを生成する。換言すれば、コントローラ６５５が、イベント・リーダ６００に、データ・ソースの各々から生イベントを引き出すように要求する。
【００８５】
ステップ７１５の後、ルーチン７２０において、各生イベントからのイベント・タイプが確認され、各生イベントはイベント・タイプ・リストの中の対応するイベント・タイプ・オブジェクトに割り当てられる。換言すれば、説明のためのオブジェクト指向ソフトウェア・アーキテクチャにおいて、イベント・リーダ６００によって生成される各生イベントのオブジェクトは、クラシファイヤ６１５内に存る対応するイベント・タイプ・オブジェクトに送られる。ルーチン７２０のさらに詳しいことは、図９を参照して説明されるであろう。
【００８６】
次に、判断ステップ７２５において、コンテキスト・ベース・リスク調整プロセス（ＣｏＢＲＡ）６２５が起動されているかいないかを断定する。換言すれば、ユーザは、各生イベント内にある優先度情報のどれをも調整しないように決めることができる。上で説明したように、侵入探知システム内のディテクタによって生成された各生イベントは、そのイベントの優先度に設定されたパラメータを含む。すなわち、侵入探知システムのディテクタは、生イベントに付随しているかもしれない危険または起こり得る被害を評価するために、コンピュータ・イベントに相対値を付ける。例えば、ネットワークに対する分散された攻撃は、単一のマシンまたはコンピュータに対するコンピュータ攻撃に比べて、より高い優先順位を与えられるようにすることができる。
【００８７】
問い合わせて判断するステップ７２５が否定のときは、「ノー」枝が辿られてルーチン７４０に進む。問い合わせて判断するステップ７２５が肯定のときは、「イエス」枝が辿られてステップ７３０に進み、そこで生イベントのパラメータが状況または知識ベースのデータベース６３０中の情報と比較される。またこのルーチンの中で、コンテキスト・データベース６３０中に在るコンテキスト情報に基づいて、各生イベントにコンテキスト・パラメータが付けられる。しばらく図８を参照すると、イベント・タイプ・オブジェクトを含むクラシファイヤ６１５は、ＣｏＢＲＡ処理オブジェクトまたはＣｏＢＲＡプロセッサ６２５に各生イベントを回送する。ルーチン７３０において、ＣｏＢＲＡプロセッサ６２５は、生イベントの環境または周辺条件に関係するコンテキスト・パラメータを付けることができる。
【００８８】
ルーチン７３０に続いて、ルーチン７３５の中で、各生イベントの優先順位は、ＣｏＢＲＡにより与えられたコンテキスト・パラメータまたはディテクタにより与えられたタイプ・パラメータまたはその両方に基づいて調整されるようにすることもできるし、元の順位がそのまま残されるようにすることもできる。基本的にはルーチン７３０および７３５は、ＣｏＢＲＡプロセッサ６２５の説明のためのアルゴリズムや方法を含むことができる。ルーチン７３０および７３５のさらに詳しいことは、図１０，１１および１２に関して以下に説明されるであろう。
【００８９】
次に、ステップ７３７において、ＣｏＢＲＡによって処理された生イベント、または処理されなかった生イベントは、イベント・コレクタ２４のような、出力デバイスに送られることができる。イベント・コレクタ２４は次に通常ＣｏＢＲＡにより処理された生イベントまたは処理されない生イベントを、イベント・データベース２６に記憶し、そして次にそのイベントをコンソール３０に回送する。以下の説明から明らかになるであろうように、コンソール３０には、処理されていない生イベント、ＣｏＢＲＡにより処理された生イベント、および相関イベントが供給される。すべてのこのようなイベントはフュージョン・エンジン２２によって処理されることができ、そしてユーザに対して表示されることができるようにイベント・コレクタ２４に送られる。１つの生イベントがイベント・コレクタ２４によってデータ・ソース２８から受け取られたとき、イベント・コレクタはまずその生イベントをフュージョン・エンジン２２に送ることが注意される。しかしながら、もし所定時間後にフュージョン・エンジン２２が応答しない場合は、イベント・コレクタ２４はそのイベントをイベント・データベース２６に記憶し、それから処理されていない（フュージョン・エンジン２２によって処理されていない）生イベントをコンソール３０に送るであろう。
【００９０】
ルーチン７４０において、生イベントは、ディテクタ２８によって付けられたイベント・タイプに基づいて、相関ルール６２０と結合される。このルーチンでは、イベント・タイプ・オブジェクトを含むクラシファイヤ６１５は、どの相関ルール（１つまたはそれ以上の）６２０がそのイベント・タイプ・パラメータ５５５に基づいてその生イベントを処理すべきかを判断する。ルーチン７４０のさらに詳しいことは、図１３に関して以下に説明されるであろう。
【００９１】
判断ステップ７４５において、生イベントに合致するルールが存在する場合には、その相関ルールに関係づけられた相関イベントが存在するかどうか判断が下される。図７では単一のプロセス・フローとして表わされているけれども、ステップ７４５から７８０は、実際には、生イベントと関係づけられた各相関ルール６２０に対して独立に行われる。基本的には、判断ステップ７４５において、相関ルール・オブジェクトまたは相関ルール６２０が、処理されつつある現在の生イベントに対して相関イベント・オブジェクトが生成されたかどうか判断する。図８に示されるように、相関ルール・オブジェクトまたは相関ルール６２０は、相関ルール・オブジェクトまたは相関ルール６２０は、相関イベント・キャシュまたは相関イベント高速メモリ６６５を調べて、処理されつつある現在の生イベントのための相関イベントが生成されたかどうか判断する。上で説明したように、相関イベント（またはオブジェクト指向ソフトウェア・アーキテクチャでは相関イベント・オブジェクト）は、単一のより高レベルのイベントを形成するために一緒にまとめられる複数の生イベントを含むことができる。
【００９２】
ステップ７４５のために、各相関イベントは、相関イベント・キャシュ６６５内の相関イベント・タイプの領域中にその相関イベントの索引を作るために使用される、アンカのインターネット・プロトコル（ＩＰ）アドレスを持つ。このアンカＩＰアドレスは、その相関イベントのタイプに依って、その相関イベント内の１つまたはそれ以上の生イベントの送信元ＩＰアドレスまたは宛先ＩＰアドレスであろう。例えば、攻撃を受けたホストからの攻撃イベントのＩＰアドレスは、攻撃を受けたホストのＩＰアドレスである。これは外来する攻撃の宛先アドレスおよび出ていくアドレスの送信元アドレスである。攻撃を受けたホストからの攻撃イベントに対する相関ルールは、それに対する生イベントが外来攻撃であるであろう相関イベントを引き出すことを試みるときの相関イベント探索キーとして、外来する生イベントの宛先ＩＰアドレスを使う。ＡＦＡＨ相関ルールは、それに対する生イベントが出ていく攻撃であるであろう相関イベントを引き出すことを試みるときの相関イベント探索キーとして、生イベントの送信元ＩＰアドレスを使う。
【００９３】
問い合わせて判断するステップ７４５が肯定のときは、ステップ７６０に向かって「イエス」枝が辿られる。問い合わせて判断するステップ７４５が否定のときは、ステップ７５０に向かって「ノー」枝が辿られ、そこで現在の相関ルールと結合された、予め決められたタイプの相関イベントが生成される。すなわち、この説明のためのオブジェクト指向ソフトウェア・アーキテクチャでは、生イベントの結合された相関ルール６２０の処理の中のこの点において、１つまたはそれ以上の相関イベント・オブジェクトが生成され得る。
【００９４】
次に、ステップ７５５において、この相関イベントは高速メモリ・デバイス６６５に記憶される。この説明のための実施の形態の高速メモリ・デバイスは、ランダム・アクセス・メモリ（ＲＡＭ）を含むことができる。しかしながら、他の高速メモリ・デバイスも本発明の範囲を逸脱しない。現在のネットワークの処理速度と対応する情報量のために、生情報の迅速な処理を可能にするためＲＡＭのような高速メモリ・デバイスを使用することが必要である。
【００９５】
ステップ７６０において、生イベントは、生イベントのタイプに基づいて、対応する相関イベント（ステップ７５０において生成されたばかりのものか、またはステップ７４５において相関イベント・キャシュ６６５から引き出されたものどちらでもよい）と結合される。換言すれば、説明のためのオブジェクト指向ソフトウェア・アーキテクチャ中のこのステップにおいて、各相関ルール・オブジェクトは、そのタイプに基づいて、生イベントを格納する。生イベントを相関イベントと結合することに加えて、生イベント追跡インデックス６４５が、その生イベントは相関イベントと結合されていることを示すために更新される。
【００９６】
次に判断ステップ７６５において、処理されている現在の相関イベントがすでに成熟しているかどうかが判断される。通常は、成熟しているためには、その特定のタイプの相関イベントに対して決められた成熟性の基準を満たす２つまたはそれ以上の生イベントを含むことができる。相関イベントの各タイプに対する成熟性の基準は、２つまたはそれ以上の生イベントの発生が、起こりそうなセキュリティ事件が起こりつつあることを示す条件を明らかにするために規定されている。ステップ７６５では、この相関イベントは、先行生イベントの処理の結果としてすでに成熟していると見なされているかどか決めるために調べられている。
【００９７】
問い合わせて判断するステップ７６５が肯定のときは、ステップ７８０に向かって「イエス」枝が辿られる。問い合わせて判断するステップ７６５が否定のときは、ルーチン７７０に向かって「ノー」枝が辿られる。ルーチン７７０において、処理されている生イベントが新しく結合された現在の相関イベントが、１つまたはそれ以上の相関ルール６２０として記述された成熟性の基準を満たすかまたはそれに合っているかどうか判断される。ルーチン７７０において、処理されている生イベントに対応するルーチンの各々が、現在の相関イベント中にリストされている現在の生イベントおよび他の生イベントがそのルールで記述されている成熟性の基準を一緒に満足するかどうか判断する。本発明は、与えられた生イベントのタイプ・パラメータに対応する任意の数のルールを含むことができる。
【００９８】
１つの例としての実施の形態では、フュージョン・エンジン２２は多数の相関ルー６２０を用いることができる。相関ルールは、悪意がある活動または悪意がない活動のどちらかを示すイベント・パターンを識別するための基礎として、生イベント分類データベース６３５に規定されているイベント・カテゴリを使うことができる。相関イベントおよび相関ルールの多くのものが、攻撃者の意図を明らかにすることができる。本発明によって検出される１組の相関イベントおよび対応する相関ルールは下記のものを含むことができる、ただしそれらに限定されない。
【００９９】
１）攻撃を受けたホストからの攻撃。このイベントは、あるホストに対する完全性攻撃に続いてそのホストから秘密性、完全性、または利用可能性攻撃が出されるのが見られたときに生成されることができる。
【０１００】
２）利用可能性攻撃スィープ（マルチホストＤｏＳ攻撃）。このイベントは、同じ送信元ＩＰアドレスから出た２つまたはそれ以上のタイプの利用可能性攻撃が複数の標的ＩＰアドレスに対して見られたとき生成されることができる。
【０１０１】
３）秘密性攻撃スィープ（マルチホスト情報収集）。このイベントは、２つまたはそれ以上のタイプの秘密性攻撃が、単一の送信元ＩＰアドレスから、複数の標的ＩＰアドレスに対して、出ているのが見られたとき生成されることができる。
【０１０２】
４）ＤｏＳとそれに続く確認イベント。このイベントは、ある標的ＩＰアドレスに対する利用可能性攻撃に続いてその標的がもはや正常に動作していないことを示すもう１つのイベントが見られたときに生成されることができる。確認イベントは、ホストが連絡不能であることを示す、ネットワーク上に設けられたセンサによって検出（例えば、他のホストからのその標的に対するＡＲＰ要求の検出）されるイベント、およびホスト上に設けられたセンサによって標的とされたシステムそれ自体上で検出された、システムの資源（メモリのような）が枯渇したことを示すイベントを含む。
【０１０３】
５）内部ＩＰアドレスを用いた外部送信元。このイベントは、外部ネットワークを監視するネットワーク上に設けられたセンサがそっくり同じ内部ＩＰアドレスを検出したときに生成されることができる。この状態の発生は、外部のホストが内部のホストのＩＰアドレスを使うこと、スプーフィング（だますこと）として知られているやり方、を試みていることを示す。
【０１０４】
６）完全性攻撃とそれに続くリモード・ログイン。このイベントは、あるホストに対する完全性攻撃に続いてそのホストからリモード・ログインが出されるのが見られたときに生成されることができる。
【０１０５】
７）完全性攻撃とそれに続くサービスの開始。このイベントは、あるホストに対する完全性攻撃に続いて、ホスト上に設けられたセンサからのそのホスト上で新しいサービスが始まったという報告があったときに生成されることができる。
【０１０６】
８）インターネット・スキャナ・スキャン。このイベントは、ＩＳＳインターネット・スキャナのスキャンが１つのホストから検出されたときに生成されることができる。スキャンの開始の検出に続くある期間の間は、その同じホストから発出する全ての他のイベントはインターネット・スキャナ・スキャン・イベントに含められる。送信元ＩＰアドレスが承認されたスキャン・ソースとして構成されている場合には、そのイベントは悪意の無いイベントとみなされ得る。そうでない場合にはそのイベントは悪意のあるイベントとみなされ得る。
【０１０７】
９）調査（プローブ）とそれに続く完全性攻撃。このイベントは、あるホストに対する調査イベントに続いて、そのホストに対する完全性攻撃が見られたときに生成されることができる。
【０１０８】
１０）完全性攻撃スイープ（犠牲者を捜し回ること）。このイベントは、２つまたはそれ以上のタイプの完全性攻撃が単一の送信元ＩＰアドレスから複数の標的ＩＰアドレスに対して発出するのが見られたときに生成されることができる。
【０１０９】
１１）ＤｏＳ攻撃されたホストからのログイン。このイベントは、進行中の利用可能性攻撃の標的に現在なっている送信元ＩＰアドレスからのリモート・ログインが見られたきに生成されることができる。イベントのこの組合せは、攻撃者が、ネットワークの信頼関係を利用してネットワーク上の他のマシンにアクセスするためにあるホスト（利用可能性攻撃の標的）に変装していることを示している可能性がある。
【０１１０】
１２）複数のホスト上での１ユーザのログインの失敗。このイベントは、同一のユーザのログインの失敗が、ネットワーク上またはホスト上の複数のセンサによって報告されたときに生成されることができる。
【０１１１】
１３）疑わしい活動とそれに続く利用可能性攻撃。このイベントは、利用可能性攻撃が後に続く、クローキング法を含むイベントが報告されたときに生成されることができる。「クローキング」という語は、侵入探知システムから攻撃を隠そうとする全てのテクニックに適用される。
【０１１２】
１４）疑わしい活動とそれに続く完全性攻撃。このイベントは、完全性攻撃が後続した、クローキング法を含むイベントが報告されたときに生成されることができる。「クローキング」という語は、侵入探知システムから攻撃を隠そうとする全てのテクニックに適用される。
【０１１３】
１５）疑わしい活動とそれに続く完全性攻撃。このイベントは、完全性攻撃が後続した、クローキング法を含むイベントが報告されたときに生成されることができる。「クローキング」という語は、侵入探知システムから攻撃を隠そうとする全てのテクニックに適用される。
【０１１４】
１６）継続する利用可能性攻撃（集中ＤｏＳ攻撃）。このイベントは、２つまたはそれ以上のタイプの利用可能性攻撃が単一の送信元ＩＰアドレスから単一の宛先ＩＰアドレスに向けて送出されるのが見られたときに生成されることができる。
【０１１５】
１７）継続する秘密性攻撃（集中情報収集攻撃）。このイベントは、２つまたはそれ以上のタイプの秘密性攻撃が単一の送信元ＩＰアドレスから単一の宛先ＩＰアドレスに向けて送出されるのが見られたときに生成されることができる。
【０１１６】
１８）継続する完全性攻撃（集中押入り試み）。このイベントは、２つまたはそれ以上のタイプの完全性攻撃が単一の送信元ＩＰアドレスから単一の宛先ＩＰアドレスに向けて送出されるのが見られたときに生成されることができる。
【０１１７】
１９）ウェブ・スキャン。このイベントは、１つのウェブ・サーバに向けられた多数のウェブに関係した攻撃がある期間内に検出されたときに生成されることができる。一連のＵＲＬが調べられるようなウェブに関係する攻撃の特徴を調べることによって、ウィスカー（Ｗｈｉｓｋｅｒ）のような特定のウェブ・スキャン・ツールの使用を特定することが可能であろう。
【０１１８】
本発明の範囲と趣旨から逸脱することなく、追加のルールを用いることもできる。ルーチン７７０のさらに詳しいことは、図１４に関して以下にさらに詳しく説明されるであろう。しかしながら、図１４に示されているルーチン７７０は１つのルールの適用を説明しているにすぎないことは特に言及される。図１４示されている説明のためのルールは、上のリスト中の「攻撃を受けたホストからの攻撃」（ＡＦＡＨ）相関イベントに対応するルールである。攻撃を受けたホストからの攻撃の筋書きも、図５Ｄから５Ｆに関して以下にさらに詳しく説明されるであろう。
【０１１９】
問い合わせて判断するルーチン７７０が否定ならば、「ノー」枝が辿られて判断ルーチン７８５に進む。問い合わせて判断するルーチン７７０が肯定のときは、「イエス」枝が辿られてステップ７１０に進み、そこで成熟イベント・メッセージが生成されて、イベント・コレクタ２４のような出力デバイスに送られる。ステップ７７５において、イベント・レポータ６６０はその相関イベントが成熟であるという標識を受け取り、それからイベント・レポータ６６０はこのメッセージをイベント・コレクタ２４に送る。
【０１２０】
ステップ７８０において、１つの生イベントが既に成熟している相関イベントに追加されるとき、相関イベント更新通知が出力デバイスに送られる。このステップで、イベント・レポータはその相関イベント更新通知をイベント・コレクタ２４に送る。イベント・コレクタ２４はイベント・データベース２６の中のその相関イベントの表現を更新し、この情報をそこでユーザが視ることができるコンソール３０に送る。このことは、ユーザが、進行中のセキュリティ事件（すなわち、１つの成熟相関イベント）の一部である追加の生イベントが発生したときに通知されることを可能にする。
【０１２１】
次に、判断ルーチン７８５において、成熟相関イベントのどれかが発生を止めたか否かを判断する。判断ルーチン７８５のさらに詳しいことは、図１５に関して以下に説明される。
【０１２２】
問い合わせて判断するステップ７８５が否定ならば、「ノー」枝が辿られてステップ７９５に進む。問い合わせて判断するステップ７８５が肯定のときは、「イエス」枝が辿られてステップ７９０に進み、そこで１つの相関イベントが発生を停止したことを示すメッセージが送られる。このメッセージは、イベント・レポータ６６０からイベント・コレクタ２４に送られることができる。次に、イベント・コレクタ２４はイベント・データベース２６内のすでに結論が出された相関イベントの表現を更新し、そしてこのメッセージをコンソール３０に送る。
【０１２３】
ステップ７９５において、メモリ管理リスト中の最も古い生イベントおよび成熟相関イベントが消去されてもよい。フュージョン・エンジン２２のメモリの量は限られているので、成熟する可能が最も高い生イベントでメモリを満たしておく必要がある。フュージョン・エンジンは、メモリ管理リスト６４０、生イベント追跡インデックス６４５、および成熟イベント・リスト６５０のような幾つかのメモリ使用状況監視デバイスを持っている。１つの例としての実施の形態では、フュージョン・エンジンのメモリ使用状況監視デバイスはどれだけの量のメモリが利用可能であるか判断し、そしてメモリが容量まで満たされそうになると、メモリ使用状況監視デバイスは、使用可能メモリを増やすために、最も古い既存の記憶されている生イベントおよび成熟相関イベントを消去するであろう。成熟相関イベント内に含まれる生イベントは、メモリ管理リスト６４０から除去されるが消去はされない。生イベントが消去されるときはいつでも、その生イベントを含有するすべての未成熟相関イベントを見つけ出すために、生イベント追跡インデックス６４５が使われ、そしてその生イベントがそれらの未成熟相関イベントから取り除かれる。１つの未成熟相関イベントから生イベントが取り除かれてその未成熟相関イベントが他の生イベントを含まないときは、その未成熟相関イベントも消去される。
【０１２４】
次に図９を参照する。この図は、生イベントのタイプを見分けて各生イベントをクラシファイヤ６１５の対応するイベント・タイプ・オブジェクトにする図２７のルーチン７２０のための、コンピュータで実現されたプロセスを示す。ルール７２０は、各生イベントがクラスファイヤ６１５中の対応するイベント・タイプと合致させられるステップ９１０で始まる。次に、ステップ９１５において、各生イベントのタイムスタンプが見つけられる。ステップ９２０において、各イベントが、ステップ９１５で見つけられたタイムスタンプに基づいて、メモリ管理リスト６４０に追加される。このリスト中の項目は、通常、上述したメモリ清掃処理中に最も古いイベントを見つけるのを容易にするために、タイムスタンプに従って順番に保たれる。ステップ９２５において、各生イベントは、クラシファイヤ６１５に含まれているようなイベント・タイプ・オブジェクトと結合された状態で、高速メモリに記憶される。次に、ステップ９３０において、生イベントを受け入れた各イベント・タイプ・オブジェクトが、生イベント追跡インデックス６４５に追加される。すなわち、通常、フュージョン・エンジンの各ソフトウェア・コンポーネントは、生イベントを受け取ると、それ自身を生イベント追跡インデックス６４５に登録する。このように、ある生イベントがシステムから削除されることが決められたとき、生イベント追跡リスト６４５が、削除される必要のあるその生イベントの参照の場所を見つけるために使用できる。ステップ９３０の後に、このプロセスは図７の判断ステップ７２５に戻る。
【０１２５】
図１０は、各生イベントのパラメータが状況または知識ベースのデータベース６３０と比較される図７のルーチン７３０のためのコンピュータにより実現されたプロセスを示す。このルーチンにおいても、コンテキスト・データベース６３０とのこの比較に基づいて、各生イベントに対して追加のパラメータが付けられる。上述したように、コンテキスト・データベース６３０は、生イベントの重要性を評価するのに役に立つかも知れない環境情報を含むことができる。例えば、コンテキスト・データベース６３０は、ネットワーク内のマシンすなわちコンピュータについての脆弱性情報、予め決められたゾーンに基づくコンピュータまたはディテクタの相対位置、およびヒストリカル・イベント頻度に関係する情報を含むことができる。
【０１２６】
コンテキスト・データベース６３０の脆弱性情報は、通常、ネットワークを構成する１つまたはそれ以上のマシンに存在するかもしれない相対的なセキュリティに対する危険性を判断するためにネットワーク全体に対して行われるスキャンから導き出される。フュージョン・エンジン２２によって監視されているネットワークのための、ヒストリカル生イベント・ログを解析するツールは、通常、コンテキスト・データベース６３０のヒストリカル・イベント頻度情報を導き出す。このツールは、通常、同じ生イベントのタイプ、送信元インターネット・プロコトル・アドレス、および宛先インターネット・プロコトル・アドレスを共有するイベント群に対してそれらの平均のイベント頻度を計算する、ただし平均イベント頻度を計算する目的のために生イベントをグループ分けするための他のやり方も本発明の範囲内にある。コンテキスト・データベース６３０のゾーンの定義は、通常、ネットワークの各部をそれらのネットワーク全体との関係にしたがって分類することにより導き出される。例えば、内部ゾーンおよび非武装化ゾーン（ＤＢＺ）は、内部ゾーンはインターネットからアクセス可能であってはいけないネットワークのインターネット・プロトコル・ネットワーク・アドレスを含み、またＤＭＺゾーンはインターネットからアクセス可能なネットワークのインターネット・プロトコル・ネットワーク・アドレスを含むようなものとして定義されることができる。これらのゾーンは、フュージョン・エンジン２２によって監視されているネットワークのために適当に決められるであろう。
【０１２７】
ルーチン７３０は通常はＣｏＢＲＡプロセッサ６２５によって行われる。ＣｏＢＲＡプロセッサ６２５は通常各生イベントを調べ、かつそれをコンテキスト・データベース６３０と比較する。より具体的にいえば、ステップ１０１０（ルーチン７３０の最初のステップ）において、宛先インターネット・プロトコル・アドレス情報およびコンテキスト・データベース６３０との比較に基づき、各生イベントに対して、ＣｏＢＲＡ脆弱度５０４が付けられる。１つの例としての実施の形態では、付けられる脆弱性値は、脆弱であると思われる、脆弱でないと思われる、および不明、のどれか１つであることができる。
【０１２８】
次に、ステップ１０１５において、コンテキスト・データベース６３０とのもう１つの比較に基づき、各生イベントに対して、ヒストリカル頻度値５０６が付けられる。この値は、１日あたりのイベントのような、単位時間当たりのイベントの数でもよいし、イベント間の平均時間のような、数学的に関係づけられる値でもよい。ヒストリカル・イベント頻度値は、通常、ある特定の送信元マシンからある特定の宛先マシンへのある特定のタイプの生イベントが、そのフュージョン・エンジン２２によって監視されているネットワーク上で、どれくらいの頻度で見られるかを示す。ヒストリカル頻度データは、フュージョン・エンジンによって、正常な悪意の無いネットワーク活動によって引き起こされるイベントと異常な悪意のあるネットワーク活動によって引き起こされるイベントを識別するのを助けるためにフュージョン・エンジンによって使われる。
【０１２９】
ステップ１０２０において、各生イベントに対して、その生イベントの送信元インターネット・プロトコル・アドレスおよびコンテキスト・データベース６３０との比較に基づいて、送信元ゾーン５０８の値が付けられる。ステップ１０２５において、各生イベントに対して、各生イベントの宛先インターネット・プロトコル・アドレスおよびコンテキスト・データベース６３０との比較に基づいて、宛先ゾーン５１０の値が付けられる。
【０１３０】
ステップ１０３０において、各生イベントに対して、センサ・インターネット・プロトコル・アドレスおよびコンテキスト・データベース６３０との比較に基づいて、センサ・ゾーン５１２の値が付けられる。センサ・ゾーン値は、疑わしいコンピュータの活動を検出してその生イベントを生成した侵入探知システムのセンサまたはディテクタのインターネット・プロトコル・アドレスを含むことができる。ステップ１０３０の後、プロセスは図７のルーチン７３５に戻る。
【０１３１】
次に図１１を参照して、この図は、ＣｏＢＲＡにより付けられたコンテキスト・パラメータ、またはディテクタにより付けられたタイプ・パラメータ、またはその両方に基づいて、生イベントの優先順位を調整するかまたは元の優先順位をそのまま残すことができる図７のルーチン７３５のためのコンピュータにより実現されたプロセスを示す。ルーチン７３５はＣｏＢＲＡプロセッサ６２５のもう１つの中核機能である。このルーチンは、フュージョン・エンジンが、保護されているネットワークまたはコンピュータにとってのそれらの重要性に基づいて生イベントを順位づけることを可能にする。このようにして、セキュリティの管理者は、より効率的にそして効果的に、コンピュータ・セキュリティ・イベントを監視することができる。なぜなら重要なコンピュータ・セキュリティ・イベントは、他のより低順位のセキュリティ・イベントに対して相対的により高い順位および優先度を持つ。
【０１３２】
本発明は、それらのイベントおよびユーザにとって最も重要なネットワークの部分のために、ユーザにより定められた特性を使うことができる。例えば、コンテキスト・データベース６３０の一部を構成するゾーンの定義はユーザによって与えられてもよい。１つの例としての実施の形態では、監視されているネットワークの内部ゾーンおよび所謂非武装化ゾーン（ＤＭＺ）はユーザによって設定されることができる。またユーザによって明示的に決められるよりもむしろ、外部ゾーンは、ユーザによって指定された１つの明示的に決められたゾーンまたは複数のゾーン内に入らないすべてのＩＰアドレスであってもよい。本発明はこれらのタイプのゾーンに限定されない、そして例えばビジネス・パートナ・ゾーンのような他のタイプのゾーンを含むことができる。この分野の専門家は、本発明が、ユーザによって決められた任意の数のゾーンにインターネット・プロトコル・アドレスを割り当てるように設計され得ることを理解するであろう。
【０１３３】
上述したように、各生イベントは、侵入探知システム内のディテクタによってそれに付けられた優先順位パラメータ５３５を含む。１つの例としての実施の形態では、この優先順位パラメータは次の３つの値、すなわち、１，２または３のどれでも含むことができる。この説明のための実施の形態における最高の優先順位は、通常は数値の１である。他方、最低の優先順位は、通常は値３である。中間の優先値は通常は数値２である。ディテクタによって付けられる優先順位値はその本質上非常に控えめなので、各生イベントのための優先順位値の調整が必要である。すなわち、生イベントは、通常、高いネットワーク・トラフィック・スピードを維持するためにディテクタ・レベルになければならない簡単な処理テクニックの結果である。
【０１３４】
従って、従来の侵入探知システムのディテクタ・レベルから来る優先順位値は、各イベント・タイプに対して適用できるであろう最悪の場合のシナリオに適切であるように決められる。例えば、この説明のための実施の形態では、あるタイプの生イベントがあるネットワーク上で当てはまるコンテキストに依って１，２または３の実際の優先度を持ち得るならば、ディテクタは通常このタイプのすべてのイベントに最悪の場合の優先度（この説明のための実施の形態では一（１）として表されている）を与えるであろう。ＣｏＢＲＡプロセッサ６２５がこの優先順位５３５の値を変更するときはいつでも、元のディテクタによって付けられた優先順位と優先順位５３５において更新されたすなわちＣｏＢＲＡによって調整された優先パラメータの両方を記憶した後にだけそれを行う。すなわち、この説明のための実施の形態では、ＣｏＢＲＡ処理の後でかつ優先度が調整されたときに、調整された優先順位５３５は、元のディテクタによって付けられ優先順位とＣｏＢＲＡによって調整された優先順位の２つの値を含む。
【０１３５】
フュージョン・エンジン２２は、環境条件すなわちその中で生イベントが発生される周囲状況に基づいて生イベントを順位づけることを可能にする。このようにして、セキュリティ担当のネットワーク管理者は、監視されているネットワークまたはコンピュータにとって最も重要なコンピュータ・セキュリティ・イベントだけを提示されるであろう。本発明は説明された優先順位階級に限定されない。すなわち、本発明は、１が最高の優先度を割り当てられた１から３の範囲の優先階級に限定されない。他の範囲または値および値の間の増分も、本発明の範囲を逸脱しない。この分野の専門家は、重要でない生イベントが重要な生イベントよりも上位に順位づけられる可能性をさらに少なくするために、もっと複雑な階級を生成することができることがわかるであろう。
【０１３６】
ルーチン７３５はステップ１１０で始まり、このステップでは、生イベントの標的がそのコンピュータ攻撃に抵抗力があるかどうか判断される。この判断は、図１０に説明されている手順７３０のステップ１０１０によって先に設定された、その生イベントのＣｏＢＲＡ脆弱状態５０４の値に基づいて行われる。問い合わせて判断するステップ１１１０が否定ならば、「ノー」枝が辿られて、プロセスは図１２のステップ１２１０に進む。問い合わせて判断するステップ１１１０が肯定のときは、「イエス」枝が辿られてステップ１１１５に進む。ステップ１１１５において、生イベントは、コンテキスト・データベース６３０内の１つのリストに記憶されている脆弱性が調整可能なイベント・タイプと比較される。コンテキスト・データベース６３０に記憶されているこれらの脆弱性が調整可能なイベント・タイプは、それらに対してはマシンの脆弱性順位の評価が信頼できると信じられており、したがって脆弱性順位情報に基づいて優先度を調整することが許されると、ユーザまたはシステムによって認定されたイベントである。
【０１３７】
そうする代わりに、もう１つの実施の形態（図示されていない）では、コンテキスト・データベース６３０が、その脆弱性順位の評価が信頼できるとユーザまたはシステムが信じる生イベント・タイプを識別することができ、そしてすべての他のイベント・タイプに対しては、脆弱性順位の評価は信じられると見なされ得る。このようにして、優先順位に関して調整されることが望まれない生イベントが識別されて、ＣｏＢＲＡプロセッサ６２５がこのような生イベントの優先度を引き下げないようにされる。もう１つの別の説明のための実施の形態（示されていない）では、コンテキスト・データベース６３０は両方のタイプのリストを含むことができる。すなわち、コンテキスト・データベース６３０は、調整されるべき優先順位を持つことが許される生イベント・タイプのリストと、調整される優先順位を持つことが許されない生イベント・タイプを含むリストを含むことができる。この場合には、あるイベント・タイプが両方のリストに現れたときにどちらの項が優先するか明確に定められるように、衝突回避ルールも設定されなければならない。この分野の専門家は、リストの他の構成も本発明の範囲を逸脱しないことを理解するであろう。
【０１３８】
次に、ステップ１１２０において、コンテキスト・データベース６３０の記憶された脆弱性調整可能イベントとの一致があるかどうか判断される。問い合わせて判断するステップ１１２０が否定ならば、ステップ１１３５に進む「ノー」枝が辿られる。問い合わせて判断するステップ１１２０が肯定のときは、「イエス」枝が辿られてステップ１１２５に進む。
【０１３９】
判断ステップ１１２５において、処理されている現在の生イベントが最低の優先順位であるかどうか判断される。換言すれば、処理されている現在の生イベントが説明のための優先順位値３を持つならば、その優先度はそれ以上調整できないということがわかる。したがって、問い合わせて判断するステップ１１２５が肯定のときは、「イエス」枝が辿られてステップ１１３５に進む。問い合わせて判断するステップ１１２５が否定のときは、「ノー」枝が辿られてステップ１１３０に進み、そこで現在の生イベントの優先順位５３５が引き下げされて、優先順位５３５の変更の理由がその生イベントに記録される。例えば、説明のための実施の形態では、生イベントが元の優先順位１を持ち、かつＣｏＢＲＡプロセッサ６２５がそのイベントが脆弱であるとは思われないと判断したら、ＣｏＢＲＡプロセッサは、その元の優先順位値１を、値２（中間優先順位値）のようなより低い値に調整するであろう。優先順位値を変更する理由は、なぜある特定の生イベントが引き下げられた優先度を付けられたかコンソール３０において分かるように、その生イベントの優先度変更理由５１６パラメータに記録される。１つの例としての実施の形態では、この生イベントの優先順位値を変更する理由は、文字列を含むことができる。
【０１４０】
ステップ１１３５において、各生イベントは、コンテキスト・データベース６３０内の１つのリストに記憶されている頻度調整可能なイベント・タイプと比較される。上で説明された脆弱度調整可能なイベント・タイプと同様に、頻度調整可能なイベント・タイプは、ある１対のマシンの間の高いヒストリカル・イベント頻度がフュージョン・エンジン２２によって監視されているネットワークまたはコンピュータに対する悪意の無さの信頼できる指標として見られる生イベント・タイプを含むことができる。別の構成として、同じく上で説明された脆弱度調整可能なイベント・タイプと同様に、もう１つの例としての実施の形態（図示されていない）では、コンテキスト・データベース６３０は、その代わりに、フュージョン・エンジン２２によって監視されているネットワークまたはコンピュータに対して、ある１対のマシンの間の高いヒストリカル・イベント頻度が悪意の無さの信頼できる指標として見られない生イベント・タイプを示すリストを含みことができ、かつヒストリカル・イベント頻度がすべての他のイベント・タイプに対しては悪意の無さの信頼できる指標と考えることができる。このようなシナリオにおいては、そのリストは、ヒストリカル・イベント頻度に基づいてその優先順位を調整することが望ましくない生イベントを示すであろう。代わりの構成として、さらにもう１つの例としての実施の形態（図示されていない）では、コンテキスト・データベース６３０は、両方のタイプのリスト、１つのリストは頻度に基づく優先度の調整が許される生イベント・タイプを示し、他方のリストは頻度に基づく優先度の調整が許されない生イベント・タイプを示す、を含むことができる。この場合には、あるイベント・タイプが両方のリストに現れたときどちらが優先されるか明確であるように、衝突解決ルールも決められなければならない。この分野の専門家は、リストの他の構成も本発明の範囲を逸脱しないことを理解するであろう。
【０１４１】
ステップ１１３５に続いて、ステップ１１４５において、評価されている現在の生イベントに対する一致が存在するか否か判断される。問い合わせて判断するステップ１１４５が否定のときは、図１２のステップ１２１０に向かって「ノー」枝が辿られる。問い合わせて判断するステップ１１４５が肯定のときは、判断ステップ１１５０に向かって「イエス」枝が辿られる。
【０１４２】
判断ステップ１１５０において、評価されている現在の生イベントに対してヒストリカル頻度情報が存在するか否か判断される。この判断は、図１０に説明されている手順７３０のステップ１０１５によって先に設定されたその生イベントのヒストリカル頻度値５０６に基づいて行われる。換言すれば、生イベントの中には、ヒストリカル頻度情報を得るために解析されるヒストリカル・データ中に見られないタイプ、送信元および宛先のものがある可能性がある。問い合わせて判断するステップ１１５０が否定のときは、図１２のステップ１２１０に向かって「ノー」枝が辿られる。問い合わせて判断するステップ１１５０が肯定のときは、判断ステップ１１５０に向かって「イエス」枝が辿られる。
【０１４３】
判断ステップ１１５０において、評価されている現在の生イベントに対してヒストリカル頻度情報が存在するか否か判断される。この判断は、図１０に説明されている手順７３０のステップ１０１５によって先に設定されたその生イベントのヒストリカル頻度値５０６に基づいて行われる。換言すれば、生イベントの中には、ヒストリカル頻度情報を得るために解析されるヒストリカル・データ中に見られないタイプ、送信元および宛先のものがある可能性がある。問い合わせて判断するステップ１１５０が否定のときは、図１２のステップ１２１０に向かって「ノー」枝が辿られる。問い合わせて判断するステップ１１５０が肯定のときは、判断ステップ１１５５に向かって「イエス」枝が辿られる。
【０１４４】
判断ステップ１１５５において、評価されている現在の生イベントに対するヒストリカル頻度が頻発イベント閾値よりも大きいか否かが判断される。換言すれば、この判断ステップでは、あるイベントが、特定の送信元と宛先の間に、悪意の無いイベントでありそうだと見なされ得るのに十分な頻度で発生するタイプであるかどうか判断される。頻発イベント閾値は、１日当たりのような、単位時間当たりの平均のイベント数に対応する値でもよい。しかしながら、他のこの値に数学的に関係づけられた形、例えばベント間の平均時間、も使用することができ、本発明の範囲を逸脱しない。処理されている現在の生イベントが閾値よりも大きいヒストリカル・イベント頻度を持つときは、それは頻発イベントであり悪意のないものであろうと見なされる。
【０１４５】
それが頻発・生イベントであると判断されたときは、その優先順位が引き下げられる。しかしながら、処理されている現在の生イベントがそのネットワーク上でより低頻度でしか見られなかった場合は、それは頻発・生イベントとはみなされず、そしてヒストリカル・イベント頻度に基づくその優先順位の調整は望ましくないとみなされる。したがって、問い合わせて判断するステップ１１５５が否定（処理されている現在の生イベントのようなイベントが、フュージョン・エンジン２２によって監視されているネットワーク上で頻繁には見られなかったことを意味する）のときは、図１２のステップ１２１０に向かって「ノー」枝が辿られる。問い合わせて判断するステップ１１５５が肯定（処理されている現在の生イベントのようなイベントが、フュージョン・エンジン２２によって監視されているネットワーク上で頻繁に見られたことを意味する）のときは、判断ステップ１１６０に向かって「イエス」枝が辿られる。
【０１４６】
判断ステップ１１６０において、評価されている現在の生イベントが最低の優先順位であるか否か判断される。この問い合わせて判断するステップ１１６０が肯定のときは、図１２のステップ１２１０に向かって「イエス」枝が辿られる。この問い合わせて判断するステップ１１６０が否定のときは、ステップ１１６５に向かって「イエス」枝が辿られ、現在の生イベントの優先度が引き下げられ、現在の生イベントの優先順位を変更する理由が記録される。その理由は、通常は、評価されている生イベントが高頻度で発生するというように記録される。
【０１４７】
プロセスは次に図１２に続く。図１２は図７のルーチン７３５のためのコンピュータで実現されたプロセスの第２の部分を示し、それにおいて、ＣｏＢＲＡプロセッサ６２５が、その生イベントのＣｏＢＲＡプロセッサ６２５によって付けられたコンテキスト・パラメータまたはディテクタによって付けられたタイプ・パラメータに基づいて、優先順位を調整するか、または元の優先順位をそのまま残す。
【０１４８】
ステップ１２１０において、生イベントは、コンテキスト・データベース６３０の１つのリストに記憶されているゾーンを調整可能なイベント・タイプと比較される。上で説明された脆弱性調整可能なイベント・タイプおよび頻度調整可能なイベント・タイプと同じように、ゾーンを変更可能なイベント・タイプは、ネットワークのセキュリティの管理者によって決められることができ、またそれらが内部で発生（すなわち、その生イベントの送信元インターネット・プロトコル・アドレスおよび宛先インターネット・プロトコル・アドレスの両方が、コンテキスト・データベース６３０において内部ゾーンに属すると定められているネットワーク上に在る）したとき、フュージョン・エンジン２２によって監視されているネットワークまたはコンピュータに対して危険性が低いと見なされる生イベントのタイプである。しかしながら、別の実施の形態では（図示されていない）、コンテキスト・データベース６３０は、代わりに、送信元および宛先が位置するゾーンだけに基づいては、フュージョン・エンジン２２によって監視されているネットワークまたはコンピュータに対して危険性が低いと見なされることができない生イベントのタイプを示すリストを含んでもよい。
【０１４９】
このような実施の形態においては、リストに記載されているもの以外のイベント・タイプは、それらが内部的に発生したとき、監視されているコンピュータまたはネットワークに対してリスクが低いと見なされる。さらに別の実施の形態（図示されていない）においては、コンテキスト・データベース６３０は、両方のタイプのリスト、すなわち、送信元および宛先のゾーンだけに基づいては危険性が低いと見なされることができず、その優先順位が調整されるべきではない生イベント・タイプを示す第１のリストと、内部で見られたときは危険が低いと見なされかつそれらのイベントがより低い優先順位を持つように優先順位が調整されるべきである生イベントの第２のリスト、を含んでもよい。この場合には、あるイベント・タイプが両方のリストに現れたときにどちらの項が優先するか明確に定められるように、衝突回避ルールも設定されなければならない。
【０１５０】
判断ステップ１２１５において、コンテキスト・データベース６３０内に記憶されているゾーンを調整可能なイベント・タイプとの一致が存在するか否か判断される。問い合わせて判断するステップ１２１５が否定のときは、図７のルーチン７４０に向かって「ノー」枝が後戻り方向に辿られる。問い合わせて判断するステップ１２１５が肯定のときは、判断ステップ１２２０に向かって「イエス」枝が辿られる。
【０１５１】
判断ステップ１２２０において、処理されている現在の生イベントの送信元ゾーンおよび宛先ゾーンが、両方とも、フュージョン・エンジン２２によって監視されているネットワークまたはコンピュータに関して内部であるかどうか判断する。この判断は、それぞれ、図１０に示されているルーチン７３０のステップ１０２０およびステップ１０２５によって与えられた生イベントの送信元ゾーンパラメータ５０８および宛先ゾーンパラメータ５１０の値を調べることによりなされる。多くのイベント・タイプに対しては、内部として分類された生イベントは、フュージョン・エンジン２２によって監視されているネットワークまたはコンピュータに対して外部であるかもしれないイベントに比べて、監視されているコンピュータのネットワークに対する脅威の程度が低い。
【０１５２】
したがって、内部イベントに対しては、このような生イベントの優先順位を引き下げることが望ましいかもしれない。反対に、送信元または宛先のどちらかのインターネット・プロトコル・アドレスがＤＭＺゾーン内にあるかまたはどの定められたゾーン内にもないかのどちらかである（そして従って外部と見なされる）生イベントにたいしては、侵入探知システム中のディテクタによって与えられた生イベントの優先順位を維持することが望ましいかもしれない。問い合わせて判断するステップ１２２０が否定のときは、図７のルーチン７４０に向かって「ノー」枝が後戻り方向へ辿られる。問い合わせて判断するステップ１２２０が肯定のときは、判断ステップ１２２５に向かって「イエス」枝が辿られる。
【０１５３】
判断ステップ１２２５において、現在の生イベントがその最低の優先順位であるか否か判断される。問い合わせて判断するステップ１２２５が肯定のときは、図７のルーチン７４０に向かって「イエス」枝が後戻り方向に辿られる。問い合わせて判断するステップ１２２５が否定のときは、ステップ１２３０に向かって「ノー」枝が辿られ、そこで現在の生イベントの優先順位が引き下げられ、そしてその生イベントの優先順位の変更の理由が記録される。通常、ステップ１２３０における理由は、現在の生イベントの優先順位が引き下げられたのはそれが内部攻撃を構成するからであることを示すであろう。プロセスは次に図７のルーチン７４０に戻る。
【０１５４】
本発明はまた優先順位値の引き下げ方について限定されない。換言すれば、本発明は、引き下げられた優先度または引き上げられた優先度を表わすめの階級を含むこともできる。この分野の専門家は、どんな数の危険度調整スキームでも使用でき、本発明の範囲と趣旨から逸脱しないことを理解するであろう。
【０１５５】
次に図１３を参照する。この図は、生イベントがイベント・タイプ・パラメータ５５５に基づいて予め決められた相関ルールと結合される図７のルーチン７４０のコンピュータにより実現されたプロセスを示す。このルーチンでは、クラシファイヤ６１５が、各々の与えられた生イベントを処理すべき１つまたはそれ以上の相関ルール６２０を見つけ出してもよい。ステップ１３１０はルーチン７４０の最初のステップであり、このステップにおいて生イベントを含む全てのリストがＣｏＢＲＡ処理による変更を反映するために更新される。換言すれば、ＣｏＢＲＡプロセッサ６２５によって調整された生イベントを含む、説明のためのオブジェクト指向アーキテクチャ中の全てのオブジェクトが、優先順位のすべての変更を反映させるために更新される。
【０１５６】
次に、ステップ１３１５において、生イベントが、その生イベントのタイプ・パラメータ５５５に適用される相関ルールに送られる。より具体的に言えば、ステップ１３１５において、各相関ルール６２０の定義は、それにとって関心のある生イベントのカテゴリの１つのリストを含む。各生イベント・カテゴリに含まれる生イベントのタイプは、生イベント分類データベース６３５中で定められている。したがって、ある相関ルール６２０に関心のある生イベント・タイプのリストは、そのルールにとって関心のあるカテゴリのための、カテゴリに特有の生イベント・タイプのリストの集まりであり、それにおいては各カテゴリに特有の生イベント・タイプのリストが生イベント分類データベース６３５によって定められている。カテゴリに特有の、生イベント・タイプのリストはクラシファイヤ６１５に記憶されており、生イベント分類データベース６３５の内容に基づいて初期化される。
【０１５７】
システムの初期化中にコントローラ６５５が相関ルール６２０をロードするとき、コントローラ６５５は、そのルールをそのルールにとって関心のあるイベント・カテゴリ（前段落で説明されるように決められる）中に含まれる全てのイベント・タイプと結合させる。これはそのルールを各々のそのようなイベント・タイプ内に維持されている関係のあるルールのリストに追加することにより行う。したがって、初期化の後、各イベント・タイプは、そのタイプのイベントに関心を持つ相関ルール６２０の全てを列挙した１つのリストを含む。各生イベントが受け取られたとき、イベント・リーダ６００は、その生イベントのイベント・タイプを引き出し、そして次にそのイベント・タイプの関係するルールのリストを引き出すことにより、どの相関ルール６２０がその生イベントを処理すべきか判断する。そのどの相関ルール６２０がその生イベントを処理すべき１組の相関ルール６２０を判断したら、プロセスは図７のステップ４５に戻る。
【０１５８】
次に図１４を参照する。この図は、現在の生イベントが付け加えされた現在未熟な相関イベントが、対応するルール６２０の成熟基準を満たすすなわち満足するか否か判断する図７のルーチン７７０のための、コンピュータにより実現されたプロセスを示す。ここに説明されるプロセスは、一般的なものではなく、１例としてのイベント・タイプ、攻撃されたホストからの攻撃（ＡＦＡＨ）、のためのものである。しかしながら、この処理の説明および先に行った例としての相関イベント・タイプの説明が与えられたので、この分野の専門家には、説明された例示のためのイベント・タイプの各々の発生を認識するために同じような処理がどのように使用できるか明らかなはずである。上に説明したように、各ルール６２０は、オブジェクト指向・アーキテクチャでは、１つのルール・オブジェクトとして実現することができる。先に説明された図１３のステップ１３１５の処理からこの分野の専門家に明らかであろうように、単一の生イベントが複数の相関ルール・オブジェクトによって処理されてもよい。
【０１５９】
図７または図１４には示されていないが、図７のステップ７４５から７８０の処理（図１４に説明されているルーチン７７０の処理を含む）は、この例示のためのＡＦＡＨ相関イベントの場合には、現在処理されている生イベントのために、２回実行することもできる。１つの例としての実施の形態においては、生イベントは、外来する攻撃と見なされたときそれが完全性攻撃である場合にのみ一回処理され、また外出攻撃と見なされたときはいつでも処理される。生イベントがステップ７４５から７８０によって外来する攻撃と見なされたときは、ステップ７４５は、相関イベント・キャッシュ６６５から対応するＡＦＡＨ相関イベントを引き出そうと試みるときに、その生イベントの宛先インターネット・プロトコル・アドレスをルックアプ・キーとして使う（ステップ７４５の処理の解説において前に説明されているように）。
【０１６０】
その生イベントがステップ７４５から７８０によって外出攻撃と見なされたときは、ステップ７４５は、相関イベント・キャッシュ６６５から対応するＡＦＡＨ相関イベントを引き出そうと試みるときに、その生イベントの送信元インターネットをルックアプ・キーとして使う（ステップ７４５の処理の解説において前に説明されたように）。この生イベントの「２重処理」は、フュージョン・エンジン２２によって処理されることができる他の相関イベントに比べて、例としてのＡＦＡＨ相関イベントの特有の面である。前に説明された代表例の相関イベント・タイプのすべてに対して、代表例の相関イベント・ｑタイプの説明に基づいてこの分野の専門家には明らかであろうように、ステップ７４５から７８０の処理は１回だけ行われる。
【０１６１】
再び図１４を参照すると、ステップ１４１０はルーチン７７０の最初のステップである。このステップにおいて、処理されている現在の生イベントのためのクラシファイヤ６１５のイベント・タイプ・オブジェクトが、生イベント追跡インデックス６４５に追加される。また、処理されている現在の生イベント・オブジェクトに対応する相関イベント・オブジェクトが、メモリ管理リスト６４０に追加されるか（それが図７のステップ７５０において生成されたばかりの新しい相関イベントであるとき）、または現在の生イベントのタイムスタンプが現在の相関イベントと関係づけられる全ての生イベントのうちで最近のタイムスタンプを持つときはメモリ管理リストの新しい位置に移される。
【０１６２】
さらに、現在の相関イベント・オブジェクトは、生イベントと関連づけられた生イベント追跡インデックス６４５に追加される。イベント・タイプ・オブジェクトと相関イベント・オブジェクトは、それらが、後で、生イベントがメモリから消去される場合にメモリ管理処理によって通知され、それによりそれらがそれら自身のその生イベントに対する参照を消去することができるように、生イベント追跡インデックス６４５に追加される。現在の相関イベントも、メモリ資源が少なくなったときに、もっとも古いイベント（その中の幾つかは未熟の相関イベントであってもよい）がフュージョン・エンジン２２から削除されることができるように、メモリ管理リスト６４０に追加される。
【０１６３】
判断ステップ１４１５において、生イベントが外来攻撃と見なされているかどうか判断される。このステップは、現在のＡＦＡＨ相関イベントが含む現在の生イベントが外来する攻撃または出ていく攻撃のどちらであるか識別する。問い合わせて判断するステップ１４１５が否定のときは、その生イベントは外出攻撃と見なされ、ステップ１４２５に向かって「ノー」枝が辿られる。問い合わせて判断するステップ１４１５が肯定のときは、その生イベントは外来する攻撃と見なされ、ステップ１４２０に向かって「イエス」枝が辿られる。
【０１６４】
判断ステップ１４２０において、外来攻撃と見なされている生イベントが完全性攻撃でありかつ現在の相関イベントの外出攻撃リスト中の少なくとも１つのイベントよりも先に発生しているか否か判断される。処理されつつある生イベントは、それがステップの処理中に相関イベントの外来攻撃リストに追加されたことから、完全性攻撃であることが知られる。代表例の相関イベント・タイプの前に示したリストに含まれている攻撃されたホストからの攻撃の説明中に示されているように、あるホストに対する完全性攻撃が見られ、その後にそのホストから発出する秘密性攻撃、完全性攻撃、または利用可能性攻撃が続いたときは、ＡＦＡＨイベントが生成される。図１３の解説に示されるように、コントローラ６５５は、システムの初期化中に相関ルール６２０をロードするときに、そのルールをそのルールにとって関心のあるイベント・カテゴリ中に含まれるイベント・タイプの全てと関係づける。
【０１６５】
ＡＦＡＨルールの場合には、関心のあるイベント・カテゴリは秘密性攻撃、完全性攻撃、および利用可能性攻撃である。ＡＦＡＨルールはしたがって生イベント分類データベース６３５によってこれらの３つのカテゴリの１つに属すると決められた全てのイベント・タイプと関係づけられる。したがって、そのイベント・タイプがこれらの３つのカテゴリの１つに属する生イベントはどれも、処理のためにルーチン７７０に送られることができる。ＡＦＡＨイベントの定義は外来攻撃が完全性攻撃であることを要求し、そしてルーチン７７０に送られる生イベントの中にはそうではなく秘密性攻撃または利用可能性攻撃もあり得るので、この判断ステップ１４２０は外来攻撃と見なされている生イベントが完全性攻撃であることを確かめなければならない。
【０１６６】
フュージョン・エンジン２２が複数のディテクタによって発生させられた生イベントを受け取ることができ、そのため生イベントが非日時順に受け取られ得る（すなわち、後のタイムスタンプを持つ生イベントがそれより前のタイムスタンプを持つ生イベントより先に受信され得る）可能性があるという事実から、さらに１つの問題が生じる。この理由のために、ルーチン７７０は生イベントが日時順に受け取られるであろうと見なすことはできず、したがってこの判断ステップ１４２０は現在の生イベントが現在の相関イベントの外出攻撃のリスト中の少なくとも１つのイベントよりも先に発生したか否かを判断する。問い合わせて判断するステップ１４２０が否定のときは、現在の相関イベントは未熟と見なされ、図７のルーチン７８５に向かって「ノー」枝が後方向に辿られる。問い合わせて判断するステップ１４２０が肯定のときは、現在の相関イベントは成熟していると見なされ、ステップ１４２７に向かって「イエス」枝が辿られる。
【０１６７】
判断ステップ１４２５において、外出攻撃と見なされている生イベントが現在の相関イベントの外来攻撃のリスト中の少なくとも１つのイベントよりも後に発生したか否かが判断される。判断ステップ１４２０と異なり、現在の生イベントが特定のカテゴリに属するか否かを判断することは必要でない、なぜなら（ステップ１４２０の解説において説明されているように）ルーチン７７０に送られる全ての生イベントは秘密性撃、完全性攻撃、または利用可能性攻撃のどれかであり、したがって外出攻撃としてどれかのＡＦＡＨイベントに含まれるための基準を満たすであろうからである。問い合わせて判断するステップ１４２５が否定のときは、現在の相関イベントは未熟と見なされ、図７のルーチン７８５に向かって「ノー」枝が後方向に辿られる。問い合わせて判断するステップ１４２５が肯定のときは、現在の相関イベントは成熟していると見なされ、ステップ１４２７に向かって「イエス」枝が辿られる。
【０１６８】
判断ステップ１４２７において、相関イベントの最も早い外来攻撃よりも前に発生した現在の相関イベント中の外出攻撃はみな外出攻撃のリストから削除される。これは、ＡＦＡＨ相関イベントの定義が、成熟ＡＦＡＨ相関イベントに含まれる各外出攻撃は少なくとも１つの外来攻撃によって先行されなければならないことを要求するために行われる。
【０１６９】
判断ステップ１４３０において、その相関イベントが、メモリ管理機構によって消去されないように、メモリ管理リスト６４０から削除される。このようにして、削除される相関イベントはフュージョン・エンジン２２から消去されないであろう。なぜならその相関イベントは今や成熟していると見なされるからである。
【０１７０】
判断ステップ１４３５において、イベント・リーダ６００によって読まれるイベント・ソースがイベント・データベース２６またはイベント・ログ・ファイル６１０のどちらかであるときは、相関イベントの更新時刻は最近の生イベントのタイムスタンプに設定されることができる。この場合にはフュージョン・エンジン２２はバッチ・モードで動作している。その代わりに、イベント・リーダ６００によって読まれるイベント・ソースがイベント・コレクタ２４のときは、相関イベントの更新時刻は、フュージョン・エンジン２２が実行されているシステムの現在時刻に設定されることができる。この場合にはフュージョン・エンジン２２はリアルタイム・モードで動作している。
【０１７１】
ステップ１４４０において、この相関イベントは成熟イベント相関リスト６５０に追加される。ステップ１４５において、２つまたはそれ以上の生イベントを含む相関イベントが、その相関イベントの１つの内部パラメータを設定することにより、成熟であると標識される。プロセッサは次に図７のステップ７７５に戻る。１つの代表としての実施の形態では、各相関イベントは、生イベントの優先順位パラメータと同じような優先順位を付けられてもよい。
【０１７２】
図５Ｄ，５Ｅ，５Ｆに示される生イベントＩＩのための代表例としてのルール処理
下記は、図５Ｄ，５Ｅおよび５Ｆに示されるような生イベントＩＩのための、攻撃を受けたホストからの攻撃の相関ルール６２０によって実行されるであろう処理である。この解説は、生イベントＩおよびＩＩが両方とも完全性攻撃タイプであり、したがってＡＦＡＨイベントの定義による外来攻撃としての条件に適合していること、生イベントＩは生イベントＩＩより先に発生していること、そして生イベントＩＩは生イベントＩＩＩよりも先に発生していることを仮定している。
【０１７３】
再び図７を参照すると、ステップ７４５において、生イベントＩＩが外来攻撃であると見なされているとき、その宛先インターネット・プロトコル・アドレス（３．３．３．３）が、相関イベント・キャッシュ６６５からＡＦＡＨ相関イベントを引き出すための探索キーとして使われるであろう。この場合において生イベントは日時順に受け取られ、したがって生イベントＩＩＩはフュージョン・エンジンによってまだ処理されていないと仮定すると、攻撃されたインターネット・プロトコル・アドレス３．３．３．３によって指し示されるＡＦＡＨ相関イベントは存在せず、それゆえ判断ステップ７４５の「ノー」枝が辿られてステップ７５０で相関イベント５１３が生成されるであろう。ステップ７５５において、相関イベント５１３は相関イベント・キャッシュ６６５に記憶されるであろう。ステップ７６０において、生イベントＩＩが、それへの参照情報を相関イベント５１３の外来攻撃リスト中に記憶することにより、相関イベント５１３と関係づけられるであろう。ステップ７６５において、相関イベント５１３がまだ成熟していないと判断されて、ステップ７７０に向かって「ノー」枝が辿られるであろう。
【０１７４】
次に図１４を参照すると、判断ステップ１４１５において、生イベントＩＩは外来攻撃と見なされているので、「イエス」枝が辿られるであろう。判断ステップ１４２０では、新しく生成された相関イベント５１３の外出攻撃リストには生イベントが無いので「ノー」枝が辿られるであろう。この処理を要約すると、外来攻撃と見なされているときは、生イベントＩＩは、新しく生成されたしかしまだ成熟していない相関イベント５１３に加えられる。
【０１７５】
図７を参照すると、ステップ７４５において、生イベントＩＩが外出攻撃と見なされているときは、その送信元インターネット・プロトコル・アドレス（２．２．２．２）が、相関イベント・キャッシュ６６５からＡＦＡＨ相関イベントを引き出すための探索キーとして使われるであろう。この場合において生イベントは日時順に受け取られ、したがって生イベントＩはフュージョン・エンジンによってすでに処理されたと仮定すると、ＡＦＡＨ相関イベント５１１が、攻撃を受けたインターネット・プロトコル・アドレスで索引がつけられて、すでに相関イベント・キャッシュ６６５中に存在するであろう、したがって判断ステップ７４５の「イエス」枝が辿られてステップ７６０に進むであろう。ステップ７６０において、相関イベント５１３は相関イベント・キャッシュ６６５に記憶されるであろう。ステップ７６０において、生イベントＩＩが、それへの参照情報を相関イベント５１１の外出攻撃リスト中に記憶することにより、相関イベント５１１と関係づけられるであろう。ステップ７６５において、相関イベント５１１がまだ成熟していないと判断されて、ステップ７７０に向かって「ノー」枝が辿られるであろう。
【０１７６】
次に図１４を参照すると、判断ステップ１４１５において、生イベントＩＩは外出攻撃と見なされているので、「ノー」枝が辿られるであろう。判断ステップ１４２５において、相関イベント５１１の外来攻撃リストはすでに生イベントＩを含み、かつ生イベントＩＩのタイムスタンプは生イベントＩのタイムスタンプよりも後なので、「イエス」枝が辿られるであろう。この時点で、相関イベント５１１は成熟している判断され、そしてステップ１４２７から１４４５が辿られて新しく成熟した相関イベント５１１が処理されるであろう。この処理を要約すると、外出攻撃と見なされているときは、生イベントＩＩは既存の相関イベント５１１に加えられ、相関イベント５１１はその結果成熟する。
【０１７７】
上に説明された例示のためのルール処理における判断ステップ１４２５を実行するために、最初に生成された生イベントＩと２番目に生成された生イベントＩＩのそれぞれのタイムスタンプが比較される。しかしながら、これらの生イベントは異なるディテクタから発し得るので、各生イベントに与えられるタイムスタンプにはいくらかのずれがあり得ることは注意されるべきである。すなわち、２番目に生成される生イベントＩＩは１番目に生成される生イベントＩの後に発生するはずであるが、生イベントを発生するディテクタの内部クロックの起こり得るずれのために、１番目に生成される生イベントＩが２番目に生成される生イベントＩＩよりも後のタイムスタンプを持つ可能性があることは予見できる。
【０１７８】
換言すれば、隣接する侵入探知システム中の各ディテクタの間の内部クロックが同期させられていないこともありえる。このような起こり得る状況に対処するために、３状態比較を行うことができる。すなわち、フュージョン・エンジン２２およびより具体的にはルール６２０は、第１の生イベントがもう１つの生イベントより先に来たかどうか判断を行うことができるように、多少の同期ずれがあるかもしれないという可能性を考慮に入れることができる。より具体的には、異なるディテクタによって生成された２つの生イベントのタイムスタンプを比較してそれらのイベントの１つが他方より先に起きた（または後に起きた）かどうかを決定するとき、比較の結果はイエス、ノー、またはかもしれない、であり得る。「かもしれない」という結果は、２つのイベントのタイムスタンプが、２つのディテクタの同期のずれに関する不確実性がどちらのイベントが先に起こったかを判断することを不可能にするほど近いときに発生する。
【０１７９】
フュージョン・エンジン２２は、「かもしれない」という結果を「イエス」として（１つの構成において）または「ノー」として（別の構成）扱うように構成することができる。好ましい実施の形態では、フュージョン・エンジン２２は、相関イベントの成熟性の基準が満たされるであろう可能性を最大にするために（それらの基準が満たされているかもしれない可能性があるように見えるときはいつでも成熟相関イベントが生成されるであろうように）「かもしれない」を「イエス」として扱う。フュージョン・エンジン２２が同一のディテクタによって生成された２つのイベントのタイムスタンプを比較するときは、同期の効果をいっさい無視してそれらの２つのイベントのタイムスタンプの間の簡単な２値比較を行うことができる。
【０１８０】
成熟相関イベントがタイムアウトしたかどうかを判断するための例示のためのコンピュータで実現されたプロセス
次に図１５を参照して、この図はどれかの成熟相関イベントが発生しなくなったか否かを判断するルーチン７８５のためのコンピュータで実現されたプロセスを示す。ステップ１５１０はルーチン７８５の最初のステップであり、このステップにおいて現在の処理時刻が成熟イベント・リスト６５０に記憶されている相関イベントの更新時刻（相関イベントの更新時刻は図１４のステップ１４３５に説明されているようにして設定される）と比較される。この比較の目的のためには、現在の処理時刻の定義はフュージョン・エンジン２２が動作しているモードに依る。フュージョン・エンジン２２がバッチ・モードで動作している（すなわち、そこからイベントが読まれつつあるイベント・ソースがイベント・データベース２６またはイベント・ログ・ファイル６１０のどちからである）ときは、現在の処理時刻はそのイベント・ソースから読まれた最新のイベントのタイムスタンプである。そうではなく、フュージョン・エンジンがバッチ・モードで動作している（すなわち、そこからイベントが読まれつつあるイベント・ソースがイベント・データベース２６またはイベント・ログ・ファイル６１０のどちからである）ときは、現在の処理時刻はそのイベント・ソースから読まれた最新のイベントのタイムスタンプである。そうではなく、フュージョン・エンジン２２がリアル・モードで動作している（すなわち、そこからイベントが読まれつつあるイベント・ソースがイベント・コントローラ２４である）ときは、現在の処理時刻はフュージョン・エンジン２２が動いているシステムの現在時刻である。
【０１８１】
判断ステップ１５１５において、現在の処理時刻と各相関イベントの更新時刻の差が予め決められた閾値を越えたか否か判断される。換言すれば、成熟イベント・リスト１５０中に含まれている成熟相関イベントが古くなったすなわち新鮮でなくなった、すなわちかなりの時間の間これらの相関イベントのためのコンピュータの活動または生イベントが発生しなかったかどうか判断される。問い合わせて判断するステップ１５１５が肯定のときは、図７のステップ７９０向かって「ノー」枝が後方向に辿られる。問い合わせて判断するステップ１５１５が否定のときは、図７のステップ７９５向かって「ノー」枝が後方向に辿られる。
【０１８２】
上の記載は本発明の説明のための実施の形態についてだけ説明していること、および請求の範囲により確定されている本発明の趣旨と範囲から逸脱することなくそれにおいて多数の変更が可能であることは理解されるべきである。
【図面の簡単な説明】
【図１】  図１は、本発明のための例示のための動作環境を提供するネットワークに接続されたパーソナル・コンピュータのブロック線図である。
【図２】  図２は、本発明のための例示のためのネットワーク・アーキテクチャを示す機能ブロック線図である。
【図３】  図３は、本発明のための例示のためのソフトウェア・アーキテクチャを示す機能ブロック線図である。
【図４】  図４は、本発明のための例示のためのソフトウェアおよびハードウェア・アーキテクチャを示す機能ブロック線図である。
【図５Ａ】  図５Ａは、コンピュータのインシデント源についての情報をフュージョン・エンジンに接続されたイベント・コレクタに供給するセキュリティ情報のデータ・ソースを示す機能ブロック線図である。
【図５Ｂ】  図５Ｂは、侵入探知システム中のディテクタによって生成される生イベント中に存在することができるデータのタイプを示す説明図である。
【図５Ｃ】  図５Ｃは、フュージョン・エンジンのＣｏＢＲＡプロセッサによって処理された例示のための生イベントを示す説明図である。
【図５Ｄ】  図５Ｄは、攻撃されたホスト・コンピュータからの攻撃というセキュリティに対する脅威を示す機能ブロック線図である。
【図５Ｅ】  図５Ｅは、図５Ｄに基づく例示のための相関イベントの実際にあり得るデータを示す説明図である。
【図５Ｆ】  図５Ｆは、図５Ｄに基づくもう１つの例示のための相関イベントの実際にあり得るデータを示す説明図である。
【図６】  図６は、図２に示されているフュージョン・エンジンの幾つかの構成要素を示す機能ブロック線図である。
【図７】  図７は、１つまたはそれ以上のデータ・ソースから集められたセキュリティ情報を管理するための方法の例示のための実施の形態を示す論理フロー図である。
【図８】  図８は、図６に図示されまた図７および９−１５に関して解説されているいろいろなソフトウェア・コンポーネントの間の情報の交換を示すデータ・フロー図である。
【図９】  図９は、リアルタイムの生イベントをイベント・タイプのリスト中の１つまたはそれ以上のカテゴリに配属させるための図７の例示のためのサブプロセスまたはルーチンを示す論理フロー図である。
【図１０】  図１０は、各リアルタイム生イベントにコンテキスト・パラメータを指定するための図７の例示のためのサブプロセスまたはルーチンを示す論理フロー図である。
【図１１】  図１１は、各リアルタイム生イベントの優先順位を調整するための図７の例示のためのサブプロセスまたはルーチンを示す論理フロー図である。
【図１２】  図１２は、各リアルタイム生イベントの優先順位を調整するための図７の例示のためのサブプロセスまたはルーチンを示す論理フロー図である。
【図１３】  図１３は、リアルタイムの生イベントのデータを対応するルールに送るための図７の例示のためのサブプロセスまたはルーチンを示す論理フロー図である。
【図１４】  図１４は、相関イベントが成熟しているか否かを判断するための図７の例示のためのサブプロセスまたはルーチンを示す論理フロー図である。
【図１５】  図１５は、成熟相関イベントが発生を停止しているか否かを判断するための図７の例示のためのサブプロセスまたはルーチンを示す論理フロー図である。
【図１】
0004700884.tif 000002
【図２】
0004700884.tif 000003
【図３】
0004700884.tif 000004
【図４】
0004700884.tif 000005
【図５Ａ】
0004700884.tif 000006
【図５Ｂ】
0004700884.tif 000007
【図５Ｃ】
0004700884.tif 000008
【図５Ｄ】
0004700884.tif 000009
【図５Ｅ】
0004700884.tif 000010
【図５Ｆ】
0004700884.tif 000011
【図６】
0004700884.tif 000012
【図７】
0004700884.tif 000013
【図８】
0004700884.tif 000014
【図９】
0004700884.tif 000015
【図１０】
0004700884.tif 000016
【図１１】
0004700884.tif 000017
【図１２】
0004700884.tif 000018
【図１３】
0004700884.tif 000019
【図１４】
0004700884.tif 000020
【図１５】
0004700884.tif 000021