(57)【特許請求の範囲】
【請求項１】
プロセッサに
システムにおけるアプリケーションを実行する手順と、
前記アプリケーションのためにイベントトレースを実行する手順と、
前記イベントトレースからのそれぞれの命令ポインタを分析する手順と、
命令ポインタが、ロードされたモジュール外、または、前記アプリケーションに関連付けられるメモリ領域外のメモリの領域を示す場合に、前記命令ポインタによって示された領域がオーファンページであると判断する手順と
を実行させるためのコンピュータプログラム。
【請求項２】
前記オーファンページは、前記アプリケーションに関連付けられていないコードの領域である、請求項１に記載のコンピュータプログラム。
【請求項３】
前記オーファンページは、未確認のコードの領域である、請求項１または２に記載のコンピュータプログラム。
【請求項４】
前記システムは、オペレーティングシステム、および、前記イベントトレースを実行する前記オペレーティングシステムの一部である埋め込みアプリケーションを有する、請求項１から３のいずれか一項に記載のコンピュータプログラム。
【請求項５】
前記プロセッサに、
前記命令ポインタが前記アプリケーションに関連付けられていない異常コードを示すかどうかを判断する手順をさらに実行させるための、請求項１から４のいずれか一項に記載のコンピュータプログラム。
【請求項６】
前記イベントトレースは、前記アプリケーションに対して透過的である、請求項１から５のいずれか一項に記載のコンピュータプログラム。
【請求項７】
前記イベントトレースは、ブロックされることなくターゲットアプリケーションが実行を継続するような前記アプリケーションと非同期である、請求項１から６のいずれか一項に記載のコンピュータプログラム。
【請求項８】
前記プロセッサに、
前記命令ポインタがメモリのオーファンページを示した場合、または前記命令ポインタが前記アプリケーションに関連付けられていない異常コードを示した場合、前記アプリケーションを悪意あるものとしてフラグする手順をさらに実行させるための、請求項１から７のいずれか一項に記載のコンピュータプログラム。
【請求項９】
検出モジュールを備え、
前記検出モジュールは、
システムにおけるアプリケーションを実行し、
前記アプリケーションのためにイベントトレースを実行し、
前記イベントトレースからのそれぞれの命令ポインタを分析し、
命令ポインタが、ロードされたモジュール外、または、前記アプリケーションに関連付けられるメモリ領域外のメモリの領域を示す場合に、前記命令ポインタによって示された領域がオーファンページであると判断する
ように構成される、装置。
【請求項１０】
前記オーファンページは、前記アプリケーションと関連付けられていないコードの領域である、請求項９に記載の装置。
【請求項１１】
前記オーファンページは、未確認のコードの領域である、請求項９または１０に記載の装置。
【請求項１２】
前記システムは、オペレーティングシステム、および、前記イベントトレースを実行する前記オペレーティングシステムの一部である埋め込みアプリケーションを有する、請求項９から１１のいずれか一項に記載の装置。
【請求項１３】
前記検出モジュールは、
前記命令ポインタが前記アプリケーションに関連付けられていない異常コードを示すかどうかを判断するようにさらに構成される、請求項９から１２のいずれか一項に記載の装置。
【請求項１４】
前記イベントトレースは、前記アプリケーションに対して透過的である、請求項９から１３のいずれか一項に記載の装置。
【請求項１５】
前記イベントトレースは、ブロックされることなくターゲットアプリケーションが継続して実行するような前記アプリケーションと非同期である、請求項９から１４のいずれか一項に記載の装置。
【請求項１６】
プロセッサがシステムにおけるアプリケーションを実行する段階と、
イベントトレースモジュールが前記アプリケーションのためにイベントトレースを実行する段階と、
命令ポインタ分析モジュールが前記イベントトレースからのそれぞれの命令ポインタを分析する段階と、
命令ポインタが、ロードされたモジュール外、または、前記アプリケーションに関連付けられるメモリ領域外のメモリの領域を示す場合に、命令ポインタ分析モジュールが、前記命令ポインタによって示された領域がオーファンページであると判断する段階と
を備える、方法。
【請求項１７】
前記オーファンページは、前記アプリケーションと関連付けられていないコードの領域である、請求項１６に記載の方法。
【請求項１８】
前記オーファンページは、未確認のコードの領域である、請求項１６または１７に記載の方法。
【請求項１９】
前記システムは、オペレーティングシステム、および、前記イベントトレースを実行する前記オペレーティングシステムの一部である埋め込みアプリケーションを有する、請求項１６から１８のいずれか一項に記載の方法。
【請求項２０】
前記命令ポインタが前記アプリケーションと関連付けられていない異常コードを示すかどうかを判断する段階をさらに備える、請求項１６から１９のいずれか一項に記載の方法。
【請求項２１】
前記イベントトレースは、前記アプリケーションに対して透過的である、請求項１６から２０のいずれか一項に記載の方法。
【請求項２２】
前記イベントトレースは、ブロックされることなくターゲットアプリケーションが継続して実行するような前記アプリケーションと非同期である、請求項１６から２１のいずれか一項に記載の方法。
【請求項２３】
プロファイリングイベントに基づいたエクスプロイト検出のためのシステムであって、
前記システムは、
検出モジュールを備え、
前記検出モジュールは、
システムにおけるアプリケーションを実行し、
前記アプリケーションのためにイベントトレースを実行し、
前記イベントトレースからのそれぞれの命令ポインタを分析し、
命令ポインタが、ロードされたモジュール外、または、前記アプリケーションに関連付けられるメモリ領域外のメモリの領域を示す場合に、前記命令ポインタによって示された領域がオーファンページであると判断する
ように構成される、システム。
【請求項２４】
前記オーファンページは、前記アプリケーションと関連付けられていないコードの領域である、請求項２３に記載のシステム。
【請求項２５】
前記システムは、オペレーティングシステム、および、前記イベントトレースを実行する前記オペレーティングシステムの一部である埋め込みアプリケーションを有する、請求項２３または２４に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
［関連出願の相互参照］
本出願は、「プロファイリングイベントに基づいたエクスプロイト検出」という名称で２０１５年６月２６日出願された米国非仮（実用特許）特許出願第１４／７５１，７６２号の利益と優先権を主張し、参照によりその全体が本明細書に組み込まれる。
【０００２】
この開示は、概して情報セキュリティの分野に関し、より詳しくは、プロファイリングイベントに基づいたエクスプロイト検出に関する。
【背景技術】
【０００３】
ネットワークセキュリティの分野は、現代社会において、ますます重要になってきている。インターネットは、世界中の異なるコンピュータネットワークの相互接続を可能にしている。特に、インターネットは、様々なタイプのクライアントデバイスを介して、異なるコンピュータネットワークに接続された異なるユーザ間でデータを交換するための媒体を提供する。インターネットの使用が、ビジネスコミュニケーションおよびパーソナルコミュニケーションを変化させてきた一方、それはまた、悪意のあるオペレータが、コンピュータおよびコンピュータネットワークへ不正アクセスする、および機密情報の意図的なまたは不注意な公開のための手段として使われている。
【０００４】
ホストコンピュータを感染させる悪意のあるソフトウェア（「マルウェア」）は、ホストコンピュータと関連付けられた企業または個人からの機密情報の盗取、他のホストコンピュータへの伝播、および／または分散サービス妨害攻撃に対する支援、ホストコンピュータからのスパムまたは悪意のある電子メールの送信などの任意の数の悪意のある動作を実行することが可能であり得る。よって、悪意のあるソフトウェアによる悪意のある、および意図しないエクスプロイトからコンピュータおよびコンピュータネットワークを保護するための重要な管理問題が、残っている。
【図面の簡単な説明】
【０００５】
本開示のより完全な理解、およびそのフィーチャと利点を提供するべく、添付の図と関連させて以下の説明を参照する。なお同様の参照番号は同様の部分を表す。
【０００６】
【図１】本開示の一実施形態によるネットワーク環境のプロファイリングイベントに基づいたエクスプロイト検出のための通信システムの簡略ブロック図である。
【０００７】
【図２】本開示の一実施形態によるネットワーク環境のプロファイリングイベントに基づいたエクスプロイト検出のための通信システムの一部の簡略ブロック図である。
【０００８】
【図３】一実施形態による通信システムと関連し得る潜在的なオペレーションを示す簡略フローチャートである。
【０００９】
【図４】一実施形態による通信システムと関連し得る潜在的なオペレーションを示す簡略フローチャートである。
【００１０】
【図５】一実施形態によるポイントツーポイント構成に配置された例示的なコンピューティングシステムを図示するブロック図である。
【００１１】
【図６】本開示の例示的なＡＲＭエコシステム・システムオンチップ（ＳＯＣ）と関連する簡略ブロック図である。
【００１２】
【図７】一実施形態による例示的なプロセッサコアを示すブロック図である。
【００１３】
図面の図は、それらの寸法が本開示の範囲を逸脱することなく大幅に変更され得るので、必ずしも縮尺通りに描かれていない。
【発明を実施するための形態】
【００１４】
［例示的な実施形態］
図１は、本開示の一実施形態によるネットワーク環境のプロファイリングイベントに基づいたエクスプロイト検出のための通信システム１００の簡略ブロック図である。通信システム１００は、電子デバイス１０２、クラウドサービス１０４およびサーバ１０６を含み得る。電子デバイス１０２は、プロセッサ１１０、オペレーティングシステム（ＯＳ）１１２、１または複数のアプリケーション１１４ａおよび１１４ｂ、セキュリティモジュール１１６ならびにメモリ１１８ａを含み得る。ＯＳ１１２は、イベントトレースモジュール１２０を含み得る。イベントトレースモジュール１２０は、命令ポインタキュー１２２を含み得る。セキュリティモジュール１１６は、命令ポインタ分析モジュール１２４およびアプリケーションモジュールテーブル１２６を含み得る。メモリ１１８ａは、１または複数のアプリケーション領域１２８ａおよび１２８ｂ、オーファンアプリケーション領域１３０、ホワイトリスト１３２、ならびにブラックリスト１３４を含み得る。クラウドサービス１０４は、メモリ１１８ｂおよびネットワークセキュリティモジュール１３８ａを含み得る。メモリ１１８ｂは、ホワイトリスト１３２およびブラックリスト１３４を含み得る。ネットワークセキュリティモジュール１３８ａは、アプリケーションモジュールテーブル１２６およびネットワーク命令ポインタ分析モジュール１４０を含み得る。サーバ１０６は、メモリ１１８ｃおよびネットワークセキュリティモジュール１３８ｂを含み得る。メモリ１１８ｃは、ホワイトリスト１３２およびブラックリスト１３４を含み得る。ネットワークセキュリティモジュール１３８ｂは、アプリケーションモジュールテーブル１２６およびネットワーク命令ポインタ分析モジュール１４０を含み得る。電子デバイス１０２、クラウドサービス１０４、およびサーバ１０６は、ネットワーク１０８を用いて通信し得る。マルウェア１３６は、ネットワーク１０８を用いてまたは直接接続を通じて（例えば、ユニバーサルシリアルバス（ＵＳＢ）タイプの接続を通じて）電子デバイス１０２にそれ自体を紹介するよう、試み得る。
【００１５】
例示的な実施形態において、通信システム１００は、ＯＳ（例えば、ＯＳ１１２）を有するシステムにおいて、アプリケーション（例えば、アプリケーション１１４ａ）を、イベントトレースモジュール１２０を用いてアプリケーションのためにイベントトレースを実行することと、命令ポインタ分析モジュール１２４を用いてイベントトレースからのそれぞれの命令ポインタを分析することと、命令ポインタがメモリのオーファンページ（例えば、オーファンアプリケーション領域１３０）を示すかどうかを判断することとを実行するよう構成され得る。オーファンページは、アプリケーションと関連付けられていないコードの領域、未確認のコードの領域、またはアプリケーションと関連付けられていない異常コードであり得る。さらに、イベントトレースは、ＯＳの一部である埋め込みアプリケーションまたはフィーチャであり得る。アプリケーションモジュールテーブル１２６は、処理に関連付けられる、モジュールのリストまたはメモリ領域を含み得る。例えば、アプリケーション１１４ａは、アプリケーション領域１２８ａに関連付けられ得、アプリケーション１１４ｂは、アプリケーション領域１２８ｂに関連付けられ得る。
【００１６】
図１の要素は、任意の適切な接続（有線または無線）を採用する１または複数のインタフェースを通じて互いに結合されてよく、ネットワーク（例えば、ネットワーク１０８）通信に対する実行可能な経路を提供する。さらに、特定の構成の必要性に基づき、図１のこれらの要素のうち任意の１または複数のものは、組み合わせられ得るか、またはアーキテクチャから除去され得る。通信システム１００は、ネットワークにおけるパケットの送信または受信用の伝送制御プロトコル／インターネットプロトコル（ＴＣＰ／ＩＰ）通信が可能な構成を含み得る。通信システム１００はまた、適切な場合および特定の必要性に基づいて、ユーザデータグラムプロトコル／ＩＰ（ＵＤＰ／ＩＰ）とまたは任意の他の適切なプロトコルと関連させて動作し得る。
【００１７】
通信システム１００の特定の例示的技術を説明する目的で、ネットワーク環境をトラバースしている場合がある通信を理解することが重要である。以下の基礎的な情報は、本開示が適切に説明され得る上での基礎として見なされ得る。
【００１８】
インターネットへのアクセスの増加がマルウェアへの勢力を拡大させるという意図せぬ影響を与える。本明細書中に使用される用語であるマルウェアは、所有者の説明の上での合意なしに、ソフトウェアプログラムに対する動機づけに関わらず、所有者のデバイス、システム、ネットワークまたはデータに対してソフトウェアプログラムによって引き起こされる結果に関わらず、コンピュータシステムに潜入するか、これを修正、変更、破損または損傷するように設計された任意のタイプのソフトウェアプログラム、アプリケーション、モジュール、コードなどを含む。
【００１９】
あるマルウェアは、ドキュメントビューワ（例えば、マイクロソフト（登録商標）ワード（登録商標）、アドビ（登録商標）ビューワ、ブラウザなど）内でエクスプロイトを利用し得る。例えば、企業で、実際にターゲットとなるゼロデイ攻撃になり得るワード（登録商標）またはＰＤＦ（登録商標）にフォーマットされたドキュメントを取得し得る。企業において、電子デバイスがドキュメントを開く場合または読み込む場合、マルウェアは、電子デバイスに不正アクセスし得る。別の例では、電子デバイスは、ウェブサイトに訪れるのに用いられ得て、マルウェアは、ウェブサイトからのエクスプロイトを用いて電子デバイス上に知らないうちにインストールされ得る。
【００２０】
現在の問題に対する解決策は、多くの場合侵襲的であり、性能または互換性の懸念を有する。例えば、悪意あるアプリケーションを検出する、サンドボックスまたはエミュレーションに基づいた解決策は、制御された環境下で、サードパーティソフトウェアを実行しようとする。これは、電子デバイスとの深刻な互換性の問題を有し得、比較的多くのリソースの量を消費することで、電子デバイスの性能を大幅に低下させ得、電子デバイス上に配置することを不可能にする解決策の性能障害を生成し得る。他の解決策は、性能または互換性の懸念を有し得、または既知の脆弱性の具体的な知識に基づいている。さらに、様々な検出プログラムが、マルウェアの存在を検出しようと試みるべく使用され得る。いくつかの例では、複数の検出プログラムは、検証されているソフトウェアプログラムの署名を検出することに頼り、プログラムがマルウェアであるか、または、これを含むかどうか判断している。いくつかの例では、検出プログラムは、ソフトウェアプログラムがマルウェアであるかどうかを判断するトレース方法を使用する。しかしながら、マルウェアの作者は、トレース方法による検出を回避すべく、マルウェアプログラムの一部を頻繁に変更または改変する。必要であるのは、制御された環境下またはＯＳ制御フローのインターセプションを使用下で、ターゲットプログラムまたは疑わしいマルウェアを実行させることを必要としない、マルウェア検出システムおよび方法である。システムおよび方法がドキュメントビューワ、ブラウザなどで処理における一般的に任意のコード実行を特定するよう十分サポートされたＯＳのフィーチャ（例えば、マイクロソフトウィンドウズ（登録商標）のフィーチャ）を使用し得る場合、有益となるであろう。
【００２１】
プロファイリングイベントに基づいたエクスプロイト検出のための通信システムは、図１にて概説されているように、これらの問題（およびその他）を解消し得る。図１の通信システム１００において、システムは、所与のターゲット処理下で実行されているメモリ領域を特定するようＯＳのイベントトレースフィーチャを使用するよう構成され得る。特定されたメモリ領域に基づいて、通信システム１００は、ターゲットアプリケーションにおいて、エクスプロイトが行われるかどうかチェックし、ターゲットアプリケーションが未確認である領域からのコードを実行するかどうかチェックし、またはページ内で実行しているコードが異常であるかどうかチェックし、判断するよう構成され得る。具体的な例示的な実施例において、ウィンドウズ（ＥＴＷ）のためのイベントトレースは、ＥＴＷプロファイリングイベントを含むＮＴカーネルに関連するイベントをＥＴＷが提供する場合のマイクロソフトウィンドウズ（登録商標）のフィーチャである。ＥＴＷプロファイリングイベントは、与えられるいかなる処理に対しても、典型的に命令ポインタ（ＩＰ）を含む。この情報は、所与のターゲット処理下で、（例えば、アプリケーションモジュールテーブル１２６は、ターゲット処理に関連付けられるメモリ領域を特定するよう用いられ得る）、且つターゲットアプリケーションが未確認である領域からのコードを実行する場合、またはページ内で実行するコードが異常である場合に実行されるメモリ領域を特定するよう使用され得る。
【００２２】
ＯＳのイベントトレースのフィーチャを用いることによって、ターゲットアプリケーションの分析は、ターゲットとされているアプリケーションに対して完全に透過的となり得、電子デバイスとの互換性は、懸念することではない。プロファイリングイベントに基づいたエクスプロイト検出は、非同期的に動作され得、ターゲットアプリケーションをブロックしなく、または中断しないで、知覚される性能オーバーヘッドは、生成されない。また、ＯＳが必要なすべての機能をイベントトレースに提供するので、ターゲットとされているアプリケーションのためのドライバのインストール、ＤＬＬコンポーネント、またはプラグインは、必要ではなく、処理が変更することなく、ＯＳのプロセスへのインジェクトまたはフックはない。
【００２３】
具体例において、マイクロソフトウィンドウズ（登録商標）によって提供されるサンプルプロファイルイベントは、与えられたスレッドにおいて、命令ポインタ（ＩＰ）についての情報を含む。これは、トラブルシューティングアプリケーションおよびデバッギングアプリケーションにおいて、マイクロソフト（登録商標）がウィンドウズ（登録商標）ＯＳ内から助力することを可能にした情報である。この情報は、高効率なＥＴＷフレームワークを用いる任意のアプリケーション（ユーザモードであっても）によって消費されるよう利用可能である。これらのイベントは、非同期的に実施され、それで、ターゲットアプリケーションは、ブロックされることなく実行を継続する。さらに、処理が透過的であることから、ターゲットアプリケーションは、処理に気づいてさえおらず、いかなる互換性の問題もほとんどない。
【００２４】
イベントトレースからのＩＰアドレス情報は、任意のコード実行がアプリケーションにおいて実行されるかどうかの判断に用いられ得る。例えば、イベントトレースを受信した後、イベントトレースは、まずプロセスと関連付けられ得て、システムは、プロセスがモニタリングされているプロセスかどうか（例えば、攻撃に関して、またはプロセスがマルウェアと関連付けられているかどうか）を判断し得る。プロセスがモニタリングされている処理である場合、イベント内で報告されたＩＰアドレスは、プロセスに関連付けられたアプリケーションモジュールテーブル１２６内の、ロードされたモジュールまたはメモリ領域に対し、なんらかの実行がロードされたモジュールまたはプロセスに関連付けられるメモリ領域の外で生じたかどうかを判断するチェックがされ得る。実行がロードされたモジュールまたはプロセスに関連付けられるメモリ領域の外で生じた場合、その後実行がオーファン領域（例えば、オーファンアプリケーション領域１３０）内で生じたとみなされる。
【００２５】
いくつかのアプリケーションは、仮想マシンまたはサンドボックスに基づいた実行（例えば、アドビ（登録商標）リーダ１１）のためにヒープ上にメモリを割り当てて、コードをそのヒープから実行することによって、オーファンページまたは領域を生成する。これを検出すべく、汎用シェルコード検出チェックが、意図して生成されたオーファンページまたは領域のために追加され得る。意図して生成されたオーファンページまたは領域を検出する別の手法は、意図して生成されたオーファンページ内で、サンドボックスに関連するコードに良性のオーファンページを特定するホワイトリストに登録してその後何らかの予期せぬコード実行にフラグを立てる。
【００２６】
図１のインフラストラクチャを参照すると、例示的な実施形態による通信システム１００が示されている。概して、通信システム１００は、ネットワークの任意のタイプまたはトポロジーにおいて、実装され得る。ネットワーク１０８は、通信システム１００を通じて伝播する情報パケットを受信および送信するための、相互接続された通信経路の一連のポイントまたはノードを表す。ネットワーク１０８は、ノード間の通信インタフェースを提供し、有線および／または無線通信を含み、任意のローカルエリアネットワーク（ＬＡＮ）、仮想ローカルエリアネットワーク（ＶＬＡＮ）、ワイドエリアネットワーク（ＷＡＮ）、無線ローカルエリアネットワーク（ＷＬＡＮ）、メトロポリタンエリアネットワーク（ＭＡＮ）、イントラネット、エクストラネット、仮想プライベートネットワーク（ＶＰＮ）、およびネットワーク環境における通信を容易にする任意の他の適切なアーキテクチャもしくはシステム、またはそれらの任意の適切な組み合わせとして、構成され得る。
【００２７】
通信システム１００において、パケット、フレーム、信号、データなどを含むネットワークトラフィックが、任意の適切な通信メッセージングプロトコルに従って送信および受信され得る。適切な通信メッセージングプロトコルは、開放型システム間相互接続（ＯＳＩ）モデルなどの多層方式、または任意のその派生もしくは変形例（例えば、伝送制御プロトコル／インターネットプロトコル（ＴＣＰ／ＩＰ）、ユーザデータグラムプロトコル／ＩＰ（ＵＤＰ／ＩＰ））を含み得る。さらに、セルラーネットワークを通じた無線信号通信も、通信システム１００に提供され得る。適切なインタフェースおよびインフラストラクチャが、セルラーネットワークとの通信を可能とするよう提供され得る。
【００２８】
本明細書に使用される「パケット」なる用語は、パケットスイッチネットワーク上のソースノードおよび宛先ノード間でルーティングされ得るデータ単位を指す。パケットは、ソースネットワークアドレスおよび宛先ネットワークアドレスを含む。これらのネットワークアドレスは、ＴＣＰ／ＩＰメッセージングプロトコルにおけるインターネットプロトコル（ＩＰ）アドレスであり得る。本明細書にて用いられる「データ」なる用語は、任意のタイプのバイナリ、数値、音声、映像、テキスト、またはスクリプトデータを指すか、任意のタイプのソースもしくはオブジェクトコードを指すか、または電子デバイスおよび／またはネットワークにおいて、１つのポイントから別のポイントへ通信され得る任意の適切なフォーマットでの任意の他の適切な情報を指す。さらに、メッセージ、要求、応答、クエリは、ネットワークトラフィックの形態であり、従って、パケット、フレーム、信号、データなどを含み得る。
【００２９】
例示的な実装において、電子デバイス１０２、クラウドサービス１０４、およびサーバ１０６はネットワーク要素であり、これらは、ネットワークアプライアンス、サーバ、ルータ、スイッチ、ゲートウェイ、ブリッジ、ロードバランサ、プロセッサ、モジュール、またはネットワーク環境で情報を交換するべく動作可能な任意の他の適切なデバイス、コンポーネント、要素もしくはオブジェクトを含むことが意図される。ネットワーク要素は、それらの動作を容易にする、任意の適切なハードウェア、ソフトウェア、コンポーネント、モジュール、またはオブジェクトを含み得、ならびにネットワーク環境において、データまたは情報を受信、送信、および／または別の方法で通信するための適切なインタフェースを含み得る。これは、データまたは情報の効果的な交換を可能にする適切なアルゴリズム、および、通信プロトコルを包含し得る。
【００３０】
通信システム１００に関連する内部構造に関して、電子デバイス１０２、クラウドサービス１０４、およびサーバ１０６のそれぞれは、本明細書で概説される複数の動作で用いられる情報を格納するためのメモリ要素を含み得る。電子デバイス１０２、クラウドサービス１０４、およびサーバ１０６のそれぞれは、任意の適切な記憶素子（例えば、ランダムアクセスメモリ（ＲＡＭ）、リードオンリメモリ（ＲＯＭ）、消去可能プログラマブルＲＯＭ（ＥＰＲＯＭ）、電気的消去可能プログラマブルＲＯＭ（ＥＥＰＲＯＭ）、特定用途向け集積回路（ＡＳＩＣ）など）、ソフトウェア、ハードウェア、ファームウェアまたは、必要に応じ適切で且つ特定のニーズに基づき、任意の他の適切なコンポーネント、デバイス、要素、またはオブジェクトに、情報を保持し得る。本明細書に述べられるメモリアイテムのいずれも、「メモリ要素」という広義の用語に包含されると解釈されるべきである。さらに、通信システム１００において使用、追跡、送信、または、受信されている情報は、任意のデータベース、レジスタ、キュー、テーブル、キャッシュ、制御リスト、または、他のストレージ構造内に提供され得、それらの全てが、任意の適切な時間枠で参照し得る。そのようなストレージの選択肢のいずれもがまた、本明細書に使用される「メモリ要素」という広義の用語内に含まれ得る。
【００３１】
特定の例示的な実装において、本明細書に概説されている機能は、１または複数の有形媒体内に符号化されているロジック（例えば、ＡＳＩＣ内に提供される組み込まれたロジック、デジタル信号プロセッサ（ＤＳＰ）命令、プロセッサによって実行される（潜在的に、オブジェクトコードおよびソースコードを含む）ソフトウェア、または、他の同様の機械など）によって実装され得、それらは、非一時的なコンピュータ可読媒体を含み得る。これらの例のいくつかにおいて、メモリ要素は、本明細書に説明されている動作に使用されるデータを格納し得る。これは、本明細書に説明されているアクティビティを遂行すべく実行されるソフトウェア、ロジック、コード、またはプロセッサ命令を格納できるメモリ要素を含む。
【００３２】
例示的な実装において、本明細書に概説された動作を実現すべく、または促進すべく、電子デバイス１０２、クラウドサービス１０４、およびサーバ１０６などの通信システム１００のネットワーク要素は、ソフトウェアモジュール（例えば、セキュリティモジュール１１６、イベントトレースモジュール１２０、命令ポインタ分析モジュール１２４、ネットワークセキュリティモジュール１３８ａおよび１３８ｂ、ならびにネットワーク命令ポインタモジュール１４０）を含み得る。これらのモジュールは、特定の構成および／またはプロビジョニングの必要性に基づき得る、任意の適切な手法で適切に組み合わせられ得る。例示的な実施形態において、そのような複数のオペレーションは、ハードウェアによって実行され、これらの要素の外部に実装され、または意図される機能を実現するよう何らかの他のネットワークデバイスに含まれ得る。さらに、モジュールは、ソフトウェア、ハードウェア、ファームウェア、またはそれらの任意の適切な組み合わせとして実装し得る。これらの要素は、本明細書に概説されているような動作を実現すべく、他のネットワーク要素と連携できるソフトウェア（または、レシプロケーティングソフトウェア）も含み得る。
【００３３】
さらに、電子デバイス１０２、クラウドサービス１０４、およびサーバ１０６のそれぞれは、本明細書で説明されるようなアクティビティを行うべく、ソフトウェアまたはアルゴリズムを実行し得るプロセッサを含み得る。プロセッサは、本明細書に詳述されたオペレーションを実現すべく、データに関連する任意のタイプの命令を実行し得る。１つの例において、プロセッサは 、要素または物品（例えば、データ）を１つの状態もしくは物から別の状態もしくは物に変換し得る。別の例において、本明細書に概説するアクティビティは、固定ロジックまたはプログラマブルロジック（例えば、プロセッサによって実行されるソフトウェア／コンピュータ命令）で実装され得る。本明細書に特定される要素は、なんらかのタイプのプログラマブルプロセッサ、プログラマブルデジタルロジック（例えば、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、ＥＰＲＯＭ、ＥＥＰＲＯＭ）またはデジタルロジック、ソフトウェア、コード、電子命令もしくはそれらの任意の適切な組み合わせを含むＡＳＩＣであり得る。本明細書に説明される任意の潜在的な処理要素、モジュールおよび機械は、『プロセッサ』という広義の用語に包含されるものとして解釈されるべきである。
【００３４】
電子デバイス１０２は、ネットワーク要素であり得、例えば、デスクトップコンピュータ、ラップトップコンピュータ、モバイルデバイス、携帯情報端末、スマートフォン、タブレット、または他の同様なデバイスを含む。クラウドサービス１０４は、電子デバイス１０２にクラウドサービスを提供するよう構成される。クラウドサービスは概して、インターネットなどのネットワークを通じてサービスとして供給されるコンピューティングリソースの使用として定義され得る。典型的に、計算、ストレージおよびネットワークリソースは、クラウドインフラストラクチャ内に提供され、ローカルネットワークからクラウドネットワークにワークロードを効果的にシフトする。サーバ１０６は、サーバまたは仮想サーバなどのネットワーク要素であり得、なんらかのネットワーク（例えば、ネットワーク１０８）を介して通信システム１００内で通信を開始したいクライアント、顧客、エンドポイントまたはエンドユーザと関連し得る。  「サーバ」なる用語は、通信システム１００内部のクライアントの代わりに、クライアントの要求を果たす、および／またはある計算タスクを実行するよう使用されるデバイスを包含する。セキュリティモジュール１１６は、電子デバイス１０２に配置されるように図１に表わされるが、これは説明のためのみにすぎない。セキュリティモジュール１１６は、任意の適切な構成にて組み合わせまたは分離することができる。さらにまた、セキュリティモジュール１１６は、クラウドサービス１０４、またはサーバ１０６などの電子デバイス１０２によってアクセス可能な別のネットワークと一体化されるか、これに分散することができる。
【００３５】
図２を参照すると、図２は、本開示の一実施形態によるプロファイリングイベントに基づいたエクスプロイト検出のための、通信システム１００の部分的な簡略ブロック図である。命令ポインタ分析モジュール１２４は、命令ポインタキュー１２２内の、それぞれの命令ポインタ（例えば、命令ポインタ１４２ａ〜１４２ｄ）を分析し、メモリ１１８ａ内の、またはオーファンアプリケーション領域１３０内の、ポインタがアプリケーション領域（例えば、アプリケーション領域１２８ａ）を示すかどうか判断するよう構成され得る。アプリケーション（例えば、アプリケーション１１４ａ）に関連付けられる命令ポインタがアプリケーションに関連付けられるアプリケーション領域に示した場合、その後アプリケーションは、悪意のあるものとしてフラグされない。アプリケーションに関連付けられる命令ポインタがアプリケーションに関連付けられていないアプリケーション（すなわち、オーファンアプリケーション領域１３０）を示した場合、その後アプリケーションは、悪意のあるものとしてフラグまたはマークされる。例えば、命令ポインタ１４２ａ〜１４２ｄは、それぞれアプリケーションと関連付けられ得る。命令ポインタ１４２ａ、１４２ｂおよび１４２ｄは、アプリケーションに関連付けられるアプリケーション領域１２８ａにおいて、それぞれモジュール１４４ａ、１４４ｂおよび１４４ｃに示す。しかしながら、命令ポインタ１４２ｃは、アプリケーションと関連付けられていないオーファンアプリケーション領域１３０内の悪意のあるアクティビティの指標となり得る、オーファンページ１４６を示す。
【００３６】
命令ポインタ１３８ｃは、オーファンページ１４２に示すので、アプリケーションは、悪意のあるものとしてフラグまたはマークされ、セキュリティモジュール１１６は、アプリケーションのさらなる分析をし得る。例えば、セキュリティモジュール１１６は、ホワイトリスト１３２およびブラックリスト１３４内のエントリとアプリケーションを比較するよう構成され得る。アプリケーションがホワイトリスト１３２におけるエントリと一致する場合、アプリケーションは、信頼できるものと判断され得る。アプリケーションがブラックリスト１３４におけるエントリと一致する場合、アプリケーションは、悪意のあるものと判断され得る。一例において、アプリケーションに関連するデータは、より集中的な分析のために、ネットワークセキュリティモジュール１３８ａまたは１３８ｂに送信し得る。
【００３７】
図３を参照すると、図３は、一実施形態によるプロファイリングイベントに基づいたエクスプロイト検出と関連し得るフロー３００の複数の可能な動作を図示する例示的なフローチャートである。実施形態において、フロー３００の１または複数の動作は、セキュリティモジュール１１６、イベントトレースモジュール１２０、および命令ポインタ分析モジュール１２４によって実行され得る。３０２では、アプリケーションのためのイベントトレースが実行される。３０４では、イベントトレースからのそれぞれの命令ポインタが分析される。３０６では、命令ポインタがオーファン領域を示しているかどうかをシステムが判断する。命令ポインタがオーファン領域を示している場合、３０８に示されるように、その後アラートがトリガされる。アラートがアプリケーションを悪意あるものとしてフラグを立て、アプリケーションの実行を停止し、または何らか他の軽減動作をし得る。
【００３８】
命令ポインタがオーファン領域を示していない場合、その後３１０に示されるように、システムは、命令ポインタがアプリケーションに関連付けられる領域を示しているかどうかを判断する。ポインタがアプリケーションに関連付けられる領域を示していない場合、その後３０８に示されるように、アラートがトリガされる。命令ポインタがアプリケーションに関連付けられる領域を示している場合、その後動作はとられない。例えば、アプリケーションが悪意のあるものとみなされず、軽減動作はとられない。
【００３９】
図４を参照すると、図４は、一実施形態によるプロファイリングイベントに基づいたエクスプロイト検出と関連し得るフロー４００の複数の可能なオペレーションを図示する例示的なフローチャートである。実施形態において、フロー４００の１または複数の動作は、セキュリティモジュール１１６、イベントトレースモジュール１２０、および命令ポインタ分析モジュール１２４によって実行され得る。４０２では、プロファイリングイベントが生じる。プロファイリングイベントは、処理またはアプリケーション（例えば、アプリケーション１１４ａ）のためのものであり得る。４０４で、システムは、処理がモニタリングされる必要があるかどうかを判断する。例えば、処理は、ホワイトリスト１３２内の、エントリを一致させ得、且つモニタリングされる必要のない信頼できる処理の一部もしくはアプリケーションであり得、またはブラックリスト１３４内の、エントリを一致させ得、且つ信頼できない処理の一部もしくはモニタリングされる必要のあるアプリケーションであり得る。処理がモニタリングされる必要のない場合、その後４０６に示されるように、プロファイリングイベントが破棄される。処理がモニタリングされる必要のある場合、その後４０８に示されるように、プロファイリングイベントにおいて、それぞれの命令ポインタが分析される。
【００４０】
４１０では、システムは、命令ポインタがオーファンページを示したかどうか、判断する。命令ポインタがオーファンページを示した場合、その後４１８に示されるように、メモリエリアは、実行不可能としてマークされる。４１２では、処理が悪意のあるものとしてフラグされる。命令ポインタがオーファンページを示さない場合、その後４１４に示されるように、それぞれの命令ポインタに関連付けられるメモリエリアが分析される。
【００４１】
４１６では、システムは、メモリ（それぞれの命令ポインタに関連付けられる）が異常またはエクスプロイトコードを含むかどうかを判断する。メモリが異常またはエクスプロイトコードを含まない場合、その後４０６に示されるように、プロファイリングイベントが破棄される。メモリエリアが異常またはエクスプロイトコードを含む場合、その後４１８に示されるように、メモリエリアが実行不可能としてマークされる。４１２では、処理が悪意のあるものとしてフラグされる。 処理が悪意のあるものとしてフラグされた場合、その後処理は、終了され得、さらなる分析または何らか他の軽減動作のために、ネットワークセキュリティモジュール１３８ａまたは１３８ｂに送信され得る。
【００４２】
図５は、一実施形態によるポイントツーポイント（ＰｔＰ）構成で配置されるコンピューティングシステム５００を示す。特に、図５は、プロセッサ、メモリ、および入力／出力デバイスが複数のポイントツーポイント・インタフェースにより相互接続された場合のシステムを示す。概して、通信システム１００のネットワーク要素の１または複数は、コンピューティングシステム５００と同じまたは同様な方法で構成され得る。
【００４３】
図５に示されるように、明確性のために、システム５００は複数のプロセッサを含み得、それらの２つのプロセッサ５７０および５８０のみが示される。２つのプロセッサ５７０および５８０が示されるが、システム５００の実施形態はまた、そのようなプロセッサの１つのみを含み得ることが、理解されるべきである。  プロセッサ５７０および５８０はそれぞれ、プログラムの複数のスレッドを実行すべく、コアのセット（すなわち、プロセッサコア５７４Ａおよび５７４Ｂと、プロセッサコア５８４Ａおよび５８４Ｂと）を含み得る。コアは、図１〜図４を参照して上に述べられものと同様にして命令コードを実行するように構成され得る。それぞれプロセッサ５７０、５８０は、少なくとも１つの共有キャッシュ５７１、５８１を含み得る。共有キャッシュ５７１、５８１は、プロセッサコア５７４および５８４などの、プロセッサ５７０、５８０の１または複数のコンポーネントによって利用されるデータ（例えば、命令）を格納し得る。
【００４４】
また、プロセッサ５７０および５８０のそれぞれは、メモリ要素５３２および５３４と通信すべく、統合メモリコントローラロジック（ＭＣ）５７２および５８２を含み得る。メモリ要素５３２および／または５３４は、プロセッサ５７０および５８０によって使用される様々なデータを格納し得る。代替的な実施形態において、メモリコントローラロジック５７２および５８２は、プロセッサ５７０および５８０とは独立した別個のロジックであり得る。
【００４５】
プロセッサ５７０および５８０は、任意のタイプのプロセッサであり得、それぞれ、ポイントツーポイントインタフェース回路５７８および５８８を用いて、ポイントツーポイント（ＰｔＰ）インタフェース５５０を介してデータを交換し得る。プロセッサ５７０および５８０のそれぞれは、ポイントツーポイントインタフェース回路５７６、５８６、５９４および５９８を用いて、個々のポイントツーポイントインタフェース５５２および５５４を介して、チップセット５９０とデータを交換し得る。チップセット５９０も、ＰｔＰインタフェース回路であり得るインタフェース回路５９２を用いて、高性能グラフィックスインタフェース５３９を介して、高性能グラフィックス回路５３８とデータを交換し得る。代替的な実施形態において、図５に示される任意のまたは全てのＰｔＰリンクは、ＰｔＰリンクとしてではなくマルチドロップバスとして実装され得る。
【００４６】
チップセット５９０は、インタフェース回路５９６を介して、バス５２０と通信を行ない得る。バス５２０は、バスブリッジ５１８およびＩ／Ｏデバイス５１６などの、それを通じて通信する１または複数のデバイスを有し得る。バス５１０を介して、バスブリッジ５１８は、キーボード／マウス５１２（または、例えばタッチスクリーン、トラックボールなどの他の入力デバイス）、通信デバイス５２６（モデム、ネットワークインタフェースデバイス、またはコンピュータネットワーク５６０を通じて通信し得る他のタイプの通信デバイスなど）、オーディオＩ／Ｏデバイス５１４、および／またはデータストレージデバイス５２８などの他のデバイスと通信し得る。データストレージデバイス５２８はコード５３０を格納し得、これはプロセッサ５７０および／または５８０により実行され得る。  代替的な実施形態において、バスアーキテクチャの任意の部分は、１または複数のＰｔＰリンクで実装され得る。
【００４７】
図５に図示されるコンピュータシステムは、本明細書に述べられる様々な実施形態を実装すべく利用され得るコンピューティングシステムの一実施形態の概略図である。図５に図示されるシステムの様々なコンポーネントは、システムオンチップ（ＳｏＣ）アーキテクチャで、または任意の他の適切な構成で組み合わせられ得ることが理解されよう。 例えば、本明細書に開示される実施形態は、例えば、スマート携帯電話、タブレットコンピュータ、携帯情報端末、携帯ゲームデバイスなどのモバイルデバイスを含むシステムへ組み込まれ得る。これらのモバイルデバイスは、少なくともいくつかの実施形態においてＳｏＣアーキテクチャを備え得ることが理解されよう。
【００４８】
図６を参照すると、図６は本開示の例示的なＡＲＭエコシステムＳＯＣ６００に関連する簡略ブロック図である。本開示の少なくとも１つの例示的な実装は、本明細書において論じられているプロファイリングイベントに基づいたエクスプロイト検出のフィーチャとＡＲＭコンポーネントを含み得る。例えば、図６の例は任意のＡＲＭコア（例えば、Ａ−９、Ａ−１５など）に関連付けられ得る。さらに、アーキテクチャは、任意のタイプのタブレット、スマートフォン（Ａｎｄｒｏｉｄ（登録商標）フォン、ｉＰｈｏｎｅ（登録商標）を含む）、ｉＰａｄ（登録商標）、Ｇｏｏｇｌｅ  Ｎｅｘｕｓ（登録商標）、Ｍｉｃｒｏｓｏｆｔ  Ｓｕｒｆａｃｅ（登録商標）、パーソナルコンピュータ、サーバ、ビデオ処理コンポーネント、ラップトップコンピュータ（任意のタイプのノートブックを含む）、Ｕｌｔｒａｂｏｏｋ（登録商標）システム、任意のタイプのタッチ式入力デバイスなどの一部であり得る。
【００４９】
図６のこの例において、ＡＲＭエコシステムＳＯＣ６００は、液晶ディスプレイ（ＬＣＤ）と結合するモバイル業界プロセッサインタフェース（ＭＩＰＩ）／高精細度マルチメディアインタフェース（ＨＤＭＩ（登録商標））リンクに関連付けられ得る、複数のコア６０６〜６０７、Ｌ２キャッシュコントロール６０８、バスインタフェースユニット６０９、Ｌ２キャッシュ６１０、グラフィックスプロセッシングユニット（ＧＰＵ）６１５、相互接続６０２、ビデオコーデック６２０、およびＬＣＤ  Ｉ／Ｆ６２５を含み得る。
【００５０】
ＡＲＭエコシステムＳＯＣ６００はまた、加入者識別モジュール（ＳＩＭ）Ｉ／Ｆ６３０、ブートリードオンリメモリ（ＲＯＭ）６３５、シンクロナス・ダイナミック・ランダムアクセスメモリ（ＳＤＲＡＭ）コントローラ６４０、フラッシュコントローラ６４５、シリアル・ペリフェラル・インタフェース（ＳＰＩ）マスタ６５０、適切な電力コントロール６５５、ダイナミックＲＡＭ（ＤＲＡＭ）６６０、およびフラッシュ６６５を含み得る。さらに、１または複数の例示的な実施形態は、Ｂｌｕｅｔｏｏｔｈ（登録商標）６７０、３Ｇモデム６７５、グローバルポジショニングシステム（ＧＰＳ）６８０、および８０２．１１Ｗｉ−Ｆｉ（登録商標）６８５の実例などの１または複数の通信機能、インタフェース、およびフィーチャを含む。
【００５１】
動作において、図６の例は、比較的低消費電力と同時に処理機能を提供でき、様々なタイプのコンピューティング（例えば、モバイルコンピューティング、ハイエンドデジタルホーム、サーバ、無線インフラストラクチャなど）を可能とする。さらに、このようなアーキテクチャは、任意の数のソフトウェアアプリケーション（例えば、Ａｎｄｒｏｉｄ（登録商標）、Ａｄｏｂｅ（登録商標）Ｆｌａｓｈ（登録商標）Ｐｌａｙｅｒ、Ｊａｖａ（登録商標）Ｐｌａｔｆｏｒｍ  Ｓｔａｎｄａｒｄ  Ｅｄｉｔｉｏｎ（Ｊａｖａ（登録商標）ＳＥ）、Ｊａｖａ（登録商標）ＦＸ、Ｌｉｎｕｘ（登録商標）、Ｍｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ（登録商標）Ｅｍｂｅｄｄｅｄ、ＳｙｍｂｉａｎおよびＵｂｕｎｔｕなど）を可能にし得る。少なくとも１つの例示的な実施形態において、コアプロセッサは、接続された低レイテンシレベル２キャッシュを有するアウトオブオーダスーパースカラパイプラインを実装し得る。
【００５２】
図７は、一実施形態によるプロセッサコア７００を示す。プロセッサコア７００は、マイクロプロセッサ、埋め込みプロセッサ、デジタル信号プロセッサ（ＤＳＰ）、ネットワークプロセッサ、またはコードを実行する他のデバイスなどの、任意のタイプのプロセッサ用のコアでもあり得る。図７には、単一のプロセッサコア７００のみが示されるが、プロセッサは図７に示されるプロセッサコア７００を２つ以上代替的に含み得る。例えば、プロセッサコア７００は、図５のプロセッサ５７０および５８０を参照して示され、説明されている、プロセッサコア５７４ａ、５７４ｂ、５８４ａおよび５８４ｂの１つの例示的な実施形態を表す。プロセッサコア７００は、シングルスレッドコアであり得、または少なくとも１つの実施形態では、プロセッサコア７００は、１つのコアにつき２つ以上のハードウェアスレッドコンテキスト（または「論理プロセッサ」）を含み得るという点で、マルチスレッドコアであり得る。
【００５３】
図７はまた、一実施形態によるプロセッサコア７００に結合されるメモリ７０２を示す。メモリ７０２は、当業者に既知の、またはさもなければ利用可能な多種多様なメモリ（メモリ階層の様々な層を含む）であり得る。メモリ７０２は、プロセッサコア７００により実行される、１または複数の命令であり得るコード７０４を含み得る。プロセッサコア７００は、コード７０４によって示されるプログラムの命令シーケンスに従い得る。それぞれ命令はフロントエンドロジック７０６に入り、１または複数のデコーダ７０８によって処理される。デコーダは、その出力として、所定のフォーマットの固定幅マイクロオペレーションなどのマイクロオペレーションを生成し得、または元のコード命令を反映する他の命令、マイクロ命令、もしくは制御信号を生成し得る。フロントエンドロジック７０６はまた、レジスタリネーミングロジック７１０およびスケジューリングロジック７１２を含み、これらは概してリソースを割り振り、実行のための命令に対応する動作をキューに登録する。
【００５４】
プロセッサコア７００はまた、実行ユニットの一式７１６−１から７１６−Ｎを通して有する実行ロジック７１４を含み得る。いくつかの実施形態は、特定の機能または機能のセット専用の複数の実行ユニットを含み得る。他の実施形態は、１つの実行ユニットのみ、または特定の機能を実行し得る１つの実行ユニットを含み得る。実行ロジック７１４は、コード命令によって特定される動作を実行する。
【００５５】
コード命令によって特定された動作の実行が完了した後、バックエンドロジック７１８は、コード７０４の命令をリタイアし得る。１つの実施形態において、プロセッサコア７００は、アウトオブオーダ実行を可能にするが、命令のインオーダリタイアメントを必要とする。リタイアメントロジック７２０は、様々な既知の形態（例えば、リオーダバッファなど）を取り得る。この手法において、コード７０４の実行中に、プロセッサコア７００は、デコーダ、レジスタリネーミングロジック７１０によって利用されるハードウェアレジスタおよびテーブル、ならびに実行ロジック７１４によって修正される任意のレジスタ（不図示）によって少なくとも生成される出力に関して変換される。
【００５６】
図７には図示していないが、プロセッサは、プロセッサコア７００と共にチップ上に他の要素を含み得、それらの少なくともいくつかは図５を参照して本明細書に示され、説明された。例えば、図５に示されるように、プロセッサは、プロセッサコア７００と共にメモリ制御ロジックを含み得る。プロセッサは、Ｉ／Ｏ制御ロジックを含み得、および／またはメモリ制御ロジックと統合されたＩ／Ｏ制御ロジックを含み得る。
【００５７】
本明細書に提供される例では、インタラクションは２つ、３つ、またはそれらより多くのネットワーク要素の点から説明され得ることに留意されたい。しかしながら、これは、明瞭化および例示のみの目的でそのようにしている。特定の場合には、限定された数のネットワーク要素のみを参照することにより、所与のセットのフローにおける機能のうちの１または複数を説明することがより容易である場合がある。通信システム１００およびその教示は、容易に拡張可能であり、多数のコンポーネント、ならびにより複雑／高度な配置および構成に適合し得ることを理解されたい。従って、提供される例は、潜在的に無数の他のアーキテクチャに適用される通信システム１００の範囲を限定すべきではないか、または広範な教示を阻むべきものではない。
【００５８】
先行するフロー図（すなわち、図３および図４）における複数のオペレーションは、通信システム１００により、またはその内部で実行され得る複数の可能な相関シナリオおよび複数のパターンのいくつかのみを図示していることに留意すべきことも重要である。適切な場合にはこれらのオペレーションのいくつかは削除されるか、除去されてよく、またはこれらのオペレーションは本開示の範囲を逸脱することなく大幅に修正もしくは変更され得る。さらに、これらの複数のオペレーションは、１または複数の追加のオペレーションと同時、または並行して実行されているものとして説明された。しかしながら、これらのオペレーションのタイミングは、大幅に変更され得る。前述の動作フローは、例示および説明の目的で提供されている。任意の適切な配置、時系列、構成、およびタイミングメカニズムが、本開示の教示から逸脱することなく提供され得るという点で、かなりの柔軟性が通信システム１００よって提供される。
【００５９】
本開示は特定な配置および構成を参照して詳細に説明されているが、これらの例示的構成および配置は、本開示の範囲から逸脱することなく大幅に変更され得る。さらに、特定のコンポーネントは、特定の必要性および実装に基づいて組み合わせられ、分離され、除去され、または追加され得る。さらに、通信システム１００は、通信処理を容易にする特定の要素およびオペレーションを参照して図示されているが、これらの要素およびオペレーションは、通信システム１００の意図される機能を実現する任意の適切なアーキテクチャ、プロトコルおよび／または処理と置き換えられ得る。
【００６０】
多数の他の変化、代替、変形例、変更、および、修正が、当業者に確かめられてもよく、本開示は、添付された請求項の範囲内にある、全てのそのような複数の変化、代替、変形例、変更、および修正を包含することが意図されている。米国特許商標庁（ＵＳＰＴＯ）およびさらに、本出願に関して発行される任意の特許の任意の読者を、本明細書に添付の特許請求の範囲の解釈において助力すべく、出願人は、以下に留意することを切望し、（ａ）出願人は、添付のいかなる請求項も、「の手段」または「の段階」という語が特定の請求項において具体的に用いられない限り、本明細書の出願日において存在する米国特許法第１１２条第６項を行使させる意図はなく、（ｂ）出願人は、添付の特許請求の範囲に反映されない限り、本明細書においていかなる陳述によっても、本開示をいかなる方法においても、限定する意図はないものとする。
［他の注釈および例］
【００６１】
例Ｃ１は、プロセッサによって実行された場合、システムにおけるアプリケーションを実行することと、アプリケーションのために、イベントトレースすることと、イベントトレースからのそれぞれの命令ポインタを分析することと、命令ポインタがメモリのオーファンページに示すかどうかを判断することとをプロセッサに実行させる１または複数の命令を有する少なくとも１つの機械可読記憶媒体である。
【００６２】
例Ｃ２において、例Ｃ１の主題は、オーファンページがアプリケーションと関連付けられていないコードの領域である場合を任意に含み得る。
【００６３】
例Ｃ３において、例Ｃ１〜Ｃ２のいずれか１つの主題は、オーファンページが未確認のコードの領域である場合を任意に含み得る。
【００６４】
例Ｃ４において、例Ｃ１〜Ｃ３のいずれか１つの主題は、システムがイベントトレースを実行する一部のオペレーティングシステムであるオペレーティングシステムおよび埋め込みアプリケーションを含む場合を任意に含み得る。
【００６５】
例Ｃ５において、例Ｃ１〜Ｃ４のいずれか１つの主題は、命令がプロセッサによって実行された場合、プロセッサにさらに、命令ポインタがアプリケーションに関連付けられていない異常コードを示すかどうかを判断する場合を任意に含み得る。
【００６６】
例Ｃ６において、例Ｃ１〜Ｃ５のいずれか１つの主題は、イベントトレースがアプリケーションへ透過的である場合を任意に含み得る。
【００６７】
例Ｃ７において、例Ｃ１〜Ｃ６のいずれか１つの主題は、イベントトレースが、ブロックされることなく実行を継続するターゲットアプリケーションのようなアプリケーションと非同期である場合を任意に含み得る。
【００６８】
例Ｃ８において、例Ｃ１〜Ｃ７のいずれか１つの主題は、命令がプロセッサによって実行された場合、命令ポインタがメモリのオーファンページを示した場合、または命令ポインタがアプリケーションに関連付けられていない異常コードを示した場合、アプリケーションを悪意あるものとしてフラグすることをさらにプロセッサに実行させる場合を任意に含み得る。
【００６９】
例Ａ１において、装置は検出モジュールを含み得、検出モジュールは、システムにおけるアプリケーションを実行することと、アプリケーションのために、イベントトレースすることと、イベントトレースからのそれぞれの命令ポインタを分析することと、命令ポインタがメモリのオーファンページに示すかどうかを判断することとを実行するよう構成される。
【００７０】
例Ａ２において、例Ａ１の主題は、オーファンページがアプリケーションと関連付けられていないコードの領域である場合を任意に含み得る。
【００７１】
例Ａ３において、例Ａ１〜Ａ２のいずれか１つの主題は、オーファンページが未確認のコードの領域である場合を任意に含み得る。
【００７２】
例Ａ４において、例Ａ１〜Ａ３のいずれか１つの主題は、システムがイベントトレースを実行する一部のオペレーティングシステムであるオペレーティングシステムおよび埋め込みアプリケーションを含む場合を任意に含み得る。
【００７３】
例Ａ５において、例Ａ１〜Ａ４のいずれか１つの主題は、命令ポインタがアプリケーションに関連付けられていない異常コードを示すかどうかを判断するよう検出モジュールがさらに構成される場合を任意に含み得る。
【００７４】
例Ａ６において、例Ａ１〜Ａ５のいずれか１つの主題は、イベントトレースがアプリケーションへ透過的である場合を任意に含み得る。
【００７５】
例Ａ７において、例Ａ１〜Ａ６のいずれか１つの主題は、ブロックされることなく実行を継続するターゲットアプリケーションのようなアプリケーションとイベントトレースが非同期である場合を任意に含む。
【００７６】
例Ｍ１は、システムにおけるアプリケーションを実行することと、アプリケーションのためにイベントトレースを実行することと、イベントトレースからのそれぞれの命令ポインタを分析することと、命令ポインタがメモリのオーファンページを示すかどうかを判断することとを含む方法である。
【００７７】
例Ｍ２において、例Ｍ１の主題は、オーファンページがアプリケーションと関連付けられていないコードの領域である場合を任意に含み得る。
【００７８】
例Ｍ３において、例Ｍ１〜Ｍ２のいずれか１つの主題は、オーファンページが未確認のコードの領域である場合を任意に含み得る。
【００７９】
例Ｍ４において、例Ｍ１〜Ｍ３のいずれか１つの主題は、システムがイベントトレースを実行する一部のオペレーティングシステムであるオペレーティングシステムおよび埋め込みアプリケーションを含む場合を任意に含み得る。
【００８０】
例Ｍ５において、例Ｍ１〜Ｍ４のいずれか１つの主題は、命令ポインタがアプリケーションと関連付けられていない異常コードを示すかどうかを判断することを任意に含み得る。
【００８１】
例Ｍ６において、例Ｍ１〜Ｍ５のいずれか１つの主題は、イベントトレースがアプリケーションへ透過的である場合を任意に含み得る。
【００８２】
例Ｍ７において、例Ｍ１〜Ｍ６のいずれか１つの主題は、ブロックされることなく実行を継続するターゲットアプリケーションのようなアプリケーションとイベントトレースが非同期である場合を任意に含む。
【００８３】
例Ｓ１は、プロファイリングイベントに基づいたエクスプロイト検出のためのシステムであって、当該システムは、システムにおけるアプリケーションを実行することと、アプリケーションのために、イベントトレースすることと、イベントトレースからのそれぞれの命令ポインタを分析することと、命令ポインタがメモリのオーファンページを示すかどうかを判断することとを実行するよう構成される検出モジュールを含む。
【００８４】
例Ｓ２において、例Ｓ１の主題は、オーファンページがアプリケーションと関連付けられていないコードの領域である場合を任意に含み得る。
【００８５】
例Ｓ３において、例Ｓ１〜Ｓ２のいずれか１つの主題は、システムがイベントトレースを実行する一部のオペレーティングシステムであるオペレーティングシステムおよび埋め込みアプリケーションを含む場合を任意に含み得る。
【００８６】
例Ｘ１は、例Ａ１〜Ａ７または例Ｍ１〜Ｍ７のいずれか１つに示されるように、方法を実装するか、または装置を実現する機械可読命令を含む機械可読記憶媒体である。 例Ｙ１は、例Ｍ１〜Ｍ７の方法のいずれかを実行するための手段を含む装置である。例Ｙ２において、例Ｙ１の主題は任意に、プロセッサおよびメモリを含む方法を実行する手段を含み得る。例Ｙ３において、例Ｙ２の主題は任意に、機械可読命令を備えるメモリを含み得る。
【図１】
0006583865.tif 000002
【図２】
0006583865.tif 000003
【図３】
0006583865.tif 000004
【図４】
0006583865.tif 000005
【図５】
0006583865.tif 000006
【図６】
0006583865.tif 000007
【図７】
0006583865.tif 000008