(57)【要約】複数のシステムコンポーネントのイベントに関連付けられた通知を受信するように構成された計算デバイスが開示される。応じて、計算デバイスはイベントモデルで指定されたこれらのシステムコンポーネントの１つの状態に基づいて、システムコンポーネントの状態を決定する。イベントモデルで指定された状態は以前に発生した別のイベントを反映している。
2016533564.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータで実施される方法であって、
システムコンポーネントに関連付けられた第１のイベントの第１の通知を受信することと、
イベントモデルの前記システムコンポーネントの状態を指定することと、
前記システムコンポーネントを含む複数のシステムコンポーネントに関連付けられた第２のイベントの第２の通知を受信することと、
前記システムコンポーネントの前記指定された状態に少なくとも部分的に基づいて、前記複数のシステムコンポーネントの状態を決定することと
を含む、方法。
【請求項２】
前記システムコンポーネントは、プロセス、ファイルまたはスレッドの少なくとも１つを含む、請求項１に記載の方法。
【請求項３】
前記第１のイベントは他の複数のシステムコンポーネントに関連付けられており、前記他の複数のシステムコンポーネントは前記複数のシステムコンポーネントよりも大きい、請求項１に記載の方法。
【請求項４】
前記イベントモデルは、状態マシンであり、複数の状態表現に関連付けられる、請求項１に記載の方法。
【請求項５】
前記状態表現の少なくとも１つは多次元テーブルであり、各次元はシステムコンポーネントのタイプに関連付けられ、前記多次元テーブル中の少なくとも１つのエントリはシステムコンポーネントの組み合わせの状態を指定する、請求項４に記載の方法。
【請求項６】
前記第１のイベントおよび前記第２のイベントの少なくとも１つは、第１の状態から第２の状態への遷移に関連付けられている、請求項４に記載の方法。
【請求項７】
前記イベントモデルと関連付けられた遷移テーブルを参照照することにより、遷移が前記第１のイベントから前記第２のイベントへのものとなると決定することをさらに含む、請求項６に記載の方法。
【請求項８】
前記イベントモデルは、イベントに関連付けられたシステムコンポーネントの状態またはイベントに関連付けられたシステムコンポーネントの組み合わせの状態を指定するのみのスパーステーブルまたはスパース行列に関連付けられている、請求項１に記載の方法。
【請求項９】
前期イベントモデルの状態表現は、前記イベントモデルのインスタンスのインデックスでありイベントの発生に応じて更新されるインデックスを識別するワイルドカードテーブルに関連付けられている、請求項８に記載の方法。
【請求項１０】
以前にイベントに関連付けられていなかった、システムコンポーネントまたはシステムコンポーネントの組み合わせのスパーステーブルまたはスパース行列の状態を指定することに応じて、前記ワイルドカードテーブルを更新することをさらに含む、請求項９に記載の方法。
【請求項１１】
前記第１のイベントの前記通知を受信することに応じて、前記スパーステーブルの状態を更新することをさらに含み、更新することは前記スパーステーブルの行または列の状態を更新することを含む、請求項８に記載の方法。
【請求項１２】
前記決定することは、前記イベントモデルの状態表現および前記イベントモデルに関連付けられた遷移テーブルを参照することを含む、請求項１に記載の方法。
【請求項１３】
コンピュータ実行可能命令を記憶した１つまたは複数の非一時的コンピュータ可読媒体であって、前記コンピュータ実行可能命令は計算デバイスにより実行されると、前記計算デバイスに、
システムコンポーネントに関連付けられた第１のイベントの第１の通知を受信することと、
イベントモデルの前記システムコンポーネントの状態を指定することと、
前記システムコンポーネントを含む複数のシステムコンポーネントに関連付けられた第２のイベントの第２の通知を受信することと、
前記システムコンポーネントの前記指定された状態に少なくとも部分的に基づいて、前記複数のシステムコンポーネントの状態を決定することと
を含む動作を生じさせる、１つまたは複数の非一時的コンピュータ可読媒体。
【請求項１４】
前記動作は、前記第１のイベントまたは前記第２のイベントに応じて、イベントを生成して、生成した前記イベントを送出することをさらに含む、請求項１３に記載の１つまたは複数の非一時的コンピュータ可読媒体。
【請求項１５】
前記動作は、前記第１のイベントまたは前記第２のイベントに関連付けられた遷移を識別することと、前記イベントモデルの遷移テーブルで前記遷移に関連付けられアクションリストを得ることと、前記アクションリストで指定された少なくとも１つのアクションを実行することとをさらに含む、請求項１３に記載の１つまたは複数の非一時的コンピュータ可読媒体。
【請求項１６】
システムであって、
１つまたは複数のプロセッサと、
前記１つまたは複数のプロセッサにより実行されるよう構成されたカーネルレベルセキュリティエージェントと
を備え、前記カーネルレベルセキュリティエージェントは
システムコンポーネントに関連付けられたイベントを受信および送出するよう構成されたイベントバスと、
システムコンポーネントおよびシステムコンポーネントの組み合わせの状態を保持するよう構成されたイベントモデルと、
前記イベントバスからイベントの通知を受信するよう、並びにイベントおよび前記イベントモデルより維持されているシステムコンポーネントの１つの状態に少なくとも部分的に基づいて、コンポーネントの組み合わせの状態を決定するよう構成されたイベントモデルマネージャと
を含む、システム。
【請求項１７】
前記イベントバスは、前記イベントモデルマネージャにイベントを送出するときそのイベントとともにパラメータを提供する、請求項１６に記載のシステム。
【請求項１８】
前記パラメータは、Ａ）イベントモデル、Ｂ）前記イベントに基づいて前記イベントモデルのどのインスタンスが更新されることになるか、および、Ｃ）前記イベントモデルにおけるある状態から他の状態への遷移を指定する、請求項１７に記載のシステム。
【請求項１９】
前記イベントモデルマネージャは、前記パラメータに基づいて前記状態を決定するよう構成されている、請求項１７に記載のシステム。
【請求項２０】
前記イベントバスは、前記カーネルレベルセキュリティエージェントの構成に基づいて前記パラメータを決定する、請求項１７に記載のシステム。
【請求項２１】
前記イベントバスは、１つまたは複数のフィルタを通過した前記イベントに基づいて前記パラメータをさらに決定し、前記イベントモデルマネージャへ前記イベントを複数の異なるパラメータとともに複数回送出する、請求項２０に記載のシステム。
【請求項２２】
前記カーネルレベルセキュリティエージェントの更新された構成に応じて、前記システムの再起動および前記カーネルレベルセキュリティエージェントの再コンパイルをともなうこと無く、前記イベントモデルの少なくともあるコンポーネントが更新される、請求項２０に記載のシステム。
【請求項２３】
前記カーネルレベルセキュリティエージェントは、
計算デバイス上のイベントのモニタリングすること、計算デバイス上の前記イベントの一部または全てに関する状態を保持すること、セキュリティサービスに計算デバイス上の１つまたは複数のイベントを通知すること、または、計算デバイス上の１つまたは複数のイベントと関連付けられたセキュリティエクスプロイトに応じて措置を講じることの少なくとも１つを実行するように構成されている、請求項１６に記載のシステム。
【請求項２４】
前記イベントモデルの前記状態は、イベントと関連付けられた情報を記述するｎａｍｅ＿ｖａｌｕｅペアに関連付けられている、請求項１６に記載のシステム。
【請求項２５】
前記イベントモデルに関連付けられたアキュムレータをさらに備え、前記アキュムレータは、特定のイベントの発生のカウントを維持し、前記イベントモデルマネージャは、前記アキュムレータにより維持された前記カウントに少なくとも部分的に基づいて前記状態を決定するようさらに構成されている、請求項１６に記載のシステム。
【請求項２６】
前記イベントモデルに関連付けられたアキュムレータをさらに備え、前記アキュムレータは、１つまたは複数のイベントの発生に応じて更新される値を維持し、前記イベントモデルマネージャは、前記アキュムレータにより維持された前記値に少なくとも部分的に基づいて前記状態を決定するようさらに構成されている、
、請求項１６に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本願は、システムコンポーネントの状態を相関させるイベントモデルに関する。
（関連出願）
【０００２】
本特許出願は、２０１３年１０月８日に出願された「Ｅｖｅｎｔ  Ｍｏｄｅｌ  ｆｏｒＣｏｒｒｅｌａｔｉｎｇ  Ｓｙｓｔｅｍ  Ｃｏｍｐｏｎｅｎｔ  Ｓｔａｔｅｓ」と題する米国特許出願第１４／０４８，９２０号明細書の優先権を主張し、その開示内容は、参照により本明細書に完全に組み込まれる。
【背景技術】
【０００３】
インターネットの使用が日常生活でますます大きな部分を占めるにつれ、システム資源、データ、および個人情報を盗むまたは破壊するセキュリティエクスプロイトの問題が深刻化している。政府および企業は、このようなセキュリティエクスプロイトに関係する侵入および盗用を防ぐためにかなりの量の資源を投入している。セキュリティエクスプロイトは、コンピュータウイルス、ワーム、トロイの木馬、スパイウェア、キーストロークロガー、アドウェア、およびルートキットといったさまざまな形で現れる。これらのエクスプロイトは、スピアフィッシュ電子メール、クリッカブルリンク、ドキュメント、実行ファイル、またはアーカイブといったいくつかの機構に送られるまたはそれらの機構を介して送られる。セキュリティエクスプロイトによってもたらされる一部の脅威は、サイバーテロまたは産業スパイと言われる重大なものである。
【０００４】
このような脅威に立ち向かうために、政府、企業、および個人は、広範なセキュリティアプリケーションおよびサービスを使用する。典型的には、このようなアプリケーションおよびサービスは、デバイスをスキャンしてセキュリティエクスプロイトの署名または他の種類の表示を探す。署名または表示の発見に応答して、セキュリティアプリケーションおよびサービスは、セキュリティエクスプロイトを隔離するまたは削除する。しかしながら、セキュリティアプリケーションおよびサービスは、より巧妙なセキュリティエクスプロイトを見逃すことが多い。例えば、セキュリティアプリケーションおよびサービスは、検出されたイベントを相関させる能力に欠けている。このような各イベントは、そのままでは無害であるが、一緒にまたはあるシーケンスで観察される場合、そのイベントは、セキュリティエクスプロイトのアクティビティを示している可能性がある。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】米国特許出願第１３／４９２，６７２号明細書
【図面の簡単な説明】
【０００６】
詳細な説明は、添付図面を参照して示される。図面において、参照番号の左端の数字（複数）は、参照番号が最初に現れる図面と同一である。異なる図面における同じ参照番号の使用は、同様または同一の項目または特徴を示す。
【図１】システムコンポーネントの状態を保持する例示的なイベントモデルを示し、その状態は、システムコンポーネントと関連付けられたイベントに応答して決定されることを示す図である。
【図２】システムコンポーネントの状態を保持する（maintain）イベントモデルと、システムコンポーネントと関連付けられたイベントをイベントモデルマネージャに通知するイベントバスと、イベントに応答してイベントモデルの状態を決定して指定するイベントモデルマネージャとを含む例示的なセキュリティエージェントを示す図である。
【図３】イベントモデルとイベントモデルマネージャで構成された計算デバイスのコンポーネントレベルの一覧を示す図である。
【図４】複数のシステムコンポーネントと関連付けられたイベントの通知を受信し、それに応答して、以前に発生した別のイベントを反映している状態を指定したイベントモデルで指定されたシステムコンポーネントの１つの状態に基づいてシステムコンポーネントの状態を決定する例示的なプロセスを示す図である。
【発明を実施するための形態】
【０００７】
（概略）
本開示は、一部において、共通の関連付け(association)を少なくとも１つのシステムコンポーネントと共有する複数のイベントを相関させるイベントモデルを説明する。イベントを相関させるために、イベントモデルは、システムコンポーネントがそのシステムコンポーネントと関連付けられた第１のイベントに応答して決定された状態を保持する。システムコンポーネントと別のシステムコンポーネントとの両方と関連付けられたイベントといった第２のイベントが発生すると、システムコンポーネントと別のシステムコンポーネントとの組み合わせに対する状態は、第２のイベントとイベントモデルに保持されているシステムコンポーネントの状態との両方に基づいて決定される。従って、プロセスに作用するイベント、そのプロセスと関連付けられた後のイベント(a later event)、ファイルといった、結合されていない可能性のあるイベントは、イベントモデルによって相関される。
【０００８】
さまざまな実施形態において、イベントモデルは、複数の状態とそれらの状態間の遷移を備える状態マシンとすることができる。各遷移は、１つまたは複数のイベントと関連付けられ得る。さらにイベントモデルは、複数の状態表現と関連付けられ得る。状態表現は、スパーステーブルまたはスパース行列といったテーブルまたは行列とすることができる。各状態表現は、１つのタイプのシステムコンポーネントまたは複数のタイプのシステムコンポーネントと関連付けられ得る。例えば、ある状態表現は、ファイルと関連付けられた一次元テーブルまたは行列とすることができ、別の状態表現は、ファイルとプロセスに関連付けられた二次元テーブルまたは行列とすることができる。一次元テーブルの各エントリの状態（本明細書ではイベントモデルの「インスタンス」とも呼ばれる）は、エントリに対応する固有のファイルと関連付けられたイベントの通知を受信することに応答して指定され得る。二次元テーブルの各エントリの状態は、エントリに対応する固有のファイルと固有のプロセスに関連付けられたイベントの通知を受信することに応答して指定され得る。二次元テーブルのエントリと関連付けられた固有のファイルもまた、一次元テーブルで指定された状態と関連付けられていれば、二次元テーブルの状態は、少なくとも一部は一次元テーブルで指定された状態に基づいて決定される。
【０００９】
いくつかの実施形態において、状態表現の各可能なエントリは、初期ではデフォルト状態に設定され得る。他の実施形態において、状態表現がスパーステーブルである場合、各エントリは、初期ではデフォルト状態を示すエントリのヌル値を有するヌルである。デフォルト状態から別の状態への遷移と関連付けられたイベントの通知が受信されると、スパーステーブルの対応するエントリが作成されて、他の状態に設定される。
【００１０】
いくつかの実施形態において、単一のイベントは、状態表現のいくつかのインスタンスに作用することができる。例えば、プロセスＩＤのみを有するイベントは、プロセスＩＤとファイルＩＤとの両方でインデックスされた状態表現のインスタンスの全てまたは一部に作用することができる。そのイベントは、ファイルＩＤの有無にかかわらずマッチングプロセスＩＤを有する一部または全てのインスタンスに作用することができる。このようなアクションを容易にするために、ゼロ以上の次元で状態表現のエントリをインデックスする「ワイルドカードテーブル」を作成できる（「ゼロ次元」のワイルドカードテーブルは、本明細書で使用される場合、単一のみのエントリを有し、関連付けられた状態表現の全てのエントリをインデックスする）。このようなワイルドカードテーブルは、イベントに関係のあるインスタンスを集めるために使用することができ、エントリが状態表現に追加または除去されるたびに更新される。いくつかの実施形態では、イベントが単一の状態表現の全てのインスタンスに作用しなければならない場合、ゼロ次元でインデックスされたワイルドカードテーブルを含むことができる（例えば、通常のタイミングイベントは、状態表現の全てのインスタンスの状態を進行させることができる）ことに留意されたい。
【００１１】
イベントモデルのインスタンス（即ち、イベントモデルの状態表現のエントリ）はまた、それぞれがアキュムレータまたはｎａｍｅ＿ｖａｌｕｅペア（複数）のいずれかまたはその両方と関連付けられることもできる。アキュムレータは、イベントおよび閾値の発生のカウントを含むことができる。いくつかの実施形態において、アキュムレータのカウントがアキュムレータの閾値を満たすまたは超える場合のみ、インスタンスの状態を設定または更新できる。付加的または代替的には、アキュムレータは、１つまたは複数のイベントの発生に基づいて更新可能である値を保持することができ、そしてその状態は、アキュムレータによって保持された値に基づいて設定または更新され得る。ｎａｍｅ＿ｖａｌｕｅペア（複数）は、インスタンスの状態の設定がｎａｍｅ＿ｖａｌｕｅペアを有するように導くイベントといったイベントと関連付けられた情報を記述できる。
【００１２】
１つまたは複数の状態表現に加え、イベントモデルはさらに、遷移テーブルを含むことができる。遷移テーブルは、各遷移の識別子および各遷移と関連付けられたターゲット／結果として生じる状態を含むことができる。いくつかの実施形態において、１つまたは複数の遷移識別子は、アクションリストと関連付けられ得る。各アクションリストは、イベントの生成および送出といった遷移の発生に応答して遂行する１つまたは複数のアクションを含むことができる。代替的または付加的には、アクションリストは、エントリが指定された状態に設定されると、アクションリストのアクションが遂行される（例えば、イベントを生成して送出する）といった、状態表現の状態と関連付けられ得る。
【００１３】
さまざまな実施形態において、イベントモデルは、イベントモデルマネージャによって管理され得る。イベントモデルマネージャは、イベントの通知を受信することができ、それらの通知は、各イベントと関連付けられた１つまたは複数のシステムコンポーネントを特定し、イベントモデルマネージャの振る舞いを指示するパラメータを含む。通知を受信すると、イベントモデルマネージャは、パラメータを読み出して、そのパラメータを使用して、Ａ）複数のイベントモデルの中の固有のイベントモデルと、Ｂ）更新される固有のイベントモデルの状態表現（複数）のエントリと、Ｃ）イベントと関連付けられた遷移とを特定する。イベントモデルマネージャはその後、固有のイベントモデルの状態表現、ワイルドカードテーブル、および遷移テーブルをそれらのパラメータと共に使用して、固有のイベントモデルの状態表現（複数）の１つまたは複数のエントリの状態を決定して、それらの状態を設定または更新する。パラメータによって指定された遷移と関連付けられたアクションリストがあれば、イベントモデルマネージャは、そのアクションリストによって指定されたアクションを遂行できる。例えば、イベントモデルマネージャは、イベントを生成して送出できる。いくつかの実施形態において、イベントモデルマネージャは、同じイベントの通知を複数の異なるパラメータを用いて複数回受信できる。
【００１４】
いくつかの実施形態において、イベントモデルマネージャおよびそのイベントモデルマネージャによって管理される１つまたは複数のイベントモデルは、カーネルレベルのセキュリティエージェントといったセキュリティエージェントのコンポーネントとすることができる。セキュリティエージェントは、イベントの通知をイベントモデルマネージャに送出してセキュリティエージェントの構成に基づいてそれらのイベントの通知のパラメータを設定する、イベントバスを含むことができる。その構成は、計算デバイス（computing device）の再起動またはセキュリティエージェントの再コンパイルを用いずに更新されて、イベントモデルまたはイベントモデルの１つまたは複数のコンポーネント（例えば、遷移テーブル）の更新を行わせることができる。イベントバスはさらに、イベントモデルマネージャからイベントを受信して、それらのイベントをセキュリティエージェントの他のコンポーネントに送出できる。セキュリティエージェントは、計算デバイス上のイベントのモニタリング、計算デバイス上のイベントの一部または全てに関する状態の保持、セキュリティサービスに計算デバイス上の１つまたは複数のイベントを通知すること、または計算デバイス上の１つまたは複数のイベントと関連付けられたセキュリティエクスプロイトに応答してアクションを起こす（措置を講じる）ことの中から少なくとも１つを遂行するように構成され得る。
【００１５】
（イベントモデルの例）
図１は、システムコンポーネントの状態を保持する例示的なイベントモデルを示しており、その状態は、システムコンポーネントと関連付けられたイベントに応答して決定される。イベントモデル１０２は、イベントモデル１０４の表現で示すように、複数の状態１０６および遷移１０８を備える状態マシンとすることができる。イベントモデル１０２はさらに、状態表現１１０および１１２といった異なる数の次元を有し得る複数の状態表現を含むことができる。状態表現１１０または１１２のいずれかの次元は、その状態表現１１０または１１２が状態表現の全ての次元よりも少ない次元でアクセスする場合、その状態表現１１０または１１２のどのエントリに作用されなければならないかを指定できる、ワイルドカードテーブル１１４と関連付けられ得る。さらに、状態表現１１０または１１２の１つまたは複数のエントリは、アキュムレータ１１６またはｎａｍｅ＿ｖａｌｕｅペア１１８と関連付けられ得る。状態表現１１０および１１２に加え、イベントモデル１０２は、遷移１０８をターゲット状態１０６にマップする遷移テーブル１２０、および各アクションが遷移テーブル１２０にリストされた遷移１０８の１または複数と関連付けられ得るアクションリスト１２２を含むことができる。
【００１６】
図示したように、イベントモデルマネージャ１２４は、イベント通知１２６を受信して、イベント通知１２６に応答してイベントモデル１０２を更新できる。１２８において、イベントモデルマネージャ１２４は、状態表現１１０のシステムコンポーネントの組み合わせを指定する状態を少なくとも一部は状態表現１１２のシステムコンポーネントの１つに指定された状態に基づいて決定できる。
【００１７】
さまざまな実施形態において、イベントモデル１０２は、プロセス、ファイル、スレッド、モジュール、ツリーなどといったシステムコンポーネントまたはシステムコンポーネントの組み合わせの状態を表すデータ構造またはデータ構造の集合とすることができる。表された状態（複数）は次に、１つのシステムコンポーネントまたは複数のシステムコンポーネントと関連付けられたイベントの発生（複数）を反映することができる。すでに述べたように、各イベントモデル１０２は、状態表現１１０および１１２といった１つまたは複数の状態表現、遷移テーブル１２０、およびアクションリスト（複数）を含むことができる。状態表現１１０または１１２のいずれかは、１つまたは複数のワイルドカードテーブル１１４と関連付けられ、そして状態表現１１０または１１２のエントリ（複数）は、アキュムレータ１１６またはｎａｍｅ＿ｖａｌｕｅペア１１８のいずれかまたはその両方と関連付けられ得る。イベントモデル１０４の表現で示すように、イベントモデル１０２は、複数の状態１０６および遷移１０８を有する状態マシンとすることができる。例えば、イベントモデル１０２のインスタンスを値‘０’の状態１０６などのデフォルト状態１０６に設定できる。第１の遷移１０８と関連付けられた第１のイベントが発生したという通知に応答して、イベントモデルマネージャ１２４は、そのインスタンスの状態１０６を値‘１’に設定できる。イベントモデル１０２の各インスタンスは、１つまたは複数のシステムコンポーネントと関連付けられ、そして状態表現１１０または１１２の１つのエントリで表され得る。
【００１８】
状態表現１１０または１１２のいずれかは、スパーステーブルまたはスパース行列といったテーブルまたは行列とすることができる。図１において、状態表現１１０は、二次元スパーステーブルとして示され、状態表現１１２は、一次元のテーブルまたはスパーステーブルとして示されている。状態表現１１０および１１２がスパーステーブルまたはスパース行列である実施形態において、エントリは、初期ではイベントモデル１０２のデフォルト状態１０６（例えば、‘０’状態）を示すヌルである。他の実施形態において、エントリは、初期ではデフォルト状態１０６に設定され得る。
【００１９】
いくつかの実施形態において、状態表現１１０および１１２のどのエントリがヌルであり、どのエントリが状態１０６に設定されるかを追跡するために、状態表現１１０および１１２の各次元（例えば、各行または列）は、ワイルドカードテーブル１１４と関連付けられ得る。ワイルドカードテーブル１１４はそれぞれ、ゼロ次元と対応する状態表現１１０または１１２の次元の数との間のテーブルまたはアレイである。各ワイルドカードテーブル１１４は、どのインデックスが状態１０６に設定されるか、そしてどのインデックスがヌルであるかを示す、その状態表現１１０または１１２のインデックスとして機能する。これらのワイルドカードテーブル１１４は次に、単一のイベントによって変更される複数のエントリを状態表現１１０および１１２から選択するイベントモデルマネージャ１２４によって使用され得る。単一のイベントは、単一の状態表現１１０または１１２だけでなく、複数の表現における複数のエントリに作用することができる。
【００２０】
状態表現１１０および１１２の一部または全てのエントリは、アキュムレータ１１６またはｎａｍｅ＿ｖａｌｕｅペア１１８と関連付けられ得る。アキュムレータ１１６は、イベントおよび閾値の発生のカウントを含むことができる。いくつかの実施形態において、状態１０６は、アキュムレータ１１６のカウントがアキュムレータ１１６の閾値を満たすまたは超える場合のみ、イベントモデル１０２のインスタンス（アキュムレータ１１６と関連付けられるエントリで表される）に設定または更新され得る。付加的または代替的には、アキュムレータ１１６は、１つまたは複数のイベントの発生に基づいて更新可能である値を保持することができ、そしてその状態１０６は、アキュムレータ１１６によって保持された値に基づいて設定または更新され得る。ｎａｍｅ＿ｖａｌｕｅペア（複数）１１８は、インスタンスの状態１０６の設定がｎａｍｅ＿ｖａｌｕｅペア１１８を有するように導くイベントといった、イベントと関連付けられた情報を記述できる。
【００２１】
アキュムレータ１１６のコンテンツは、遷移のアクションリスト１２２で指定された時に算術演算（例えば、「インクリメント」演算であるが、可能性として任意の加算、減算、浮動小数点乗算なども含む）を用いてクエリまたは更新が行われ得る。アキュムレータ１１６に格納された値を使用して、例えば、アクション専用の閾値の値を要求することによってアクションリスト１２２内のどのアクションが遂行されるかを指示できる。いくつかの実施形態において、ｎａｍｅ＿ｖａｌｕｅペア（複数）１１８に格納された情報は、アクションリスト１２２のアクションによって設定され、変更され、または使用され得る。代替的に、いくつかの実施形態において、ｎａｍｅ＿ｖａｌｕｅペア（複数）１１８に格納された情報は、アクションリスト１２２の外部の構成か、または外部の構成とアクションリスト１２２のアクションとの組み合わせにおいて指定され得る。
【００２２】
さまざまな実施形態において、遷移テーブル１２０は、各遷移１０８の識別子および各遷移１０８と関連付けられたターゲット／結果として生じる状態１０６を含むことができる。いくつかの実施形態において、１つまたは複数の遷移識別子は、アクションリスト１２２と関連付けられ得る。各アクションリスト１２２は、そのアクションリスト１２２と関連付けられた遷移１０８の発生に応答して、または状態表現１１０または１１２のうちの１つの固有の状態１０６に設定することに応答して遂行するイベントモデルマネージャ１２４の１つまたは複数のアクションを含むことができる。このようなアクションは、イベントの生成および送出を含むことができる。
【００２３】
いくつかの実施形態において、イベントモデルマネージャ１２４は、任意の種類のモジュールまたは実行可能なコンポーネントとすることができる。図２について以下に詳細に説明するように、イベントモデルマネージャ１２４は、カーネルレベルのセキュリティエージェント１０６のコンポーネントとすることができ、そしてイベントの通知をイベントバス２１８から受信して、イベントをイベントバス２１８に提供できる。イベントモデルマネージャ１２４は、イベントモデル１０２といった、カーネルレベルのセキュリティエージェント２０６の複数のイベントモデルの管理を受け持つことができる。
【００２４】
いくつかの実施形態において、イベントモデルマネージャ１２４によって受信されるイベント通知１２６は、１つまたは複数のシステムコンポーネントのパラメータおよび識別子を含むことができる。パラメータは、イベントモデル１０２といったイベントモデルを特定する第１の部分と、イベントモデルのどのインスタンス（即ち、状態表現１１０／１１２のエントリ（複数））を更新するかを特定する第２の部分（この第２の部分は、「検索タイプ」とも呼ばれ得る）と、イベントと関連付けられている遷移１０８を特定する第３の部分とを含むマルチパートの文字列または数字の値とすることができる。他の実施形態において、パラメータは、追加部分または削減部分を含むことができる。イベントモデルマネージャ１２４は、イベント通知１２６の受信に応答してパラメータから異なる部分を読み出すことができる。いくつかの実施形態において、イベントモデルマネージャ１２４は、複数の異なるパラメータを用いて同じイベントの複数の通知１２６を受信できる。パラメータの第１の部分に基づいて、イベントモデルマネージャ１２４は、イベントモデルマネージャ１２４によって管理される複数のイベントモデルから成るイベントモデル１０２を特定する。各イベントモデルは、例えば、数値で表すことができる。
【００２５】
イベントモデル１０２を特定すると、イベントモデルマネージャ１２４は、状態表現１１０および１１２のいずれかまたはその両方、またはそれらの一部を読み出すことができる。いくつかの実施形態において、イベントモデルマネージャ１２４は、イベント通知１２６に含まれるシステムコンポーネントの識別子に基づいて、パラメータの第２の部分に含まれる検索タイプに基づいて、またはその両方に基づいて状態表現１１０および１１２のエントリを特定する。検索タイプは、状態表現１１０または１１２またはワイルドカードテーブル１１４、およびワイルドカードテーブル１１４を通じて状態表現１１０または１１２の１つまたは複数のエントリまでのいずれかまたはその両方のインデックスとすることができる。例えば、イベント通知１２６は、単一のシステムコンポーネント（例えば、Ｐｒｏｃ＿Ａ）を特定することができ、そして検索タイプは、システムコンポーネントのエントリ（例えば、状態表現１１２のエントリ）が設定または更新されなければならないこと、および単一のシステムコンポーネントと他のシステムコンポーネントとの組み合わせと関連付けられた非ヌルエンティティが更新されなければならないことを指定できる。これは、Ｐｒｏｃ＿Ａと関連付けられた状態表現１１０の行の全てではないが一部のエントリを含むであろう。イベントモデルマネージャ１２４は、Ｐｒｏｃ＿Ａと関連付けられた状態表現１１０の行に対してワイルドカードテーブル１１４を利用して、その行のどのエントリが非ヌルであるかを特定する。イベントモデルマネージャ１２４はその後、特定されたエントリを読み出すであろう。
【００２６】
いくつかの実施形態において、イベントモデルマネージャ１２４はまた、遷移１０８を特定するパラメータの第３の部分を利用して遷移テーブル１２０からターゲット状態１０６を読み出す。イベントモデルマネージャ１２４はその後、状態表現１１０および１１２の読み出されたエントリを遷移テーブル１２０から読み出されたターゲット状態１０６に設定または更新する。読み出されたエントリの設定または更新に加え、イベントモデルマネージャ１２４は、ワイルドカードテーブル１１４を更新する。例えば、すでにヌルエントリがターゲット状態１０６に設定されていれば、そのエントリを含むことに関連付けられたワイルドカードテーブル１１４は、そのエントリが現在非ヌルであることを反映するように更新される。さまざまな実施形態において、ターゲット状態１０６がデフォルト状態（例えば、値‘０’）であれば、イベントモデルマネージャ１２４は、読み出された１つまたは複数のエントリをヌルに設定して（即ち、エントリを削除する）、ワイルドカードテーブル（複数）１１４の対応する任意のエントリをヌルに設定できる。
【００２７】
いくつかの実施形態において、読み出されたエントリの１つがアキュムレータ１１６と関連付けられて、そのエントリに関連するイベント通知１２６が受信されるたびに、イベントモデルマネージャ１２４は、アキュムレータ１１６のカウントまたは値を更新する。そのカウントがアキュムレータ１１６の閾値を満たすまたは超える場合、−それ以前には満たすまたは超えていなかった場合−イベントモデルマネージャ１２４は、そのエントリの状態１０６をターゲット状態１０６に設定または更新する。代替的には、イベントモデルマネージャは、アキュムレータ１１６によって保持された更新可能な値に基づいて状態１０６を設定または更新する。一実施形態において、アキュムレータ１１６は、アキュムレータ１１６と関連付けられたエントリを設定または更新するために、カウントがイベントモデルマネージャ１２４の時間期間において閾値を満たすまたは超えるはずの閾値と時間期間の両方を含むことができる。
【００２８】
さらなる実施形態において、１２８において示すように、イベントモデルマネージャ１２４は、別の状態表現（例えば、状態表現１１２）の第２のエントリに対して指定された状態に基づいて１つの状態表現（例えば、状態表現１１０）の第１のエントリの状態１０６を決定して、第１のエントリを決定された状態１０６に設定または更新することができる。例えば、状態表現１１２は、Ｐｒｏｃ＿Ａと関連付けられたイベントに基づいてすでに設定または更新されたプロセスＰｒｏｃ＿Ａのエントリを含むことができる。状態表現１１０は、Ｐｒｏｃ＿ＡとファイルＦｉｌｅ＿Ｙとの両方に関連付けられたエントリを含むことができる。イベントモデルマネージャ１２４は、Ｐｒｏｃ＿ＡとＦｉｌｅ＿Ｙとの両方に関連付けられたイベントのイベント通知１２６を受信でき、そしてイベント通知１２６のパラメータは、状態表現１１０のＰｒｏｃ＿ＡおよびＦｉｌｅ＿Ｙのエントリが更新されることを指定できる。エントリが設定または更新されるターゲット状態の決定において、イベントモデルマネージャ１２４は、遷移テーブル１２０と、アキュムレータ１１６がエントリと関連付けられていれば、そのアキュムレータ１１６とを利用できる。イベントモデルマネージャ１２４はまた、別の状態表現（例えば、状態表現１１２）がＰｒｏｃ＿Ａ単独またはＦｉｌｅ＿Ｙ単独のエントリを含むかどうかを決定することもできる。このような状態のいずれかまたはその両方はその後、ターゲット状態１０６を決定する時に使用され得る。
【００２９】
さまざまな実施形態において、イベントモデルマネージャ１２４はまた、パラメータで特定された遷移１０８がアクションリスト１２２と関連付けられているかどうかを決定することもできる。例えば、遷移テーブル１２０の遷移識別子は、アクションリスト１２２をポイントすることができる。イベントモデルマネージャ１２４はその後、アクションリスト１２２にリストされたアクションの一部または全てを遂行できる。例えば、アクションリストは、イベントが生成されて送出されなければならない（例えば、イベントバス１１８に送出される）ことを命令できる。このような１つのイベントは、例えば、ｎａｍｅ＿ｖａｌｕｅペア１１８を含む可能性があり、このペアは、ｎａｍｅ＿ｖａｌｕｅペア１１８と関連付けられた所与のエントリの状態を導いた１つまたは複数のイベントに関する情報を格納する。いくつかの実施形態において、リスト１２２のアクションの遂行は、アキュムレータ１１６のステータスが条件となり得る。例えば、アキュムレータ１１６のカウントがアキュムレータ１１６の閾値を満たさないまたは超えない場合、イベントモデルマネージャ１２４は、そのアキュムレータ１１６と関連付けられたエントリに結合されたアクションの遂行を止めることができる。アクションリスト１２２にリストされた他のアクションは、アキュムレータ１１６の操作（例えば、アクションを設定値でインクリメントする、または浮動小数点乗算を行う）または新しい情報をｎａｍｅ＿ｖａｌｕｅペア（複数）１１８に格納することを含むことができる。
【００３０】
（例示的なセキュリティエージェント）
図２は、システムコンポーネントの状態を保持するイベントモデルと、システムコンポーネントと関連付けられたイベントをイベントモデルマネージャに通知するイベントバスと、イベントに応答してイベントモデルの状態を決定して指定するイベントモデルマネージャとを含む例示的なセキュリティエージェントを示している。図示したように、計算デバイス２０２は、リモートセキュリティデバイス（複数）２０４からセキュリティサービスを受信して、計算デバイス２０２にインストールされたカーネルレベルのセキュリティエージェント２０６と協働することができる。計算デバイス２０２は、プロセス（複数）２１０、ファイル（複数）２１２、およびスレッド（複数）２１４といった複数のシステムコンポーネント２０８を含むことができる。カーネルレベルのセキュリティエージェント２０６は、システムコンポーネント（複数）２０８と関連付けられたイベントを集めてそれらのイベントをカーネルレベルのセキュリティエージェント２０６のイベントバス２１８に送出する、イベントコレクタ２１６を含む。イベントバス２１８のフィルタおよびディスパッチコンポーネント２２０に基づいて、イベントバス２１８は、１つまたは複数のイベントモデル２２４を管理するイベントモデルマネージャ２２２にイベント通知を提供する。イベントバス２１８はまた、イベントまたはイベント通知をカーネルレベルのセキュリティエージェント２０６の他のイベントジェネレータおよびコンシューマ２２６に送出するか、またはカーネルレベルのセキュリティエージェント２０６の通信モジュール２２８を介してセキュリティサービスデバイス（複数）２０４に送出することもできる。
【００３１】
さまざまな実施形態において、計算デバイス２０２およびセキュリティサービスデバイス（複数）２０４はそれぞれ、サーバまたはサーバファーム、複数の分散サーバファーム、メインフレーム、ワークステーション、パーソナルコンピュータ（ＰＣ）、ラップトップコンピュータ、タブレットコンピュータ、携帯情報端末（ＰＤＡ）、携帯電話、メディアセンター、組み込みシステム、またはその他の種類の１つまたは複数のデバイスにすることができるまたは含むことができる。一実施形態において、セキュリティサービスデバイス（複数）２０４は、クラウドコンピューティングネットワークのノードといった、通信において協働する複数の計算デバイスを表す。いくつかの実施形態において、計算デバイス２０２およびセキュリティサービスデバイス（複数）２０４の１または複数は、１つまたは複数の計算デバイスで実施される１つまたは複数の仮想マシンを表す。計算デバイス２０２として機能する能力がある例示的な計算デバイスを図３に示し、その図面を参照して以下に説明する。
【００３２】
いくつかの実施形態において、計算デバイス２０２およびセキュリティサービスデバイス（複数）２０４は、１つまたは複数のネットワークによって接続され得る。１つまたは複数のネットワークは、ワイヤードネットワーク、ワイヤレスネットワーク、およびワイヤードネットワークとワイヤレスネットワークの組み合わせといった１つまたは複数のネットワークを含むことができる。さらに、１つまたは複数のネットワークは、複数の異なるタイプのパブリックまたはプライベートネットワーク（例えば、ケーブルネットワーク、インターネット、ワイヤレスネットワークなど）の任意の１つまたは組み合わせを含むことができる。例えば、１つまたは複数のネットワークは、プライベートネットワークとすることができる。いくつかの事例では、計算デバイスは、セキュアなプロトコル（例えば、ｈｔｔｐｓ）および／または伝送制御プロトコル／インターネットプロトコル（ＴＣＰ／ＩＰ）といったその他のプロトコルまたはプロトコルのセットを使用して１つまたは複数のネットワーク上で通信する。
【００３３】
さまざまな実施形態において、セキュリティサービスデバイス（複数）２０４は、セキュリティサービスを実施できる。セキュリティサービスは、計算デバイス２０２のカーネルレベルのセキュリティエージェント２０６からの関心のあるイベント、ならびに関心のあるイベントと関連付けられたフォレンシック(forensic)データの通知を受信できる。セキュリティサービスデバイス（複数）２０４は、関係する通知が他の計算デバイス２０２から受信されたかどうかを決定し、および／または１つまたは複数のルールまたはヒューリスティクス(heuristics)に基づいて関心のあるイベントを評価できる。セキュリティサービスデバイス（複数）２０４はさらに、イベントを生成してそのイベントを（例えば、診断または回復する目的で）計算デバイス２０２に提供すること、構成更新を生成すること、関心のあるイベントと関連付けられた計算デバイス２０２を回復すること、悪意のあるコードと関連付けられた敵対者を欺くこと、または他の計算デバイス２０２と関連付けられたエンティティまたは人に潜在的な悪意のあるコードを通知することの一部または全てを遂行できる。構成更新を生成すると、セキュリティサービスデバイス（複数）２０４は、構成更新を１つまたは複数の計算デバイス２０２に提供できる。セキュリティサービスデバイス（複数）２０４はまた、個々の計算デバイス２０２、計算デバイスのタイプ、エンティティ、または汎用デバイスに固有のモデルといった１つまたは複数のモデルを保持して利用することもできる。セキュリティサービスデバイス（複数）２０４は、受信した通知に基づいてこれらのモデルを更新して、関心のあるイベントを解析する時にこれらのモデルを利用できる。
【００３４】
いくつかの実施形態において、システムコンポーネント２０８は、プロセッサ（複数）２１０、ファイル（複数）２１２、およびスレッド（複数）２１４といった、計算デバイス２０２の任意の種類のコンポーネントを含むことができる。システムコンポーネント２０８はまた、ツリー、モジュール、またはその他の種類のコンポーネントを含むこともできる。例えば、プロセス２１０は、セキュリティエクスプロイトの実行ファイル２１２で開始される悪意のあるプロセス２１０である場合もあり、そのファイルは、悪意のあるプロセス２１０によってそのプロセスが開始された後に削除される。
【００３５】
図示したように、カーネルレベルのセキュリティエージェント２０６は、イベントコレクタ２１６、イベントバス２１８とフィルタおよびディスパッチ２２０、イベントモデルマネージャ２２２、イベントモジュール（複数）２２４、イベントジェネレータ（複数）およびコンシューマ（複数）、および通信モジュール２２８を含むことができる。カーネルレベルのセキュリティエージェント２０６は、カーネルレベルのセキュリティエージェント２０６のコンポーネントが生で再構成される間、セキュリティサービスデバイス（複数）２０４のリモートセキュリティサービスによって受信されて適用されることによってインストールされて構成可能にされることができる。このような再構成によってイベントモデル１０２または遷移テーブル１２０といったイベントモデル１０２のコンポーネントを更新させることができる。上述したように、カーネルレベルのセキュリティエージェント２０６は、計算デバイス上のイベントのモニタリング、計算デバイス上のイベントの一部または全てに関する状態の保持、セキュリティサービスに計算デバイス上の１つまたは複数のイベントを通知すること、または計算デバイス上の１つまたは複数のイベントと関連付けられたセキュリティエクスプロイトに応答してアクションを起こすことの中から少なくとも１つを遂行できる。例示的なカーネルレベルのセキュリティエージェント２０６は、２０１２年６月８日に出願された「Ｋｅｒｎｅｌ−Ｌｅｖｅｌ  Ｓｅｃｕｒｉｔｙ  Ａｇｅｎｔ」と題する米国特許出願第１３／４９２，６７２号明細書においてより詳細に説明されている。
【００３６】
さまざまな実施形態において、カーネルレベルのセキュリティエージェント２０６は、イベントコレクタ２１６を含む。これらのイベントコレクタ２１６は、カーネルモードまたはユーザモードのコンポーネントにすることができる、システムコンポーネント２０８と関連付けられたイベントを観察する。イベントは、システムコンポーネント２０８によって遂行されるアクションと、そのアクションまたは期待されるアクションと関連付けられたアクタとの両方を含むことができる。例えば、イベントコレクタ２１６は、ファイルの作成、読み取りおよび書き込み、および実行ファイルの読み込みといったあるイベントの発生または非発生の通知を受信するフックまたはフィルタを登録することができる。イベントコレクタ２１６はまた、メモリまたはログファイルのロケーションをモニタし、またはそれを行うスレッドを生成(spawn)して、ログファイルまたはメモリのロケーションと関連付けられたイベントを観察することもできる。イベントコレクタ２１６は、複数の種類のイベントを観察することができるか、またはイベントの各タイプは、異なるイベントコレクタ２１６と関連付けられ得る。イベントコレクタ２１６によって観察されるイベントは、カーネルレベルのセキュリティエージェント２０６の構成によって指定され得る。いくつかの実施形態において、イベントコレクタ２１６は、計算デバイス２０２上の全てのイベントを観察し、そしてイベントバス２１８経由でそれらのイベントをフィルタリングして送出するための構成可能フィルタ２２０を指定する。
【００３７】
さまざまな実施形態において、それぞれがイベントコレクタ２１６の１または複数と関連付けられた構成可能フィルタ２２０を表すフィルタリングおよびディスパッチコンポーネント２２０、イベントバス２１８、イベントモデルマネージャ２２２、イベントモデル（複数）２２４、イベントジェネレータ（複数）およびコンシューマ（複数）２２６、および／または通信モジュール２２８は、観察されたイベントをイベントコレクタ２１６から受信する。図２では、フィルタリングおよびディスパッチコンポーネント２２０を論理上イベントバス２１８部として示しているが、そうする代わりにフィルタリングおよびディスパッチコンポーネント２２０は、イベントバス２１８から分離している１つまたは複数のコンポーネント（例えば、構成可能フィルタ２２０）を備えることができる。イベントを受信すると、フィルタリングおよびディスパッチコンポーネント２２０は、カーネルレベルのセキュリティエージェント２０６の構成によって指定される任意のフィルタリングを遂行できる。例えば、その構成は、どのイベントモデル（複数）２２４を更新するかを決定して、イベントモデル（複数）２２４の更新時にイベントモデルマネージャ２２２に指示するパラメータを指定できる。フィルタリングはまた、構成の１つまたは複数のルールまたはヒューリスティクスの適用を伴うこともある。
【００３８】
イベントをフィルタリングすると、フィルタリングおよびディスパッチコンポーネント２２０は、スローフォワード(throw-forward)バスまたは他のタイプのバスにすることができる、イベントバス２１８を使用してイベントまたはイベント通知を送出できる。イベントバス２１８は次に、イベントまたはイベント通知をイベントモデルマネージャ２２２、イベントジェネレータ（複数）およびコンシューマ（複数）２２６、または通信モジュール２２８の一部または全てに送信できる。いくつかの実施形態において、分離に重要であるまたはイベントと関連付けられた関連データをコピーするカーネルレベルのセキュリティエージェント２０６を必要とするイベントは、イベントモデルマネージャ２２２、イベントジェネレータ（複数）およびコンシューマ（複数）２２６、または通信モジュール２２８への配信をスケジュールするカーネルレベルのセキュリティエージェント２０６のスケジューラにイベントバス２１８経由で送出される。これらのイベントがスケジューラに送出される時、これらのイベントは、非同期イベントとすることができる。さらなる実施形態において、フィルタおよびディスパッチコンポーネント２２０としてよりはむしろイベントバス２１８として、どのイベントモデル（複数）２２４を更新するかを決定して、イベントモデル（複数）２２４の更新時にイベントモデルマネージャ２２２に指示するパラメータを指定するように構成され得る。このような決定および指定は、カーネルレベルのセキュリティエージェント２０６の構成に基づいて遂行され得る。
【００３９】
さまざまな実施形態において、イベントマネージャモジュール２２２は、図１について上述したイベントモデルマネージャモジュール１２４の例とすることができる。イベントモデル（複数）２２４はまた、図１について上述したイベントモデル１０２の例とすることもできる。米国特許出願第１３／４９２，６７２号明細書において、イベントモデル（複数）２２４と同様のコンポーネントは、コリレータと呼ばれる。
【００４０】
イベントジェネレータ（複数）およびコンシューマ（複数）２２６は、アクションを起こすモジュールおよび状況モデル(situational model)といったデータを格納するモデルを含むことができる。状況モデルは、計算デバイス２０２のオブジェクトまたはプロセスの属性、振る舞い、および／またはパターンを追跡する１つまたは複数の任意のデータベース、ファイル、テーブル、または他の構造を備えることができる。イベントジェネレータ（複数）およびコンシューマ（複数）２２６のこのようなモジュールは、状況モデルを利用して状態情報を認証する時、および状況モデルをキャッシュとして利用する時の状況モデルの構築に関与することができる。イベントをフィルタおよびイベントバス２１８から受信すると、イベントジェネレータ（複数）およびコンシューマ（複数）２２６は、セキュリティサービスデバイス（複数）２０４から受信した構成およびイベントのタイプに基づいて、イベントを含むまたは生成した実行アクティビティまたはシステムコンポーネント（複数）２０８から状態情報を読み出すかどうかを決定できる。このような状態情報は、プロセス２１０のコピー、ファイル２１２、またはスレッド、プロセスのメモリから引き出された情報、そのプロセスと関連付けられたコールスタックのコンテンツ、そのプロセスによって書き込まれたまたは読み取られたデータなどを備えることができる。イベントジェネレータ（複数）およびコンシューマ（複数）２２６はその後、イベントおよび状態情報のいずれかまたはその両方を状況モデルに提供できる。
【００４１】
さらに、イベントジェネレータ（複数）およびコンシューマ（複数）２２６は、イベントと関連付けられた属性、振る舞い、および／またはパターンまたは他のディスクリプションを決定するために状況モデルをクエリすることができる。カーネルレベルのセキュリティエージェント２０６の構成によって指定された属性、振る舞い、および／またはパターン、ディスクリプション、または他のルールまたはヒューリスティクスに基づいて、イベントジェネレータ（複数）およびコンシューマ（複数）２２６は、ある方法によってイベントに関心があると決定することができ、および／または悪意のあるコードと関連付けられ得る。潜在的に悪意のあるコードと関連付けられたイベントに関心があると決定すると、またはセキュリティサービスデバイス（複数）２０４によって生成されたイベントを受信すると、イベントジェネレータ（複数）およびコンシューマ（複数）２２６は、状況モデルを更新することができ、セキュリティサービスデバイス（複数）２０４にイベントを通知することができ、または計算デバイス２０２を回復することができる。回復処理(healing)は、イベントと関連付けられたプロセス（例えば、プロセス２１０）を停止すること、イベントと関連付けられたプロセス（またはそのプロセスと関連付けられた悪意のあるコード（例えば、ファイル２１２））を削除すること、またはイベントと関連付けられている悪意のあるコードと関連付けられた敵対者を欺くことを伴う。このような欺きは、悪意のあるコードによって獲得されたデータを改ざんすることによってまたは敵対者に送信されるデータを改ざんすることによって実現され得る。起こるアクションは、カーネルレベルのセキュリティエージェント２０６の構成によって決定され得る。いくつかの実施形態において、イベントジェネレータ（複数）およびコンシューマ（複数）２２６は、セキュリティサービスデバイス（複数）２０４から回復処理を遂行する命令を受信することに応答して回復を遂行できる。
【００４２】
さまざまな実施形態において、カーネルレベルのセキュリティエージェント２０６は、通信モジュール２２８を含む。通信モジュール２２８は、１つまたは複数のネットワークを介してセキュリティサービスデバイス（複数）２０４と通信するためにカーネルレベルのセキュリティエージェント２０６によって利用されるネットワークプロトコルスタック（複数）、ネットワークインタフェースドライバ（複数）、およびその他のネットワークインタフェースコンポーネントを表すことができる。通信モジュール２２８は、計算デバイス２０２のカーネルモードのコンポーネントとすることができる。さらに、通信モジュール２２８は、カーネルレベルのセキュリティエージェント２０６からのイベント、他の通知、およびイベントと関連付けられたデータをセキュリティサービスデバイス（複数）２０４に送信できる。通信モジュール２２８はまた、セキュリティサービスデバイス（複数）２０４から受信した構成更新をカーネルレベルのセキュリティエージェント２０６の構成マネージャに送信し、そしてセキュリティサービスデバイス（複数）２０４からの回復命令および／またはイベントをフィルタリングおよびディスパッチのイベントバス２１８に送信することもできる。
【００４３】
（例示的なシステム）
図３は、イベントモデルとイベントモデルマネージャで構成された計算デバイスといった計算デバイス３００のコンポーネントレベルの一覧を示している。図示したように、計算デバイス３００は、モジュールおよびデータ３０４を格納しているシステムメモリ３０４を備える。さらに、計算デバイス３００は、プロセッサ（複数）３０６、リムーバブルストレージ３０８およびノンリムーバブルストレージ３１０、入力デバイス（複数）３１２、出力デバイス（複数）３１４および他の計算デバイス３１８と通信するための通信接続３１６を含む。
【００４４】
さまざまな実施形態において、システムメモリ３０２は、揮発性（ＲＡＭなど）、不揮発性（ＲＯＭ、フラッシュメモリ他など）またはその２つのある組み合わせである。システムメモリ３０２に格納されたモジュールまたはデータ３０４は、メソッド、スレッド、プロセス、アプリケーション、または計算デバイス２０２の動作またはイベントモデルマネージャ１２４およびイベントモデル１０２で構成された任意の計算デバイスの動作を遂行するために利用される命令といったその他の種類の実行命令を備えることができる。モジュールおよびデータ３０４はまた、イベントモデル１０２と関連付けられたデータを格納しているファイルおよびデータベースといった、ファイルおよびデータベースを含むこともできる。
【００４５】
いくつかの実施形態において、プロセッサ（複数）３０６は、中央処理装置（ＣＰＵ）、画像処理装置（ＧＰＵ）、またはＣＰＵとＧＰＵの両方、または当業者には周知である他の処理装置またはコンポーネントである。
【００４６】
計算デバイス３００はまた、例えば、磁気ディスク、光ディスク、または光テープといった付加的なデータ記憶デバイス（リムーバブルおよび／またはノンリムーバブル）も含む。このような付加的な記憶装置は、図３のリムーバブルストレージ３０８およびノンリムーバブルストレージ３１０で図示されている。有形のコンピュータ可読媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータといった情報を記憶するための任意の方法または技術によって実施される揮発性および不揮発性、リムーバブルおよびノンリムーバブルの媒体を含むことができる。システムメモリ３０２、リムーバブルストレージ３０８およびノンリムーバブルストレージ３１０は、コンピュータ可読記憶媒体の全ての例である。コンピュータ可読媒体は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリまたは他のメモリ技術、ＣＤ−ＲＯＭ、デジタル多用途ディスク（ＤＶＤ）または他の光記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置または他の磁気記憶デバイス、または所望の情報を記憶するために使用されることができおよび計算デバイス３００によってアクセスされることができるその他の媒体を含むが、これらに限定されない。このような任意の有形のコンピュータ可読媒体は、計算デバイス３００の一部とすることができる。
【００４７】
計算デバイス３００はまた、キーボード、マウス、接触感応ディスプレイ、音声入力デバイスなどといった入力デバイス（複数）３１２、およびディスプレイ、スピーカ、プリンタなどといった出力デバイス（複数）３１４も有する。このようなデバイスは、当業者には周知であり、ここでは詳しく論じる必要がない。
【００４８】
計算デバイス３００はまた、計算デバイス３００に他の計算デバイス２０２またはセキュリティサービスデバイス（複数）２０４といった他の計算デバイス３１８と通信させる通信接続３１６も包含する。
【００４９】
（例示的なプロセス）
図４は、例示的なプロセスを示している。このプロセスは、各動作がハードウェア、ソフトウェア、またはその組み合わせにおいて実施されることができる動作のシーケンスを表す、論理フローグラフとして示されている。ソフトウェアの文脈において、動作は、１つまたは複数のコンピュータ可読記憶媒体に格納されたコンピュータ実行可能命令を表し、１つまたは複数のプロセッサによって実行されると、記載した動作を遂行する。一般に、コンピュータ実行可能命令は、特定の機能を遂行するまたは特定の抽象データ型を実施するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。動作が記述されている順序は、限定と見なされることを意図せず、そして記述された動作のいずれの数字も任意の順序で組み合わせるおよび／または並行してプロセスを実施することができる。
【００５０】
図４は、複数のシステムコンポーネントと関連付けられたイベントの通知を受信し、およびそれに応答して、状態が以前に発生した別のイベントを反映するように指定された、イベントモデルで指定されたシステムコンポーネントのうちの１つの状態に基づいてシステムコンポーネントの状態を決定する例示的なプロセスを示している。いくつかの実施形態において、イベントモデルマネージャは、少なくとも一部のプロセスを遂行するように構成される。
【００５１】
４０２においてプロセスは、システムコンポーネントと関連付けられた第１のイベントの第１の通知を計算デバイスによって受信することを含む。いくつかの実施形態において、第１のイベントは、第１の複数のシステムコンポーネントと関連付けられている。システムコンポーネントは、プロセス、ファイル、またはスレッドとすることができる。第１の通知は、カーネルレベルのセキュリティエージェントのイベントバスから受信され得る。
【００５２】
４０４において、第１の通知を受信することに応答して、計算デバイスは、イベントモデルのシステムコンポーネントの状態を指定する。イベントモデルは、状態マシンとすることができ、そして複数の状態表現と関連付けられている。４０６においてその指定は、第１の通知に含まれるパラメータに基づいて指定された状態への遷移を決定することを含む。パラメータは、イベントモデル、更新されなければならないイベントモデルの状態表現部分、および遷移を指定できる。計算デバイスはその後、イベントモデルの遷移テーブル内の遷移を見つけて、イベントモデルの１つまたは複数の状態表現のシステムコンポーネントのエントリを見つける。４０８において、指定はさらに、遷移テーブルおよび状態表現（複数）に基づいて状態を決定することを含む。この決定された状態は、４０４においてイベントモデルで指定された状態である。いくつかの実施形態において、状態表現の少なくとも１つは、イベントと関連付けられているシステムコンポーネントまたはシステムコンポーネントの組み合わせの状態のみを指定するスパーステーブルである。４１０において、指定は、第１のイベントの通知を受信することに応答してスパーステーブルの状態を更新することを含む。更新は、スパーステーブルの行または列の状態を更新することを含み、その行または列は、システムコンポーネントと関連付けられている。
【００５３】
４１２において、計算デバイスは、複数のシステムコンポーネントと関連付けられた第２のイベントの第２の通知を受信する。第１の通知で特定されたシステムコンポーネントは、第２の通知で特定された複数のシステムコンポーネントのうちの１つである。その複数のシステムコンポーネントは、いくつかの実施形態において、第１の複数のシステムコンポーネントよりも小さくすることができる。第２の通知はまた、セキュリティエージェントのイベントバスから受信されることもできる。
【００５４】
４１４において、計算デバイスは、少なくとも一部はシステムコンポーネントの指定された状態に基づいて複数のシステムコンポーネントの状態を決定する。４１６において、決定は、第２の通知に含まれるパラメータに基づいてそのシステムコンポーネントの状態への遷移を決定することを含む。パラメータは、イベントモデル、更新されなければならないイベントモデルの状態表現部分、および遷移を指定できる。計算デバイスはその後、イベントモデルの遷移テーブル内の遷移を見つけて、イベントモデルの１つまたは複数の状態表現のシステムコンポーネントの組み合わせに対するエントリを見つける。４１８において、決定はさらに、遷移テーブルおよび状態表現（複数）に基づいて状態を決定することを含む。さらに、４２０において、決定は、アキュムレータに基づいて状態を決定することを含むことができる。アキュムレータは、状態表現のうちの１つによってイベントモデルのインスタンスと関連付けられ、次にそのインスタンスは、システムコンポーネントの組み合わせと関連付けられ得る。アキュムレータは、受信した第２のイベントの通知のカウントを維持し、そしてそのカウントが閾値を満たすまたは超える時の状態を決定できる。代替的には、アキュムレータは、１つまたは複数のイベントの発生に基づいて更新可能である値を保持することができ、そしてその状態は、アキュムレータによって保持された値に基づいて設定または更新され得る。４２２において、計算デバイスはその後、イベントモデルの状態表現で決定された状態を指定する。
【００５５】
４２４において、計算デバイスは、イベントモデルの状態表現と関連付けられた１つまたは複数のワイルドカードテーブルを更新する。各ワイルドカードテーブルは、状態表現の次元（複数）のサブセットに固有であり、そして指定された状態と関連付けられたそのサブセットのインデックスを含む。例えば、状態表現がスパーステーブルであれば、行の一部のエントリが指定された状態を含むこともあり、残りのエントリがヌルであることもある。ワイルドカードテーブル内のこのような行のエントリは、指定された状態を含むエントリのインデックスを特定する。以前にヌルであったエントリの状態を指定する場合、または以前にヌルでなかったエントリを除去する／ヌルに設定する場合、計算デバイスは、ワイルドカードテーブルを更新してその変更を反映する。
【００５６】
４２６において、計算デバイスは、第１のイベントまたは第２のイベントに応答してイベントを生成し、そして生成したイベントをセキュリティエージェントのイベントバスに送出する。イベントの生成は、アクションリストに含まれるアクションとすることができる。アクションリストは、第１のイベントまたは第２のイベントから生じた遷移またはその遷移で設定された状態と関連付けられ得る。
【００５７】
（結論）
発明の主題を構造的特徴および／または方法論的動作に固有の言葉で説明しているが、テンプの特許請求の範囲において定義される発明の主題は、上記の固有の特徴または動作に必ずしも限定されないことが理解されよう。むしろ、それらの固有の特徴または動作は、特許請求の範囲を実施する例示的な形として開示されている。
【図１】
2016533564.tif 000003
【図２】
2016533564.tif 000004
【図３】
2016533564.tif 000005
【図４】
2016533564.tif 000006
【国際調査報告】
2016533564.tif 000007
2016533564.tif 000008