(57)【要約】  監視されたコンピューティングデバイス上に実装されたセキュリティエージェントが本明細書に記載される。セキュリティエージェントはセキュリティエクスプロイトの証拠となりうる、対象のアクション（ＡｏＩ）を検出し、ＡｏＩが生じたコンテキストを判定するように構成される。そのコンテキストに基づいて、セキュリティエージェントは、ＡｏＩがセキュリティエクスプロイトであるかどうかを決定するようにさらに構成され、エクスプロイトが完了するのを防止するための予防アクションを講じることができる。
2019521400.tif 000002
【特許請求の範囲】
【請求項１】
コールスタックアクタ（ＣＳＡ）によって、対象のアクション（ＡｏＩ）のコンテキストを検査する要求を受信することと、
前記ＣＳＡによって、かつ前記要求に少なくとも部分的に基づいて、前記ＡｏＩに関連付けられたコールスタックの特性評価を生成することであって、前記生成は、前記コールスタックを通ってウォークすることに少なくとも部分的に基づいて行われる、生成することと、
セキュリティエージェントによって、かつ前記特性評価に少なくとも部分的に基づいて、前記ＡｏＩがセキュリティエクスプロイトを含むことを判定することと、を含む、方法。
【請求項２】
前記ＡｏＩが前記セキュリティエクスプロイトを含むという前記判定は、前記特性評価がセキュリティエクスプロイトの特徴を定義するヒューリスティックの少なくとも一部を満たしていると判定することをさらに含む、請求項１に記載の方法。
【請求項３】
前記コールスタックは複数のフレームを含み、前記コールスタックのフレームの前記特性評価は、
前記フレームのアドレスに関連付けられたモジュールのモジュール識別子、
リターンアドレス、
リターンアドレスが、オブジェクトに以前に割り当てられたメモリに関連付けられているか否かのインジケータであって、前記オブジェクトは、機能、モジュール、プロセス、もしくはスレッドのうちの１つを含む、インジケータ、
前記フレームに関連付けられたメモリ領域、
メモリ領域に関連付けられたプロセスもしくはスレッドのオブジェクト識別子、
メモリ領域の許可、または、
メモリ領域のサイズ、のうちの１つ以上を含む、請求項１に記載の方法。
【請求項４】
前記ＡｏＩが前記セキュリティエクスプロイトを含むという前記判定は、
前記リターンアドレスがオブジェクトに以前に割り当てられた外部メモリであると判定すること、
前記オブジェクト識別子が脆弱なオブジェクトに関連付けられていると判定すること、
前記メモリ領域の許可が読み出し、書き込み、実行のうちの２つ以上を含むと判定すること、または、
前記メモリ領域が１ページの長さであると判定すること、のうちの１つ以上に少なくとも部分的に基づく、請求項３に記載の方法。
【請求項５】
前記判定は、前記リターンアドレスがオブジェクトに以前に割り当てられた外部メモリであると判定することを含み、前記方法が、前記リターンアドレスが悪意のあるコードとして指すコードを処理することをさらに含む、請求項３に記載の方法。
【請求項６】
ユーザからの入力を受信することなく、かつ、前記ＡｏＩが前記セキュリティエクスプロイトを含むという前記判定に少なくとも部分的に基づいて、予防アクションをコミットすることをさらに含む、請求項１に記載の方法。
【請求項７】
前記予防アクションは、
前記ＡｏＩの実行を停止または防止すること、
前記ＡｏＩに関連付けられたオブジェクトの実行を停止または防止すること、
入出力操作を停止または防止すること、
ネットワーク操作を停止または防止すること、または、
前記ＡｏＩをコミットしたコンピューティングデバイスを再起動させること、のうちの１つ以上を含む、請求項６に記載の方法。
【請求項８】
前記判定は、
前記特性評価に少なくとも部分的に基づいて信頼度スコアを計算することと、
前記ＡｏＩが、信頼度スコアが閾値信頼度スコアを超えていることに少なくとも部分的に基づいて、セキュリティエクスプロイトを含むと判定することと、を含む、請求項１に記載の方法。
【請求項９】
コンピューティングデバイスであって、
プロセッサと、
前記コンピューティングデバイス上で前記プロセッサによって実行されるように構成されたコールスタックアクタ（ＣＳＡ）と、を含み、前記ＣＳＡは、
対象のアクション（ＡｏＩ）の分析を行う要求を受信し、セキュリティエージェントに特性評価を提供するように構成されたロジックと、
コールスタックウォーカであって、
前記ＡｏＩに関連付けられたコールスタックに専念するメモリのアドレスを特定し、
前記ＡｏＩに関連付けられたエントリから開始する前記コールスタックをウォークすることに少なくとも部分的に基づいて、前記ＡｏＩに関連付けられた前記コールスタックから前記特性評価を生成するように構成された、コールスタックウォーカと、を含み、
前記セキュリティエージェントは、前記コンピューティングデバイス上の前記プロセッサによって実行されるように構成され、前記セキュリティエージェントは、前記特性評価を受信し、前記特性評価に少なくとも部分的に基づいて、前記ＡｏＩが前記コンピューティングデバイスのセキュリティエクスプロイトであると判定するように構成されたロジックを含む、コンピューティングデバイス。
【請求項１０】
前記セキュリティエージェントは、ユーザ入力を受信することなく、前記セキュリティエクスプロイトが完了することを妨げるためのロジックをさらに含む、請求項９に記載のコンピューティングデバイス。
【請求項１１】
前記ＣＳＡは前記コンピューティングデバイスのカーネルモードで動作し、前記コールスタックは前記コンピューティングデバイスのカーネルによってアクセス可能である、請求項９に記載のコンピューティングデバイス。
【請求項１２】
前記ＣＳＡの前記コールスタックウォーカは、前記コールスタックをファジーウォークするように構成され、ファジーウォーキングは、
前記コールスタックのトレースを破損する前記コールスタック内のフレームに遭遇することと、
前記フレームに関する情報を記録することであって、前記情報は前記フレームに関連付けられたリターンアドレス、前記フレームに関連付けられたメモリ、前記フレームまたは前記メモリ領域に関連付けられたプロセスもしくはスレッド、または前記フレームに関連付けられた機能のうちの１つ以上を含み、記録することと、
前記トレースを破損する前記コールスタック内の前記フレームに近いフレームから前記コールスタックをウォークし続けることと、を含む、請求項９に記載のコンピューティングデバイス。
【請求項１３】
前記ＣＳＡは、前記ＡｏＩに帰着した前記コールスタックに反映された一連の機能を開始した、機能、モジュール、プロセス、またはスレッドのオブジェクト識別子を取得するために、前記コールスタックをファジーウォークするように構成され、前記ＣＳＡは前記特性評価に前記オブジェクト識別子を含めるようにさらに構成される、請求項１２に記載のコンピューティングデバイス。
【請求項１４】
前記コールスタックは、前記コンピューティングデバイスのカーネルによってアクセス可能であり、前記ＣＳＡは、前記コールスタックをカーネルモードでファジーウォークするように構成される、請求項１２に記載のコンピューティングデバイス。
【請求項１５】
前記コールスタックの前記特性評価の前記生成は、
前記コールスタック及び前記ＡｏＩに関連付けされた前記メモリのアドレスのリストを取得することであって、アドレスの前記リストは前記コールスタックのフレームに関連付けられており、
前記フレームの少なくとも１つのフレームに関連する詳細について前記コンピューティングデバイスのカーネルに問い合わせることとを含み、前記詳細は、
前記フレームに関連付けられた機能、
前記フレームに関連付けられたスタックポインタ、
前記フレームに関連付けられたリターンアドレス、
前記リターンアドレスまたは前記スタックポインタに関連付けられた前記メモリ内の位置、
前記位置に関するメモリ割り当て情報であって、前記メモリ割り当て情報は、前記位置が、あるオブジェクトに割り当てられたメモリ範囲内にあるかどうかの指示を含み、前記オブジェクトは、機能、モジュール、プロセスまたはスレッドを含む、メモリ割り当て情報、
前記位置がオブジェクトに割り当てられたメモリ範囲内にある場合、前記メモリ範囲が割り当てられた前記オブジェクトに関連付けられたオブジェクト識別子、
前記オブジェクトに関連付けられた前記位置またはメモリの許可、
前記位置のサイズ、または
前記オブジェクトに関連付けられたコードのサイズ、のうちの１つ以上を含む、請求項９に記載のコンピューティングデバイス。
【請求項１６】
前記ＣＳＡは、分析を行う前記要求またはＡｏＩの識別されたタイプの中からの前記ＡｏＩのタイプのうちの１つ以上に少なくとも部分に基づいて、どのような詳細を前記特性評価に含めるのかを選択する、請求項１５に記載のコンピューティングデバイス。
【請求項１７】
前記セキュリティエージェントは、
前記ＡｏＩが前記コンピューティングデバイスの前記セキュリティエクスプロイトであるという判定に応答して、前記メモリに格納され、前記特性評価において参照されたコードの一部を悪意のあるコードとして扱うことと、
前記悪意のあるコードのコピーを、前記メモリに格納するか、またはリモートメモリに送信することと、
脆弱性識別子、オフセット識別子、またはエクスプロイトの名前のうちの１つ以上を前記悪意のあるコードの前記コピーに関連付けることと、
前記特性評価を前記メモリに格納するか、または前記リモートメモリに送信することと、
追加情報を集めてメモリに格納するか、または前記リモートメモリに送信することであって、前記追加情報は、前記メモリにロードされた前記悪意のあるコードの名前、バージョン、またはアドレス範囲のうちの１つ以上を含む、格納または送信することと、を行うためのロジックをさらに含む、請求項９に記載のコンピューティングデバイス。
【請求項１８】
前記ＡｏＩが前記セキュリティエクスプロイトであるかどうかの判定精度を向上させるために、前記ロジックは、悪意のあるコード、脆弱性識別子、オフセット識別子、エクスプロイト名、特性評価、または追加情報のコピーのうちの１つ以上を使用するようにさらに構成される、請求項１７に記載のコンピューティングデバイス。
【請求項１９】
システムであって、
プロセッサと、
格納されたコンピュータ実行可能命令を有するメモリと、を含み、前記コンピュータ実行可能命令は、前記１つ以上のプロセッサによって実行されたとき、前記システム
が以下： 
前記システムによって取られたアクションの中から対象のアクション（ＡｏＩ）を検出することと、
前記メモリ内に格納されている記録を識別し、前記ＡｏＩに帰着した前記システムによって取られた前のアクションを記録することと、
前記ＡｏＩが前記システムのエクスプロイトであるということの証拠の記録を検査することであって、前記記録が、前記メモリに格納される、検査することと、
前記記録が、前記ＡｏＩがエクスプロイトであるという証拠を含む場合、前記ＡｏＩに関する予防措置を取ることと、を含む動作を行うように構成する、システム。
【請求項２０】
前記記録はコールスタックであり、前記動作は、
前記コールスタック内の前記ＡｏＩに対応するフレームから開始して、
前記ウォークが前記メモリにロードされたモジュールに関連付けられていないリターンアドレスに関連付けられたスタックフレームに到達するか、あるいは、
前記ウォークが前記コールスタックの終わり、またはルートスレッドもしくはルートプロセス到達するまで、前記コールスタックをウォークすることと、
前記ウォークが、前記メモリにロードされたモジュールに関連付けられていない前記リターンアドレスに関連付けられた前記スタックフレームに到達したことに応答して、前記コールスタックの次のエントリから、前記ウォークが前記コールスタックの終わり、またはルートスレッドもしくはルートプロセスに達するまで、ウォークを続けることであって、前記次のエントリは、さらに、前の機能に対応するエントリと、前記ＡｏＩをコミットした機能に対応するエントリとの両方からのものである、ウォークを続けることと、をさらに含む、請求項１９に記載のシステム。
【発明の詳細な説明】
【背景技術】
【０００１】
日常生活の大部分を構成するインターネットの使用において、システムリソース、データ、及び個人情報を盗むかまたは破壊するしばしばマルウェアと呼ばれる、悪意のあるソフトウェアは、増大する問題である。政府及び企業は、マルウェアによる侵入を防ぐために多大なリソースを費やしている。マルウェアは、コンピュータウィルス、ワーム、トロイの木馬、スパイウェア、キーストロークロガー、アドウェア、及びルートキットなどのような多くの形態を有する。マルウェアによってもたらされるいくつかの脅威は、非常に深刻で、サイバーテロリズムまたは産業スパイと記述される。
【０００２】
これらの脅威に対抗するために、政府、企業、及び個人は一連のセキュリティアプリケーションとサービスを使用する。通常、これらのアプリケーション及びサービスは、セキュリティエクスプロイトの痕跡のためにデバイスをスキャンする。痕跡の発見に応じて、アプリケーション及びサービスを検疫または削除する。しかしながら、アプリケーションとサービスはしばしば、より洗練されたセキュリティエクスプロイトを欠いており、またアプリケーションとサービスは、エクスプロイトがデバイスに実質的な足掛かりを得るまでにエクスプロイトを検出するか、または、何らかのアクションを取るようには構成されていないことが多い。
【０００３】
例えば、悪意あるコードがデバイス（例えば、デバイス内の脆弱性をエクスプロイトすることによる）に足掛かりを得るために取るアクションは、多くの場合一般的な良質なコードによって行われるアクションでもある。そのため、現在の措置はエクスプロイトのこの初期段階で予防措置を講じようとしないか、または悪意のあるアクションに対する良性のアクションとの混同の可能性が高いため、ユーザに警告することに限定される。このアクションを取らないことが、さらなる、損害、損失、またはエクスプロイトを取り除くことの困難性に帰着する。
【図面の簡単な説明】
【０００４】
詳細な説明は、添付の図を参照して説明する。図において、参照番号の一番左の桁（複数可）は、参照番号が最初に現れる図を示す。異なる図面における同じ参照番号の使用は、類似のまたは同一のアイテムもしくは機能を示す。
【０００５】
【図１】監視されたコンピューティングデバイスに実装されたセキュリティエージェントの例示的な概要及びコンピューティングコンテキストからのエクスプロイトを推測的に検出するためにセキュリティエージェントによって行われるアクションを示す。
【図２】潜在的に関連付けられたイベント通知を検出及び生成するためのフィルタ／ロジック、例示的なセキュリティエージェントがセキュリティエクスプロイトを推測的に検出することができるコンピューティングコンテキストを取得するためのコールスタックアクタと、コールスタックアクタ及び／またはフィルタ／ロジックから少なくとも検出されたデータがエクスプロイトを示すかどうかを判定するためのエクスプロイト検出モジュールと、より堅牢なエクスプロイト抑止と識別を提供するために、エクスプロイトに関するデータを集め、かつ、エクスプロイトが発生したコンテキストを演算するためのフィンガープリンティングアクタと、を含む、例示的なセキュリティエージェント示す。
【図３】エクスプロイトとセキュリティエージェントで対象となるオブジェクトで構成された監視されたコンピューティングデバイスの構成要素レベルの図を示す。
【図４】対象のアクション（ＡｏＩ）のコンテキストを検査する要求を受信し、コールスタックをウォークスルーことに少なくとも一部基づいてＡｏＩに関連付けられたコールスタックの特徴を生成し、その特性に基づいてＡｏＩがセキュリティエクスプロイトを含むか否かを判定する例示的プロセスを示す。
【発明を実施するための形態】
【０００６】
概観
本開示は、部分的に推測的なエクスプロイト検出を説明する。いくつかの例では、本明細書に論じられる技術は、コンピューティングデバイスで、及び／または、コンピューティングデバイスのために、実装され、コンピューティングデバイスによって実行されるオブジェクト（すなわち、機能、モジュール、プロセス、またはスレッド）によってコミットされた対象のアクション（ＡｏＩ）のためにコンピューティングコンテキストを判定することを含むことができ、そこにおいては、ＡｏＩはコンピューティングデバイスのセキュリティエクスプロイトに関連付けられた傾向を有し、したがって、不審でありうる。いくつかの例では、オブジェクトは、例えば、別のモジュールによって実行される、親モジュールの一部としてメモリにロードされた実行可能モジュール、及び／または、別のモジュール（すなわち、「ロードされたモジュール」、「モジュール」）に関連した他のモジュールのような、他のオブジェクトを含むか、及び／または、それに関連付けられることができる。いくつかの例では、コンピューティングコンテキストは、コンピューティングデバイスがＡｏＩをコミットするように導く、コンピューティングデバイスのアクション及び／または状態を含むことができる。例えば、コンピューティングコンテキストは、ＡｏＩをコミットしたプロセスまたはスレッド、ＡｏＩが使用したパラメータや変数、ＡｏＩに帰着した一連の関数呼び出し（ファンクションコール）及びそれらの機能、登録データ、ヒープデータ、スタックデータ、疑わしいイベント記録（例えば、ＡｏＩ発生時に保存される被監視デバイスの状態、及び／またはアクションの記録）などのうちの１つ以上に関するデータ、を含むことができる。
【０００７】
本明細書で議論される技術は、ＡｏＩがエクスプロイトであるということを少なくとも部分的に、コンピューティングコンテキストを分析し、ＡｏＩがエクスプロイトであるというコンピューティングコンテキストから推測することに基づいて検出することができる。いくつかの例では、この技術はユーザからの入力なしで、予防アクションを取ることができる（例えば、ＡｏＩまたはＡｏＩに関連したオブジェクトをブロックする）。エクスプロイトをブロックするための従来の解決策は、予防措置を取るには高すぎる偽陽性率に関連しており、したがって、予防措置を取るには、ユーザ通知及び／またはユーザ入力が必要とされた。本明細書で議論する技術は、良性なアクションを悪意のあるアクションとして識別する、または、同様に、アクションが悪意であるという証拠を増やす、偽陽性率を減らす。いくつかの例では、本明細書で議論する技術は、ユーザの入力の要求またはそれを受信することなく予防アクションを講じることができる、十分なレベルの確証を増大させ、それによって、ユーザがコンピューティングデバイスに対する堅牢なセキュリティを実装する容易さを大幅に増大させ、エクスプロイトの予備的なアクションを止めることによって、エクスプロイトによる大きな損失を生じないようにできるようになる。
【０００８】
本明細書で論じられる技術は、セキュリティエージェントにコールスタックアクタ（ＣＳＡ）を備える構成か、セキュリティエージェントを、推測的なエクスプロイトの試みの検出のために独立して構成されたＣＳＡを使用して動作するように構成することを含むことができる。そこにおいては、試行されたエクスプロイトの検出は、コールスタック分析を含むコンテキストの演算から推測される。さらに、本明細書で論じられる技術は、推測的なエクスプロイトの試みの検出のための疑わしいイベント記録を生成し、維持するように構成されたセキュリティエージェントを追加的または代替的に含むことができる。
【０００９】
操作例
図１は、コンピューティングコンテキストから推測的にエクスプロイトを検出するために、監視されたコンピューティングデバイスに実装され、そのセキュリティエージェントによって実行されるアクションの例示的な概要を示す。図１に示すように、セキュリティエージェント１０２は、ネットワーク１０６を介したリモートセキュリティサービス１０４によって構成され、及びそれと通信することができる。例示的なセキュリティエージェント１０２は、２０１２年６月８日に出願され、「Ｋｅｒｎｅｌ−Ｌｅｖｅｌ  Ｓｅｃｕｒｉｔｙ  Ａｇｅｎｔ」と題された米国特許第９，０４３，９０３号に詳細が記載されている。セキュリティエージェント１０２は、アクションコレクター（複数可）１０８、フィルタ／ロジック１１０及びポリシー１１２、コールスタックアクタ（ＣＳＡ）１１４、エクスプロイト検出モジュール１１６（いくつかの例では、これは、セキュリティエージェント１０２及び／またはＣＳＡの構成であってもよい）、及びフィンガープリンティングアクタ１１８を含んでもよい。
【００１０】
様々な実装形態では、セキュリティエージェント１０２（本明細書では、「コンピューティングデバイス」及び「監視されたコンピューティングデバイス」と交換可能である）及びリモートセキュリティサービス１０４のデバイス（複数可）を実装するコンピューティングデバイスは、ネットワーク１０６によって接続されてもよい。ネットワーク１０６は、有線ネットワーク、無線ネットワーク、ならびに有線及び無線ネットワークの組み合わせなどの任意の１つ以上のネットワークを含んでもよい。さらに、ネットワーク１０６は、複数の異なるタイプのパブリックもしくはプライベートネットワークのいずれか１つまたは組み合わせ（例えば、ケーブルネットワーク、インターネット、無線ネットワークなど）を含むことができる。いくつかの例では、コンピューティングデバイスは、セキュアプロトコル（例えば、ｈｔｔｐｓ）及び／または任意の他のプロトコルまたは、送信制御プロトコル／インターネットプロトコル（ＴＣＰ／ＩＰ）のようなプロトコルのセットを使用してネットワーク１０６を介して通信する。
【００１１】
セキュリティエージェント１０２を実装するコンピューティングデバイス及びリモートセキュリティサービス１０４のデバイス（複数可）は、それぞれ、サーバまたはサーバーファーム、複数の分散サーバーファーム、メインフレーム、ワークステーション、パーソナルコンピュータ（ＰＣ）、ラップトップコンピュータ、タブレットコンピュータ、パーソナルデジタルアシスタント（ＰＤＡ）、スマートフォン、ウェアラブルコンピューティングデバイス、スマートビークル、携帯電話、メディアセンター、組み込みシステム、もしくは任意の他の種類のデバイスであるか、または、それらを含んでもよい。一実装形態では、リモートセキュリティサービス１０４のデバイス（複数可）は、ノードのクラウドコンピューティングネットワークのような、通信において作動する、複数のコンピューティングデバイスを表す。いくつかの実装形態では、セキュリティエージェント１０２を実装するコンピューティングデバイス及びリモートセキュリティサービス１０４のデバイス（複数可）のうちの１つ以上は、１つ以上のコンピューティングデバイス上に実装された１つ以上の仮想マシンを表す。セキュリティエージェント１０２を実装するコンピューティングデバイスとして機能することができるコンピューティングデバイスの例が図３に示されており、その図を参照して以下に説明する。
【００１２】
様々な実装形態において、リモートセキュリティサービス１０４は、セキュリティエージェント１０２を実装するコンピューティングデバイス、及びセキュリティエージェント１０２の他のインスタンスを実装する任意の数の他のコンピューティングデバイスへのセキュリティサービス（複数可）を提供してもよい。リモートセキュリティサービス１０４は、興味深いイベント及び／またはフィンガープリンティングアクタ１１８からのフィンガープリントに関連した犯罪科学データとともに、エクスプロイト検出イベント通知を含む、セキュリティエージェント１０２からの興味深いイベントの通知を受信してもよい。リモートセキュリティサービス１０４は、関連する通知をセキュリティエージェント１０２の他のインスタンス及び／または１つ以上のルールまたは経験則に基づいて興味深いイベント（複数可）を評価するか否かを判定してもよい。
【００１３】
リモートセキュリティサービス１０４は、イベントの生成のいずれかまたはすべてをさらに行い、セキュリティエージェント１０２に（例えば、診断、予防または治癒の目的で）イベントを提供すること、構成の更新を生成すること、更新されたポリシー１１２を生成すること、セキュリティエージェント１０２を実装しているコンピューティングデバイスを治すこと、悪意のあるコードに関連した敵を欺くこと、または、潜在的な悪意のあるコードのセキュリティエージェント１０２を実装しているコンピューティングデバイスに関連付けられたエンティティまたは人物に通知することのいずれかまたはすべてをさらに含むことができる。構成更新または更新されたポリシー１１２を生成すると、リモートセキュリティサービス１０４は、構成更新または更新されたポリシー１１２をセキュリティエージェント１０２に提供することができる。
【００１４】
リモートセキュリティサービス１０４は、以下に説明するように、フィンガープリントアクタ１１８によって発展されたフィンガープリントを記録し、及び／または、フィンガープリントに少なくとも部分的に基づいて、セキュリティエージェント１０２もしくはＣＳＡ１１４の更新されたポリシー１１２または構成アップデートを生成する。
【００１５】
いくつかの実装形態では、セキュリティエージェント１０２は、カーネルレベルで実装されるセキュリティエージェントなどの任意の種類のセキュリティエージェントであってもよい。セキュリティエージェント１０２は、リモートセキュリティサービス１０４によってインストールされ、かつ、リモートセキュリティサービス１０４によって設定可能であり、セキュリティエージェント１０２の要素のライブの再構成をする一方で、それを受信し、かつ、適用する。そのような再構成は、いくつかの例をあげれば、アクションコレクター（複数可）１０８、フィルタ／ロジック１１０及びポリシー１１２、ＣＳＡ１１４、エクスプロイト検出モジュール１１６、または、フィンガープリンティングファクタ１１８などのセキュリティエージェント１０２の任意の構成要素（複数可）への更新を引き起こす可能性がある。セキュリティエージェント１０２は、そのセキュリティエージェント１０２を実装するコンピューティングデバイス上のイベントを監視すること、そのコンピューティングデバイスのイベントのいくつかまたはすべてについての状態を維持すること、そのコンピューティングデバイスの１つ以上のイベントのリモートセキュリティサービス１０４に通知すること、または、コンピューティングデバイス上の１つ以上のイベントに関連したセキュリティエクスプロイトに応じたアクションを取ることのうちの少なくとも１つを行い得る。
【００１６】
いくつかの例では、アクションコレクター（複数可）１０８は、オブジェクトに関連したアクションを含むすべての種類のアクションを観察する。イベントを受信するために、アクションコレクター（複数可）１０８は、オブジェクトまたは対象の活動に関連したあるイベントの発生または非発生の通知を受信するために、フックまたはフィルタで登録してもよい。アクションコレクター１０８（複数可）はまた、メモリまたはログファイルの位置を監視し、または、そのためのスレッドを発生し、ログファイルもしくはメモリ位置に関連したイベントを監視してもよい。アクションコレクター１０８（複数可）は、多種類のイベントを観察してもよく、またはイベントの各タイプは、異なる個々のアクションコレクター１０８に関連してもよい。アクションコレクター１０８によって観察されるイベントは、セキュリティエージェント１０２の構成によって指定されてもよい。
【００１７】
アクションコレクター１０８（複数可）は、観察されたオブジェクトアクション１２０をフィルタ／ロジック１１０に送ることができる。これらの観察されたアクションは、例えば、オブジェクトの作成または実行（「作成」及び「実行」の両方をオブジェクト（複数可）の「実行」と本明細書で言う）と、後述するように観察されたオブジェクトのアクション１２０をＡｏＩとして適格である場合に観察されたオブジェクトアクション１２０と呼ぶことができる、オブジェクトによる他のアクション、のような、アクションに関連したイベントを含むことができる。観察されたオブジェクトアクション１２０が以下に議論するようなＡｏＩとみなされたときは、それは要求イベント１２２として送られる。ＣＳＡ１１４が応答イベント１２６を生成及び／または送り、かつ、エクスプロイト検出モジュール１１６は、エクスプロイト検出イベント１３０を生成し及び／または送ることができる。イベントを１２２、１２６、及び／または１３０、ならびに他の観察されたイベント／イベント通知は、イベントバスを介して送られてもよい。それは、フィルタ／ロジック１１０の一部を形成するか、または別の要素（図１においては、これは単に明確にするために要求イベント１２２をルーティングするために示されている）であってもよい。イベントバスはセキュリティエージェント１０２の構成要素間のイベント／イベント通知をルート付けしてもよい。
【００１８】
フィルタ／ロジック１１０は、アクションコレクター１０８（複数可）によって監視される（例えば、イベント通知を介して）コンピューティングデバイスによって実行されるオブジェクトによってコミットされたアクションを示すオブジェクトアクション１２０を受信する。本明細書で使用されるように、「オブジェクト」は、セキュリティエージェント１０２が動作し、かつ／または格納されるコンピューティングデバイス上で実行される、任意の機能、モジュール、プロセス、またはスレッドであってもよい。
【００１９】
フィルタ／ロジック１１０は、オブジェクトアクションが対象のオブジェクト（ＯｏＩ）から生じた場合、またはポリシー１１２によって指定された対象のアクション（ＡｏＩ）である場合に、要求イベント１２２などのイベント通知を生成することができる。対象の活動はエクスプロイトが、こだわり、他のプロセスへの移行、資質の盗用などを得ることができるものを含んでもよい。ＯｏＩの例は、インターネットブラウザプラグインスレッド（例えば、フラッシュスレッド）、埋め込みマクロ、電子メールアプリケーションスレッドを含むことができる。例えば、ポリシー１１２は、アクションが以下のうちの１つ以上を含む場合、アクションはＡｏＩであると特定することができる。
●プロセスの作成、例えば、コマンドラインインターフェイス（ＣＬＩ）の作成、
●スレッドの作成、
●リモートスレッドの作成（すなわち、別のプロセスでスレッドを生成する）、例えば、あるプロセスからエスケープして別のプロセスにピボットするために使用できるアクションであるダイナミックリンクライブラリ（ＤＬＬ）インジェクションまたはその他のスレッドインジェクション、
●新しいスクリプトの作成（例えば、バッチスクリプト、ビジュアル基本スクリプト、パワーシェルスクリプト）、
●新しい実行ファイルの作成（例えば、移植可能な実行可能ファイル（ＰＥ）の作成）、
●別のプロセスにアクセスし、そのメモリから読み出すか、そのメモリに書き込む、
●サービスの作成（例えば、サービスは、プロセスを開始する、及び／または、システムを再起動するたびにプロセスを開始するために使用可能である）、
●サービスバイナリの変更（例えば、移植可能な実行ファイルを書き換えずにディスク上で変更する）、
●ダンプファイルの書き込み、
●登録キーもしくは業界キーのセキュリティの低下、
●疑しい生ディスクの読み取り、または、
●いくつかのコンテキストの権限昇格（例えば、ユーザアカウント制御が昇格を要求する）。
本明細書で使用されるように、上記で議論される「生成」は、コンピューティングデバイス上で「コードの脱落」と記載され得る。上で議論したアクションは、あるオブジェクトがそれらをコミットしたときにＡｏＩのみであってもよい。例えば、インターネットブラウザプラグインスレッドが危険にさらされたときに、ＣＬＩの作成、プロセスの移行、インストール、またはＰＥの作成や実行などのアクティビティは、セキュリティエクスプロイトによるインターネットブラウザのプラグインスレッドのセキュリティ侵害を示す可能性があってもよい。さらに、アクション自体を発生させたオブジェクトのＩＤは、コンピューティングデバイスによって行われたアクションがＡｏＩであるかどうかを判定してもよい。例えば、いくつかのプラグイン及びプロセスは脆弱性の影響を受けやすいため、したがって、セキュリティエクスプロイトに頻繁に使用される。そのようなプラグインもしくはプロセスによるアクションまたはこれに関するものは、したがって、ＡｏＩであってもよい。そのようなオブジェクトは、本明細書では「対象のオブジェクト」（ＯｏＩ）として説明される。
【００２０】
ＡｏＩがＣＳＡ１１４によって少なくとも部分的に導出されたコンピューティングコンテキストからのエクスプロイトであると推定することによって、ＡｏＩがエクスプロイトであるかどうかを検出するために、フィルタ／ロジック１１０によって生成された要求イベント１２２をＣＳＡ１１４に提供することができる。図１は、ＣＳＡ１１４をセキュリティエージェント１０２の構成の一部として示しているが、ＣＳＡ１１４は個別に構成することができる。いくつかの例では、要求イベント１２２は、現在のコンテキストの指示を含むことができる。例えば、要求イベント１２２は、アクティブなＡｏＩ（例えば、インターネットプラグインなどのスレッド）に関連付けられた第１のオブジェクトの識別子、及び／または、それらの第１のオブジェクト（例えば、インターネットブラウザプラグインスレッドに関連したブラウザ）との関係のために、ＡｏＩに関連付けられた第２のオブジェクト（複数可）を指定することができる。いくつかの例では、要求イベント１２２は、ＡｏＩ、ターゲットデータ（ＣＳＡ１１４によって分析及び／または取得されることが要求されるデータ）をコミットするオブジェクトの識別子及び／またはタイプのうちの１つ以上を指定するフィールドを含むことができる。
【００２１】
各種の例において、ＣＳＡ１１４は、コールスタックの特性評価１２４及び／またはコンピューティングデバイスのヒープを生成することができる。本明細書で使用されるように、コールスタックの特性評価１２４は、コールスタックがヒープのコードをアドレスするためにヒープの特性評価であってもよい。しかしながら、ＣＳＡ１１４によって生成された特性評価１２４に含まれる詳細のいくつかは、部分的に、または、独占的に（例えば、スタックのメモリ位置の許可、ヒープの位置に関連付けられた機能の識別子など）特に、ヒープに関するデータを処理してもよい。したがって、本明細書で使用されるように、用語「特性評価」、「スタック特性評価」、及び、「スタックの特性評価」は、ヒープ（例えば、部分的に、または独占的にヒープに関するデータ）及びコールスタックの両方の特性評価を含むことができる。
【００２２】
ＣＳＡ１１４は、ＡｏＩがセキュリティエクスプロイトであるかどうかを推測的に分析するのを支援するために、コンピューティングデバイスのコールスタックを解析するように構成することができる。いくつかの例では、コールスタックは、コンピューティングデバイスのカーネルモードによってアクセスのみが可能なメモリ、コンピューティングデバイスのユーザモードによってアクセス可能なメモリ、及び／または、そのいくつかの組み合わせに位置することができる。コールスタックは、サブルーチン（例えば、関数）の識別子のリスト、そのリスト内の関数に対応するコードのその位置へのポインタ（例えば、アドレスまたは、例えばヒープのようなメモリのアドレスの範囲）、及びリターンアドレスを含むことができる。
【００２３】
ルーチンがサブルーチンを呼び出すとき、ルーチンは、サブルーチンが実行を終了したときにルーチンの実行を継続するためにどこに戻るかを指示するように、コンピューティングデバイスに指示するコールスタックにリターンアドレスをプッシュする。サブルーチンは、それ自体が第２のサブルーチンを呼び出し、サブルーチンの実行が、第２のサブルーチンの１度の実行等となるように、サブルーチン内のリターンアドレスを含むコールスタック（例えば、エントリがフレームである）へのエントリをプッシュしてもよい。処理オブジェクトは、この処理を何度も繰り返し、それによって、コールスタック上の「チェーン」を生成する。本明細書で使用されるように、「アクティブ」ルーチンまたはサブルーチンは、現在実行中のルーチンであり、ルーチンに関連付けられたコードの処理を終了していないルーチンである。
【００２４】
コールスタックは機能のリストを典型的に含む。いくつかの例では、ＣＳＡ１１４は、このデータを特性付け１２４に追加することができる。いくつかの例では、割り当てられた、またはマップされたメモリが関連付けられているオブジェクトのモジュールは、モジュールの識別子及び／またはオブジェクト（例えば、「フラッシュ＿」を含むか、または関連することができる。いくつかの例では、ＣＳＡ１１４は、この情報を特性付け１２４に含めることができる。
【００２５】
例えば、ＣＳＡ１１４がスタックをウォークしているとき、機能に関連付けられたフレーム、機能に関連付けられたコードが位置するメモリ内の位置に対するポインタ、及び、メモリ内の位置へのリターンアドレスに出くわすことがあってもよい。いくつかの例では、ＣＳＡ１１４は、ポインタ及び／またはリターンアドレスが参照するメモリが、ロードされたモジュール（すなわち、それが、本明細書で定義されるメモリが割り当てられているかどうか）に関連付けられているかどうかを判定することができる。
【００２６】
いくつかの例では、ＣＳＡ１１４がコールスタックをウォークし、すべてのポインタ及び／またはリターンアドレスがオブジェクトのモジュールに割り当てられたメモリのアドレスの範囲内にある場合、ＣＳＡ１１４は、この表示を特性評価に返すことができる。
【００２７】
いくつかの例では、エクスプロイト検出モジュール１１６は、ポインタ及び／またはリターンアドレスが、ＡｏＩがセキュリティエクスプロイトに関連付けられていないことを判定するために、ロードされたオブジェクトモジュールに割り当てられたメモリのアドレスの範囲内にあるという特性評価１２４内の表示（複数可）を使用できる。いくつかの例では、エクスプロイト検出モジュール１１６は、ＡｏＩが、ポインタ及び／またはリターンアドレスがオブジェクトのモジュールに割り当てられたメモリのアドレスの範囲内にあるという特性評価の表示（複数可）に基づいてセキュリティエクスプロイトに関連付けられる信頼度スコアを減少させることができる。
【００２８】
いくつかの例では、もしＣＳＡ１１４が、ポインタ及び／またはリターンアドレスが、ロードされたオブジェクトモジュールに割り当てられたアドレスの範囲外のメモリに配置されていることを発見した場合、ＣＳＡ１１４は、例えば、ポインタまたはリターンアドレスによって参照されるメモリ位置のメモリ許可（例えば、アドレスに関連付けられた正確なアドレスまたはメモリ割り当て範囲）、コールスタック内のポインタまたはリターンアドレスに関連付けられたサブルーチンへのメモリの割り当てのサイズ、のようなメモリ割り当て情報を得ることができる。ＣＳＡ１１４はメモリ割り当て情報を特性評価に含むことができる。
【００２９】
いくつかの例では、エクスプロイト検出モジュール１１６は、特性評価の表示（複数可）が、サブルーチンの割り当てサイズが１ページであり、及び／または割り当てが読み取り、書き込み、実行、読み書き、書き込み及び実行、または、読取及び実行の許可を含む場合に、ＡｏＩがセキュリティエクスプロイトであるという確信を高めることができる。いくつかの例では、エクスプロイト検出モジュール１１６は、サブルーチンが１ページのサイズを有するメモリ割り当てに関連付けられていること、及び／または読み取り、書きこみ、実行、読み書き、書き込み及び実行、または読み取り及び実行の許可を有することの表示に少なくとも部分的に基づいて、ＡｏＩがセキュリティエクスプロイトに関連付けられていると判定することができる。いくつかの例では、エクスプロイト検出モジュール１１６は、サブルーチン及び／またはメモリ割り当てに対応するコードがシェルコードであると判定することができる。
【００３０】
ＣＳＡ１１４は、例えば、スタックポインタが、コンピューティングデバイスのオペレーティングシステムが割り当てた元のアドレスとは異なるアドレスを指しているかどうか（すなわち、スタックピボット、スタックポインタのピボット）などのスタック情報を得ることができる。通常、オペレーティングシステムはスタックポインタを使用してメモリ上にヒープ位置を設定する、及び／または、オブジェクトにメモリを割り当てる。いくつかの例では、エクスプロイト検出モジュール１１６は、スタックポインタがピボットされた位置に対応するコードがシェルコード（例えば、応答イベント１２６及び／または特性評価１２４に基づいて）である可能性が高いと判定することができる。
【００３１】
いくつかの例では、ＣＳＡ１１４は、スレッド作成要求及び／またはプロセス作成要求情報を含むスタック情報を追加的または代替的に得ることができる。例えば、ＣＳＡ１１４は、オペレーティングシステムまたはカーネルによって生成された新しい開始アドレスを、新たな開始アドレスがロードされたオブジェクトモジュールに割り当てられたメモリ範囲内に位置するかどうかを知るためにスレッド作成要求のために分析し、そうでなければ、新しい開始アドレスに関連付けられた割り当てが１ページであるか、及び／または割り当てには何が許可されたかを分析する。
【００３２】
いくつかの例では、ＣＳＡ１１４は、サブルーチンの名前（または他の識別子）、サブルーチンコードがメモリに動的に割り当てられるかどうか（例えば、サブルーチンに関連付けられたアドレスがロードされたオブジェクトモジュールの外側にある）、サブルーチンオブジェクト以外に関連付けられているかどうか、サブルーチンが関連付けられているオブジェクトの識別子、などの１つ以上を特性評価に得て、含むことができるように構成することもできる。いくつかの例では、これら及び／または上で議論した他のデータの少なくとも１つは、特性評価に含むことができ、ＡｏＩがセキュリティエクスプロイトであることの確信度を増減するために、予防アクションを取るために、コードをシェルコードとして識別するため、使用される。
【００３３】
特に、頻繁にエクスプロイトされる（すなわち、ＯｏＩ）オブジェクトに関連付けられたオブジェクトの任意の識別子は、エクスプロイト検出判定を実行するために使用することができる。例えば、ＯｏＩに関連付けられたオブジェクトは、「ｆｌａｓｈ＿＿＿＿＿」を含む名前を有してもよく、ここで下線は、バージョン、日付情報、拡張、等であってもよい。１つの例では、ＯｏＩに関連付けられたオブジェクトは、関数とすることができる。その例では、関数名は、エクスポート及び／またはインポートテーブル、などのような、機能に関連したＤＬＬモジュールのメタデータから特定することができてもよい。いくつかの例では、ＯｏＩに関連付けられたオブジェクトは、モジュール名をそれに関連したモジュールとすることができる。本明細書で議論する技術は、ＡｏＩの計算コンテキストの一部としてこれを扱うことができ、フラッシュが頻繁にエクスプロイトされるため、それが脆弱コンテキスト（例えば、ＡｏＩがセキュリティエクスプロイトである信頼度スコアを増加させることにより）としてコンテキストを扱うことができる。いくつかの例では、アクションコレクタ（複数可）はこのデータ（例えば、オブジェクト識別子またはタイプ）の一部を収集し提供するよう構成することができる。
【００３４】
いくつかの例では、ＣＳＡ１１４は、ヒープ上の動的に割り当てられたメモリが、例えば、ヒープ上のメモリをジャストインタイム（ＪＩＴ）コンパイルのために動的に割り当てるように、オブジェクトによる潜在的に有効な目的で割り当てられたかどうかを判定するよう、また構成さすることができる。いくつかの例では、これらの目的の１つ（例えば、ＪＩＴコンパイル）に基づいて、メモリが動的に割り当てられた（したがって、ロードされたオブジェクトモジュールに割り当てられた外部メモリにあるコールスタック内のアドレスに関連付けられた可能性がある）ということを判定は、特性評価に反映され、例えば、信頼度スコアを低下させることによって、エクスプロイト検出モジュール１１６によって説明される。
【００３５】
いくつかの例では、上記の機能を達成するために、ＣＳＡ１１４は、コールスタックからのアドレス（すなわち、ポインタ及び／またはリターンアドレス）のリストをコンピューティングデバイスのカーネルに問い合わせることができ、上で議論した追加の情報（メモリ割り当て情報、スタック情報、等）をカーネルにさらに問い合わせることができる。いくつかの例では、ＣＳＡ１１４は、カーネルモードで動作し、それゆえ、コンピューティングデバイスのハードウェアに直接アクセスすることができる。
【００３６】
いくつかの例では、ＣＳＡ１１４はスタックウオーキングＡＰＩを備えて構成される。スタックウオーキングＡＰＩは「ファジー」ウォークスタックに構成される。言い換えれば、ＣＳＡ１１４がコールスタックでフレーム（すなわち、「破損したフレーム」）に遭遇すると、そこでは、破損したフレームに関連付けられたサブルーチンが、ＣＳＡ１１４を、サブルーチン（または別のロードされたモジュール内）を呼んだルーチン内にあるアドレスに返さないリターンアドレスを有するため、ＣＳＡ１１４は破損したスタック付近のフレームからスタックのウォークを続けることができる。他の実装では、ＣＳＡ１１４は、破損したフレームから遠いフレームからコールスタック（例えば、「回復」）のウォークを始めることができる。例えば、ＣＳＡ１１４は、ファジー選択ロジックまたは特定のルーチンに対する関心のうちの１つ以上に基づいてどのフレームからウォークするのかを選択することができる。例えば、破損したフレームは特定のサブルーチンに関連付けられたとして発見されたので、ＣＳＡ１１４は、そのルーチンが危険であるため、そのサブルーチンを含むルートルーチーンに起因するフレームの残りの検査をスキップすることを決定することができる。いくつかの例では、ファジースタックウォーキングＡＰＩは、コンピューティングデバイスのカーネルモードで動作することができる。
【００３７】
いくつかの例では、ＣＳＡ１１４が破損したフレームの発見から回復した後、ＣＳＡ１１４は、信頼度スコアに影響を及ぼす可能性のあるさらなるデータ及び／または特性評価に含めることができるさらなるデータを取得するまで、スタック上をウォークすることができる。例えば、ＣＳＡ１１４は、ＣＳＡ１１４が頻繁にエクスプロイトされるオブジェクトの識別子に関連付けられたルーチンにスタックを巻き戻すまで、コールスタックを継続してウォークすることができる。いくつかの例では、ＣＳＡ１１４は、特性評価を形成するのに十分な情報を得るまで、または、ＣＳＡ１１４がポリシーのルールの情報に対応するターゲットデータを取得するか、またはそれが対象データを取得できないことがわかるまで（ここで、ターゲットデータは要求イベントによって分析されるように要求される、及び／または以下に説明するように、ポリシーのルールに対応するデータである可能性がある）コールスタック上でウォークバックを続けることができる。
【００３８】
上記したように、ＣＳＡは、特性評価の少なくとも一部を含むことのできる応答イベント１２６を生成することができる。応答イベント１２６を生成した後、ＣＳＡ１１４は、応答イベント１２６をイベントバスに提供することができ、それは、イベントをセキュリティエージェント１０２の構成に応じてルート付けしてもよい。いくつかの例では、応答イベントはフラグのセットを含むことができる。フラグを使用する実装では、フラグ値は、エクスプロイト検出モジュール１１６が、ＡｏＩがセキュリティエクスプロイトであるか否かを判定するために使用できるというポリシーのルールのパラメータに対応することができる。いくつかの例では、フラグ値は、エクスプロイト検出モジュール１１６の構成が、ＡｏＩがセキュリティエクスプロイトであるか否かを判定するために使用するパラメータに対応することができる。
【００３９】
例えば、ポリシーは、ＣＳＡが（１）ロードされたオブジェクトモジュールに割り当てられたメモリアドレスの範囲外にあるスタックアドレス（つまり、ポイントまたはリターンアドレス）を有するコードに関連付けられた、（２）１ページのサイズを有するヒープメモリに関連付けられている、（３）書き込み及び実行の許可を有する、コールスタックのフレームに遭遇するか否かによって、ＡｏＩがセキュリティエクスプロイトとして処理されるべきであるというポリシールールを含んでもよい。または、別の例では、エクスプロイト検出モジュール１１６は、条件（１）〜（３）のもとで、ＡｏＩをセキュリティエクスプロイトとして処理するように構成することができる。この場合、応答イベント１２６のフラグ値は、例えば、条件（１）〜（３）のいずれかが真であるかどうかを示してもよい。
【００４０】
いくつかの例では、ポリシールールについての情報またはエクスプロイト検出モジュール１１６の構成は要求イベント１２２の部分として提供されてもよい。いくつかの例では、ＣＳＡ１１４はこのポリシールールについての情報を使用して、ＣＳＡ１１４がどのデータを得るために探すのか、及び／または、特性評価に何のデータが含まれているのかを判定することができる。ＣＳＡ１１４は、この情報を、ＣＳＡ１１４が取得しようとすることができる「ターゲットデータ」として使用することができる。
【００４１】
いくつかの例では、特性評価及び応答イベント１２６は、ＣＳＡ１１４によって取得されたデータの任意の部分を含む。いくつかの例では、応答イベント１２６は破損したフレーム当たり１つのエントリ、及び／または、シェルコードの証拠を含むヒープメモリに関連付けられたフレーム当たり１つのエントリを含む。本明細書で使用されるように、「証拠」は、その構成に従って、エクスプロイト検出モジュール１１６に信頼度スコア、及び／または、ＡｏＩがセキュリティエクスプロイトであるかどうかの判定を変更させる任意のデータを含む。
【００４２】
いくつかの例では、エクスプロイト検出モジュール１１６は、応答イベント１２６（及び、いくつかの例では、要求イベント１２２も同様）に少なくとも部分的に基づいてＡｏＩがセキュリティエクスプロイトである信頼度スコアを計算することができる。その場合、エクスプロイト検出モジュール１１６は、算出された信頼度スコアが、スコア閾値（例えば、スコア閾値は、いくつかの例において、リモートセキュリティサービス１０４により設定することができる）を超えるかどうかのエクスプロイト検出イベント１３０を作成することができる。加えて、または、その代わりの例として、エクスプロイト検出モジュール１１６は、応答イベント１２６（及びいくつかの例において要求イベント１２２）がエクスプロイトヒューリスティック（例えば、ポリシーまたはエクスプロイト検出モジュール１１６の構成によって定義されるヒューリスティック）に一致する方法も確認することができる。エクスプロイトヒューリスティックの例は、ＣＳＡ１１４が、１ページのサイズであり、書き込み及び許可を有しているヒープのメモリに関連付けられているアドレスを有する破損したフレームを検出したときであってもよい。エクスプロイト検出イベント１３０の発生に応じて、エクスプロイト検出モジュール１１６は、エクスプロイト検出イベントをイベントバスに提供し、それは、イベントをセキュリティエージェント１０２の構成に応じて経路付し、フィンガープリントアクタ１１８を含んでもよい。及びいくつかの例においては、エクスプロイト検出モジュール１１６は、ネットワーク（複数可）１０６を介して、エクスプロイト検出イベント１３０及び／または他の関連情報をリモートセキュリティサービス１０４に、付加的に、または、代わりとして提供してもよい。
【００４３】
いくつかの例では、エクスプロイト検出イベント１３０の受信に応答して、セキュリティエージェント及び／またはリモートセキュリティサービス１０４は予防のアクションを取ることができる。例えば、セキュリティエージェント１０２は、破損したフレームに関連付けられたコードにシェルコードのラベルを付け、シェルコードに関連したオブジェクト、またはオブジェクトの一部を破壊し、ＡｏＩ及び／またはＡｏＩに関連付けられたオブジェクトの実行を停止もしくは防止し、入出力操作を停止もしくは防止し、ネットワーク操作を停止または防止し、脆弱性にパッチを当て、または、コンピューティングデバイスを再起動する。セキュリティエージェントは、自動的に（すなわち、ユーザ入力を受信及び／または要求することなく）防止動作を行うように構成することができる。例えば、セキュリティエージェント１０２は、ＡｏＩが閾値を越えるセキュリティエクスプロイトである信頼度スコアである場合、予防動作を行う。いくつかの例では、セキュリティエージェント１０２は、予防アクションが取られたことをユーザに通知するように構成することもできる。
【００４４】
エクスプロイト検出イベント１３０を受信したことに応答して、リモートセキュリティサービス１０４は、フィルタもしくはロジックによって使用されるポリシーを更新するか、またはセキュリティエージェント１０２及び／またはＣＳＡ１１４の構成を更新することができる。リモートセキュリティサービス１０４は、エクスプロイトに基づいて診断、予防、または治療のためのセキュリティサービス１０４に対する指示または他の更新を提供することができる。
【００４５】
エクスプロイト検出イベント１３０の受信に応答して、フィンガープリントアクタ１１８が識別されたエクスプロイトを「フィンガープリントする」、及び／またはエクスプロイトが生じた（そこでは、コンピューティングコンテキストは、本明細書で論じたデータのいずれかを指す）コンピューティングコンテキスト１３２を構成するようにできる。フィンガープリント法は、コンピューティングデバイスでの格納、または、エクスプロイト、及び／または、コンピューティングコンテキストに関する情報を、エクスプロイトされた脆弱性タイプのうちの１つ以上の特定間を区別するための十分な情報を備えたデータベース（すなわち、ここの「指紋」）のような、構造的アイテムとしてのコンピューティングコンテキストに関する情報をリモートセキュリティサービス１０４に格納することができ、そこでは、オブジェクトモジュールの位置、及び／または、どのエクスプロイトパッケージが使用されるか（例えば、マルウェアの名前、バージョン番号、変形、等）によって脆弱性が決まる。いくつかの例において、十分な情報は、特性評価の少なくとも一部、動作が収集されたときからいくつかの点でのセキュリティエージェント１０２及び／またはＣＳＡ１１４によって得られた、または、観察されたデータの少なくとも一部、及び／またはＡｏＩを含むことができる。情報は、スタックフレームに関する情報を含むことができ、それは、いくつかの例では、ＣＳＡ１１４による応答イベントで報告されてもよい。
【００４６】
いくつかの例では、フィンガープリントアクタ１１８及び／またはリモートセキュリティサービス１０４は、ＡｏＩ、エクスプロイト検出イベント、指紋（複数可）、または特性評価のうちの１つ以上に基づくオブジェクトモジュールの脆弱性を識別するための指紋のデータベースを使用するように構成することができ、脆弱性はエクスプロイトされたオブジェクトモジュールの位置に対応する。指紋アクタ１１８及び／またはリモートセキュリティサービス１０４は、１つ以上の指紋に基づいて、脆弱性をエクスプロイトするために使用されたエクスプロイトパッケージを識別するように構成することがでる。いくつかの例では、指紋データは、エクスプロイト検出イベント１３０がエクスプロイト検出モジュール１１６によって受信された後、どのタイプの脆弱性がエクスプロイトされたかを識別するために使用することができる。もし、既存の脆弱性が存在しない場合（例えば、脆弱性が知られ、したがってセキュリティエージェント１０２のポリシーまたは構成に含まれる場合）、指紋アクタ１１８は、脆弱性に対する持ち上げられたイベントを生成することができ、それは、それがリモートセキュリティサービス１０４に送信することができ、及び／または、脆弱性がゼロ日の脆弱性（例えば、発見されずにパッチされていない脆弱性）であってもよいかどうかを判定するために、さらなる分析を行う。
【００４７】
セキュリティエージェントの例
図２は、セキュリティエクスプロイトに潜在的に関連付けられたイベント通知を検出し生成するフィルタ／ロジックと、例示的なセキュリティエージェントがセキュリティエクスプロイトを推測的に検出可能にすることができるコンピューティングコンテキストを取得するためのコールスタックアクタと、少なくともコールスタックアクタ及び／またはフィルタ／ロジックから受信されたデータがエクスプロイトを示すかどうかを判定するためのエクスプロイト検出モジュールと、より堅牢なエクスプロイトの抑止と識別提供するために、エクスプロイトが生じたときにエクスプロイト及びコンピューティングコンテキストについてのデータを集計する、フィンガープリントアクタ、を含むセキュリティエージェントの例を示す。
【００４８】
図示されているように、コンピューティングデバイス２０２は、コンピューティングデバイス２０２にインストールされたカーネルレベルのセキュリティエージェント２０６で動作するリモートセキュリティサービスデバイス（複数可）２０４からセキュリティサービスを受信することができる。コンピューティングデバイス２０２は、プロセス（複数可）２１０及びスレッド（複数可）２１２のような複数のオブジェクト２０８を含むことができる。カーネルレベルのセキュリティエージェント２０６は、アクションコレクター（複数可）２１４、イベントバス２１６、フィルタ／ロジック及びポリシー２１８、コールスタックアクタＣＳＡ２２０、エクスプロイト検出モジュール２２２、フィンガープリンティングアクタ２２４、他のイベントジェネレーター（複数可）／コンシューマ（複数可）２２６、及び通信モジュール２２８を含む。コンピューティングデバイス２０２はまた、コールスタック２３０及びヒープ２３２を含むことができ、そのいずれかまたは両方は、ユーザモード及び／またはカーネルモードからアクセス可能である。いくつかの例では、コールスタック２３０及びヒープ２３２は、カーネルモードを介してのみアクセス可能である。
【００４９】
様々な実施形態において、コンピューティングデバイス２０２及びセキュリティサービスデバイス（複数可）２０４及びネットワークは、上述したものと同じ種類のデバイス、サービス、及びネットワークであってもよい。同様に、セキュリティエージェント２０６は、セキュリティエージェント１０２の例であってもよく、アクションコレクター（複数可）２１４はアクションコレクター（複数可）１０８の例であってもよく、イベントバス２１６は、図１を参照して上述したイベントバスの例であってもよく、フィルタ／ロジック及びポリシー２１８は、フィルタ／ロジック１１０及びポリシー１１２の例であってもよく、ＣＳＡ２２２はＣＳＡ１１４の例であってもよく、エクスプロイト検出モジュール２２２はエクスプロイト検出モジュール１１６の一例であってもよく、フィンガープリントアクタ２２４はフィンガープリントアクタ１１８の例であってもよい。
【００５０】
いくつかの実装では、複数のオブジェクト２０８は、プロセス（複数可）２１０及びスレッド（複数可）２１２などのコンピューティングデバイス２０２の任意の種類の構成要素を含むことができる。複数のオブジェクト２０８は、ツリー、モジュール、または任意のその他の種類の構成要素を含んでもよい。例えば、スレッド（複数可）２１２は、セキュリティエクスプロイトによってターゲットとされる脆弱なスレッドであってもよい。そのようなスレッドの例−インターネットブラウザプラグイン／フラッシュスレッド−及びその活動は、図１に関して上で述べたものである。
【００５１】
図２に示すように、イベントバス２１６及びフィルタ／ロジック及びポリシー２１８は、セキュリティエージェント２０６のアーキテクチャ内の他の構成要素を接続するルーティング、フィルタリング及び分析構成要素（複数可）として機能することができる。イベントバス２１６及びフィルタ／ロジック及びポリシー２１８は、他の構成要素からイベントを受信し、これらの受信したイベントをルーティングし、それらの受信したイベントのサブセットをフィルタリング及びルーティングするか、または、受信したイベントを分析し、さらに受信したイベントを生成してルーティングすることができる。イベントバス２１６及びフィルタ／ロジック及びポリシー２１８によって受信した任意のイベントを受けたときのアクションは、セキュリティエージェント２０６及びポリシーの構成によって駆動されてもよい。
【００５２】
イベント発生器（複数可）及びコンシューマ（複数可）２２６は、ＣＳＡ２２０、エクスプロイト検出モジュール２２２、フィンガープリントアクタ２２４、及び他のアクタなどのアクションを取るモジュールを含むことができる。アクタは、イベントバス２１６を介してイベントを受信し、イベントに基づいていくつかのアクションを取る。例えば、アクタはエクスプロイト検出イベントを受信し、エクスプロイト検出イベントに基づいて予防アクションを講じることができる。さらに、あるいは代わりに、アクタは、データ構造のイベントに関連した情報、または、イベントに関連付けられた通信情報を、セキュリティサービスデバイス（複数可）２０４に送信するために通信モジュール２２８に格納することができる。さらなる実装では、エクスプロイト検出イベントを受信すると、アクタは、エクスプロイト検出イベントに基づいてデータ構造から追加情報を検索し、追加情報は、予防アクションなどの何らかのアクションをとってもよい。
【００５３】
様々な実施形態では、通信モジュール２２８は、１つ以上のネットワークを介してセキュリティサービスデバイス２０４（複数可）と通信するために、ネットワークプロトコルスタック（複数可）、ネットワークインターフェースドライバ（複数可）、及びカーネルレベルのセキュリティエージェント２０６によって利用された任意の他のネットワークインターフェース構成要素を表すことができる。通信モジュール２２８は、コンピューティングデバイス２０２のカーネルモード構成要素であってもよい。さらに、通信モジュール２２８は、イベント、他の通知、及びデータ関連イベントを、カーネルレベルセキュリティエージェント２０６からセキュリティサービスデバイス２０４（複数可）に送信できる。通信モジュール２２８は、セキュリティサービスデバイス２０４（複数可）から受信したコンフィグレーション更新を、カーネルレベルのセキュリティエージェント２０６の構成マネージャに、また、ヒーリング命令及び／またはセキュリティサービスデバイス２０４（複数可）からのイベントをフィルタリング及び／またはディスパッチのためにイベントバス２１６に送信できる。
【００５４】
システムの例
図３は、エクスプロイトとセキュリティエージェントによってターゲットとされるオブジェクトを備えるように構成されたコンピューティングデバイスの構成要素レベルの図を例示する。例示されるように、コンピューティングデバイス３００は、エクスプロイト３０６によってターゲットとされるオブジェクト（複数可）３０４を格納するシステムメモリ３０２と、フィルタ／ロジック３１０、ポリシー３１２、相関器（複数可）３１４、及びデータ構造３１６を含むセキュリティエージェント３０８とを含む。また、コンピューティングデバイス３００は、プロセッサ（複数可）３１８、リムーバブルストレージ３２０、及び非リムーバブルストレージ３２２、入力装置（複数可）３２４、他のコンピューティングデバイス３３０と通信するための出力装置（複数可）３２６及び通信接続３２８を含む。
【００５５】
様々な実施の形態では、システムメモリ３０２は揮発性（ＲＡＭのような）、非揮発性（例えば、ＲＯＭ、フラッシュメモリなど）、または、その２つの何らかの組み合わせなどである。オブジェクト３０４は、機能、プロセス、または、セキュリティエクスプロイト３０６によって含まれる他のスレッドのような、任意の種類のオブジェクトであってもよい。そのようなオブジェクト３０４及びエクスプロイト３０６の例は、さらに本明細書に記載された同様に名付けられた構成要素の例である。セキュリティエージェント３０８及びそのフィルタ／ロジック３１０、ポリシー３１２、相関器（複数可）３１４、ならびにデータ構造３１６は、本明細書でさらに説明する同様の名前の構成要素の例でもある。
【００５６】
いくつかの実施形態では、プロセッサ３１８（複数可）は、中央処理装置（ＣＰＵ）、グラフィック処理装置（ＧＰＵ）、もしくはＣＰＵとＧＰＵの両方、または当技術分野で知られている他の処理装置または構成要素である。
【００５７】
コンピューティングデバイス３００は、また、例えば、磁気ディスク、光ディスクまたはテープなどの追加のデータ格納デバイス（リムーバブル及び／または非リムーバブル）を含む。このような追加の記憶装置は、図３に、リムーバブル記憶装置３２０と、非リムーバブル記憶装置３２２によって例示される。非一時的なコンピュータ読み取り可能媒体は、コンピュータ読み取り可能命令、データ構造、プログラムモジュール、または他のデータなどの情報の記憶のための任意の方法または技術で実装される、揮発性及び不揮発性の取り外し可能及び取り外し不能媒体を含むことができる。システムメモリ３０２、リムーバブルストレージ３２０、及び非リムーバブルストレージ３２２は、すべて非一時的なコンピュータ読み取り可能な記憶媒体の例である。非一時的なコンピュータ読み取り可能な記憶媒体には、限定されるものではないが、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリまたは他のメモリ技術、ＣＤ−ＲＯＭ、デジタル多用途ディスク（ＤＶＤ）もしくは他の光記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置もしくは他の磁気記憶装置、または、所望の情報を格納するために使用することができ、コンピューティングデバイス３００によってアクセスすることができる任意の他の非一時的媒体を含む。このような任意の非一時的なコンピュータ読み取り可能媒体は、コンピューティングデバイス３００の一部であってもよい。
【００５８】
コンピューティングデバイス３００はまた、キーボード、マウス、タッチセンシティブディスプレイ、音声入力装置などの入力装置（複数可）３２４と、ディスプレイ、スピーカ、プリンタなどの出力装置（複数可）３２６とを有する。これらの装置は、当該技術分野において周知であり、本明細書では詳細に論ずる必要はない。
【００５９】
コンピューティングデバイス３００はまた、コンピューティングデバイス３００がセキュリティサービスデバイス（複数可）２０４などの他のコンピューティングデバイス３３０と通信することを可能にする通信接続３２８を含む。
【００６０】
プロセスの例
図４は、プロセスの例を例示する。このプロセスは、論理フローグラフとして示されており、その各動作は、ハードウェア、ソフトウェア、またはそれらの組み合わせで実現可能な一連の動作を表している。ソフトウェアのコンテキストにおいては、操作は、１つ以上のプロセッサによって実行されると、記載された操作が行われる、１つ以上のコンピュータ読み取り可能記憶媒体に格納されたコンピュータ実行可能命令を表す。概して、コンピュータ実行可能命令は、特定の機能を行う、または、特定の抽象的なデータのタイプを実装する、ルーチン、プログラム、オブジェクト、構成要素、データ構造などを含む。操作を記述する順序は限定として解釈されることを意図したものではなく、任意の数の記述された操作は、プロセスを実装する任意の順序及び／または平行するように組み合わせることができる。
【００６１】
図４は、対象のアクション（ＡｏＩ）のコンテキストを検査する要求を受信するプロセス４００の一例を示し、コールスタックをウォークすることに少なくとも部分的に基づいてＡｏＩに関連付けられたコールスタックの特性評価を生成し、ＡｏＩにセキュリティエクスプロイトが含まれているかどうかを判定する。
【００６２】
このプロセスは、４０２において、ＡｏＩのコンテキストを検査する要求をコールスタックアクタ（ＣＳＡ）が受信することを含む。いくつかの例では、ＡｏＩは、プロセスまたはスレッドなどのオブジェクトによって生成されたものであってもよい（例えば、インターネットブラウザプラグインスレッドまたは電子メールアプリケーションスレッド）。さらに、受信は、ＣＳＡで構成されたセキュリティエージェントの構成可能ポリシーに基づいてもよい。
【００６３】
４０４において、ＣＳＡは、要求に少なくとも部分的に基づいて、ＡｏＩに関連付けられたコールスタックの特性評価を生成することができ、生成は、４０６においてコールスタックをウォークすることに少なくとも部分的に基づいている。
【００６４】
４０８（特性評価生成４０４の一部とすることができる）において、ＣＳＡがコールスタック内のフレームに遭遇し、そこで、そのフレームに関連付けられたサブルーチンが、サブルーチンを呼んだルーチン内に位置するアドレスにＣＳＡを返さないリターンアドレスを有する場合、フレームが壊れており、４１０において、ＣＳＡは、フレームに関連付けられたサブルーチン（例えば、ヒープ上のサブルーチンに関連付けられたＣＳＡ取得可能メモリ割り当て情報など）のさらなる分析を行うことができる。
【００６５】
４１２で（それは、特性評価発生４０４の一部にまたなり得る）、ＣＳＡが壊れたスタックフレームに遭遇しない場合、ＣＳＡは、取得されたデータの少なくとも一部を特性評価に含めることができる。ＣＳＡが壊れたスタックフレームに遭遇した場合、特性評価は、これ及び、４１０でさらなる分析の間に発見されたデータの少なくとも一部分の表示を含むことができる。
【００６６】
４１４で、ＣＳＡは、コールスタック（それは、特性評価発生４０４の一部にまたなり得る）を付加的にまたは代わりに検査することができる。例えば、ＣＳＡは、スタックポインタが元の位置等から移動された（例えば、ピボットされた）かどうかを判定することができる。
【００６７】
４１６で、セキュリティエージェントは、特性評価に少なくとも一部基づいて、ＡｏＩがセキュリティエクスプロイトを含むかどうかを判定することができる。いくつかの例では、これは、４１８において、信頼度スコア（例えば、ＯｏＩの識別子、指紋、ヒューリスティックファジーマッチスコア、または知識リポジトリなどの利用可能な特性評価及び／または他のデータに基づいて）を計算することを含むことができる。４２０で信頼度スコアが閾値を超える場合、プロセス４００は、４２２でエクスプロイト検出イベントをさらに生成し、閾値を超えない場合、プロセスは終了する。いくつかの例では、セキュリティエージェントは、特性評価を４２４でエクスプロイトヒューリスティックに一致させようと、付加的に、または代わりに試みる。いくつかの例では、その特性が４２６でヒューリスティックと一致するか、またはファジーがヒューリスティックと一致すると、セキュリティエージェントは、４２２において、エクスプロイト検出イベントを生成することができる。
【００６８】
条項の例
Ａ．コールスタックアクタ（ＣＳＡ）によって、対象のアクション（ＡｏＩ）のコンテキストを検査する要求を受信することと、ＣＳＡによって、かつ前記要求に少なくとも部分的に基づいて、ＡｏＩに関連付けられたコールスタックの特性評価を生成することであって、生成は、コールスタックを通ってウォークすることに少なくとも部分的に基づいて行われ、生成することと、セキュリティエージェントによって」、かつ、特性評価に少なくとも部分的に基づいて、ＡｏＩがセキュリティエクスプロイトを含むと判定することと、を含む、方法。
【００６９】
Ｂ．ＡｏＩがセキュリティエクスプロイトを含むと判定することは、特性評価がセキュリティエクスプロイトの特徴を定義するヒューリスティックの少なくとも一部を満たしていることを判定することをさらに含む、段落Ａに記載の方法。
【００７０】
Ｃ．コールスタックは複数のフレームを含み、コールスタックのフレームの特性評価は、フレームのアドレスに関連付けられたモジュールのモジュール識別子、リターンアドレス、リターンアドレスが、オブジェクトに以前に割り当てられたメモリに関連付けられているかどうかのインジケータであって、オブジェクトは、機能、モジュール、プロセス、もしくはスレッドのうちの１つを含む、インジケータ、フレームに関連付けられたメモリ領域、メモリ領域に関連付けられたプロセスもしくはスレッドのオブジェクト識別子、メモリ領域の許可、または、メモリ領域のサイズ、の１つ以上を含む、段落ＡまたはＢのいずれかに記載の方法。
【００７１】
Ｄ．ＡｏＩがセキュリティエクスプロイトを含むことを判定することは、リターンアドレスがオブジェクトに以前に割り当てられた外部メモリであると判定することを判定すること、オブジェクト識別子が脆弱なオブジェクトに関連付けられていると判定すること、メモリ領域の許可が、読み出し、書き込み、及び実行のうちの２つ以上を含むと判定すること、またはメモリ領域が１ページの長さであると判定することのうちの１つ以上に少なくとも基づく、段落Ａ〜Ｃのいずれか１つに記載の方法。
【００７２】
Ｅ．判定が、リターンアドレスがオブジェクトに以前に割り当てられた外部メモリにあると判定することを含み、方法が、リターンアドレスが悪意のあるコードを指すコードを処理することをさらに含む、段落Ａ〜Ｄのいずれかに記載の方法。
【００７３】
Ｆ．ユーザからの入力を受け取ることなく、かつ、ＡｏＩがセキュリティエクスプロイトを含むと判定することに少なくとも部分的に基づいて、予防アクションをコミットすることをさらに含む、段落Ａ〜Ｅのいずれか１つに記載の方法。
【００７４】
Ｇ．予防アクションは、ＡｏＩの実行を停止または防止すること、ＡｏＩに関連付けられたオブジェクトの実行を停止または防止すること、入出力操作を停止または防止すること、ネットワークの操作を停止または防止すること、またはＡｏＩをコミットしたコンピューティングデバイスを再起動させること、のうちの１つ以上を含む、段落Ａ〜Ｆのいずれか１つに記載の方法。
【００７５】
Ｈ．判定は、特性評価に少なくとも部分的に基づいて信頼度スコアを計算することと、ＡｏＩが、信頼度スコアが閾値信頼度スコアを越えていることに少なくとも部分的に基づいてセキュリティエクスプロイトを含むことを判定することと、を含む、段落Ａ〜Ｇのいずれか１つに記載の方法。
【００７６】
Ｉ．プロセッサと、コンピューティングデバイス上でプロセッサによって実行されるように構成されたコールスタックアクタ（ＣＳＡ）とを含み、ＣＳＡは、対象のアクション（ＡｏＩ）の分析を行う要求を受信し、セキュリティエージェントに特性評価を提供するように構成されたロジックと、ＡｏＩに関連付けられたコールスタックに専念するメモリのアドレスを識別し、ＡｏＩに関連付けられたエントリでコールスタックから少なくとも部分的なウォークに基づいてＡｏＩに関連付けられたコールスタックから特性評価を生成するように構成されたコールスタックウォーカと、を含み、セキュリティエージェントは、コンピューティングデバイス上でプロセッサによって実行されるように構成され、セキュリティエージェントは、特性評価を受信するように構成され、少なくとも部分的に特性評価に基づいて、ＡｏＩがコンピューティングのセキュリティエクスプロイトであると判定する、コンピューティングデバイス。
【００７７】
Ｊ．セキュリティエージェントがユーザの入力を受け取ることなくセキュリティエクスプロイトが完了することを防止するロジックをさらに含む、段落Ｉに記載のコンピューティングデバイス。
【００７８】
Ｋ．ＣＳＡはコンピューティングデバイスのカーネルモードで動作し、コールスタックはコンピューティングデバイスのカーネルによってアクセス可能である、ＩまたはＪに記載のコンピューティングデバイス。
【００７９】
Ｌ．ＣＳＡのコールスタックウォーカは、コールスタックをファジーウォークするように構成され、ファジーウォークは、コールスタック内のトレースを破損するコールスタック内のフレームに遭遇し、フレームについての情報を記録し、情報はフレームに関連付けられたリターンアドレス、フレームに関連付けられたメモリ、フレームまたはメモリ領域に関連付けられたプロセスもしくはスレッド、あるいは、フレームに関連付けられた機能のうちの１つ以上を含み、トレースを破損するコールスタックのフレームに近いフレームからコールスタックをウォークし続ける、段落Ｉ〜Ｋのいずれかに記載のコンピューティングデバイス。
【００８０】
Ｍ．ＣＳＡは、結果としてＡｏＩになるコールスタックに反映された一連の機能を開始する、機能、モジュール、プロセス、またはスレッドのオブジェクト識別子を得るために、コールスタックをファジーウォークするように構成され、ＣＳＡは特性評価のオブジェクト識別子を含めるようにさらに構成される、段落Ｉ〜Ｌのいずれか１つに記載のコンピューティングデバイス。
【００８１】
Ｎ．コールスタックが、コンピューティングデバイスのカーネルによってアクセス可能であり、ＣＳＡは、コールスタックをカーネルモードでファジーウォークするように構成される、段落Ｉ〜Ｍのいずれか１つに記載のコンピューティングデバイス。
【００８２】
Ｏ．コールスタックの特性評価の生成は、コールスタック及びＡｏＩに関連付けられたメモリのアドレスのリストを取得することを含み、アドレスのリストは、コールスタックのフレームに関連し、フレームの少なくとも１つに関連付けられている詳細について、コンピューティングデバイスのカーネルに問い合わせ、詳細は、フレームに関連付けられた機能、フレームに関連付けられたスタックポインタ、フレームに関連付けられたリターンアドレス、リターンアドレスまたはスタックポインタに関連付けられたメモリの割り当て、位置に関するメモリ割り当て情報のうちの１つ以上を含み、メモリ割り当て情報は、位置がオブジェクトに割り当てられたメモリ範囲内にあるかどうかの指示を含み、オブジェクトは、機能、モジュール、プロセス、またはスレッド、位置がオブジェクトに割り当てられたメモリ範囲内にある場合は、メモリ範囲が割り当てられたオブジェクトに関連したオブジェクト識別子、位置またはメモリの許可、または、オブジェクト関連したコードのサイズ、を含む、段落Ｉ〜Ｎのいずれか１つに記載のコンピューティングデバイス。
【００８３】
Ｐ．ＣＳＡが、識別されたタイプのＡｏＩからＡｏＩの分析またはタイプの実行のためのうちの１つ以上に少なくとも部分的に基づいて、特性評価にどの詳細を含めるかを選択する、段落Ｉ〜Ｏのいずれか１つに記載のコンピューティングデバイス。
【００８４】
Ｑ．ＡｏＩがコンピューティングデバイスのセキュリティエクスプロイトであると判定したことに応じて、メモリに格納されたコードの一部を悪意のあるコードとして扱い、特性評価に参照し、悪意のあるコードのコピーをメモリに格納するか、リモートメモリに送信し、脆弱な識別子に関連付け、特性評価をメモリに格納するか、リモートメモリに送信し、追加情報をメモリに収集して格納するかのうちの１つ以上、またはリモートメモリに送信し、追加情報は、メモリ内にロードされた悪意のあるコードの名前、バージョン、またはアドレス範囲のうちの１つ以上を含む、段落Ｉ〜Ｐのいずれか１つに記載のコンピューティングデバイス。
【００８５】
Ｒ．ロジックは、悪意のあるコード、脆弱性識別子、オフセット識別子、エクスプロイト名、特性評価、または追加情報のコピーのうちの１つ以上使用するようにさらに構成され、ＡｏＩがセキュリティエクスプロイトであるか否かを判定する精度を向上させる、段落Ｉ〜Ｑのいずれか１つに記載のコンピューティングデバイス。
【００８６】
Ｓ．プロセッサと、１つ以上のプロセッサによって実行されたときに、システムが、システムによって取られた動作から関心ある動作（ＡｏＩ）を検出し、メモリに格納された記録を識別して結果としてＡｏＩに帰着したシステムによって取られた前の動作を記録し、ＡｏＩがシステムのエクスプロイトであるという証拠の記録を調査し、記録はメモリに格納される、記録が、ＡｏＩがエクスプロイトであると言う証拠を含む場合ＡｏＩに関する、予防措置動作を実行するように構成されたコンピュータ実行可能命令を格納したメモリとを含む、システム。
【００８７】
Ｔ．記録はコールスタックであり、操作は、コールスタック内のＡｏＩに対応するフレームから開始して、コールスタックウォークすることを含み、ウォークは、ウォークがメモリ上にロードされたモジュールに関連付けられていないリターンアドレスに関連したスタックフレームに到着するか、またはウォークがコールスタックもしくはルートスレッドもしくはルートプロセスの終わりに到達するまで行われ、ウォークがメモリにロードされたモジュールに関連しないリターンアドレスに関連付けられたスタックフレームに到達したことに応じて、ウォークがコールスタック、または、ルートスレッド、またはルートプロセスの終わりに達するまで、コールスタック内の次のエントリからウォークし続け、その後のエントリは、さらに、前の機能と、ＡｏＩをコミットした機能に対応するエントリの両方からである、段落Ｓに記載のシステム。
【００８８】
Ｕ．段落Ａ〜Ｈのいずれか１つに記載の方法を実行する、システム。
【００８９】
Ｖ．段落Ａ〜Ｈのいずれか１つに記載の動作を達成するコンピュータで実行可能な命令を格納した、コンピュータ読み取り可能媒体。
【００９０】
Ｗ．段落Ａ〜Ｈのいずれかに記載の動作を達成するための、手段。
【００９１】
結論
主題は、構造的特徴及び／または方法論的行為に特有の言語で説明されているが、添付の特許請求の範囲に定義された主題は、必ずしも記載された特定の特徴または動作に限定されるものではない。むしろ、特別の特徴及び行為は、請求項を実施する例示的な形態として開示される。
【００９２】
本明細書で説明するモジュールは、任意のタイプのコンピュータ読み取り可能媒体に格納することができる命令を表し、ソフトウェア及び／またはハードウェアで実施することができる。上記の方法及びプロセスのすべては、１つ以上のコンピュータまたはプロセッサ、ハードウェア、あるいは、そのなんらかの組み合わせによって実行される、ソフトウエアコードモジュール及び／またはコンピュータ実行可能命令を介して十分自動化され、実施されることができる。方法のすべてまたはいくつかは、代わりに、特別のコンピュータハードウェアで実施されることができる。
【００９３】
特に明記しない限り、「可能な」または「可能かもしれない」、「であってもよい」、「でありうる」のような条件的な用語は、文脈内で理解され、ある例は含むが、他の例はある特徴、要素、及び／または動作を含まないことを表す。したがって、そのような条件付の用語は、ある特徴、要素、及び／または動作が１つ以上の例にとにかく要求されるか、または、１つ以上の例が、ユーザの入力またはプロンプトを伴うか伴わない状態で決定するロジックを必ず含む、とか、ある特徴、要素、及び／または動作が何らかの特定の例で含まれるか、または、実行されるかどうか、ということは概して意図されない。
【００９４】
特に言及しない限り、「Ｘ、ＹまたはＺの少なくとも１つ」という語句のような結合言語は、項目、用語などがＸ、ＹまたはＺのいずれかであり得るか、またはそれらの任意の組み合わせを表すと理解されるべきである。単数として明示的に記載されている場合を除き、「ａ」は単数及び複数を意味する。
【００９５】
本明細書に記載され、及び／または添付の図に示されているフロー図の任意のルーチン記述、要素またはブロックは、特定の論理機能またはルーチンの要素を実装するための１つ以上のコンピュータ実行可能命令を含むコードのモジュール、セグメント、または、部分を潜在的に表すとして理解されるべきである。代わりの実施は、要素または機能が削除され、当業者には理解されるであろう、機能性に応じた、実質的に同期した、または、逆の順を含む、図示または説明したものとは異なる順序で、実行することができる。
【００９６】
上記の実施例に対して多くの変形例及び修正例が可能であり、それらの要素は他の許容可能な例の中にあると認識されるべきであることが強調されるべきである。そのような修正のすべて及び変形は、以下の請求項により保護され、この開示の範囲内で本明細書に含まれることが意図される。
【図１】
2019521400.tif 000003
【図２】
2019521400.tif 000004
【図３】
2019521400.tif 000005
【図４】
2019521400.tif 000006
【国際調査報告】
2019521400.tif 000007
2019521400.tif 000008
2019521400.tif 000009