(57)【特許請求の範囲】
【請求項１】
コンピューティングプロセス内の未知の脆弱性を検出するためのコンピュータ実行方法であって、前記方法の少なくとも一部が少なくとも１つのプロセッサを備えるサーバによって実行され、前記方法が、
前記サーバにより、コンピューティングプロセスがコンピューティング環境内で作動している間にクラッシュしたコンピューティングデバイスから、テレメトリデータを取得することであって、
前記コンピューティング環境内で作動している間にクラッシュした前記コンピューティングプロセスに関連し、
クラッシュダンプ、前記コンピューティング環境の呼び出しスタック、及び前記コンピューティングプロセスによって呼び出されたアプリケーションプログラムインターフェースのトレースを備える、前記テレメトリデータを取得することと、
前記コンピューティングプロセスを、前記コンピューティングデバイス上の前記コンピューティング環境内で作動している間にクラッシュに導いた可能性があるあらゆる脆弱性の証拠に関して、前記サーバで前記テレメトリデータを検索することと、
前記テレメトリデータを前記サーバで検索している間に、前記コンピューティングプロセスの脆弱性の証拠を識別することであって、
前記コンピューティングプロセスの例外ハンドラーを含む呼び出しスタックが、前記コンピューティングプロセスが前記コンピューティング環境内で作動している間にオーバーフローしたこと、及び
前記呼び出しスタックのオーバーフローの結果として、前記コンピューティングプロセスの前記例外ハンドラーが破壊されたこと、
を示す、前記テレメトリデータにおいて識別されたパターンを備える、前記脆弱性の証拠を識別することと、
前記サーバにより、前記脆弱性が、コンピューティングプロセス内に存在することがまだ知られていないゼロデイ脆弱性を表すことを、
特定のコンピューティングプロセスに影響を与える既知の脆弱性の現行リストを含むデータベースにクエリすること、及び
前記データベースが前記コンピューティングプロセスを前記脆弱性を有するとして識別していないことを、前記クエリに少なくとも部分的に基づいて判定すること、により判定することと、
前記コンピューティングプロセスの脆弱性の前記証拠の識別と、前記脆弱性がコンピューティングプロセス内に存在することがまだ知られていないゼロデイ脆弱性を表すことの判定に応答して、前記コンピューティングプロセスの脆弱性のあらゆる潜在的に悪意のあるエクスプロイトを妨げるための少なくとも１つのセキュリティ動作を実施することと、を含む、方法。
【請求項２】
アプリケーションプログラミングインターフェース（ＡＰＩ）フックと、
パケット捕捉構成要素と、
ファイルシステムモニタと、
ネットワークスイッチと、のうちの少なくとも１つで前記テレメトリデータをログ記録することにより、前記コンピューティングデバイス上の前記コンピューティング環境を監視することをさらに含む、請求項１に記載の方法。
【請求項３】
前記ＡＰＩフックで前記テレメトリデータをログ記録することが、
悪意ある攻撃中に通常呼び出されるＡＰＩ内にフックを挿入することと、
悪意ある攻撃中に通常呼び出されるＡＰＩへ至るコード経路内にフックを挿入することと、少なくとも１つを含む、請求項２に記載の方法。
【請求項４】
前記テレメトリデータをログ記録することが、
クラッシュダンプを作成することと、
前記コンピューティング環境の呼び出しスタックを記録することと、
前記コンピューティングプロセスにより呼び出された少なくとも１つのＡＰＩをトレースすることと、
前記コンピューティング環境のどの呼び出しスタックが前記コンピューティングプロセスの前記クラッシュに関与したのかを識別することと、のうちの少なくとも１つを含む、請求項２に記載の方法。
【請求項５】
前記コンピューティングプロセスが前記コンピューティング環境内で作動している間にクラッシュしたことを、前記コンピューティングプロセスが前記コンピューティング環境内で作動している間に前記コンピューティング環境内の呼び出しスタックのオーバーフローを検出することにより、判定することをさらに含む、請求項１に記載の方法。
【請求項６】
前記コンピューティングプロセスの脆弱性の前記証拠を識別することが、前記コンピューティングプロセスが前記コンピューティング環境内で作動している間に前記コンピューティング環境内の呼び出しスタック上の前記コンピューティングプロセスの仮想アドレスが上書きされたことを、前記テレメトリデータに少なくとも部分的に基づいて判定することを含む、請求項１に記載の方法。
【請求項７】
前記コンピューティングプロセスの脆弱性の前記証拠の識別に応答して前記セキュリティ動作を実施することが、
前記コンピューティングプロセスの脆弱性について前記コンピューティングプロセスのベンダに通知することと、
前記コンピューティングプロセスの脆弱性の記録を、特定のコンピューティングプロセスの既知の脆弱性を識別するデータベースに追加することと、
前記コンピューティングプロセスの脆弱性をエクスプロイトするあらゆる試みを監視するようにコンピュータセキュリティシステムを修正することと、のうちの少なくとも１つを含む、請求項１に記載の方法。
【請求項８】
コンピューティングプロセス内の未知の脆弱性を検出するためのシステムであって、
メモリに格納され、コンピューティングプロセスがコンピューティング環境内で作動している間にクラッシュしたコンピューティングデバイスから、テレメトリデータを取得する、監視モジュールであって、
前記テレメトリデータは、前記コンピューティング環境内で作動している間にクラッシュした前記コンピューティングプロセスに関連し、
クラッシュダンプ、前記コンピューティング環境の呼び出しスタック、及び前記コンピューティングプロセスによって呼び出されたアプリケーションプログラムインターフェースのトレースを備える、前記監視モジュールと、
メモリに格納された、分析モジュールであって、
前記コンピューティングプロセスを、前記コンピューティングデバイス上の前記コンピューティング環境内で作動している間にクラッシュに導いた可能性があるあらゆる脆弱性の証拠に関して前記テレメトリデータを検索し、
前記テレメトリデータを検索している間に、
前記コンピューティングプロセスの例外ハンドラーを備えた呼び出しスタックが、前記コンピューティング環境内で前記コンピューティングプロセスが作動している間にオーバーフローしたこと、及び
前記呼び出しスタックのオーバーフローの結果として、前記コンピューティングプロセスの前記例外ハンドラーが上書きされたこと、
を示す、前記テレメトリデータにおいて識別されるパターンを備える、前記コンピューティングプロセスの脆弱性の証拠を識別し、
前記脆弱性が、前記コンピューティングプロセス内に存在することがまだ知られていないゼロデイ脆弱性を表すことを、
特定のコンピューティングプロセスに影響を与える既知の脆弱性の現行リストを含むデータベースにクエリすること、及び
前記データベースが前記コンピューティングプロセスを前記脆弱性を有するとして識別していないことを、前記クエリに少なくとも部分的に基づいて判定すること、により判定する、分析モジュールと、
メモリに格納された、セキュリティモジュールであって、前記証拠の前記識別と、前記脆弱性が前記コンピューティングプロセス内に存在することがまだ知られていないゼロデイ脆弱性を表すことの判定に応答して、前記コンピューティングプロセスの脆弱性のあらゆる潜在的に悪意のあるエクスプロイトを妨げるための少なくとも１つのセキュリティ動作を実施する、セキュリティモジュールと、
前記監視モジュール、前記分析モジュール、及び前記セキュリティモジュールを実行する、少なくとも１つの物理プロセッサと、を備えた、システム。
【請求項９】
前記監視モジュールが、
アプリケーションプログラミングインターフェース（ＡＰＩ）フックと、
パケット捕捉構成要素と、
ファイルシステムモニタと、
ネットワークスイッチと、のうちの少なくとも１つで前記テレメトリデータをログ記録する、請求項８に記載のシステム。
【請求項１０】
前記監視モジュールが、
悪意ある攻撃中に通常呼び出されるＡＰＩ内にフックを挿入することと、
悪意ある攻撃中に通常呼び出されるＡＰＩへ至るコード経路内にフックを挿入することと、少なくとも１つにより前記ＡＰＩフックで前記テレメトリデータをログ記録する、請求項８又は９に記載のシステム。
【請求項１１】
前記監視モジュールが、
クラッシュダンプを作成することと、
前記コンピューティング環境の呼び出しスタックを記録することと、
前記コンピューティングプロセスにより呼び出された少なくとも１つのＡＰＩをトレースすることと、
前記コンピューティング環境のどの呼び出しスタックが前記コンピューティングプロセスの前記クラッシュに関与したのかを識別することと、のうちの少なくとも１つにより前記テレメトリデータをログ記録する、請求項１０に記載のシステム。
【請求項１２】
コンピュータセキュリティ装置であって、
コンピューティングプロセスがコンピューティング環境内で作動している間にクラッシュしたコンピューティングデバイスから、サーバにより、テレメトリデータを取得するための監視手段であって、
前記コンピューティング環境内で作動している間にクラッシュした前記コンピューティングプロセスに関連し、
クラッシュダンプ、前記コンピューティング環境の呼び出しスタック、及び前記コンピューティングプロセスによって呼び出されたアプリケーションプログラムインターフェースのトレースを備える、前記テレメトリデータを取得するための、監視手段と、
前記コンピューティングプロセスを、前記コンピューティングデバイス上の前記コンピューティング環境内で作動している間にクラッシュに導いた可能性があるあらゆる脆弱性の証拠に関して、前記サーバで、前記テレメトリデータを検索するための検索手段と、
前記テレメトリデータを前記サーバで検索している間に、前記コンピューティングプロセスの脆弱性の証拠を識別するための識別手段であって、前記脆弱性の前記証拠は、前記テレメトリデータにおいて識別されるパターンを備え、該パターンは、
前記コンピューティングプロセスの例外ハンドラーを備え、前記コンピューティング環境内で前記コンピューティングプロセスが作動している間にオーバーフローした呼び出しスタックと、
前記呼び出しスタックのオーバーフローの結果として、前記コンピューティングプロセスの前記例外ハンドラーが上書きされること、を示す、前記検索手段と、
前記脆弱性が、前記コンピューティングプロセス内に存在することがまだ知られていないゼロデイ脆弱性を表すことを、前記サーバにより、判定するための判定手段であって、
特定のコンピューティングプロセスに影響を与える既知の脆弱性の現行リストを含むデータベースにクエリすること、及び
前記データベースが前記コンピューティングプロセスを前記脆弱性を有するとして識別していないことを、前記クエリに少なくとも部分的に基づいて判定すること、により判定するための判定手段と、
前記コンピューティングプロセスの脆弱性の前記証拠の識別と、前記脆弱性が前記コンピューティングプロセス内に存在することが知られていないことの判定に応答して、ゼロデイ脆弱性を表す前記コンピューティングプロセスの脆弱性のあらゆる潜在的に悪意のあるエクスプロイトを妨げるための少なくとも１つのセキュリティ動作を実施するための実施手段と、を含む、コンピュータセキュリティ装置。
【発明の詳細な説明】
【背景技術】
【０００１】
コンピュータセキュリティシステムは、しばしば、潜在的なセキュリティ脅威に関してコンピューティングデバイスを監視する。例えば、コンピューティングデバイスは、潜在的なセキュリティ脅威から保護するために従来のコンピュータセキュリティシステムを実装することができる。この例では、従来のコンピュータセキュリティシステムは、よく知られたセキュリティ脅威の存在を検出することができ得る。残念ながら、この従来のコンピュータセキュリティシステムはよく知られたセキュリティ脅威の存在を検出することができ得る一方で、従来のコンピュータセキュリティシステムは、未知のセキュリティ脅威（例えば、ゼロデイ攻撃及び／又はコンピュータセキュリティシステムのユーザーベース内の１台のコンピュータ上でのみ遭遇するファイル）の存在を検出するのが苦手であり得る。
【０００２】
セキュリティ脅威は、しばしば、これらのコンピューティングデバイス上で作動するコンピューティングプロセス内に存在する脆弱性によりコンピューティングデバイスに潜入する。例えば、コンピューティングデバイスは、新たに公開されたコンピューティングプロセス（オペレーティングシステムの更新、ソフトウェアアプリケーション、及び／又は開発ツールなど）をインストール及び／又は起動する場合がある。残念ながら、このような新たに公開されたコンピューティングプロセスは、実行中に発生する特定の例外及び／又はエラーをとらえることができない場合がある。これらの例外及び／又はエラーは、コンピューティングデバイスを汚染、攻撃、及び／又は支配する目的のために悪意ある攻撃者がエクスプロイトすることができるコンピューティングプロセスの脆弱性を表し得る。
【０００３】
したがって、本開示は、コンピューティングプロセス内の未知の脆弱性を検出するために付加的かつ改善されたシステム及び方法に対するニーズを特定し、それに対処する。
【発明の概要】
【０００４】
より詳細に後述するように、本開示は、コンピューティングプロセス内の未知の脆弱性を、そのようなコンピューティングプロセスがクラッシュした後に収集されたテレメトリデータ内に特定のパターンを探すことにより、検出するための様々なシステム及び方法を記載する。
【０００５】
一実施例では、コンピューティングプロセス内の未知の脆弱性を検出するためのコンピュータ実行方法は、（１）コンピューティングプロセスの実行を容易にするコンピューティング環境を、コンピューティングプロセスがコンピューティング環境内で作動している間コンピューティングプロセスに関連するテレメトリデータをログ記録することにより、監視することと、（２）コンピューティングプロセスがコンピューティング環境内で作動している間にクラッシュしたことを判定することと、（３）コンピューティングプロセスを、コンピューティング環境内で作動している間にクラッシュに導いた可能性があるあらゆる脆弱性の証拠に関してテレメトリデータを検索することと、（４）テレメトリデータを検索している間に、コンピューティングプロセス内に存在することがまだ知られていないコンピューティングプロセスの少なくとも１つの脆弱性の証拠を識別することと、次いで、コンピューティングプロセスの脆弱性の証拠の識別に応答して、（５）コンピューティングプロセスの脆弱性のあらゆる潜在的に悪意のあるエクスプロイトを妨げるための少なくとも１つのセキュリティ動作を実施することと、を含み得る。
【０００６】
一実施例では、本方法はまた、アプリケーションプログラミングインターフェース（ＡＰＩ）フック、パケット捕捉構成要素、ファイルシステムモニタ、及び／又はネットワークスイッチでテレメトリデータをログ記録することも含み得る。この実施例では、本方法は、悪意ある攻撃中に通常呼び出されるＡＰＩ内にフックを挿入することを更に含み得る。それに加えて、又は別の方法として、本方法は、悪意ある攻撃中に通常呼び出されるＡＰＩへ至るコード経路内にフックを挿入することを含み得る。
【０００７】
一実施例では、本方法はまた、コンピューティングプロセスがコンピューティング環境内で作動している間にコンピューティング環境内の呼び出しスタックのオーバーフローを検出することも含み得る。それに加えて、又は別の方法として、本方法は、コンピューティングプロセスがコンピューティング環境内で作動している間に例外をスローしたことを判定することを含み得る。
【０００８】
一実施例では、本方法はまた、コンピューティングプロセスがコンピューティング環境内で作動している間にコンピューティング環境内の呼び出しスタック上の例外ハンドラーが上書きされたことを、テレメトリデータに少なくとも部分的に基づいて判定することも含み得る。それに加えて、又は別の方法として、本方法は、コンピューティングプロセスがコンピューティング環境内で作動している間にコンピューティング環境内の呼び出しスタック上のコンピューティングプロセスの仮想アドレスが上書きされたことを、テレメトリデータに少なくとも部分的に基づいて判定することを含み得る。
【０００９】
一実施例では、本方法はまた、脆弱性がコンピューティングプロセス内に存在することがまだ知られていないことを判定することも含み得る。例えば、本方法は、特定のコンピューティングプロセスの既知の脆弱性を識別するデータベースにクエリすることと、次いで、データベースがコンピューティングプロセスを脆弱性を有するとして識別していないことを、クエリに少なくとも部分的に基づいて判定することと、を含み得る。
【００１０】
テレメトリデータの例としては、非限定的に、クラッシュダンプ、コンピューティング環境の呼び出しスタック（コンピューティングプロセスのクラッシュに関与した呼び出しスタックなど）、ＡＰＩトレース、環境コンテキスト情報、それらの１つ以上の変形、それらの１つ以上の組み合わせ、又は他の任意の好適なテレメトリデータが挙げられる。セキュリティ動作の例としては、非限定的に、コンピューティングプロセスの脆弱性についてコンピューティングプロセスのベンダに通知すること、コンピューティングプロセスの脆弱性の記録を、特定のコンピューティングプロセスの既知の脆弱性を識別するデータベースに追加すること、コンピューティングプロセスの脆弱性をエクスプロイトするあらゆる試みを監視するようにコンピュータセキュリティシステムを修正すること、それらの１つ以上の変形、それらの１つ以上の組み合わせ、又は他の任意の好適なセキュリティ動作が挙げられる。
【００１１】
別の実施例として、上記方法を実装するためのシステムは、（１）メモリに格納された、監視モジュールであって、（Ａ）コンピューティングプロセスの実行を容易にするコンピューティング環境を、コンピューティングプロセスがコンピューティング環境内で作動している間コンピューティングプロセスに関連するテレメトリデータをログ記録することにより、監視し、（Ｂ）コンピューティングプロセスがコンピューティング環境内で作動している間にクラッシュしたことを判定する、監視モジュールと、（２）メモリに格納された、分析モジュールであって、（Ａ）コンピューティングプロセスをコンピューティング環境内で作動している間にクラッシュに導いた可能性がある脆弱性の証拠に関してテレメトリデータを検索し、（Ｂ）テレメトリデータを検索している間に、コンピューティングプロセス内に存在することがまだ知られていないコンピューティングプロセスの少なくとも１つの脆弱性の証拠を識別する、分析モジュールと、（３）メモリに格納された、セキュリティモジュールであって、証拠の識別に応答して、コンピューティングプロセスの脆弱性のあらゆる潜在的に悪意のあるエクスプロイトを妨げるための少なくとも１つのセキュリティ動作を実施する、セキュリティモジュールと、（４）監視モジュール、分析モジュール、及びセキュリティモジュールを実行する、少なくとも１つの物理プロセッサと、を含み得る。
【００１２】
いくつかの実施例では、上述の方法は、非一時的コンピュータ可読媒体上のコンピュータ可読命令としてコード化されてもよい。例えば、コンピュータ可読媒体は、１つ以上のコンピュータ実行可能命令であって、コンピューティングデバイスの少なくとも１つのプロセッサによって実行されると、コンピューティングデバイスに、（１）コンピューティングプロセスの実行を容易にするコンピューティング環境を、コンピューティングプロセスがコンピューティング環境内で作動している間コンピューティングプロセスに関連するテレメトリデータをログ記録することにより、監視させ得、（２）コンピューティングプロセスがコンピューティング環境内で作動している間にクラッシュしたことを判定させ得、（３）コンピューティングプロセスをコンピューティング環境内で作動している間にクラッシュに導いた可能性がある脆弱性の証拠に関してテレメトリデータを検索させ得、（４）テレメトリデータを検索している間に、コンピューティングプロセス内に存在することがまだ知られていないコンピューティングプロセスの少なくとも１つの脆弱性の証拠を識別させ得、次いで、コンピューティングプロセスの脆弱性の証拠の識別に応答して、（５）コンピューティングプロセスの脆弱性のあらゆる潜在的に悪意のあるエクスプロイトを妨げるための少なくとも１つのセキュリティ動作を実施させ得る、１つ以上のコンピュータ実行可能命令、を含み得る。
【００１３】
上述の実施形態のいずれかによる特徴は、本明細書に記載される一般原理に従って、互いに組み合わせて使用されてもよい。これら及び他の実施形態、特徴、及び利点は、添付の図面及び特許請求の範囲と併せて以下の発明を実施するための形態を読むことによって更に十分に理解されるだろう。
【図面の簡単な説明】
【００１４】
添付の図面は、いくつかの例示的な実施形態を図示するものであり、本明細書の一部である。以下の説明と併せて、これらの図面は、本開示の様々な原理を実証及び説明する。
【図１】コンピューティングプロセス内の未知の脆弱性を検出するための例示的なシステムのブロック図である。
【図２】コンピューティングプロセス内の未知の脆弱性を検出するための追加の例示的なシステムのブロック図である。
【図３】コンピューティングプロセス内の未知の脆弱性を検出するための例示的な方法の流れ図である。
【図４】本明細書で説明及び／又は図示される実施形態のうちの１つ以上を実装できる例示的なコンピューティングシステムのブロック図である。
【図５】本明細書で説明及び／又は図示される実施形態のうちの１つ以上を実装できる例示的なコンピューティングネットワークのブロック図である。
【００１５】
図面を通して、同一の参照符号及び記述は、必ずしも同一ではないが、類似の要素を示す。本明細書で説明される例示的実施形態は、様々な修正物及び代替的な形態が可能であるが、特定の実施形態が例として図面に示されており、本明細書に詳細に記載される。しかしながら、本明細書に記載される例示的実施形態は、開示される特定の形態に限定されることを意図しない。むしろ、本開示は、添付の特許請求の範囲内にある全ての修正物、等価物、及び代替物を網羅する。
【発明を実施するための形態】
【００１６】
本開示は、一般に、コンピューティングプロセス内の未知の脆弱性を検出するシステム及び方法を対象とする。より詳細に後述するように、プロセスのクラッシュ後にコンピューティングデバイスから収集されたテレメトリデータ（例えば、クラッシュダンプ、呼び出しスタック、ＡＰＩトレース、及び／又は環境コンテキスト情報）を分析することにより、本明細書に記載のシステム及び方法は、脆弱性を表すテレメトリデータ内の特定のパターンを識別することができ得る。本明細書に記載のシステム及び方法はまた、コンピューティングデバイス上でクラッシュしたプロセス内にそのような脆弱性が存在することが知られているかどうかを判定し得る。
【００１７】
脆弱性がクラッシュしたプロセス内に存在することが知られていない場合、本明細書に記載のシステム及び方法は、悪意ある攻撃者がコンピューティングデバイスを汚染、攻撃、及び／又は支配する目的のためにそれらの脆弱性のうちいずれをエクスプロイトするのも防止するためのセキュリティ動作を実施することができる。それゆえに、本明細書に記載のシステム及び方法は、未知の脆弱性（時として「ゼロデイ脆弱性」とも呼ばれる）を、それらの脆弱性が悪意ある攻撃者により検出及び／又は発見される前に、検出及び／又は発見することを容易にし得る。結果として、本明細書に記載のシステム及び方法は、それらの脆弱性に事前に対処して、それらの脆弱性をエクスプロイトしようと試みる悪意ある攻撃者による将来のゼロデイ攻撃を防ぐことができ得る。
【００１８】
以下、図１〜図２を参照して、コンピューティングプロセス内の未知の脆弱性を検出するための例示的なシステムの詳細な説明を提供する。対応するコンピュータ実行方法の詳細な説明は、図３に関連して提供される。更に、本明細書で説明される実施形態のうちの１つ以上を実装できる例示的なコンピューティングシステム及びネットワークアーキテクチャについての詳細な説明が、それぞれ、図４及び図５と関連して提供されることになる。
【００１９】
図１は、コンピューティングプロセス内の未知の脆弱性を検出するための例示的なシステム１００のブロック図である。この図に図示されるように、例示的なシステム１００は、１つ以上のタスクを実施するための１つ以上のモジュール１０２を含んでもよい。例えば、より詳細に後述するように、例示的なシステム１００は、監視モジュール１０４であって、（１）コンピューティングプロセスの実行を容易にするコンピューティング環境を、コンピューティングプロセスがコンピューティング環境内で作動している間コンピューティングプロセスに関連するテレメトリデータをログ記録することにより、監視し、（２）コンピューティングプロセスがコンピューティング環境内で作動している間にクラッシュしたことを判定する、監視モジュール１０４、を含み得る。
【００２０】
それに加えて、より詳細に後述するように、例示的なシステム１００は、分析モジュール１０６であって、（１）コンピューティングプロセスをコンピューティング環境内で作動している間にクラッシュに導いた可能性がある脆弱性の証拠に関してテレメトリデータを検索し、（２）テレメトリデータを検索している間に、コンピューティングプロセス内に存在することがまだ知られていないコンピューティングプロセスの少なくとも１つの脆弱性の証拠を識別する、分析モジュール１０６、を含み得る。例示的なシステム１００はまた、証拠の識別に応答して、コンピューティングプロセスの脆弱性のあらゆる潜在的に悪意のあるエクスプロイトを妨げるための少なくとも１つのセキュリティ動作を実施する、セキュリティモジュール１０８を含み得る。別々の要素として図示されるが、図１のモジュール１０２のうちの１つ以上は、単一のモジュール又はアプリケーションの部分を表してもよい。
【００２１】
特定の実施形態では、図１のモジュール１０２のうち１つ以上は、コンピューティングデバイスによって実行されると、コンピューティングデバイスに１つ以上のタスクを実施させ得る、１つ以上のソフトウェアアプリケーション又はプログラムを表し得る。例えば、より詳細に後述するように、モジュール１０２のうち１つ以上は、図２に示されるデバイス（例えば、コンピューティングデバイス２０２及び／又はサーバ２０６）、図４のコンピューティングシステム４１０、並びに／あるいは図５の例示的なネットワークアーキテクチャ５００の部分など、１つ以上のコンピューティングデバイスに格納され、その上で動くように構成された、ソフトウェアモジュールを表してもよい。図１のモジュール１０２のうち１つ以上はまた、１つ以上のタスクを実施するように構成された１つ以上の専用コンピュータの全て又は一部を表し得る。
【００２２】
図１の例示的なシステム１００は、様々な方法で実装され得る。例えば、例示的なシステム１００の全て又は一部は、図２における例示的なシステム２００の部分を表してもよい。図２に示されるように、システム２００は、ネットワーク２０４を介してサーバ２０６と通信するコンピューティングデバイス２０２を含んでもよい。一実施例では、コンピューティングデバイス２０２は、モジュール１０２のうち１つ以上でプログラムされてもよい。この実施例では、コンピューティングデバイス２０２は、コンピューティングプロセス２１０の実行を容易にするコンピューティング環境２０８を含んでもよく、かつ／又は表してもよい。それに加えて、又は別の方法として、コンピューティングデバイス２０２は、コンピューティング環境２０８及び／又はコンピューティングプロセス２１０に関連してテレメトリデータ２１４をログ記録及び／又は収集する監視構成要素２１２を含んでもよく、かつ／又は維持してもよい。
【００２３】
コンピューティング環境２０８は図２ではコンピューティングデバイス２０２とは別個であるとして図示されているものの、コンピューティングデバイス２０２は、別の方法として、コンピューティング環境２０８を構成してもよく、かつ／又は表してもよい。同様に、監視構成要素２１２は図２ではコンピューティング環境２０８とは別個であるとして図示されているものの、監視構成要素２１２は、別の方法として、図２のコンピューティング環境２０８の部分及び／又はコンピューティング環境２０８に特有の構成要素若しくはコンピューティング環境２０８に関係する構成要素を構成してもよく、かつ／又は表してもよい。
【００２４】
その上、図２はただ１つの監視構成要素を図示しているものの、システム２００は、別の方法として、テレメトリデータ２１４の部分をログ記録、収集、及び／又は記録する多数の監視構成要素を含んでもよく、かつ／又は伴ってもよい。同様に、図２はコンピューティング環境２０８内で作動するただ１つのコンピューティングプロセスを図示しているものの、システム２００は、別の方法として、コンピューティング環境２０８内で同時に作動する多数のコンピューティングプロセスを含んでもよく、かつ／又は伴ってもよい。
【００２５】
一実施例では、サーバ２０６は、モジュール１０２のうち１つ以上でプログラムされてもよい。この実施例では、サーバ２０６は、コンピューティングデバイス２０２からネットワーク２０４を介してテレメトリデータ２１４を取得することができる。それに加えて、又は別の方法として、サーバ２０６は、テレメトリデータ２１４を分析して、コンピューティングプロセス２１０内に存在することがまだ知られていないいずれかの脆弱性に少なくとも部分的に起因してコンピューティングプロセス２１０がクラッシュしたのかどうかを判定してもよい。
【００２６】
一実施形態では、図１によるモジュール１０２のうち１つ以上は、コンピューティングデバイス２０２及び／又はサーバ２０６のうちの少なくとも１つのプロセッサによって実行されると、コンピューティングデバイス２０２及び／又はサーバ２０６がコンピューティングプロセス内の未知の脆弱性を検出することを可能にすることができる。例えば、より詳細に後述するように、モジュール１０２のうち１つ以上は、コンピューティングデバイス２０２及び／又はサーバ２０６に、（１）コンピューティングプロセス２１０の実行を容易にするコンピューティング環境２０８を、コンピューティングプロセス２１０がコンピューティング環境２０８内で作動している間コンピューティングプロセス２１０に関連するテレメトリデータ２１４をログ記録することにより、監視させ得、（２）コンピューティングプロセス２１０がコンピューティング環境２０８内で作動している間にクラッシュしたことを判定させ得、（３）コンピューティングプロセス２１０をコンピューティング環境２０８内で作動している間にクラッシュに導いた可能性がある脆弱性の証拠に関してテレメトリデータ２１４を検索させ得、（４）テレメトリデータ２１４を検索している間に、コンピューティングプロセス２１０内に存在することがまだ知られていないコンピューティングプロセス２１０の少なくとも１つの脆弱性の証拠を識別させ得、次いで、コンピューティングプロセスの脆弱性の証拠の識別に応答して、（５）コンピューティングプロセスの脆弱性のあらゆる潜在的に悪意のあるエクスプロイトを妨げるための少なくとも１つのセキュリティ動作を実施させ得る。
【００２７】
コンピューティングデバイス２０２は、一般に、コンピュータ実行可能命令を読み取ることができる任意のタイプ又は形態のコンピューティングデバイスを表す。コンピューティングデバイス２０２の例としては、非限定的に、ラップトップ、タブレット、デスクトップ、サーバ、携帯電話、携帯情報端末（ＰＤＡ）、ネットワークデバイス、マルチメディアプレーヤー、埋め込みシステム、ウェアラブルデバイス（例えば、スマートウォッチ、スマートグラスなど）、ゲーム機、それらの１つ以上の組み合わせ、図４の例示的なコンピューティングシステム４１０、あるいは他の任意の好適なコンピューティングデバイスが挙げられる。
【００２８】
コンピューティング環境２０８は、一般に、コンピューティングプロセスの実行及び／又は起動を容易にする任意のタイプ又は形態の物理的若しくは仮想的コンピューティング環境、ツール、プラットフォーム、及び／又はエンジンを表す。コンピューティング環境２０８の例としては、非限定的に、ソフトウェアアプリケーション、オペレーティングシステム、サンドボックス、実行時環境、仮想マシン、物理的コンピューティングデバイス（コンピューティングデバイス２０２など）、それらの１つ以上の変形、それらの１つ以上の組み合わせ、又は他の任意の好適なコンピューティング環境が挙げられる。
【００２９】
コンピューティングプロセス２１０は、一般に、コンピューティング環境内で、かつ／又はコンピューティング環境に関連して作動することができる任意のタイプ又は形態のアプリケーション、プログラム、及び／又はプロセスを表す。一実施例では、コンピューティングプロセス２１０は、最近ユーザーに公開された新しいアプリケーション、更新、及び／又はパッチを含んでもよく、かつ／又は表してもよい。例えば、コンピューティングプロセス２１０は、オペレーティングシステムのベータ版を含んでもよく、かつ／又は表してもよい。コンピューティングプロセス２１０の例としては、非限定的に、ソフトウェアアプリケーション、オペレーティングシステム、アプレット、コンピュータゲーム、通信ソフトウェア、ネットワーキングソフトウェア、それらの１つ以上の変形、それらの１つ以上の更新、それらの１つ以上の組み合わせ、又は他の任意の好適なコンピューティングプロセスが挙げられる。
【００３０】
監視構成要素２１２は、一般に、コンピューティング環境内で作動するコンピューティングプロセスに関連してコンピューティング活動及び／又はテレメトリデータを監視、観察、及び／又はログ記録する任意のタイプ又は形態のデバイス、プログラム、コード、及び／又はメカニズムを表す。一実施例では、監視構成要素２１２は、監視モジュール１０４の部分を表してもよい。別の実施例では、監視構成要素２１２は、監視モジュール１０４とは別個であり個別であってもよい。例えば、監視モジュール１０４は、監視構成要素２１２を悪意ある攻撃中に通常呼び出されるＡＰＩ内に、かつ／又はそのようなＡＰＩへ至るコード経路内に挿入してもよく、かつ／又は埋め込んでもよい。監視構成要素２１２の例としては、非限定的に、フック、パケット捕捉構成要素、ファイルシステムモニタ、ネットワークスイッチ、それらの１つ以上の変形、それらの１つ以上の組み合わせ又は他の任意の好適な監視構成要素が挙げられる。
【００３１】
「フック」という用語は、本明細書で使用するとき、一般に、ＡＰＩへの呼び出しを傍受及び／又は記録することを容易にする任意のタイプ又は形態のコードの修正及び／又は拡張を指す。一実施例では、フックは、元のバージョンのＡＰＩから別のメモリ位置及び／又は代替的コードに実行フローを少なくとも一時的に移動させる、ＡＰＩに対する修正及び／又は拡張を含んでもよく、かつ／又は表してもよい。例えば、フックは、ＡＰＩの始まり又はエントリポイントに挿入されたコード（例えば、ジャンプ命令）を含んでもよく、かつ／又は表してもよい。この実施例では、コード（時として「トランポリン」と呼ばれる）は、ＡＰＩから別のメモリ位置に実行フローを一時的に移動又は迂回させることができ、追加のコードは、ＡＰＩへの呼び出しを開始したコンピューティングプロセスに関連するテレメトリデータをログ記録するように構成される。テレメトリデータをこのような方法でログ記録することにより、追加のコードは、ＡＰＩ呼び出しを開始したコンピューティングプロセスが最終的に、かつ／又は突然にクラッシュした場合、このようなテレメトリデータを分析のために収集及び／又は維持することができ得る。このようなフックの例としては、非限定的に、ＡＰＩフック、ユーザーモードフック、カーネルモードフック、物理的修正フック、実行時修正フック、イベントフック、仮想フック、ネットフィルタフック、それらの１つ以上の変形、それらの１つ以上の組み合わせ、又は他の任意の好適なフックが挙げられる。
【００３２】
テレメトリデータ２１４は、一般に、コンピューティングプロセスに関連する任意のタイプ又は形態のデータ、統計、及び／又は情報を表す。一実施例では、テレメトリデータ２１４は、コンピューティングプロセス２１０が脆弱性の結果としてクラッシュしたのかどうかに関連する洞察を提供することができる。それに加えて、又は別の方法として、テレメトリデータ２１４は、コンピューティング環境２０８及び／又はコンピューティングデバイス２０２により観察された、クラッシュに至るまでの特定のコンピューティング活動を識別及び／又は指摘してもよい。テレメトリデータ２１４の例としては、非限定的に、クラッシュダンプ、メモリダンプ、呼び出しスタック（プロセスのクラッシュに関与した呼び出しスタックなど）、ＡＰＩトレース、環境コンテキスト情報、それらの１つ以上の変形、それらの１つ以上の組み合わせ、又は他の任意の好適なテレメトリデータが挙げられる。
【００３３】
サーバ２０６は、一般に、テレメトリデータに対して脆弱性分析を実施し、かつ／又はマルウェア分析に関連してコンピューティング活動を観察することができる任意のタイプ又は形態のコンピューティングデバイスを表す。サーバ２０６の例としては、非限定的に、特定のソフトウェアアプリケーションを実行する、並びに／あるいは様々なセキュリティサービス、ウェブサービス、ストレージサービス、重複排除サービス、及び／又はデータベースサービスを提供するように構成された、アプリケーションサーバ、セキュリティサーバ、ウェブサーバ、ストレージサーバ、重複排除サーバ、及び／又はデータベースサーバが挙げられる。
【００３４】
ネットワーク２０４は、一般に、通信若しくはデータ転送を容易にすることが可能な、任意の媒体又はアーキテクチャを表す。ネットワーク２０４の例としては、非限定的に、イントラネット、広域ネットワーク（Wide Area Network）（ＷＡＮ）、ローカルエリアネットワーク（Local Area Network）（ＬＡＮ）、パーソナルエリアネットワーク（Personal Area Network）（ＰＡＮ）、インターネット、電力線通信（ＰＬＣ）、セルラーネットワーク（例えば、Ｇｌｏｂａｌ  Ｓｙｓｔｅｍ  ｆｏｒ  Ｍｏｂｉｌｅ  Ｃｏｍｍｕｎｉｃａｔｉｏｎｓ（ＧＳＭ（登録商標））ネットワーク）、図５の例示的なネットワークアーキテクチャ５００などが挙げられる。ネットワーク２０４は、無線接続又は有線接続を使用して、通信又はデータ転送を容易にしてもよい。一実施形態では、ネットワーク２０４は、コンピューティングデバイス２０２とサーバ２０６との間の通信を容易にしてもよい。
【００３５】
図３は、コンピューティングプロセス内の未知の脆弱性を検出するための例示的なコンピュータ実行方法３００の流れ図である。図３に示されるステップは、任意の好適なコンピュータ実行可能コード及び／又はコンピューティングシステムによって実施されてもよい。いくつかの実施形態では、図３に示すステップは、図１のシステム１００、図２のシステム２００、図４のコンピューティングシステム４１０、及び／又は図５の例示的なネットワークアーキテクチャ５００の部分の構成要素のうち１つ以上によって実行されてもよい。
【００３６】
図３に示すように、ステップ３０２において、本明細書に記載の１つ以上のシステムは、コンピューティングプロセスの実行を容易にするコンピューティング環境を、コンピューティングプロセスがコンピューティング環境内で作動している間コンピューティングプロセスに関連するテレメトリデータをログ記録することにより、監視し得る。例えば、監視モジュール１０４は、図２のコンピューティングデバイス２０２及び／又はサーバ２０６の一部として、コンピューティングプロセス２１０の実行を容易にするコンピューティング環境２０８を監視してもよい。この実施例では、監視モジュール１０４は、コンピューティングプロセス２１０がコンピューティング環境２０８内で作動している間コンピューティングプロセス２１０に関連するテレメトリデータ２１４をログ記録することができる。
【００３７】
本明細書に記載するシステムは、様々な方法及び／又は文脈でステップ３０２を実施してもよい。一実施例では、監視モジュール１０４は、テレメトリデータ２１４の少なくとも一部を監視構成要素２１２でログ記録することにより、コンピューティング環境２０８を監視し得る。例えば、監視構成要素２１２がフックを表す場合、監視モジュール１０４は、エクスプロイト攻撃中に通常呼び出されるＡＰＩ内にフックを挿入してもよい。それに加えて、又は別の方法として、監視モジュール１０４は、エクスプロイト攻撃中に通常呼び出されるＡＰＩへ至るコード経路内にフックを挿入してもよい。
【００３８】
一実施例では、監視モジュール１０４は、クラッシュダンプ及び／又はメモリダンプを作成することによりテレメトリデータ２１４の少なくとも一部をログ記録し得る。別の実施例では、監視モジュール１０４は、コンピューティング環境２０８の呼び出しスタックを記録、コピー、及び／又は複製することにより、テレメトリデータ２１４の少なくとも一部をログ記録し得る。例えば、監視モジュール１０４は、コンピューティング環境２０８のどの呼び出しスタックがコンピューティングプロセス２１０のクラッシュに関与したのかを識別し、クラッシュに至るまでの呼び出しスタックの内容を記録し得る。さらなる実施例では、監視モジュール１０４は、コンピューティングプロセス２１０により呼び出されたＡＰＩをトレースすることによりテレメトリデータ２１４の少なくとも一部をログ記録し得る。
【００３９】
一実施例では、監視モジュール１０４は、コンピューティング環境２０８内で作動するコンピューティングプロセスによりなされた特定のＡＰＩ呼び出しを傍受することによりコンピューティング環境２０８を監視し得る。例えば、監視モジュール１０４は、エクスプロイト攻撃中にマルウェアにより通常呼び出されるＡＰＩへの全ての呼び出しを傍受し得る。それに加えて、又は別の方法として、監視モジュール１０４は、エクスプロイト攻撃中にマルウェアにより通常呼び出されるＡＰＩの呼び出しにつながり得、及び／又は引き起こし得る別のＡＰＩへの全ての呼び出しを傍受し得る。換言すれば、監視モジュール１０４は、通常標的とされるＡＰＩ自体及び／又は通常標的とされるＡＰＩに至る任意のコード経路を監視し得る。
【００４０】
図３に戻ると、ステップ３０４において、本明細書に記載の１つ以上のシステムは、コンピューティングプロセスがコンピューティング環境内で作動している間にクラッシュしたことを判定し得る。例えば、監視モジュール１０４は、図２のコンピューティングデバイス２０２及び／又はサーバ２０６の一部として、コンピューティングプロセス２１０がコンピューティング環境２０８内で作動している間にクラッシュしたことを判定し得る。「クラッシュ」という用語又は「クラッシュする」という文言は、本明細書でコンピューティングプロセスに関連して使用するとき、一般に、コンピューティングプロセスが正常に機能しなくなる結果をもたらす任意のタイプ又は形態の異常終了及び／又はエラーを指す。
【００４１】
本明細書に記載するシステムは、様々な方法及び／又は文脈でステップ３０４を実施してもよい。一実施例では、監視モジュール１０４は、クラッシュを検出するコード片をコンピューティングプロセス２１０に追加することにより、コンピューティングプロセス２１０がクラッシュしたことを判定し得る。例えば、コンピューティングプロセス２１０がコンピューティング環境２０８内で作動し始める前に、監視モジュール１０４は、コード片をコンピューティングプロセス２１０に追加してもよい。この実施例では、コード片は、任意の異常終了及び／又は特定のエラーを検出し、次いで、それらを監視モジュール１０４及び／又はコンピューティング環境２０８に報告するように構成されてもよい。次いで、監視モジュール１０４は、コンピューティングプロセス２１０がクラッシュしたことを、コンピューティングプロセス２１０に追加されたコード片に少なくとも部分的に基づいて判定し得る。
【００４２】
それに加えて、又は別の方法として、監視モジュール１０４は、コンピューティング環境２０８内の呼び出しスタック及び／又はバッファのオーバーフローを検出することにより、コンピューティングプロセス２１０がクラッシュしたことを判定し得る。例えば、監視モジュール１０４は、コンピューティング環境２０８内で作動している間にコンピューティングプロセス２１０により使用される呼び出しスタック及び／又はバッファを監視し得る。この実施例では、監視モジュール１０４は、呼び出しスタック及び／又はバッファのオーバーフローを検出し得る。次いで、監視モジュール１０４は、コンピューティングプロセス２１０がコンピューティング環境２０８内で作動している間に呼び出しスタック及び／又はバッファがオーバーフローしたため、コンピューティングプロセス２１０がクラッシュしたことを判定し得る。
【００４３】
それに加えて、又は別の方法として、監視モジュール１０４は、コンピューティングプロセス２１０がクラッシュしたことを、コンピューティング環境２０８内で作動している間にコンピューティングプロセス２１０によりスロー及び／又は送出された例外に少なくとも部分的に基づいて判定し得る。「例外」という用語は、本明細書で使用するとき、一般に、実行中にコンピューティングプロセスにより遭遇及び／又は経験される任意のタイプ又は形態の異常な、突然の、及び／又は予期しない状況及び／又はコンピューティング状態を指す。例えば、監視モジュール１０４は、コンピューティング環境２０８内で作動している間にコンピューティングプロセス２１０から生じるコンピューティング活動を監視し得る。コンピューティングプロセス２１０から生じるコンピューティング活動を監視している間、監視モジュール１０４は、コンピューティングプロセス２１０によりスロー及び／又は送出された例外を検出し得る。次いで、監視モジュール１０４は、コンピューティングプロセス２１０が例外をスロー及び／又は送出したため、コンピューティングプロセス２１０がクラッシュしたことを判定し得る。
【００４４】
図３に戻ると、ステップ３０６において、本明細書に記載の１つ以上のシステムは、コンピューティングプロセスをコンピューティング環境内で作動している間にクラッシュに導いた可能性がある脆弱性の証拠に関してテレメトリデータを検索し得る。例えば、分析モジュール１０６は、図２のコンピューティングデバイス２０２及び／又はサーバ２０６の一部として、コンピューティングプロセス２１０をコンピューティング環境２０８内で作動している間にクラッシュに導いた可能性がある脆弱性の証拠に関してテレメトリデータ２１４を検索し得る。この実施例では、分析モジュール１０６は、コンピューティングプロセス２１０がクラッシュしたという判定に応答してこの検索を開始し得る。
【００４５】
「証拠」という用語は、本明細書で使用するとき、一般に、脆弱性の存在を指摘又は示唆する任意のタイプ又は形態の活動、挙動、出来事、観察、データ、及び／又は情報を指す。「脆弱性」という用語は、本明細書で使用するとき、一般に、コンピューティングプロセス内の任意のタイプ又は形態の欠点、弱点、易感染性、及び／又は欠陥を指す。一実施例では、脆弱性は、悪意ある攻撃者によりエクスプロイトされる可能性があるソフトウェアのバグを含んでもよく、かつ／又は表してもよい。それに加えて、及び／又は別の方法として、脆弱性は、コンピューティングプロセスのコード内に存在するコーディング上の見落としを含んでもよく、かつ／又は表してもよい。
【００４６】
本明細書に記載するシステムは、様々な方法及び／又は文脈でステップ３０６を実施してもよい。一部の実施例では、分析モジュール１０６は、特定の脆弱性を指摘及び／又は示唆する特定のパターンがないかテレメトリデータ２１４を検索し得る。一例として、テレメトリデータ２１４がクラッシュダンプを含む場合、分析モジュール１０６は、コンピューティング環境２０８内の呼び出しスタックがオーバーフローし、呼び出しスタック上の例外ハンドラーが上書きされたことを指摘及び／又は示唆するパターンがないかクラッシュダンプを検索し得る。例えば、分析モジュール１０６は、クラッシュダンプを分析して、コンピューティングプロセス２１０の例外ハンドラーを含む呼び出しスタックがオーバーフローし、例外ハンドラーが上書きされたかどうかを判定し得る。
【００４７】
それに加えて、又は別の方法として、分析モジュール１０６は、コンピューティング環境２０８内の呼び出しスタックがオーバーフローし、呼び出しスタック上の仮想アドレスが上書きされたことを指摘及び／又は示唆するパターンがないかクラッシュダンプを検索し得る。例えば、分析モジュール１０６は、クラッシュダンプを分析して、コンピューティングプロセス２１０の仮想アドレスを含む呼び出しスタックがオーバーフローし、仮想アドレスが上書きされたかどうかを判定し得る。
【００４８】
図３に戻ると、ステップ３０８において、本明細書に記載の１つ以上のシステムは、コンピューティングプロセス内に存在することがまだ知られていないコンピューティングプロセスの少なくとも１つの脆弱性の証拠を識別し得る。例えば、分析モジュール１０６は、図２のコンピューティングデバイス２０２及び／又はサーバ２０６の一部として、テレメトリデータ２１４を検索している間に、コンピューティングプロセス２１０の少なくとも１つの脆弱性の証拠を識別し得る。この実施例では、脆弱性は、分析モジュール１０６が未知の脆弱性の証拠を識別する前には、及び／又は識別したときには、コンピューティングプロセス２１０内に存在することがまだ知られていない場合がある。「未知の脆弱性」及び「ゼロデイ脆弱性」という用語は、コンピューティングプロセスに関連して本明細書で使用するとき、一般に、現在知られていない、開示されていない、及び／又は訂正されていないコンピューティングプロセス内の任意のタイプ又は形態の脆弱性を指す。
【００４９】
本明細書に記載するシステムは、様々な方法及び／又は文脈でステップ３０８を実施してもよい。一部の実施例では、分析モジュール１０６は、テレメトリデータ２１４内の特定のパターンを識別することにより、コンピューティングプロセス２１０が未知の脆弱性を有することを判定し得る。例えば、分析モジュール１０６は、コンピューティングプロセス２１０の例外ハンドラーを含む呼び出しスタックがオーバーフローし、例外ハンドラーが上書きされたことを指摘及び／又は示唆するパターンを識別し得る。次いで、分析モジュール１０６は、コンピューティングプロセス２１０が特定の脆弱性を有することを、テレメトリデータ２１４内のこのパターンの識別に少なくとも部分的に基づいて判定し得る。
【００５０】
それに加えて、又は別の方法として、分析モジュール１０６は、コンピューティングプロセス２１０の仮想アドレスを含む呼び出しスタックがオーバーフローし、仮想アドレスが上書きされたことを指摘及び／又は示唆するパターンを識別し得る。次いで、分析モジュール１０６は、コンピューティングプロセス２１０が特定の脆弱性を有することを、テレメトリデータ２１４内のこのパターンの識別に少なくとも部分的に基づいて判定し得る。
【００５１】
一部の実施例では、分析モジュール１０６は、識別した脆弱性がコンピューティングプロセス２１０内に存在することがまだ知られていないことを判定し得る。換言すれば、分析モジュール１０６は、コンピューティングプロセスの脆弱性が未知及び／又はゼロデイであることを判定し得る。一実施例では、分析モジュール１０６は、特定のコンピューティングプロセスの既知の脆弱性を識別するデータベース（図２には図示せず）にクエリし得る。この実施例では、データベースは、膨大な数のコンピューティングプロセスに現在影響を与えているか、又は以前に影響を与えたと知られている脆弱性の現行リストを含んでもよく、かつ／又は表してもよい。次いで、分析モジュール１０６は、データベースがコンピューティングプロセスを識別された脆弱性を有するとして識別していないことを、クエリに少なくとも部分的に基づいて判定し得る。結果として、分析モジュール１０６は、コンピューティングプロセスの脆弱性が未知及び／又はゼロデイであることを判定し得る。
【００５２】
図３に戻ると、ステップ３１０において、本明細書に記載の１つ以上のシステムは、コンピューティングプロセスの脆弱性のあらゆる潜在的に悪意のあるエクスプロイトを妨げるための少なくとも１つのセキュリティ動作を実施し得る。例えば、セキュリティモジュール１０８は、図２のコンピューティングデバイス２０２及び／又はサーバ２０６の一部として、コンピューティングプロセス２１０の識別された脆弱性に対処するための少なくとも１つのセキュリティ動作を実施し得る。セキュリティ動作をこのような方法で実施することにより、セキュリティモジュール１０８は、コンピューティングプロセスの脆弱性のあらゆる潜在的に悪意のあるエクスプロイトを効果的に妨げることができ得る。換言すれば、セキュリティ動作をこのような方法で実施することにより、セキュリティモジュール１０８は、悪意ある攻撃者が、コンピューティングプロセス２１０を実行しているあらゆるコンピューティングデバイスを汚染、攻撃、及び／又は支配する目的のために脆弱性をエクスプロイトするのも防止することができ得る。
【００５３】
本明細書に記載するシステムは、様々な方法及び／又は文脈でステップ３１０を実施してもよい。一実施例では、セキュリティモジュール１０８は、コンピューティングプロセスの脆弱性についてコンピューティングプロセス２１０の開発者及び／又はベンダに通知し得る。別の実施例では、セキュリティモジュール１０８は、コンピューティングプロセスの脆弱性の記録を、特定のコンピューティングプロセスの既知の脆弱性を識別するデータベースに追加し得る。それに加えて、又は別の方法として、セキュリティモジュール１０８は、コンピューティングプロセスの脆弱性をエクスプロイトするあらゆる試みを監視し、かつ／又はそのような試みを遮断するように、コンピュータセキュリティシステム（例えば、アンチウイルス及び／又はアンチマルウェアの解決策）を修正し得る。
【００５４】
図１〜３に関連して上記で説明したように、本明細書に記載のシステム及び方法は、コンピューティングプロセス内の未知の脆弱性及び／又はゼロデイ脆弱性を検出することができ得る。このような脆弱性を検出することにより、本明細書に記載のシステム及び方法は、それらの脆弱性をエクスプロイトするゼロデイ攻撃を阻止することができ得る。一例として、コンピューティングデバイスは、新たに公開されたコンピューティングプロセス（オペレーティングシステムの更新、ソフトウェアアプリケーション、及び／又は開発ツールなど）をインストール及び／又は起動し得る。残念ながら、このような新たに公開されたコンピューティングプロセスは、実行中に発生する特定の例外及び／又はエラーについて責任をとらない場合がある。これらの例外及び／又はエラーは、悪意ある攻撃者により知られ、及び／又は発見された場合、コンピューティングデバイスを汚染、攻撃、及び／又は支配する目的のためのエクスプロイトとして働く可能性があるコンピューティングプロセスの脆弱性を表し得る。
【００５５】
このようなエクスプロイトを阻止及び／又は防止するための取り組みとして、コンピュータセキュリティシステムは、コンピューティングデバイスにより実行されるコンピューティングプロセスを監視し得る。例えば、コンピューティングデバイスにインストールされたセキュリティエージェントは、脆弱性をエクスプロイトするために通常使用されるＡＰＩのコード経路内にフックを挿入し得る。この実施例では、フックは、特定のテレメトリデータを収集及び／又はログ記録し得る。新たに公開されたコンピューティングプロセスがコンピューティングデバイス上で作動している間にクラッシュを経験した場合、セキュリティエージェントは、分析のためにテレメトリデータをセキュリティサーバに送信し得る。
【００５６】
テレメトリデータを受信すると、セキュリティサーバは、脆弱性の存在を示唆及び／又は指摘する特定のパターンがないかテレメトリデータを分析し得る。例えば、セキュリティサーバは、テレメトリデータを分析して、コンピューティングプロセスの例外ハンドラーを含む呼び出しスタックがオーバーフローし、例外ハンドラーが上書きされたかどうかを判定し得る。それに加えて、又は別の方法として、セキュリティサーバは、テレメトリデータを分析して、コンピューティングプロセスの仮想アドレスを含む呼び出しスタックがオーバーフローし、仮想アドレスが上書きされたかどうかを判定し得る。分析が脆弱性の存在を指摘する場合、セキュリティサーバは、悪意ある攻撃者が、新たに公開されたコンピューティングプロセスを実行するあらゆるコンピューティングデバイスを汚染、攻撃、及び／又は支配する目的のために脆弱性をエクスプロイトするのも防止するための是正措置を講じ得る。
【００５７】
図４は、本明細書に記載及び／又は図示される実施形態のうち１つ以上を実装できる例示的なコンピューティングシステム４１０のブロック図である。例えば、コンピューティングシステム４１０の全て又は一部は、単独で又は他の要素と組み合わせて、（図３に示されるステップのうち１つ以上等の）本明細書に記載されるステップのうち１つ以上を実施してもよく、及び／又はそれを実施するための手段であってもよい。コンピューティングシステム４１０の全て又は一部は、また、本明細書に記載及び／又は図示される他の任意のステップ、方法、若しくは処理を実施し、及び／又はそれを実施するための手段となり得る。
【００５８】
コンピューティングシステム４１０は、コンピュータ可読命令を実行することが可能な任意のシングル若しくはマルチプロセッサのコンピューティングデバイス又はシステムを幅広く表す。コンピューティングシステム４１０の例としては、非限定的に、ワークステーション、ラップトップ、クライアント側端末、サーバ、分散型コンピューティングシステム、ハンドヘルドデバイス、又は他の任意のコンピューティングシステム若しくはデバイスが挙げられる。その最も基本的な構成において、コンピューティングシステム４１０は、少なくとも１つのプロセッサ４１４及びシステムメモリ４１６を含んでもよい。
【００５９】
プロセッサ４１４は、データの処理又は命令の解釈及び実行が可能な任意のタイプ若しくは形式の物理的処理ユニット（例えば、ハードウェア実装型中央処理ユニット）を、一般に表す。特定の実施形態では、プロセッサ４１４は、ソフトウェアアプリケーション又はモジュールから命令を受信してもよい。これらの命令は、プロセッサ４１４に、本明細書において記載及び／又は図示される例示的な実施形態のうちの１つ以上の機能を実施させてもよい。
【００６０】
システムメモリ４１６は、一般に、データ及び／又は他のコンピュータ可読命令を記憶することができる任意のタイプ若しくは形態の揮発性又は不揮発性記憶デバイスを表す。システムメモリ４１６の例としては、非限定的に、ランダムアクセスメモリ（ＲＡＭ）、読み取り専用メモリ（ＲＯＭ）、フラッシュメモリ、又は他の任意の好適なメモリデバイスが挙げられる。必須ではないが、特定の実施形態では、コンピューティングシステム４１０は、揮発性メモリユニット（例えば、システムメモリ４１６など）、及び不揮発性記憶デバイス（例えば、詳細に後述するような、一次記憶デバイス４３２など）の両方を含み得る。一実施例では、図１のモジュール１０２のうち１つ以上がシステムメモリ４１６にロードされ得る。
【００６１】
特定の実施形態では、例示的なコンピューティングシステム４１０は、また、プロセッサ４１４及びシステムメモリ４１６に加えて、１つ以上の構成要素又は要素を含んでもよい。例えば、図４に示されるように、コンピューティングシステム４１０は、メモリコントローラ４１８、入力／出力（Ｉ／Ｏ）コントローラ４２０、及び通信インターフェース４２２を含んでもよいが、それらはそれぞれ通信基盤４１２を介して相互接続されてもよい。通信基盤４１２は、一般に、コンピューティングデバイスの１つ以上の構成要素間の通信を容易にすることができる、任意のタイプ又は形態の基盤を表す。通信基盤４１２の例としては、非限定的に、通信バス（産業標準アーキテクチャ（ＩＳＡ）、周辺装置相互接続（ＰＣＩ）、ＰＣＩエクスプレス（ＰＣＩｅ）、又は類似のバスなど）、及びネットワークが挙げられる。
【００６２】
メモリコントローラ４１８は、一般に、メモリ若しくはデータを扱うこと、又はコンピューティングシステム４１０の１つ以上の構成要素間の通信を制御することが可能な、任意のタイプ又は形態のデバイスを表す。例えば、特定の実施形態では、メモリコントローラ４１８は、通信基盤４１２を介して、プロセッサ４１４、システムメモリ４１６、及びＩ／Ｏコントローラ４２０の間の通信を制御してもよい。
【００６３】
Ｉ／Ｏコントローラ４２０は、一般に、コンピューティングデバイスの入出力機能を調整及び／又は制御することが可能な、任意のタイプ又は形態のモジュールを表す。例えば、特定の実施形態では、Ｉ／Ｏコントローラ４２０は、プロセッサ４１４、システムメモリ４１６、通信インターフェース４２２、ディスプレイアダプタ４２６、入力インターフェース４３０、及び記憶インターフェース４３４など、コンピューティングシステム４１０の１つ以上の要素間におけるデータの転送を制御し、又はそれを容易にし得る。
【００６４】
通信インターフェース４２２は、例示的なコンピューティングシステム４１０と１つ以上の追加のデバイスとの間の通信を容易にすることができる、任意のタイプ又は形態の通信デバイス又はアダプタを幅広く表す。例えば、特定の実施形態では、通信インターフェース４２２は、コンピューティングシステム４１０と、追加のコンピューティングシステムを含む私設又は公衆ネットワークとの間の通信を容易にし得る。通信インターフェース４２２の例としては、非限定的に、有線ネットワークインターフェース（ネットワークインターフェースカードなど）、無線ネットワークインターフェース（無線ネットワークインターフェースカードなど）、モデム、及び他の任意の好適なインターフェースが挙げられる。少なくとも１つの実施形態では、通信インターフェース４２２は、インターネットなどのネットワークへの直接リンクを介して、リモートサーバへの直接接続を提供し得る。通信インターフェース４２２はまた、例えば、ローカルエリアネットワーク（イーサネット（登録商標）ネットワークなど）、パーソナルエリアネットワーク、電話若しくはケーブルネットワーク、セルラー電話接続、衛星データ接続、又は他の任意の好適な接続を通して、リモートサーバへの接続を間接的に提供し得る。
【００６５】
特定の実施形態では、通信インターフェース４２２はまた、外部バス又は通信チャネルを介して、コンピューティングシステム４１０と１つ以上の追加のネットワーク又は記憶デバイスとの間の通信を容易にするように構成された、ホストアダプタを表し得る。ホストアダプタの例としては、非限定的に、小型コンピュータシステムインターフェース（ＳＣＳＩ）ホストアダプタ、ユニバーサルシリアルバス（ＵＳＢ）ホストアダプタ、米国電気電子学会（ＩＥＥＥ）１３９４ホストアダプタ、アドバンストテクノロジーアタッチメント（ＡＴＡ）、パラレルＡＴＡ（ＰＡＴＡ）、シリアルＡＴＡ（ＳＡＴＡ）、及び外部ＳＡＴＡ（ｅＳＡＴＡ）ホストアダプタ、ファイバーチャネルインターフェースアダプタ、イーサネット（登録商標）アダプタなどが挙げられる。通信インターフェース４２２はまた、コンピューティングシステム４１０が分散型又はリモートコンピューティングに関与することを可能にし得る。例えば、通信インターフェース４２２は、実行のためにリモートデバイスから命令を受信、又はリモートデバイスに命令を送信し得る。
【００６６】
図４に示すように、コンピューティングシステム４１０はまた、ディスプレイアダプタ４２６を介して通信基盤４１２に連結される少なくとも１つのディスプレイデバイス４２４を含み得る。ディスプレイデバイス４２４は、ディスプレイアダプタ４２６によって転送される情報を視覚的に表示することができる、任意のタイプ若しくは形態のデバイスを、一般に表す。同様に、ディスプレイアダプタ４２６は、ディスプレイデバイス４２４に表示するために、通信基盤４１２から（又は当該技術分野において既知であるように、フレームバッファから）グラフィックス、テキスト、及び他のデータを転送するように構成された、任意のタイプ若しくは形態のデバイスを、一般に表す。
【００６７】
図４に示すように、例示的なコンピューティングシステム４１０はまた、入力インターフェース４３０を介して通信基盤４１２に連結される少なくとも１つの入力デバイス４２８を含み得る。入力デバイス４２８は、コンピュータ又は人間のいずれかが生成した入力を、例示的なコンピューティングシステム４１０に提供することができる、任意のタイプ若しくは形態の入力デバイスを、一般に表す。入力デバイス４２８の例としては、限定されないが、キーボード、ポインティングデバイス、音声認識デバイス、又は他の任意の入力デバイスが挙げられる。
【００６８】
図４に示すように、例示的なコンピューティングシステム４１０はまた、記憶インターフェース４３４を介して通信基盤４１２に連結される、一次記憶デバイス４３２及びバックアップ記憶デバイス４３３を含み得る。記憶デバイス４３２及び４３３は、一般に、データ及び／又は他のコンピュータ可読命令を格納することができる、任意のタイプ若しくは形態の記憶デバイス又は媒体を表す。例えば、記憶デバイス４３２及び４３３は、磁気ディスクドライブ（例えば、いわゆるハードドライブ）、ソリッドステートドライブ、フロッピーディスクドライブ、磁気テープドライブ、光ディスクドライブ、フラッシュドライブなどであり得る。記憶インターフェース４３４は、一般に、記憶デバイス４３２及び４３３とコンピューティングシステム４１０の他の構成要素との間でデータを転送するための、任意のタイプ若しくは形態のインターフェース又はデバイスを表す。
【００６９】
特定の実施形態では、記憶デバイス４３２及び４３３は、コンピュータソフトウェア、データ、又は他のコンピュータ可読情報を格納するように構成された取外し可能な記憶ユニットから読み取る、及び／又はそれに書き込むように構成され得る。好適な取外し可能な記憶ユニットの例としては、非限定的に、フロッピーディスク、磁気テープ、光ディスク、フラッシュメモリデバイスなどが挙げられる。記憶デバイス４３２及び４３３はまた、コンピュータソフトウェア、データ、又は他のコンピュータ可読命令が、コンピューティングシステム４１０にロードされることを可能にする、他の同様の構造体又はデバイスを含み得る。例えば、記憶デバイス４３２及び４３３は、ソフトウェア、データ、又は他のコンピュータ可読情報を読み取るように、及びこれを書き込むように構成され得る。記憶デバイス４３２及び４３３はまた、コンピューティングシステム４１０の一部であってもよく、又は他のインターフェースシステムを介してアクセスされる別個のデバイスであってもよい。
【００７０】
他の多くのデバイス又はサブシステムが、コンピューティングシステム４１０に接続され得る。反対に、図４に示す構成要素及びデバイスの全てが、本明細書に記載及び／又は図示される実施形態を実践するために存在する必要があるわけではない。上記で言及したデバイス及びサブシステムはまた、図４に示されるのとは異なる方法で相互接続され得る。コンピューティングシステム４１０はまた、任意の数のソフトウェア、ファームウェア、及び／又はハードウェアの構成を用い得る。例えば、本明細書で開示する例示的な実施形態の１つ以上は、コンピュータ可読媒体上で、コンピュータプログラム（コンピュータソフトウェア、ソフトウェアアプリケーション、コンピュータ可読命令、又はコンピュータ制御論理とも称される）としてコード化されてもよい。「コンピュータ可読媒体」という用語は、本明細書で使用するとき、一般に、コンピュータ可読命令を格納又は保有することができる、任意の形態のデバイス、キャリア、又は媒体を指す。コンピュータ可読媒体の例としては、非限定的に、搬送波などの伝送型媒体、並びに磁気記憶媒体（例えば、ハードディスクドライブ、テープドライブ、及びフロッピーディスク）、光学記憶媒体（例えば、コンパクトディスク（ＣＤ）、デジタルビデオディスク（ＤＶＤ）、及びブルーレイ（BLU-RAY（登録商標））ディスク）、電子記憶媒体（例えば、ソリッドステートドライブ及びフラッシュメディア）、及び他の分散システムなどの非一時的媒体が挙げられる。
【００７１】
コンピュータプログラムを包含するコンピュータ可読媒体は、コンピューティングシステム４１０にロードされ得る。コンピュータ可読媒体に格納されたコンピュータプログラムの全て又は一部は、次に、システムメモリ４１６に、及び／又は記憶デバイス４３２及び４３３の様々な部分に格納され得る。プロセッサ４１４によって実行されると、コンピューティングシステム４１０にロードされたコンピュータプログラムは、プロセッサ４１４に、本明細書に記載及び／又は図示される例示的な実施形態のうち１つ以上の機能を実施させ、及び／又はそれらを実施するための手段となり得る。追加的に又は代替案として、本明細書に記載及び／又は図示される例示的な実施形態の１つ以上は、ファームウェア及び／又はハードウェアに実装されてもよい。例えば、コンピューティングシステム４１０は、本明細書に開示される例示的な実施形態のうち１つ以上を実装するように適合された特定用途向け集積回路（ＡＳＩＣ）として構成され得る。
【００７２】
図５は、クライアントシステム５１０、５２０、及び５３０、並びにサーバ５４０及び５４５がネットワーク５５０に連結され得る、例示的なネットワークアーキテクチャ５００のブロック図である。上記に詳述したように、ネットワークアーキテクチャ５００の全て又は一部は、単独で又は他の要素と組み合わせて、本明細書に開示されるステップのうちの１つ以上（図３に示されるステップのうちの１つ以上等）を実施し得るが、及び／又はそれを実施するための手段となり得る。ネットワークアーキテクチャ５００の全て又は一部はまた、本開示に記載される他のステップ及び特徴を実施するのに使用され得るか、及び／又はそれを実施するための手段となり得る。
【００７３】
クライアントシステム５１０、５２０、及び５３０は、一般に、図４の例示的なコンピューティングシステム４１０など、任意のタイプ若しくは形態のコンピューティングデバイス又はシステムを表す。同様に、サーバ５４０及び５４５は、様々なデータベースサービスを提供し、及び／又は特定のソフトウェアアプリケーションを実行するように構成された、アプリケーションサーバ又はデータベースサーバなどのコンピューティングデバイス又はシステムを、一般に表す。ネットワーク５５０は、例えばイントラネット、ＷＡＮ、ＬＡＮ、ＰＡＮ、又はインターネットを含む、任意の電気通信又はコンピュータネットワークを、一般に表す。一実施例では、クライアントシステム５１０、５２０、及び／若しくは５３０、並びに／又はサーバ５４０及び／若しくは５４５は、図１からのシステム１００の全て、又は一部を含み得る。
【００７４】
図５に示すように、１つ以上の記憶デバイス５６０（１）〜（Ｎ）はサーバ５４０に直接取り付けられてもよい。同様に、１つ以上の記憶デバイス５７０（１）〜（Ｎ）は、サーバ５４５に直接取り付けられ得る。記憶デバイス５６０（１）〜（Ｎ）及び記憶デバイス５７０（１）〜（Ｎ）は、データ及び／又は他のコンピュータ可読命令を格納することができる、任意のタイプ若しくは形態の記憶デバイス又は媒体を、一般に表す。特定の実施形態では、記憶デバイス５６０（１）〜（Ｎ）及び記憶デバイス５７０（１）〜（Ｎ）は、ネットワークファイルシステム（ＮＦＳ）、サーバメッセージブロック（ＳＭＢ）、又は共通インターネットファイルシステム（ＣＩＦＳ）などの様々なプロトコルを使用して、サーバ５４０及び５４５と通信するように構成されたネットワーク接続ストレージ（ＮＡＳ）デバイスを表し得る。
【００７５】
サーバ５４０及び５４５はまた、ストレージエリアネットワーク（ＳＡＮ）ファブリック５８０に接続され得る。ＳＡＮファブリック５８０は、一般に、複数の記憶デバイス間の通信を容易にすることができる、任意のタイプ若しくは形態のコンピュータネットワーク又はアーキテクチャを表す。ＳＡＮファブリック５８０は、サーバ５４０及び５４５と、複数の記憶デバイス５９０（１）〜（Ｎ）及び／又はインテリジェント記憶アレイ５９５との間の通信を容易にし得る。ＳＡＮファブリック５８０はまた、記憶デバイス５９０（１）〜（Ｎ）及びインテリジェント記憶アレイ５９５が、クライアントシステム５１０、５２０、及び５３０にローカルで取り付けられたデバイスとして現れるような方式で、ネットワーク５５０並びにサーバ５４０及び５４５を介して、クライアントシステム５１０、５２０、及び５３０と、記憶デバイス５９０（１）〜（Ｎ）及び／又はインテリジェント記憶アレイ５９５との間の通信を容易にし得る。記憶デバイス５６０（１）〜（Ｎ）及び記憶デバイス５７０（１）〜（Ｎ）と同様に、記憶デバイス５９０（１）〜（Ｎ）及びインテリジェント記憶アレイ５９５は、データ及び／又は他のコンピュータ可読命令を格納することができる任意のタイプ若しくは形態の記憶デバイス又は媒体を、一般に表す。
【００７６】
特定の実施形態では、また図４の例示的なコンピューティングシステム４１０を参照すると、図４の通信インターフェース４２２などの通信インターフェースは、それぞれのクライアントシステム５１０、５２０、及び５３０とネットワーク５５０との間の接続を提供するために使用され得る。クライアントシステム５１０、５２０、及び５３０は、例えば、ウェブブラウザ又は他のクライアントソフトウェアを使用して、サーバ５４０又は５４５上の情報にアクセスすることが可能であり得る。かかるソフトウェアは、クライアントシステム５１０、５２０、及び５３０が、サーバ５４０、サーバ５４５、記憶デバイス５６０（１）〜（Ｎ）、記憶デバイス５７０（１）〜（Ｎ）、記憶デバイス５９０（１）〜（Ｎ）、又はインテリジェント記憶アレイ５９５によってホストされるデータにアクセスすることを可能にし得る。図５は、データを交換するために（インターネットなどの）ネットワークを使用することを示しているが、本明細書に記載及び／又は図示される実施形態は、インターネット又は任意の特定のネットワークベースの環境に限定されない。
【００７７】
少なくとも１つの実施形態では、本明細書に開示される例示的な実施形態のうち１つ以上の全て又は一部は、コンピュータプログラムとしてコード化され、サーバ５４０、サーバ５４５、記憶デバイス５６０（１）〜（Ｎ）、記憶デバイス５７０（１）〜（Ｎ）、記憶デバイス５９０（１）〜（Ｎ）、インテリジェント記憶アレイ５９５、又はこれらの任意の組み合わせ上にロードされ、これらによって実行され得る。本明細書に開示される例示的な実施形態のうち１つ以上の全て又は一部はまた、コンピュータプログラムとしてコード化され、サーバ５４０に記憶され、サーバ５４５によって作動し、ネットワーク５５０上でクライアントシステム５１０、５２０、及び５３０に配信されてもよい。
【００７８】
上で詳述されたように、コンピューティングシステム４１０及び／又はネットワークアーキテクチャ５００の１つ以上の構成要素は、それぞれ単独で、又は他の要素と組み合わせて、未知の脆弱性を検出する例示的な方法の１つ以上のステップを実施し得るか、及び／又は実施するための手段であり得る。
【００７９】
前述の開示は、特定のブロック図、フローチャート、及び実施例を使用して様々な実施形態を記載しているが、本明細書に記載及び／又は図示されるそれぞれのブロック図の構成要素、フローチャートのステップ、動作、及び／又は構成要素は、個別にかつ／又は集合的に、広範なハードウェア、ソフトウェア、又はファームウェア（若しくはそれらの任意の組み合わせ）の構成を使用して実現されてもよい。それに加えて、同じ機能性を達成するように他の多くのアーキテクチャを実現することができるので、他の構成要素内に包含される構成要素のあらゆる開示は、本質的に例示と見なされるべきである。
【００８０】
一部の実施例では、図１の例示的なシステム１００の全て又は一部は、クラウドコンピューティング環境又はネットワークベースの環境の一部を表してもよい。クラウドコンピューティング環境は、インターネットを介して、様々なサービス及びアプリケーションを提供してもよい。これらのクラウドベースのサービス（例えば、サービスとしてのソフトウェア、サービスとしてのプラットフォーム、サービスとしての基盤など）は、ウェブブラウザ又は他のリモートインターフェースを通してアクセス可能であってもよい。本明細書に記載する様々な機能は、リモートデスクトップ環境又は他の任意のクラウドベースのコンピューティング環境を通して提供されてもよい。
【００８１】
様々な実施形態では、図１の例示的なシステム１００の全て又は一部は、クラウドベースのコンピューティング環境内におけるマルチテナンシーを容易にしてもよい。換言すれば、本明細書に記載するソフトウェアモジュールは、本明細書に記載する機能の１つ以上に対するマルチテナンシーを容易にするように、コンピューティングシステム（例えば、サーバ）を構成してもよい。例えば、本明細書に記載するソフトウェアモジュールの１つ以上は、２つ以上のクライアント（例えば、顧客）がサーバ上で作動しているアプリケーションを共有するのを可能にするように、サーバをプログラムしてもよい。このようにプログラムされたサーバは、複数の顧客（即ち、テナント）の間で、アプリケーション、オペレーティングシステム、処理システム、及び／又は記憶システムを共有してもよい。本明細書に記載するモジュールの１つ以上はまた、ある顧客が別の顧客のデータ及び／又は設定情報にアクセスできないように、顧客ごとにマルチテナントアプリケーションのデータ及び／又は設定情報を分割してもよい。
【００８２】
様々な実施形態によれば、図１の例示的なシステム１００の全て又は一部は仮想環境内で実現されてもよい。例えば、本明細書に記載するモジュール及び／又はデータは、仮想機械内で常駐及び／又は実行してもよい。本明細書で使用するとき、「仮想機械」という用語は、一般に、仮想機械マネージャ（例えば、ハイパーバイザ）によってコンピューティングハードウェアから抽出される、任意のオペレーティングシステム環境を指す。それに加えて、又は別の方法として、本明細書に記載するモジュール及び／又はデータは、仮想化層内で常駐及び／又は実行してもよい。本明細書で使用するとき、「仮想化層」という用語は、一般に、オペレーティングシステム環境にオーバーレイする、並びに／あるいはそこから抽出される、任意のデータ層及び／又はアプリケーション層を指す。仮想化層は、基礎となる基本オペレーティングシステムの一部であるかのように仮想化層を提示する、ソフトウェア仮想化ソリューション（例えば、ファイルシステムフィルタ）によって管理されてもよい。例えば、ソフトウェア仮想化ソリューションは、最初に基本ファイルシステム及び／又はレジストリ内の場所に方向付けられる呼び出しを、仮想化層内の場所にリダイレクトしてもよい。
【００８３】
一部の実施例では、図１の例示的なシステム１００の全て又は一部は、モバイルコンピューティング環境の一部を表してもよい。モバイルコンピューティング環境は、携帯電話、タブレットコンピュータ、電子ブックリーダー、携帯情報端末、ウェアラブルコンピューティングデバイス（例えば、ヘッドマウントディスプレイを備えたコンピューティングデバイス、スマートウォッチなど）などを含む、広範なモバイルコンピューティングデバイスによって実現されてもよい。一部の実施例において、モバイルコンピューティング環境は、例えば、バッテリ電力への依存、任意の所与の時間での１つのみのフォアグラウンドアプリケーションの提示、リモート管理特性、タッチスクリーン特性、位置及び移動データ（例えば、グローバルポジショニングシステム、ジャイロスコープ、加速度計などによって提供される）、システムレベルの構成への修正を制限する、及び／又は第３者のソフトウェアが他のアプリケーションの挙動を検査する能力を限定する制限されたプラットフォーム、アプリケーションのインストールを（例えば、認可されたアプリケーションストアからのみ生じるように）制限する制御などを含む、１つ以上の個別の特性を有することができる。本明細書で説明される様々な機能は、モバイルコンピューティング環境に対して提供され得る、及び／又はモバイルコンピューティング環境と相互作用し得る。
【００８４】
それに加えて、図１の例示的なシステム１００の全て又は一部は、情報管理のための１つ以上のシステムの部分を表してもよく、それと相互作用してもよく、それによって生成されるデータを消費してもよく、かつ／又はそれによって消費されるデータを生成してもよい。本明細書で使用するとき、「情報管理」という用語は、データの保護、組織化、及び／又は記憶を指してもよい。情報管理のためのシステムの例としては、非限定的に、記憶システム、バックアップシステム、アーカイブシステム、複製システム、高可用性システム、データ検索システム、仮想化システムなどを挙げることができる。
【００８５】
一部の実施形態では、図１の例示的なシステム１００の全て又は一部は、情報セキュリティのための１つ以上のシステムの部分を表してもよく、それによって保護されるデータを生成してもよく、かつ／又はそれと通信してもよい。本明細書で使用するとき、「情報セキュリティ」という用語は、保護されたデータに対するアクセスの制御を指してもよい。情報セキュリティのためのシステムの例としては、非限定的に、管理されたセキュリティサービスを提供するシステム、データ損失防止システム、本人認証システム、アクセス制御システム、暗号化システム、ポリシー遵守システム、侵入検出及び防止システム、電子証拠開示システムなどを挙げることができる。
【００８６】
一部の実施例によれば、図１の例示的なシステム１００の全て又は一部は、エンドポイントセキュリティのための１つ以上のシステムの部分を表してもよく、それと通信してもよく、かつ／又はそれから保護を受けてもよい。本明細書で使用するとき、「エンドポイントセキュリティ」という用語は、不正及び／若しくは違法な使用、アクセス、並びに／又は制御からのエンドポイントシステムの保護を指してもよい。エンドポイント保護のためのシステムの例としては、非限定的に、アンチマルウェアシステム、ユーザー認証システム、暗号化システム、プライバシーシステム、スパムフィルタリングサービスなどを挙げることができる。
【００８７】
本明細書に記載及び／又は図示されるプロセスパラメータ及びステップの順序は、単なる例として与えられるものであり、所望に応じて変更することができる。例えば、本明細書に図示及び／又は記載されるステップは特定の順序で図示又は考察されることがあるが、これらのステップは、必ずしも図示又は考察される順序で実施される必要はない。本明細書に記載及び／又は図示される様々な例示的な方法はまた、本明細書に記載若しくは図示されるステップの１つ以上を省略するか、又は開示されるものに加えて追加のステップを含んでもよい。
【００８８】
様々な実施形態を、完全に機能的なコンピューティングシステムの文脈で本明細書に記載及び／又は図示してきたが、これらの例示的な実施形態の１つ以上は、実際に配布を実施するのに使用されるコンピュータ可読媒体の特定のタイプにかかわらず、様々な形態のプログラム製品として配布されてもよい。本明細書に開示される実施形態はまた、特定のタスクを実施するソフトウェアモジュールを使用して実現されてもよい。これらのソフトウェアモジュールは、コンピュータ可読記憶媒体又はコンピューティングシステムに格納されてもよい、スクリプト、バッチ、若しくは他の実行可能ファイルを含んでもよい。一部の実施形態では、これらのソフトウェアモジュールは、本明細書に開示される例示的な実施形態の１つ以上を実施するようにコンピューティングシステムを構成してもよい。
【００８９】
それに加えて、本明細書に記載するモジュールの１つ以上は、データ、物理的デバイス、及び／又は物理的デバイスの表現を、１つの形態から別の形態へと変換してもよい。例えば、本明細書に列挙されるモジュールの１つ以上は、変換されるべきテレメトリデータを受信し、テレメトリデータを変換し、変換の結果を出力してコンピューティングプロセスが脆弱性を有するかどうかを判定し、脆弱性に対処するために変換の結果を使用し、将来の使用及び／又は参照のために変換の結果を格納してもよい。それに加えて、又は別の方法として、本明細書に列挙されるモジュールの１つ以上は、コンピューティングデバイス上で実行し、コンピューティングデバイスにデータを格納し、並びに／あるいは別の方法でコンピューティングデバイスと相互作用することによって、プロセッサ、揮発性メモリ、不揮発性メモリ、及び／又は物理的コンピューティングデバイスの他の任意の部分を、１つの形態から別の形態へと変換してもよい。
【００９０】
上述の記載は、本明細書に開示される例示的な実施形態の様々な態様を他の当業者が最良に利用するのを可能にするために提供されてきた。この例示的な記載は、網羅的であることを意図するものではなく、又は開示される任意の正確な形態に限定することを意図するものではない。本開示の趣旨及び範囲から逸脱することなく、多くの修正及び変形が可能である。本明細書に開示される実施形態は、あらゆる点で例示的であり、限定的ではないものと見なされるべきである。本開示の範を決定する際に、添付の特許請求の範囲及びそれらの等価物を参照するべきである。
【００９１】
別途記載のない限り、「〜に接続される」及び「〜に連結される」という用語（並びにそれらの派生語）は、本明細書及び特許請求の範囲で使用するとき、直接的接続及び間接的接続（即ち、他の要素若しくは構成要素を介する）の両方を許容するものとして解釈されるものである。それに加えて、「ａ」又は「ａｎ」という用語は、本明細書及び特許請求の範囲で使用するとき、「〜のうち少なくとも１つ」を意味するものとして解釈されるものである。最後に、簡潔にするため、「含む」及び「有する」という用語（並びにそれらの派生語）は、本明細書及び特許請求の範囲で使用するとき、「備える」という単語と互換性があり、同じ意味を有する。
【図１】
0006680437.tif 000002
【図２】
0006680437.tif 000003
【図３】
0006680437.tif 000004
【図４】
0006680437.tif 000005
【図５】
0006680437.tif 000006