(57)【要約】  説明されるシステムおよび方法は、特にハードウェア仮想化プラットフォームにおいて、セキュリティ関連イベントの効率的な分析を可能にする。いくつかの実施形態において、通知ハンドラは、仮想マシンの内部のイベントの発生を検出し、個々のイベントをセキュリティソフトウェアに伝達する。セキュリティソフトウェアは、次に、個々のイベントを、行動署名および例外署名のコレクションにマッチさせることを試みる。例外は、＜イベント、エンティティ＞のタプルによって満たされるときに、個々のエンティティが悪意あるものではないことを指示する条件のセットを含む。いくつかの実施形態において、例外のマッチングの一部は、同期的に（すなわち、個々のイベントをトリガしたエンティティの実行が一時中断される間に）実施され、一方、例外のマッチングの別の部分は、非同期的に（すなわち、トリガエンティティが実行を再開することを許容された後に）実施される。
2018520446.tif 000002
【特許請求の範囲】
【請求項１】
ハードウェアプロセッサおよびメモリを備えるホストシステムであって、前記ハードウェアプロセッサは、対象エンティティ、同期例外アナライザおよび非同期例外アナライザを実行するように構成され、前記ハードウェアプロセッサは、
前記対象エンティティの実行によって引き起こされたイベントの発生を検出することに応答して、前記対象エンティティの前記実行を一時中断することと、
前記対象エンティティの実行を一時中断することに応答して、前記同期例外アナライザを実行することに切り替えることと
を行うようにさらに構成され、
前記同期例外アナライザは、
前記対象エンティティが悪意あるものである疑いがあるかどうかを、前記イベントに従って判定することと、
それに応じて、前記対象エンティティが悪意あるものである疑いのあるときに、複数のルール例外署名からルール例外署名を選択的に取り出すことであって、当該ルール例外署名は、前記イベントに従って取り出され、当該ルール例外署名は、第１の条件のエンコーディングおよび第２の条件のエンコーディングを含む、取り出すことと、
前記ルール例外署名を取り出すことに応答して、前記第１の条件が満たされるかどうかを、前記イベントに従いかつ前記対象エンティティに従って判定することと、
前記第１の条件が満たされるかどうかを判定することに応答して、前記第１の条件が満たされるときに、前記ハードウェアプロセッサに前記対象エンティティの実行を再開させることと、
前記第１の条件が満たされるかどうかを判定することに応答して、前記第１の条件が満たされないときに、前記対象エンティティは悪意あるものであると決定することと
を行うように構成され、
前記非同期例外アナライザは、
前記ハードウェアプロセッサが前記対象エンティティの実行を再開することに応答して、前記第２の条件が満たされるかどうかを、前記イベントに従いかつ前記対象エンティティに従って判定することと、
前記第２の条件が満たされるかどうかを判定することに応答して、前記第２の条件が満たされるときに、前記対象エンティティは悪意あるものではないと決定することと、
前記第２の条件が満たされるかどうかを判定することに応答して、前記第２の条件が満たされないときに、前記対象エンティティは悪意あるものであると決定することと
を行うように構成される、
ホストシステム。
【請求項２】
請求項１に記載のホストシステムであって、
前記同期例外アナライザは、前記第１の条件が満たされるかどうかを判定することに応答して、前記第１の条件が満たされるときに、分析リクエストをリクエストの待ち行列に挿入するようにさらに構成され、前記分析リクエストは、前記第２の条件に従い、前記イベントに従い、かつ、さらに前記対象エンティティに従って構築され、
前記非同期例外アナライザは、前記第２の条件が満たされるかどうかを判定することに備えて、前記リクエストの待ち行列から前記分析リクエストを取り除くようにさらに構成される、
ホストシステム。
【請求項３】
請求項１に記載のホストシステムであって、前記ハードウェアプロセッサは、
前記対象エンティティを終了する試みを検出することに応答して、前記試みを一時中断することと、
前記試みを一時中断することに応答して、前記非同期例外アナライザに接続された終了ウォッチャを実行することに切り替えることと
を行うようにさらに構成され、前記終了ウォッチャは、
前記対象エンティティに従って構築された第２の分析リクエストを求めて、前記リクエストの待ち行列を検索することであって、前記第２の分析リクエストは第３の条件を指示する、検索することと、
前記非同期例外アナライザを起動して前記第２の分析リクエストを処理することと、
前記非同期例外アナライザを起動することに応答して、前記非同期例外アナライザが、前記第３の条件は満たされると決定するときに、前記ハードウェアプロセッサに前記対象エンティティを終了する前記試みを再開させることと
を行うように構成される、
ホストシステム。
【請求項４】
請求項１に記載のホストシステムであって、前記対象エンティティは、前記ホストシステムによって公開されたゲスト仮想マシンの内部で実行され、前記非同期例外アナライザは、前記ゲスト仮想マシンの外側で実行される、ホストシステム。
【請求項５】
請求項１に記載のホストシステムであって、前記非同期例外アナライザは、前記ゲストシステムによって公開されたセキュリティ仮想マシンの内部で実行され、前記セキュリティ仮想マシンは、前記ゲスト仮想マシンと同時に実行される、ホストシステム。
【請求項６】
請求項１に記載のホストシステムであって、前記ルール例外署名は、前記第１の条件が満たされるかどうかを判定することが、前記第２の条件が満たされるかどうかを判定することより、実質的に低い計算的コストを要するように構成される、ホストシステム。
【請求項７】
請求項１に記載のホストシステムであって、前記イベントは、メモリアクセス許可に違反する手法で、前記メモリにアクセスする試みを含む、ホストシステム。
【請求項８】
請求項１に記載のホストシステムであって、
前記第１の条件が満たされるかどうかを判定することは、前記対象エンティティがコードを第２のエンティティにインジェクトしたかどうかを判定することを含み、
前記第２の条件が満たされるかどうかを判定することは、前記コードが悪意あるものであるかどうかを判定することを含む、
ホストシステム。
【請求項９】
ホストシステムのハードウェアプロセッサによって実行されるときに、前記ホストシステムに同期例外アナライザおよび非同期例外アナライザを形成させるプロセッサ命令を格納する非一時的コンピュータ可読媒体であって、前記ハードウェアプロセッサは、
前記対象エンティティの実行によって引き起こされたイベントの発生を検出することに応答して、前記対象エンティティの前記実行を一時中断することと、
前記対象エンティティの実行を一時中断することに応答して、前記同期例外アナライザを実行することに切り替えることと
を行うように構成され、
前記同期例外アナライザは、
前記対象エンティティが悪意の疑いがあるかどうかを、前記イベントに従って判定することと、
それに応じて、前記対象エンティティが悪意の疑いのあるときに、複数のルール例外署名からルール例外署名を選択的に取り出すことであって、当該ルール例外署名は、前記イベントに従って取り出され、当該ルール例外署名は、第１の条件のエンコーディングおよび第２の条件のエンコーディングを含む、取り出すことと、
前記ルール例外署名を取り出すことに応答して、前記第１の条件が満たされるかどうかを、前記イベントに従いかつ前記対象エンティティに従って判定することと、
前記第１の条件が満たされるかどうかを判定することに応答して、前記第１の条件が満たされるときに、前記ハードウェアプロセッサに前記対象エンティティの実行を再開させることと、
前記第１の条件が満たされるかどうかを判定することに応答して、前記第１の条件が満たされないときに、前記対象エンティティは悪意あるものであると決定することと
を行うように構成され、
前記非同期例外アナライザは、
前記ハードウェアプロセッサが前記対象エンティティの実行を再開することに応答して、前記第２の条件が満たされるかどうかを、前記イベントに従いかつ前記対象エンティティに従って判定することと、
前記第２の条件が満たされるかどうかを判定することに応答して、前記第２の条件が満たされるときに、前記対象エンティティは悪意あるものではないと決定することと、
前記第２の条件が満たされるかどうかを判定することに応答して、前記第２の条件が満たされないときに、前記対象エンティティは悪意あるものであると決定することと
を行うように構成される、
非一時的コンピュータ可読媒体。
【請求項１０】
請求項９に記載のコンピュータ可読媒体であって、
前記同期例外アナライザは、前記第１の条件が満たされるかどうかを判定することに応答して、前記第１の条件が満たされるときに、分析リクエストをリクエストの待ち行列に挿入するようにさらに構成され、前記分析リクエストは、前記第２の条件に従い、前記イベントに従い、かつ、さらに前記対象エンティティに従って構築され、
前記非同期例外アナライザは、前記第２の条件が満たされるかどうかを判定することに備えて、前記リクエストの待ち行列から前記分析リクエストを取り除くようにさらに構成される、
コンピュータ可読媒体。
【請求項１１】
請求項１０に記載のコンピュータ可読媒体であって、前記ハードウェアプロセッサは、
前記対象エンティティを終了する試みを検出することに応答して、前記試みを一時中断することと、
前記試みを一時中断することに応答して、前記非同期例外アナライザに接続された終了ウォッチャを実行することに切り替えることと
を行うようにさらに構成され、前記終了ウォッチャは、
前記対象エンティティに従って構築された第２の分析リクエストを求めて、前記リクエストの待ち行列を検索することであって、前記第２の分析リクエストは第３の条件を指示する、検索することと、
前記非同期例外アナライザを起動して前記第２の分析リクエストを処理することと、
前記非同期例外アナライザを起動することに応答して、前記非同期例外アナライザが、前記第３の条件は満たされると決定するときに、前記ハードウェアプロセッサに前記対象エンティティを終了する前記試みを再開させることと
を行うように構成される、
コンピュータ可読媒体。
【請求項１２】
請求項９に記載のコンピュータ可読媒体であって、前記対象エンティティは、前記ホストシステムによって公開されたゲスト仮想マシンの内部で実行され、前記非同期例外アナライザは、前記ゲスト仮想マシンの外側で実行される、コンピュータ可読媒体。
【請求項１３】
請求項１２に記載のコンピュータ可読媒体であって、前記非同期例外アナライザは、前記ゲストシステムによって公開されたセキュリティ仮想マシンの内部で実行され、前記セキュリティ仮想マシンは、前記ゲスト仮想マシンと同時に実行される、コンピュータ可読媒体。
【請求項１４】
請求項９に記載のコンピュータ可読媒体であって、前記ルール例外署名は、前記第１の条件が満たされるかどうかを判定することが、前記第２の条件が満たされるかどうかを判定することより、実質的に低い計算的コストを要するように構成される、コンピュータ可読媒体。
【請求項１５】
請求項９に記載のコンピュータ可読媒体であって、前記イベントは、メモリアクセス許可に違反する手法で、前記ホストシステムのメモリにアクセスする試みを含む、コンピュータ可読媒体。
【請求項１６】
請求項９に記載のコンピュータ可読媒体であって、
前記第１の条件が満たされるかどうかを判定することは、前記対象エンティティがコードを第２のエンティティにインジェクトしたかどうかを判定することを含み、
前記第２の条件が満たされるかどうかを判定することは、前記コードが悪意あるものであるかどうかを判定することを含む、
コンピュータ可読媒体。
【請求項１７】
コンピュータセキュリティ脅威に対してホストシステムを保護する方法であって、前記ホストシステムは、ハードウェアプロセッサおよびメモリを備え、前記方法は、
前記ハードウェアプロセッサを用いて、対象エンティティの実行によって引き起こされたイベントの発生を検出するステップと、
前記イベントの前記発生を検出することに応答して、前記ハードウェアプロセッサを用いて、前記対象エンティティの前記実行を一時中断するステップと、
前記対象エンティティの前記実行を一時中断することに応答して、前記ハードウェアプロセッサを用いて、同期例外アナライザを実行することに切り替えるステップであって、前記同期例外アナライザは、
前記対象エンティティが、悪意の疑いがあるかどうかを、前記イベントに従って判定することと、
それに応じて、前記対象エンティティが悪意の疑いのあるときに、複数のルール例外署名からルール例外署名を選択的に取り出すことであって、当該ルール例外署名は、前記イベントに従って取り出され、当該ルール例外署名は、第１の条件のエンコーディングおよび第２の条件のエンコーディングを含む、取り出すことと、
前記ルール例外署名を取り出すことに応答して、前記第１の条件が満たされるかどうかを、前記イベントに従いかつ前記対象エンティティに従って判定することと、
前記第１の条件が満たされるかどうかを判定することに応答して、前記第１の条件が満たされるときに、前記ハードウェアプロセッサに前記対象エンティティの実行を再開させることと、
前記第１の条件が満たされるかどうかを判定することに応答して、前記第１の条件が満たされないときに、前記対象エンティティは悪意あるものであると決定することと
を行うように構成される、ステップと、
前記ハードウェアプロセッサが前記対象エンティティの実行を再開することに応答して、前記ハードウェアプロセッサを用いて、前記第２の条件が満たされるかどうかを、前記イベントに従いかつ前記対象エンティティに従って判定するステップと、
前記第２の条件が満たされるかどうかを判定することに応答して、前記第２の条件が満たされるときに、前記対象エンティティは悪意あるものではないと決定するステップと、
前記第２の条件が満たされるかどうかを判定することに応答して、前記第２の条件が満たされないときに、前記対象エンティティは悪意あるものであると決定するステップと
を含む、方法。
【請求項１８】
請求項１７に記載の方法であって、
前記第１の条件が満たされるかどうかを判定することに応答して、前記第１の条件が満たされるときに、前記ハードウェアプロセッサを用いて、分析リクエストをリクエストの待ち行列に挿入するステップであって、前記分析リクエストは、前記第２の条件に従い、前記イベントに従い、かつ、さらに前記対象エンティティに従って構築される、ステップと、
前記第２の条件が満たされるかどうかを判定するステップに備えて、前記ハードウェアプロセッサを用いて、前記待ち行列から前記分析リクエストを取り除くステップと
をさらに含む方法。
【請求項１９】
請求項１８に記載の方法であって、
前記対象エンティティを終了する試みを検出することに応答して、前記ハードウェアプロセッサを用いて、前記試みを一時中断するステップと、
前記試みを一時中断することに応答して、前記ハードウェアプロセッサを用いて、前記対象エンティティに従って構築された第２の分析リクエストを求めて、前記リクエストの待ち行列を検索するステップであって、前記第２の分析リクエストは第３の条件を指示する、ステップと、
前記第２の分析リクエストを求めて検索することに応答して、前記第３の条件が満たされるかどうかを前記対象エンティティに従って判定するステップと、
それに応じて、前記第３の条件が満たされるときに、前記ハードウェアプロセッサを用いて、前記対象エンティティを終了するステップと
をさらに含む方法。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願
[0001]本出願は、２０１５年７月１４日に出願の「Ｃｏｍｐｕｔｅｒ  Ｓｅｃｕｒｉｔｙ  Ｓｙｓｔｅｍｓ  ａｎｄ  Ｍｅｔｈｏｄｓ  Ｕｓｉｎｇ  Ａｓｙｎｃｈｒｏｎｏｕｓ  Ｉｎｔｒｏｓｐｅｃｔｉｏｎ  Ｅｘｃｅｐｔｉｏｎｓ（非同期イントロスペクション例外を使用するコンピュータセキュリティシステムおよび方法）」という名称の米国仮特許出願第６２／１９２，３８４号の出願日の利益を主張するものであり、これらの全内容が本明細書に参照により援用される。
【０００２】
[0002]本発明は、コンピュータセキュリティシステムおよび方法に関し、詳細には、コンピュータセキュリティ脅威からハードウェア仮想化環境を保護するためのシステムおよび方法に関する。
【背景技術】
【０００３】
[0003]マルウェアとしても知られる悪意あるソフトウェアは、世界中の非常に多くのコンピュータシステムに影響を及ぼす。コンピュータウイルス、ワーム、ルートキット、スパイウェア、および不要なアドウェアなどのその多くの形式で、マルウェアは、何百万ものコンピュータユーザに深刻なリスクをもたらし、中でも、データおよび機密情報の喪失、個人情報の盗難、ならびに生産性の喪失に対してコンピュータユーザを脆弱にする。
【０００４】
[0004]コンピュータセキュリティソフトウェアは、悪意あるソフトウェアからコンピュータシステムを保護するために使用されることがある。マルウェアを検出し、退治する、通常使用される方法は、署名のマッチングおよび行動論的方法を含む。署名に基づいた方法は、対象のソフトウェアエンティティのコードの一節を、悪意あることが知られるソフトウェアから抽出されたコードの断片のコレクションにマッチさせることを試みる。行動論的方法は、一般に、対象のソフトウェアエンティティによって引き起こされる、または対象のソフトウェアエンティティの実行中に発生するイベントの発生を検出すること、および個々のイベントを分析して、個々のイベントが潜在的なセキュリティ脅威を指示するかどうかを判定することを含む。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
[0005]従来のイベント検出は、典型的には、当技術分野でフッキングとして知られる方法のクラスに依存する。このような方法は、しばしば脆弱であり、悪意あるソフトウェアによって妨害されることがある。その上、従来の行動論的方法は、通例、個々のイベントが悪意の指標について分析される間、検出されたイベントを引き起こしたエンティティの実行を一時中断する。このような一時中断は、特に、セキュリティソフトウェアが、保護された仮想マシンの外側で実行するハードウェア仮想化構成において、ユーザエクスペリエンスに悪い影響を与えることがある。
【０００６】
[0006]コンピュータセキュリティシステムおよび方法の効率性を改善することに、ならびに、特に、イベント検出および分析に関連した上記の欠点に対処するシステムおよび方法を開発することに継続的な関心がある。
【課題を解決するための手段】
【０００７】
[0007]１つの態様によれば、ホストシステムは、ハードウェアプロセッサおよびメモリを備え、ハードウェアプロセッサは、対象エンティティ、同期例外アナライザ、および非同期例外アナライザを実行するように構成される。ハードウェアプロセッサは、対象エンティティの実行によって引き起こされたイベントの発生を検出することに応答して、対象エンティティの実行を一時中断することと、対象エンティティの実行を一時中断することに応答して、同期例外アナライザを実行することに切り替えることとを行うようにさらに構成される。同期例外アナライザは、対象エンティティが悪意あるものである疑いがあるかどうかを、イベントに従って判定するように構成される。同期例外アナライザは、それに応じて、対象エンティティが悪意あるものである疑いのあるとき、複数のルール例外署名から１つのルール例外署名を選択的に取り出すことであって、ルール例外署名は、イベントに従って取り出され、ルール例外署名は、第１の条件のエンコーディングおよび第２の条件のエンコーディングを含む、取り出すことを行うようにさらに構成される。同期例外アナライザは、例外署名を取り出すことに応答して、第１の条件が満たされるかどうかを、イベントに従って、および対象エンティティに従って判定するようにさらに構成される。第１の条件が満たされるかどうかを判定することに応答して、第１の条件が満たされるとき、同期例外アナライザは、ハードウェアプロセッサに対象エンティティの実行を再開させるようにさらに構成される。同期例外アナライザは、第１の条件が満たされるかどうかを判定することに応答して、第１の条件が満たされないとき、対象エンティティが悪意あるものであることを決定するようにさらに構成される。非同期例外アナライザは、ハードウェアプロセッサが対象エンティティの実行を再開することに応答して、第２の条件が満たされるかどうかを、イベントに従って、および対象エンティティに従って判定するように構成される。非同期例外アナライザは、第２の条件が満たされるかどうかを判定することに応答して、第２の条件が満たされるとき、対象エンティティが悪意あるものではないことを決定するようにさらに構成される。非同期例外アナライザは、第２の条件が満たされるかどうかを判定することに応答して、第２の条件が満たされないとき、対象エンティティが悪意あるものであることを決定するようにさらに構成される。
【０００８】
[0008]別の態様によれば、非一時的コンピュータ可読媒体は、ホストシステムのハードウェアプロセッサによって実行されるとき、ホストシステムに同期例外アナライザおよび非同期例外アナライザを形成させるプロセッサ命令を格納する。ハードウェアプロセッサは、対象エンティティの実行によって引き起こされたイベントの発生を検出することに応答して、対象エンティティの実行を一時中断することと、対象エンティティの実行を一時中断することに応答して、同期例外アナライザを実行することに切り替えることとを行うようにさらに構成される。同期例外アナライザは、対象エンティティが悪意あるものである疑いがあるかどうかを、イベントに従って判定するように構成される。同期例外アナライザは、それに応じて、対象エンティティが悪意あるものである疑いのあるとき、複数のルール例外署名から１つのルール例外署名を選択的に取り出すことであって、ルール例外署名は、イベントに従って取り出され、ルール例外署名は、第１の条件のエンコーディングおよび第２の条件のエンコーディングを含む、取り出すことを行うようにさらに構成される。同期例外アナライザは、例外署名を取り出すことに応答して、第１の条件が満たされるかどうかを、イベントに従って、および対象エンティティに従って判定するようにさらに構成される。第１の条件が満たされるかどうかを判定することに応答して、第１の条件が満たされるとき、同期例外アナライザは、ハードウェアプロセッサに対象エンティティの実行を再開させるようにさらに構成される。同期例外アナライザは、第１の条件が満たされるかどうかを判定することに応答して、第１の条件が満たされないとき、対象エンティティが悪意あるものであることを決定するようにさらに構成される。非同期例外アナライザは、ハードウェアプロセッサが対象エンティティの実行を再開することに応答して、第２の条件が満たされるかどうかを、イベントに従って、および対象エンティティに従って判定するように構成される。非同期例外アナライザは、第２の条件が満たされるかどうかを判定することに応答して、第２の条件が満たされるとき、対象エンティティが悪意あるものではないことを決定するようにさらに構成される。非同期例外アナライザは、第２の条件が満たされるかどうかを判定することに応答して、第２の条件が満たされないとき、対象エンティティが悪意あるものであることを決定するようにさらに構成される。
【０００９】
[0009]別の態様によれば、方法は、コンピュータセキュリティ脅威に対してホストシステムを保護し、ホストシステムは、ハードウェアプロセッサおよびメモリを備える。方法は、ハードウェアプロセッサを用いて、対象エンティティの実行によって引き起こされたイベントの発生を検出することを含む。方法は、イベントの発生を検出することに応答して、ハードウェアプロセッサを用いて、対象エンティティの実行を一時中断することと、同期例外アナライザを実行することに切り替えることとをさらに含む。同期例外アナライザは、対象エンティティが、悪意の疑いがあるかどうかを、イベントに従って判定するように構成される。それに応じて、対象エンティティが悪意の疑いのあるとき、同期例外アナライザは、複数のルール例外署名から１つのルール例外署名を選択的に取り出すことであって、ルール例外署名は、イベントに従って取り出され、ルール例外署名は、第１の条件のエンコーディングおよび第２の条件のエンコーディングを含む、取り出すことを行うように構成される。同期例外アナライザは、ルール例外署名を取り出すことに応答して、第１の条件が満たされるかどうかを、イベントに従って、および対象エンティティに従って判定するようにさらに構成される。同期例外アナライザは、第１の条件が満たされるかどうかを判定することに応答して、第１の条件が満たされるとき、ハードウェアプロセッサに対象エンティティの実行を再開させること、および第１の条件が満たされないとき、対象エンティティが悪意あるものであることを決定することを行うようにさらに構成される。方法は、ハードウェアプロセッサが対象エンティティの実行を再開することに応答して、ハードウェアプロセッサを用いて、第２の条件が満たされるかどうかを、イベントに従って、および対象エンティティに従って判定することをさらに含む。方法は、第２の条件が満たされるかどうかを判定することに応答して、第２の条件が満たされるとき、対象エンティティが悪意あるものではないことを決定することと、第２の条件が満たされないとき、対象エンティティが悪意あるものであることを決定することとをさらに含む。
【００１０】
[0010]本発明の前述の態様および利点は、以下の詳細な説明を読み、図面を参照すると、よりよく理解されるようになるであろう。
【図面の簡単な説明】
【００１１】
【図１】[0011]本発明のいくつかの実施形態による、コンピュータセキュリティ脅威に対して保護されたホストシステムの例示的なハードウェア構成を示す図である。
【図２−Ａ】[0012]ハードウェア仮想化を伴わない構成における、本発明のいくつかの実施形態による、ホストシステムを保護する例示的なコンピュータセキュリティアプリケーション（ＣＳＡ）を示す図である。
【図２−Ｂ】[0013]保護された仮想マシンの例示的なセットは、ホストシステム上で実行するハイパーバイザによって公開され、ＣＳＡは、保護された仮想マシンの外側で実行する、本発明のいくつかの実施形態による代替構成を示す図である。
【図３】[0014]本発明のいくつかの実施形態による、コンピュータセキュリティアプリケーションの例示的な構成要素を示す図である。
【図４−Ａ】[0015]通知ハンドラは、保護された仮想マシンの内部で実行し、同期および非同期例外アナライザは、保護された仮想マシンの外側で実行する、例示的な構成を示す図である。
【図４−Ｂ】[0016]通知ハンドラは、保護された仮想マシンの外側で実行し、同期および非同期例外アナライザは、保護された仮想マシンの内部で実行する、本発明のいくつかの実施形態による代替構成を示す図である。
【図４−Ｃ】[0017]非同期例外アナライザは、保護された仮想マシンとは別個のセキュリティ仮想マシンの内部で実行する、本発明のいくつかの実施形態による、さらに別の例示的な構成を示す図である。
【図５】[0018]本発明のいくつかの実施形態による、コンピュータセキュリティアプリケーションの構成要素の例示的な相互作用を示す図である。
【図６】[0019]本発明のいくつかの実施形態による、ルール例外の例示的なフォーマットを示す図である。
【図７】[0020]本発明のいくつかの実施形態による、例外分析リクエスト（ＥＡＲ：ｅｘｃｅｐｔｉｏｎ  ａｎａｌｙｓｉｓ  ｒｅｑｕｅｓｔ）の例示的なフォーマットを示す図である。
【図８】[0021]本発明のいくつかの実施形態による、通知ハンドラによって行われる例示的な一連のステップを示す図である。
【図９】[0022]本発明のいくつかの実施形態による、同期例外アナライザによって実施される例示的な一連のステップを示す図である。
【図１０】[0023]本発明のいくつかの実施形態による、非同期例外アナライザによって行われる例示的な一連のステップを示す図である。
【図１１】[0024]本発明のいくつかの実施形態による、終了ウォッチャによって行われる例示的な一連のステップを示す図である。
【発明を実施するための形態】
【００１２】
[0025]以下の説明において、構造間のすべての列挙された接続は、直接の動作的な接続または中間体構造を通じた間接の動作的な接続であってよいことが理解される。要素のセットは、１つまたは複数の要素を含む。要素の任意の列挙は、少なくとも１つの要素を指すと理解される。複数の要素は、少なくとも２つの要素を含む。別段の要求がない限り、任意の説明された方法のステップは、必ずしも特定の示された順番で実施される必要はない。第２の要素から導き出された第１の要素（例えばデータ）は、第２の要素に等しい第１の要素、ならびに第２の要素、および任意選択で他のデータを処理することによって生成された第１の要素を包含する。パラメータに従って決定または判定することは、パラメータに従って、および任意選択で他のデータに従って、決定または判定することを包含する。別段の定めがない限り、いくつかの量／データの指標は、量自体／データ自体、または量自体／データ自体とは異なる指標であってよい。コンピュータセキュリティは、データおよび／またはハードウェアへの非意図的または不正なアクセス、データおよび／またはハードウェアの非意図的または不正な変更、ならびにデータおよび／またはハードウェアの破壊に対してユーザおよび機器を保護することを包含する。コンピュータプログラムは、タスクを行う一連のプロセッサ命令である。本発明のいくつかの実施形態において説明されるコンピュータプログラムは、スタンドアロンのソフトウェアエンティティ、または他のコンピュータプログラムのサブエンティティ（例えば、サブルーチン、ライブラリ）であってよい。別段の定めがない限り、プロセスは、アプリケーションまたはオペレーティングシステムの一部などの、コンピュータプログラムのインスタンスであり、少なくとも実行スレッドおよび実行スレッドに割り当てられた仮想メモリ空間を有することによって特徴付けられ、個々の仮想メモリ空間の内容は、実行可能なコードを含む。別段の定めがない限り、ゲストプロセスは、仮想マシンの内部で実行するプロセスである。プロセスは、仮想マシンが、個々の仮想マシンの仮想プロセッサ上で実行するとき、仮想マシンの内部で実行すると言われる。別段の定めがない限り、ページは、ホストシステムの物理メモリに個別にマップされることがある仮想メモリの最小単位を表す。コンピュータ可読媒体は、磁気の、光の、および半導体の記憶媒体（例えば、ハードドライブ、光ディスク、フラッシュメモリ、ＤＲＡＭ）などの非一時的媒体、ならびに導電性ケーブルおよび光ファイバリンクなどの通信リンクを包含する。いくつかの実施形態によれば、本発明は、とりわけ、本明細書で説明される方法を実施するための、プログラムされたハードウェア（例えば、１つまたは複数のマイクロプロセッサ）、ならびに本明細書で説明される方法を実施するための、命令をエンコーディングするコンピュータ可読媒体を備えるコンピュータシステムを提供する。
【００１３】
[0026]以下の説明は、必ずしも限定としてではなく、例として本発明の実施形態を示す。
[0027]図１は、本発明のいくつかの実施形態による、コンピュータセキュリティ脅威に対して保護されたホストシステム１０の例示的なハードウェア構成を示す。ホストシステム１０は、プロセッサおよびメモリを有する任意の電子デバイスを表してよい。例示的なホストシステム１０は、中でも、パーソナルコンピュータ、サーバ、ラップトップ、タブレット型コンピュータ、移動体通信デバイス（例えば、スマートフォン）、メディアプレーヤ、ＴＶ、家庭用ゲーム機、家庭電化製品（例えば、冷蔵庫、サーモスタット、インテリジェント暖房および／または照明システム）、ならびにウェアラブルデバイス（例えば、スマートウオッチ、スポーツおよびフィットネス機器）を含む。
【００１４】
[0028]図１は、コンピュータシステムを示し、スマートフォンおよびスマートウオッチなどの、他のホストシステムのハードウェア構成は、図示された構成と相違することがある。ホストシステム１０は、プロセッサ１２およびメモリユニット１４を含む、物理デバイスのセットを備える。いくつかの実施形態において、プロセッサ１２は、信号および／またはデータのセットで計算的および／または論理的な動作を実行するように構成された物理デバイス（例えば、マイクロプロセッサ、半導体基板上に形成されたマルチコア集積回路など）を備える。いくつかの実施形態において、このような動作は、一連のプロセッサ命令（例えば、機械語または他のタイプのエンコーディング）の形でプロセッサ１２に供給される。メモリユニット１４は、プロセッサ１２によってアクセスされまたは生成される命令および／またはデータを格納する揮発性のコンピュータ可読媒体（例えば、ＤＲＡＭ、ＳＲＡＭ）を備えることがある。
【００１５】
[0029]デバイスのタイプおよび性能に応じて、ホストシステム１０は、ユーザが、データおよび／または命令をホストシステム１０に入力することを可能にする、キーボード、マウス、タッチスクリーン、他などの、入力デバイス１６のセットをさらに備えることがある。モニタまたは液晶ディスプレイなどの出力デバイス１８のセットは、情報をユーザに、例えば、グラフィカルユーザインターフェースを介して伝えてよい。ストレージデバイス２０は、プロセッサ命令および／またはデータの不揮発性の保存、読取り、および書込みを可能にするコンピュータ可読媒体を含む。例示的なストレージデバイス２０は、磁気ディスクおよび光ディスクと、フラッシュメモリデバイス、ならびにＣＤおよび／またはＤＶＤディスクおよびドライブなどのリムーバブルメディアを含む。ネットワークアダプタ２２のセットは、ホストシステム１０が、コンピュータネットワークに、および／または他のデバイス／コンピュータシステムに接続することを可能にする。コントローラハブ２４は、複数のシステム、周辺機器、および／もしくはチップセットのバス、ならびに／またはプロセッサ１２と、デバイス１４、１６、１８、２０、および２２との間の通信を可能にするすべての他の回路機器を総称的に表す。例えば、コントローラハブ２４は、中でも、メモリ管理ユニット（ＭＭＵ：ｍｅｍｏｒｙ  ｍａｎａｇｅｍｅｎｔ  ｕｎｉｔ）、入力／出力（Ｉ／Ｏ）コントローラ、および割込みコントローラを含むことがある。別の例において、コントローラハブ２４は、プロセッサ１２をメモリ１４に接続するノースブリッジ、および／またはプロセッサ１２をデバイス１６、１８、２０、および２２に接続するサウスブリッジを備えることがある。いくつかの実施形態において、コントローラハブ２４は、プロセッサ１２と部分的にまたは全面的に一体化されることがあり、例えば、ＭＭＵは、共通の半導体基板をプロセッサ１２と共有することがある。
【００１６】
[0030]コンピュータセキュリティアプリケーション（ＣＳＡ）４０は、マルウェア、スパイウェア、不要なアドウェア、他などの、コンピュータセキュリティ脅威に対してホストシステム１０を保護する。いくつかの実施形態において、ＣＳＡ４０は、複数の実行可能なエンティティ（例えば、プロセス、スレッド、アプリケーション、オペレーティングシステムの構成要素）の行動を監視すること、および任意のこのような監視されるエンティティが悪意あるものであるかどうかを、エンティティの行動に従って判定することを行うように構成される。監視されるエンティティは、中でも、オペレーティングシステムの構成要素およびユーザアプリケーションを含んでよい。エンティティが悪意あるものであることを決定することに応答して、ＣＳＡ４０は、個々のエンティティに対して保護アクションをとり、例えば、個々の悪意あるエンティティを阻止、隔離、またはそうでなければ無能力化することがある。
【００１７】
[0031]図２−Ａ〜図２−Ｂは、本発明のいくつかの実施形態による、例示的なソフトウェア構成を示す。図２−Ａの例において、ホストシステム１０は、オペレーティングシステム（ＯＳ）３４、例示的なアプリケーション３６ａ〜３６ｂのセット、およびＣＳＡ４０を実行する。アプリケーション３６ａ〜３６ｂは、中でも、文書処理、画像処理、メディアプレーヤ、データベース、カレンダ、個人連絡先管理、ブラウザ、ゲーミング、音声通信、およびデータ通信アプリケーションなどの、任意のコンピュータプログラムを総称的に表す。オペレーティングシステム３４は、中でも、Ｍｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ（登録商標）、ＭａｃＯＳ（登録商標）、Ｌｉｎｕｘ（登録商標）、ｉＯＳ（登録商標）、またはＡｎｄｒｏｉｄ（登録商標）などの、任意の広く利用可能なオペレーティングシステムを含むことがある。ＯＳ３４は、アプリケーション３６ａ〜３６ｂと、ホストシステム１０のハードウェアとの間のインターフェースを提供する。ＣＳＡ４０の図示された位置は、ＣＳＡ４０が、様々なプロセッサ特権のレベルで実行してよいことを指示する。例えば、ＣＳＡ４０の一部は、ＯＳのカーネルのプロセッサ特権（例えば、リング０、つまりカーネルモード）で実行してよく、一方、他の部品は、アプリケーション３６ａ〜３６ｂのプロセッサ特権（例えば、リング３、つまりユーザモード）で実行してよい。
【００１８】
[0032]図２−Ｂは、本発明の代替実施形態を示し、ホストシステム１０は、ハードウェア仮想化技術を使用してゲスト仮想マシンのセットを動作させる。ハードウェア仮想化は、他の使用の中でも、クラウドコンピューティングおよびサーバ統合などの、アプリケーションにおいてしばしば使用される。仮想マシン（ＶＭ）は、実際の物理的なマシン／コンピュータシステムをエミュレートし、オペレーティングシステムおよび他のアプリケーションを走らせることができる。いくつかの実施形態において、ハイパーバイザ３０は、ホストシステム１０上で実行し、ハイパーバイザ３０は、仮想プロセッサおよび仮想メモリ管理ユニットなどの、複数の仮想化されたデバイスを作成することまたは可能にすること、ならびにホストシステム１０の本物の物理デバイスの代用として、このような仮想化されたデバイスを他のソフトウェアに提示することを行うように構成される。このような動作は、仮想マシンを公開する当技術分野で通常知られる。ハイパーバイザ３０は、複数の仮想マシンがホストシステム１０のハードウェアリソースを共有することをさらに可能にすることがあり、その結果それぞれのＶＭは、独立して動作し、ホストシステム１０上で同時に実行する他のＶＭの実行を意識しない。普及しているハイパーバイザの例は、中でも、ＶＭｗａｒｅ  Ｉｎｃ．のＶＭｗａｒｅ  ｖＳｐｈｅｒｅ（商標）、およびオープンソースのＸｅｎハイパーバイザを含む。
【００１９】
[0033]図２−Ｂは、ホストシステム１０上で公開されたゲストＶＭ３２ａ〜３２ｂのセットを示す。それぞれのＶＭ３２ａ〜３２ｂは、仮想化されたプロセッサを含み、中でも、仮想化された入力、出力、ストレージ、およびネットワークデバイス、ならびに仮想化されたコントローラなどの他の仮想化されたデバイスをさらに含んでよい。それぞれの仮想化されたプロセッサは、ハードウェアプロセッサ１２の機能性のうちの少なくともいくつかのエミュレーションを備え、実行のためにプロセッサ命令を受け取るように構成される。実行のために個々の仮想プロセッサを使用するソフトウェアは、個々の仮想マシンの内部で実行すると言われる。例えば、図２−Ｂの例において、ゲストＯＳ３４ａおよびアプリケーション３６ｃは、ゲストＶＭ３２ａの内部で実行すると言われる。対照的に、ハイパーバイザ３０は、ゲストＶＭ３２ａ〜３２ｂの外側で、すなわち下で実行すると言われる。それぞれの仮想化されたプロセッサは、対応する物理デバイスと相互作用するように、仮想化されたデバイスと相互作用してよい。例えば、ＶＭ３２ａの内部で実行するソフトウェアは、ＶＭ３２ａの仮想化されたネットワークアダプタを介して、ネットワークトラフィックを送り、および／または受け取ってよい。いくつかの実施形態において、ハイパーバイザ３０は、仮想化されたデバイスのサブセットだけをそれぞれのゲストＶＭに公開してよく、選択されたゲストＶＭに、ホストシステム１０のいくつかのハードウェアデバイスを直接的および排他的に使用させてよい。１つのこのような例において、ＶＭ３２ａは、入力デバイス１６および出力デバイス１８を排他的に使用してよいが、仮想化されたネットワークアダプタが不足することがある。その一方で、ＶＭ３２ｂは、ネットワークアダプタ２２を直接的および排他的に使用してよい。このような構成は、例えば、Ｉｎｔｅｌ（登録商標）のＶＴ−ｄ（登録商標）技術を使用して実装されてよい。
【００２０】
[0034]それぞれのＶＭ３２ａ〜３２ｂは、ゲストオペレーティングシステム（ＯＳ）３４ａ〜３４ｂをそれぞれ実行する。それぞれのＯＳ３４ａ〜３４ｂは、個々のＶＭの内部で実行するアプリケーション３６ｃ〜３６ｄと、個々のＶＭの仮想化されたハードウェアデバイスとの間のインターフェースを提供する。図２−Ｂの例示的な実施形態において、ＣＳＡ４０は、ゲストＶＭの外側で実行し、コンピュータセキュリティ脅威から個々のゲストＶＭを保護するように構成される。単一のコンピュータセキュリティアプリケーションは、複数の仮想マシンを保護してよい。ＣＳＡ４０は、ハイパーバイザ３０に、例えばライブラリとして組み込まれてよく、またはハイパーバイザ３０とは別個かつ独立したコンピュータプログラムとして供給されてよいが、ハイパーバイザ３０のプロセッサ特権のレベル（例えば、ルートモード、つまりリング１）で実行する。ＣＳＡ４０は、別々のスケジュール化された実行スレッドを有するプロセスであってよく、または、さらに以下に示されるように、一定の通知イベントによってトリガされるときに実行する、スケジュール化されていないコードオブジェクトのコレクションとして動作してよい。
【００２１】
[0035]ハードウェア仮想化プラットフォームを含む、ホストシステムをマルウェアから保護するいくつかの方法は、当技術分野で知られる。方法の特定のカテゴリは、行動分析として知られる。典型的な行動分析方法は、通知メカニズムを用い、セキュリティソフトウェアは、監視されたＶＭの内部のイベントの発生について通知され、イベントは、アプリケーションまたはオペレーティングシステムの構成要素などのソフトウェアエンティティの実行によってトリガされ、および／または実行中に発生する。セキュリティソフトウェアは、次に、個々のイベントを分析し、個々のイベントが潜在的なセキュリティ脅威を指示するかどうかを判定してよい。
【００２２】
[0036]図３は、本発明のいくつかの実施形態による、コンピュータセキュリティアプリケーション４０の例示的な構成要素を示す。エンジン４０は、通知ハンドラ４２、ハンドラ４２に接続された同期例外アナライザ４４、非同期例外アナライザ４６、およびアナライザ４６に通信連結された終了ウォッチャ４８を含む。
【００２３】
[0037]いくつかの実施形態において、通知ハンドラ４２は、コンピュータセキュリティに関係のある一定のイベントの発生を検出するように構成される。例示的な検出されるイベントは、中でも、一定のＯＳ機能に対するコールおよびシステムコールを含む。他のタイプの検出されるイベントは、ファイルを開くこと、ファイルを作成すること、ファイルに書き込むこと、ファイルを削除すること、ファイルをコピーすること、プロセスを作成すること、プロセスを終了すること、実行のためにスレッドをスケジュールすること、同期イベントのためにスレッドを一時中断すること（例えば、相互排他）、ヒープを作成すること、ヒープからメモリを割り当てること、実行スタックのサイズを拡大すること、メモリアクセス許可を変更すること、スワップイン（例えば、ディスクからメモリへの）動作を実施すること、スワップアウト（例えば、メモリからディスクへの）動作を実施すること、実行可能なモジュール（例えば、共用ライブラリ−ＤＬＬ）をロードすること、レジストリキーを開くこと、レジストリキーをリネームすること、新しいハードウェアデバイスの取付けを検出すること、新しいネットワーク接続を確立すること、ネットワークパケットを受け取ること、スレッドの実行特権を引き上げること、ファイルと関連付けられた任意型アクセス制御（ＤＡＣ：ｄｉｓｃｒｅｔｉｏｎａｒｙ  ａｃｃｅｓｓ  ｃｏｎｔｒｏｌ）の許可を変更することを含んでよい。このようなイベントを検出するいくつかの方法は、当技術分野で知られる。これらは、一定のＯＳ機能をフッキングすること、ディスパッチテーブルを修正することなどを含む。このような方法は、個々のイベントの発生に応答して、トリガエンティティ（例えば、プロセス）を実行することから、ハンドラルーチンを実行することに切り替えるように、プロセッサ１２を構成する。通知ハンドラ４２をハンドラルーチンとして登録することは、ハンドラ４２が、様々なイベントを検出すること、およびイベントの発生をＣＳＡ４０に伝達することを許容する。
【００２４】
[0038]ハードウェア仮想化プラットフォームにおいて、コンピュータセキュリティに関係のあることがある特殊なカテゴリの検出されたイベントは、メモリアクセス許可の違反を検出することを含む。このような違反を検出することは、従来のフッキングに対する代替を提供することがある。大多数の現代のコンピュータシステムは、仮想メモリで動作し、専用のデータ構造、例えば、ページテーブルを使用してメモリアドレス変換を管理するように構成される。ハードウェア仮想化をサポートするように構成されたシステムは、典型的には、それぞれの公開されたＶＭが見えるゲスト物理メモリからホストシステムの実際の物理メモリ１４への第２層のアドレス変換を使用する。第２のアドレス変換は、典型的には、第２レベルアドレス変換（ＳＬＡＴ：ｓｅｃｏｎｄ  ｌｅｖｅｌ  ａｄｄｒｅｓｓ  ｔｒａｎｓｌａｔｉｏｎ）として知られる、ハードウェアアクセラレートされた、専用のデータ構造およびプロセッサ１２によって制御されるメカニズムを使用して実現される。普及しているＳＬＡＴの実装形態は、Ｉｎｔｅｌ（登録商標）プラットフォーム上の拡張ページテーブル（ＥＰＴ：ｅｘｔｅｎｄｅｄ  ｐａｇｅ  ｔａｂｌｅｓ）、およびＡＭＤ（登録商標）プラットフォーム上のラピッドバーチャリゼーションインデクシング（ＲＶＩ：Ｒａｐｉｄ  Ｖｉｒｔｕａｌｉｚａｔｉｏｎ  Ｉｎｄｅｘｉｎｇ）／ネステッドページテーブル（ＮＰＴ：ｎｅｓｔｅｄ  ｐａｇｅ  ｔａｂｌｅｓ）を含む。ＳＬＡＴは、典型的には、読込み／書出し／実行などの、それぞれのメモリページに対するメモリアクセス許可をセットすることを許容する。プロセッサ１２は、ソフトウェアが、現在のアクセス許可に違反する手法で個々のページにアクセスすることを試みるとき、プロセッサのイベント（例えば、ＶＭイグジットイベントまたは仮想化例外）をトリガするように構成されてよい。ＶＭイグジットイベント、例えば、Ｉｎｔｅｌ（登録商標）プラットフォーム上のＶＭＥｘｉｔは、個々のＶＭの内部のコードの実行を一時中断し、プロセッサ１２を、ハイパーバイザ３０のレベルでコードを実行することに切り替える。対照的に、Ｉｎｔｅｌ（登録商標）プラットフォーム上の＃ＶＥなどの仮想化例外は、プロセッサ１２を、同じＶＭの内部のコードを実行することに切り替えてよい。いくつかの実施形態において、ＣＳＡ４０は、（例えば、図４−Ｂなどの構成における）ＶＭイグジット、または（例えば、図４−Ａおよび図４−Ｃなどの構成における）仮想化例外に対するハンドラとして、通知ハンドラ４２を登録する。これは、ハンドラ４２が、保護された仮想マシンの内部のメモリアクセス許可に違反する試みを検出すること、およびこのような試みをＣＳＡ４０に伝達することを可能にする。
【００２５】
[0039]従来のセキュリティシステムは、しばしばマルウェア行動署名に依存して、悪意あるエンティティを検出する。マルウェア行動署名は、イベント（または、一連のイベント）によって満たされるとき、個々のイベントをトリガするエンティティが悪意あるものであることを指示する条件のセットを含む。例えば、その後にディスクへの書込みがある、一連のコードインジェクション（ｉｎｊｅｃｔｉｏｎ；投入、注入）は、悪意の指標として考慮されることがある。マルウェア行動署名は、検出割合を高くすることを可能にすることがあるが、典型的には、偽陽性（良性のエンティティが誤って悪意あるものであるとしてラベルされること）の割合を比較的高くすることもある。偽陽性の割合を低減することは、マルウェア行動署名の複雑性を増加させることを要することがあるが、これは、計算的オーバヘッドを実質的に増加させることがある。
【００２６】
[0040]このような署名に基づいた方法とは対照的に、本発明は、ルール例外のセットを導入し、マルウェア行動署名を置換または補完する。いくつかの実施形態において、ルール例外は、＜イベント、トリガエンティティ＞のタプルによって満たされるとき、個々のトリガエンティティが良性である（悪意あるものではない）ことを確立する条件のセットを含む。ルール例外の条件を満たす＜イベント、トリガエンティティ＞のタプルは、本明細書において、個々のルール例外にマッチすると言われる。このようなルール例外に関する典型的な使用シナリオは、最初に、マルウェア行動署名を、検出されたイベントに適用することを含む。イベントが悪意を示している署名にマッチするとき、ＣＳＡ４０は、イベントをルール例外のセットにさらにマッチさせようとしてよい。ルール例外が検出されたイベントにマッチしないとき、ＣＳＡ４０は、トリガエンティティは、実は悪意あるものであるという結論を出してよい。その代わり、イベントが少なくとも１つのルール例外にマッチするとき、ＣＳＡ４０は、トリガエンティティは、良性であるという結論を出してよい。この分析戦略は、計算的オーバヘッドも抑制しながら、偽陽性の割合を実質的に低減することがある。計算的コストの低減は、例えば、従来のコンピュータセキュリティシステムにおけるものよりも単純なマルウェア行動署名を使用することから到達することがある。
【００２７】
[0041]従来の行動セキュリティの方法は、検出イベントが分析される間、トリガエンティティの実行を一時中断することを含む。この種のイベント分析は、通常、同期的なものとして知られる。対照的に、本発明のいくつかの実施形態において、一部のイベント分析だけは、同期的に実施されるが、別の部分の分析は非同期的に実施される。非同期の、という用語は、本明細書で、イベントおよび／またはルール例外を分析する手法を指し、トリガエンティティは実行を継続することを許容されるが、個々のイベント／例外についてのデータは、後の分析のために保管される。
【００２８】
[0042]詳細には、本発明のいくつかの実施形態において、いくつかのルール例外のマッチングは、同期的に実施されるが、他のルール例外のマッチングは、非同期的に実施される。同期例外アナライザ４４は、保護されたホストシステムまたはゲストＶＭの内部で発生するイベントの同期分析を行い、イベントが、ルール例外の所定のセットのいずれかを満たすか（にマッチするか）どうかを判定するように構成されてよい。同期例外アナライザ４４によってチェックされたルール例外のセットは、本明細書で、同期例外とみなされる（さらなる詳細は以下で）。同期例外は、典型的には、比較的低い計算的コストを要してイベントにマッチされることになるルール例外を含む。いくつかの実施形態において、同期例外は、監視されるエンティティによってもたらされるセキュリティリスクを評価するために重要であるルール例外のサブセットを含んでよい。別の例において、同期例外は、チェックすることが、ホストシステム１０にローカルなリソース（例えば、ストレージデバイス２０上にローカルに格納された署名データベース）に排他的に依存するルール例外を含む。
【００２９】
[0043]次に、非同期例外アナライザ４６は、保護されたホストシステムまたはゲストＶＭの内部で発生するイベントの非同期分析を実施し、イベントが、ルール例外の別の所定のセットのいずれかにマッチするかどうかを判定するように構成されてよい。非同期例外アナライザ４６によってチェックされるルール例外のセットは、本明細書で、非同期例外と称される。同期分析とは対照的に、トリガエンティティは実行を継続することを許容されるが、トリガされたイベントを例外にマッチさせる動作は後で実施されてよいという意味では、非同期分析モジュール４６の動作は、トリガエンティティの実行に結び付けられない。非同期例外は、典型的には、比較的高い計算的コストを要してイベントにマッチされることになるルール例外、またはホストシステム１０のセキュリティにとって重要なものとして考慮されないルール例外を含む。非同期例外のマッチングの一部を形成する例示的な動作は、中でも、（例えば、ハッシュのマッチングを使用して）トリガエンティティの完全性を決定すること、（例えば、個々のエンティティに関する情報を、個々のサーバから悪意あることの評決を受け取っているリモートのクラウドサーバに送ることによって）トリガエンティティのリモートスキャンを実施すること、およびトリガエンティティが別のエンティティによってインジェクトされたコードの受け手であるかどうかを判定することを含む。
【００３０】
[0044]図４−Ａ、図４−Ｂ、図４−Ｃは、本発明のいくつかの実施形態による、通知ハンドラ４２、同期例外アナライザ４４、および非同期例外アナライザ４６の様々な例示的な場所を示す。当業者は、構成要素４２〜４４〜４６は、保護されたＶＭの外側（例えば、ハイパーバイザ３０のプロセッサ特権のレベル）、保護されたＶＭの内部（例えば、カーネルモード）、または別々のセキュリティＶＭの内部のいずれかで実行してよいことを理解するであろう。保護されたＶＭの内部に構成要素を設置することは、個々の構成要素に、個々のＶＭの内部で実行するエンティティに関するかなりの量の情報にアクセスさせることがあるが、個々の構成要素を、同じプロセッサ特権のレベルで実行する悪意あるソフトウェアによる攻撃に対して脆弱にすることがある。Ｉｎｔｅｌ（登録商標）プラットフォーム上の＃ＶＥ（仮想化例外）およびＶＭＦＵＮＣに基づいた代替の複数のＥＰＴビューなどの技法のセットは、保護されたＶＭの内部に設置されたセキュリティ構成要素のセキュリティを拡張するために使用されることがある。個々の構成要素が保護されたＶＭの外側で実行するとき、個々の構成要素は比較的セキュアであるが、エンティティおよびイベントのセマンティックスを解くことを要求する一定の動作は、かなりの計算を要求することがある。
【００３１】
[0045]図４−Ａは、同期例外アナライザ４４が保護されたゲストＶＭの外側で実行する例示的な構成を示し、一方、図４−Ｂ〜図４−Ｃにおいて、アナライザ４４は、個々のゲストＶＭの内側で、カーネルモードで実行する。同期処理がトリガエンティティの実行を一時中断し、したがって、ユーザエクスペリエンスに影響を与えないように、できる限り迅速であるべきであることを考慮すると、同期例外アナライザ４４の動作が、監視されたＶＭからのコストのかかるイグジットを要求しない構成が、好ましいことがある。好ましい実施形態において、同期例外アナライザ４４は、通知ハンドラ４２（例えば、図４−Ｃ）との関連で実行してよい。
【００３２】
[0046]非同期例外アナライザ４６は、保護されたゲストＶＭの外側または内側のどちらかで、実行してよい。いくつかの実施形態において（例えば、図４−Ｃを参照）、アナライザ４６は、ホストシステム上で公開された専用のセキュリティＶＭ３３内で、保護されたゲストＶＭとは別個のセキュリティＶＭ３３を実行してよい。
【００３３】
[0047]構成要素４２〜４４〜４６の実行コンテキストに応じて、これらの動作は、時として仮想マシンの境界を越えて、複雑なシグナリング／メッセージングを要求することがある。このようなシグナリングは、ハードウェア仮想化の当技術分野で知られた任意の技法を使用して行われてよい。例えば、データは、２つの構成要素間で共有されるメモリの区画を介して送信されてよく、シグナリングは、ＶＭイグジットとイベントインジェクションの組合せを含んでよい。
【００３４】
[0048]図５は、本発明のいくつかの実施形態による、構成要素４２、４４、４６、および４８間の例示的な交換を示す。トリガエンティティがゲストＶＭの内部のイベントの発生を引き起こすとき、イベントは、イベント通知５２（例えば、ＶＭイグジットまたは仮想化例外などのプロセッサイベント）がハンドラ４２に供給されることを引き起こす。ハンドラ４２は、次に、現在通知されたイベントのパラメータのタイプおよびセットを決定してよい。例示的なイベントタイプは、中でも、コードインジェクション、特定のシステムコール、ディスクファイルの作成、およびＨＴＴＰリクエストを含む。イベントパラメータは、通知されたイベントのそれぞれのタイプに対して具体的であってよい。いくつかの例示的なイベントパラメータは、中でも、通知されたイベントを引き起こすプロセスまたはスレッドの識別子（例えば、プロセスＩＤ）、ファイル名、パス、メモリアドレス、およびプロセッサ命令のオペランドを含む。
【００３５】
[0049]いくつかの実施形態において、ハンドラ４２は、次に、イベント指標５４を同期例外アナライザ４４に渡す。イベント指標５４は、中でも、個々のイベントの一意の識別子（イベントＩＤ）、イベントのタイプの指標、およびイベントパラメータのセットを含んでよい。同期例外アナライザ４４は、次に、個々のイベントを同期ルール例外のセットに、例えば、例外知識ベース５０に問い合わせることによって、マッチさせることを試みてよい。
【００３６】
[0050]いくつかの実施形態において、例外知識ベース５０は、ルール例外エントリのセットを、例えば、ホストシステム１０の一部を形成する、またはホストシステム１０に通信連結されたコンピュータ可読媒体上に格納する。図６は、本発明のいくつかの実施形態による、ルール例外エントリ６０の例示的なフォーマットを示す。例外エントリ６０は、同期性フラグ６２を含み、同期性フラグ６２は、個々のエントリが、非同期部分を有するか否かを指示してよい。エントリ６０は、イベントタイプを示しているイベントタイプの指標６４（例えば、それぞれのタイプのイベントに一意に関連付けられた数値のＩＤ）をさらに含んでよい。イベントタイプの指標６４は、知識ベース５０が、検出されたイベントのタイプに従って、ルール例外エントリを選択的に取り出すことを許容してよい。代替として、知識ベース５０は、それぞれのルール例外エントリを、個々のルール例外に関係のあるイベントのタイプと関連付ける内部マッピング（例えば、ハッシュインデックス）を維持してよい。
【００３７】
[0051]ルール例外エントリ６０は、同期例外署名６６および非同期例外署名６８をさらに含んでよい。署名６６は、同期ルール例外のエンコーディング、すなわち、アナライザ４６によって同期的に照合されることになる条件のセットのエンコーディングを含む。対照的に、非同期署名６８は、非同期ルール例外のエンコーディング、すなわち、非同期例外アナライザ４６によって非同期的に照合されることになる条件のセットのエンコーディングを含む。
【００３８】
[0052]現在のタイプの通知されたイベントに関係のあるルール例外エントリが非同期部分を有するとき、同期例外アナライザ４４は、後で処理するために、例外分析リクエスト（ＥＡＲ）５６をＥＡＲリスト５８に挿入してよい（さらなる詳細は以下で）。いくつかの実施形態において、ＥＡＲリスト５８は、複数のエントリを有するデータ構造を含み、それぞれのエントリは、非同期ルール例外のマッチングのリクエストをエンコードする。ＥＡＲリスト５８は、多生産者、多消費者の待ち行列（ｍｕｌｔｉ−ｐｒｏｄｕｃｅｒ，ｍｕｌｔｉ−ｃｏｎｓｕｍｅｒ  ｑｕｅｕｅ）（例えば、先入れ先出しの待ち行列）として編成されてよい。図７は、本発明のいくつかの実施形態による、例外分析リクエストの例示的なフォーマットを描写する。図示されたＥＡＲは、個々の分析をトリガしたイベントに一意に関連付けられたイベントＩＤを含む。ＥＡＲ５６は、例外知識ベース５０の特定のエントリ６０を一意に識別する例外ＩＤをさらに含んでよい。ＥＡＲ５６は、トリガエンティティの指標をさらに含んでよい。ＥＡＲ５６にこのようなエンティティＩＤを含むことは、終了ウォッチャ４８が、特定の実行エンティティと関連付けられた任意の未決の例外分析リクエストがあるかどうかを判定するのに役立つことがある（さらなる詳細は以下を参照）。いくつかの実施形態において、ＥＡＲ５６は、通知ハンドラ４２および／または同期例外アナライザ４４によって決定された様々なコンテキストデータをさらに含み、コンテキストデータは、個々のイベントについておよび／またはトリガエンティティについての情報を含む。コンテキストデータは、中でも、メモリアドレス、プロセスＩＤ、トリガされたイベントが生成された瞬間に対応する命令ポインタ（ＲＩＰ）の値などを含んでよい。このようなコンテキストデータは、非同期ルール例外のマッチングを実施するときに非同期例外アナライザ４６によって使用されてよい。
【００３９】
[0053]図８は、本発明のいくつかの実施形態による、通知ハンドラ４２によって実施される例示的な一連のステップを示す。上記に示されたように、ハンドラ４２は、ハンドラ４２がトリガエンティティの実行を効果的に一時中断することを許容する位置で実行する。例えば、ハンドラ４２は、ＶＭイグジットおよび／または仮想化例外に対するイベントハンドラとして登録されてよく、このようなプロセッサイベントは、ソフトウェアによって引き起こされる具体的な監視されたイベントの発生（例えば、特定のメモリページにアクセスする試み）に応答してトリガされる。このようなイベントに応答して、プロセッサ１２は、トリガエンティティの実行を一時中断し、通知ハンドラ４２を実行することに切り替える。通知ハンドラ４２は、したがって、監視されたイベントの発生を通知され、その間、トリガエンティティの実行は、一時中断される。プロセッサイベントがＶＭイグジットであるとき、ハンドラ４２は、ハイパーバイザ３０のレベルで実行してよい。
【００４０】
[0054]ハンドラ４２がイベント通知を受け取るとき、一連のステップ１０６〜１０８は、保護されたゲストＶＭの内部で発生したイベントのタイプ、および個々のイベントのパラメータのセットを決定する。ハンドラ４２は、次に、イベント指標５４を同期例外アナライザ４４に送信してよい（ステップ１１０）。ステップ１１２において、ハンドラ４２は、アナライザ４４からのリリース信号を待ってよい。いくつかの実施形態において、このようなリリース信号は、現在のイベントが同期ルール例外にマッチしたこと、または現在のイベントと関連付けられたＥＡＲがＥＡＲリスト５８に追加されたことのどちらかを指示する（図９に関連して以下の詳細を参照）。リリース信号を受け取ることに応答して、ハンドラ４２は、プロセッサ１２にトリガエンティティの実行を再開することを命令してよい。
【００４１】
[0055]図９は、本発明のいくつかの実施形態による、同期例外アナライザ４４によって行われる例示的な一連のステップを示す。通知ハンドラ４２からイベント指標５４を受け取ることに応答して、ステップ１２４は、トリガエンティティの事前のセキュリティ評価を実施する。例えば、アナライザ４４は、個々のイベントがマルウェアを示しているかどうかを判定してよい。いくつかの実施形態において、ステップ１２４は、現在の＜イベント、エンティティ＞のタプルをマルウェア行動署名のセットにマッチさせることを試みる。このようなマルウェアを示している署名の１つの例は、一連のイベント、すなわち、第１のエンティティは、有効なデジタル署名のない実行可能なファイルをダウンロードすること、第１のエンティティは、実行可能なファイルから第２のエンティティを立ち上げること、および第２のエンティティは、システム始動時における自動的な開始のために、第２のエンティティ自体を登録することを試みることを含む。マルウェア行動署名の別の例は、システムサービスディスクリプタテーブル（ＳＳＤＴ：Ｓｙｓｔｅｍ  Ｓｅｒｖｉｃｅ  Ｄｅｓｃｒｉｐｔｏｒ  Ｔａｂｌｅ）のエントリを上書きすることを試みるドライバを含む。事前評価が、トリガエンティティが悪意あるものではなさそうであることを指示するとき、アナライザ４４は、通知ハンドラ４２にトリガエンティティの実行を再開することを合図してよい（上記参照）。
【００４２】
[0056]事前評価が、トリガエンティティが悪意の疑いがあることを指示するとき、ステップ１２６は、現在のイベントのイベントタイプに従って、例外知識ベース５０からルール例外エントリのセットを選択的に取り出す。知識ベース５０が、現在のイベントのタイプに関連付けられた、いずれのルール例外エントリも収めないとき、ステップ１３０において、ＣＳＡ４０は、トリガエンティティに対してアンチマルウェアアクションをとってよい。このような保護アクションは、中でも、終了すること、隔離すること、またはそうでなければトリガエンティティを無能力化すること、およびトリガエンティティの実行の結果としてホストシステム１０に引き起こされた変更のセットをロールバックすることを含んでよい。いくつかの実施形態において、ＣＳＡ４０は、それぞれの監視されるエンティティと関連付けられたマルウェアを示しているスコアのセットを維持する。ステップ１３０は、イベント固有であってよい量だけ個々のスコアを増やすことを含んでよい。ＣＳＡ４０は、スコアを閾値とさらに比較し、例えば、スコアが所定の閾値を超過するときだけアンチマルウェアアクションをとってよい。
【００４３】
[0057]知識ベース５０が、現在のイベントのイベントタイプと関連付けられた少なくとも１つのルール例外エントリ６０を収めるとき、ステップ１３１は、現在のイベントが個々のルール例外エントリの同期ルール例外にマッチするかどうかを判定する。ステップ１３１は、個々のルール例外の同期署名６６によってエンコードされた条件のセットが、＜現在のイベント、トリガエンティティ＞のタプルによって満たされるかどうかをテストすることを含んでよい。したがって、ステップ１３１は、計算のセットを行い、例えば、イベント指標５４に従って、トリガエンティティのエンティティタイプを決定することを含んでよい。例示的なエンティティタイプは、ＯＳ３４の具体的な構成要素、特定のアプリケーションのインスタンス（例えば、Ａｄｏｂｅ（登録商標）  Ａｃｒｏｂａｔ  Ｒｅａｄｅｒ（登録商標）、Ｍｉｃｒｏｓｏｆｔ（登録商標）  Ｗｏｒｄ（登録商標））、特定のカテゴリのエンティティ（例えば、ファイルマネージャ、ブラウザ）などを含む。エンティティタイプの他の例は、ドライバ、共用ライブラリ（例えば、ダイナミックリンクライブラリ−ＤＬＬ）、およびコードのインジェクトされた（ｉｎｊｅｃｔｅｄ；投入された、注入された）断片を含む。
【００４４】
[0058]同期署名のマッチが得られないとき、アナライザ４４は、トリガエンティティは、実は悪意あるものであるという結論を出し、上記で説明されたステップ１３０に進行する。現在のイベントが少なくとも１つのルール例外の同期署名にマッチするとき、ステップ１３４において、アナライザ４４は、個々のルール例外エントリは、非同期署名も含むかどうかを判定する。いくつかの実施形態において、ステップ１３４は、同期性フラグ６２（図６参照）の値をチェックすることを含む。いいえのとき、アナライザ４４はハンドラ４２に合図し、トリガエンティティの実行を再開する。はいのとき、ステップ１３６は、現在のイベントについての、および／またはトリガエンティティについてのコンテキストデータを決定する。さらなるステップ１３８は、ＥＡＲ５６を構築し、ＥＡＲ５６をＥＡＲリスト５８に追加する。同期例外アナライザ４４は、次に、ハンドラ４２にトリガエンティティの実行を再開することを合図してよい。
【００４５】
[0059]図１０は、非同期例外アナライザ４６のこのようなインスタンスによって行われる例示的な一連のステップを示す。いくつかの実施形態において、コンピュータセキュリティアプリケーション４０は、非同期ルール例外のマッチングのためのスレッドプールを管理する。プールのスレッドは、保護されたＶＭの外側もしくは内部で、または別々のセキュリティＶＭ（例えば、図４−Ｃ参照）の内部で実行してよい。このようなスレッドが個々の保護されたＶＭの内部で実行するとき、スレッドは、カーネルモード（リング０）で実行してよい。プールのスレッドが利用可能になるときはいつでも、ＣＳＡ４０は、非同期例外アナライザ４６のインスタンスを立ち上げてよい。
【００４６】
[0060]一連のステップ１４２〜１４４において、非同期例外アナライザ４６は、現在、任意の顕著な例外分析リクエストがあるかどうかを判定する。ＥＡＲリスト５８が非空であるとき、アナライザ４６は、リスト５８からＥＡＲを取り除き、個々のＥＡＲによって指示されたイベントを、個々のＥＡＲによって指示された非同期ルール例外にマッチさせることを試みてよい。ステップ１４８は、イベントパラメータの、および／または個々のイベントをトリガするエンティティについての情報のさらなる決定を含んでよい。このような計算は、例えば、ハッシュの計算、メモリ探索、様々なソフトウェアエンティティ間の親子関係を確立すること（例えば、どのプロセスが他のプロセスを生んだか）、エミュレーションなどを含んでよい。いくつかの実施形態において、ステップ１４８は、リモートのセキュリティサーバとデータを交換すること（クラウドスキャニング（ｃｌｏｕｄ  ｓｃａｎｎｉｎｇ））を含む。
【００４７】
[0061]いくつかの実施形態において、個々のイベントが非同期ルール例外にマッチするとき、アナライザ４６は中止する。アナライザ４６の現在のインスタンスを終了することは、個々のイベントがコンピュータセキュリティ脅威を示していないことを指示し、したがって、個々のイベントのこれ以上の分析は必要ではない。アナライザ４６が、イベントが個々の非同期ルール例外にマッチしないことを決定するとき、ステップ１５２は、ＣＳＡ４０に合図して保護アンチマルウェアアクションをとってよい（上記、図９のステップ１３０参照）。
【００４８】
[0062]代替実施形態において、非同期ルール例外は、マッチが個々のエンティティが悪意あるものであることを指示するように構築される。このような実施形態において、イベントが個々のルール例外にマッチしないとき、アナライザ４６は中止してよく、ＣＳＡ４０は、イベントが個々のルール例外にマッチするとき、アンチマルウェアアクションをとってよい。
【００４９】
[0063]図１１は、本発明のいくつかの実施形態による、終了ウォッチャ４８によって実施される例示的な一連のステップを示す。終了ウォッチャ４８は、保護された仮想マシンの外側または内部で実行してよく、少なくとも非同期例外アナライザ４６と通信連結される。
【００５０】
[0064]非同期ルール例外分析は、トリガエンティティの実行に結び付けられないので、非同期例外分析４６が個々のエンティティに関連した例外分析リクエストを処理するようになる前に、トリガエンティティが実行を終了する状況が生じることがある。このような状況において、悪意あるエンティティは、検出されずにすむか、またはロールバックされることのない、いくつかのダメージを与えることがある。このような状況を防ぐために、本発明のいくつかの実施形態において、終了ウォッチャ４８は、ＯＳによるエンティティを終了する試みを検出する（ステップ１６２〜１６４）。終了の試みを検出することは、終了エンティティの実行を効果的に一時中断することがある。ステップ１６２は、通知ハンドラ４２と協力することを含んでよく、例えば、ハンドラ４２は、終了の試みを実際に検出し、終了ウォッチャ４８に合図してよい。
【００５１】
[0065]終了の試みを検出することに応答して、一連のステップ１６６〜１６８において、終了ウォッチャ４８は、終了エンティティに対する任意の顕著な例外分析リクエストがまだあるかどうかを判定してよい。いいえのとき、ステップ１７０は、プロセッサ１２に終了エンティティの実行を再開することを命令してよく、個々のエンティティが終了することを事実上許容する。いくつかの実施形態において、ステップ１７０は、リリース信号を通知ハンドラ４２に送ることを含み、ハンドラ４２に終了エンティティをリリースすることを命令する。
【００５２】
[0066]ＥＡＲリスト５８が終了エンティティと関連付けられた少なくとも１つのＥＡＲを収めるとき、終了ウォッチャ４８は、すべてのこのような未決のリクエストが処理されるまで、個々のエンティティが一時中断されることを維持してよい。一連のステップ１７２〜１７４は、個々の終了エンティティと関連付けられたリクエストの処理を強制する（シーケンスは、すべてのこのようなリクエストが処理されるまで繰り返されてよい）。ステップ１７４は、非同期例外アナライザ４６を起動して終了エンティティに関連したそれぞれの顕著なＥＡＲを処理することを含んでよい。アナライザ４６が、個々のＥＡＲによって指示されたイベントが個々のＥＡＲによって指示された非同期ルール例外にマッチしないことを決定するとき、ステップ１７８は、ＣＳＡ４０に合図して終了エンティティに対して保護アクションをよってよい。（図９〜図１０に関連して上記を参照）。
【００５３】
[0067]上記で説明された例示的なシステムおよび方法は、ソフトウェアエンティティの効率的な行動監視を可能にする。いくつかの実施形態において、通知メカニズムは導入され、保護されたホストシステムまたは仮想マシンの内部のセキュリティ関連イベントの発生を検出し、個々のイベントをセキュリティソフトウェアに報告する。セキュリティソフトウェアは、次に、個々のイベントを分析し、個々のイベントがマルウェア、スパイウェア、不正侵入、他などの、コンピュータセキュリティ脅威を示しているかどうかを判定する。
【００５４】
[0068]いくつかの従来の行動システムおよび方法は、マルウェア行動署名に依存してエンティティが悪意あるものであるどうかを判定する。マルウェア行動署名は、典型的には、＜イベント、エンティティ＞のタプルによって満たされるとき、個々のイベントが悪意を示していること、および、したがって、個々のイベントをトリガするソフトウェアエンティティが悪意あるものでありそうであることを確立する条件のセットを含む。トリガエンティティが、トリガエンティティの悪意ある活動を行うのを防ぐために、従来のシステムおよび方法は、トリガされたイベントが悪意の指標に対して分析される間、トリガエンティティの実行を一時中断する。
【００５５】
[0069]本発明のいくつかの実施形態は、２つの所見に依存する。第１に、特定のタイプのイベントのすべての発生が等しくマルウェアを示しているわけではない。同じタイプのイベント（例えば、ＵＲＬにアクセスすること、ディスクファイルを開くことなど）は、いくつかのシナリオにおいて悪意を指示することがあるが、他のシナリオにおいては完全に良性である。このような１つの例において、イベントは、切り離して取り上げられると、悪意を示していないことがあるが、イベントが具体的な一連のイベントの一部として発生するとき、マルウェアを示していることがある。例えば、ディスクファイルに書き込むことは、切り離して取り上げられるとき、良性の動作であることがある（すなわち、多くのプロセスおよびアプリケーションは、合法的にディスクにアクセスする）。しかし、書込みを実施するエンティティが別のエンティティからインジェクトされたコードの受け手であるとき、書込みイベントは、疑わしいことがある。この所見は、正常なマルウェア検出は、相当に複雑なマルウェア行動署名を必要とすることを示唆し、これは、上記で説明されたような様々なシナリオ間で見分けることができる。このような複雑な行動署名の使用は、典型的には、比較的高い計算的コストを負担する。その上、マルウェア行動署名を高い検出割合に最適化することは、典型的には、偽陽性検出（良性のイベントがマルウェアを示しているものとして間違って分類されること、合法的なエンティティが悪意あるものとして間違って分類されること）の増加につながる。偽陽性の分類は、ユーザにとってデータの喪失および生産性の喪失につながることがあるので、コンピュータセキュリティの分野において大いに望ましくない。
【００５６】
[0070]第２の所見は、マルウェア行動署名のマッチングの全期間の間、トリガエンティティの実行を一時中断することは、ユーザエクスペリエンスに悪い影響を与えるというものである。これは、複雑な行動署名のケースにおいて、およびイベント分析が、イベントが発生したＶＭの外側の位置から（例えば、ハイパーバイザ３０のレベルから）実施されるハードウェア仮想化構成において、特に正しい。
【００５７】
[0071]このような従来のコンピュータセキュリティシステムおよび方法とは対照的に、いくつかの実施形態は、ルール例外署名のセットを使用してマルウェア行動署名を補完する。ルール例外署名は、＜イベント、エンティティ＞のタプルによって満たされるとき、個々のイベントが良性であること、および、したがって、トリガエンティティが悪意あるものではないことを確立する条件のセットを含む。ルール例外は、したがって、例外のエンコーディングを、悪意ある行動を典型的に指示するであろうルールに提供する。例示的なユースケースシナリオにおいて、セキュリティソフトウェアは、検出されたイベントを、比較的単純で、計算的に安価なマルウェア行動署名のセットにマッチさせ、トリガエンティティが悪意あるものでありそうであるかどうかを判定することを最初に試みてよい。はいのとき、セキュリティソフトウェアは、個々のイベントをルール例外署名のセットにマッチさせることをさらに試みてよい。ルール例外署名のマッチは、トリガエンティティが実際に良性であることを指示してよい。
【００５８】
[0072]ルール例外署名の追加は、マルウェア行動署名のマッチングが単独で使用されるときに必要な、相当に複雑な署名の代わりに、比較的単純な署名を使用する機会を作り出す。いくつかの実施形態は、したがって、セキュリティソフトウェアによって生み出される計算的オーバヘッドを低減する一方、偽陽性検出の割合も低減する。
【００５９】
[0073]その上、本発明のいくつかの実施形態において、ルール例外署名のマッチングは、非同期の手法で少なくとも部分的に実施され、すなわち、その間、個々のイベントをトリガしたエンティティは、実行を継続することを許容される。セキュリティ分析の全期間の間、トリガエンティティの実行を一時中断しないことを選ぶことによって、ユーザエクスペリエンスに与える影響は、著しく低減される。いくつかの実施形態において、ルール例外署名は、小さいオーバヘッドに最適化され、すなわち、比較的低い計算的コストを負担する署名が同期のマッチングに使用される一方、比較的高価である署名は、非同期のマッチングに使用される。
【００６０】
[0074]従来のマルウェア行動署名とルール例外署名との間にいくつかの類似性があるが、これらの使用およびセマンティックスは、むしろ異なる。例えば、ルール例外署名は、単純に、マルウェア行動署名の補完または反対であるという主張は、正しくない。マルウェア行動署名およびルール例外署名は、相互に排他的ではない。例えば、イベントがマルウェア行動署名にマッチするとき、イベントは、ルール例外署名に同様にマッチすることができないことを意味しない。その代わり、ルール例外署名が、マルウェア検出の効率的な決定過程を許容するので、ルール例外署名がもっとも価値ある状態にあるのは、イベントが、マルウェア行動署名とルール例外署名の両方にマッチする、まさにその状況においてである。
【００６１】
[0075]同期ルール例外対非同期ルール例外、およびマルウェア行動署名に対するこれらの関係の例は、監視されるソフトウェアエンティティによる、共有された実行可能なモジュール（例えば、ライブラリ）のコードにパッチを当てる試みを検出することを含む。コードパッチングは、通例、悪意を示しているので、したがって、マルウェア行動署名の中にエンコードされてよい。個々の署名を使用することは、コードパッチングが検出されるたびにマルウェアアラートをトリガしてよい。しかし、様々なソフトウェアエンティティ（例えば、ＯＳ）は、合法的なコードパッチングを、例えば新しいプロセスを立ち上げるときに実施する。同様に、所与のソフトウェアアプリケーションスイート（例えば、Ｍｉｃｒｏｓｏｆｔ（登録商標）  Ｏｆｆｉｃｅ（登録商標））からの１つのプロセスは、同じスイートからの別のプロセスに合法的にパッチを当てることがある。本発明のいくつかの実施形態において、このような状況は、ルール例外を使用して対処されてよい。例示的な同期ルール例外は、パッチングプロセスが信頼されるＯＳのプロセスのうちの１つであるかどうか、および対象プロセス（パッチを当てられるプロセス）が始動状態にあるかどうかをチェックしてよい。両方の条件が満たされるとき、次に、パッチングエンティティは、良性（合法的）であるとみなされる。このように、ＯＳがプロセスを開始し、パッチングを実施するとき、このプロセスは、ＣＳＡ４０によってブロックされることなく進むことができる。対照的に、上記のルール例外に従って、未知のプロセスが同じパッチング動作を実施しようとする場合、このプロセスはブロックされる。いくつかの未知のプロセスがパッチングを実施することを許容するために、いくつかの実施形態は、２つの部分から成るルール例外署名を使用してよく、すなわち、同期部分は、コードパッチングに関与するエンティティの識別情報を照合してよく、一方非同期部分は、インジェクトされたバッファ／コード自体を（例えば、インジェクトされたバッファ／コードを逆アセンブルすること、および／または具体的なコードパターンを求めて、インジェクトされたバッファ／コードの内部を検索することによって）照合してよい。インジェクトされたコードが悪意あるものではないとき、未知のプロセスは、良性であるとみなされてよい。
【００６２】
[0076]別の例において、マルウェア行動署名は、コードインジェクションがマルウェアを示していることを指示してよい。同期ルール例外署名は、インジェクションを実施するプロセスが良く知られ、信頼されるとき、コードインジェクションを許容してよい。しかし、同じルール例外署名は非同期部分を有してよく、これは、インジェクトされたコードの内容分析を実施する。内容がこの特定のプロセスにとって普通ではないように見えるとき、個々のプロセスは、悪意あるものとみなされることがある。この例において、計算的オーバヘッドの観点から比較的高価である内容分析は、ユーザエクスペリエンスに対する効果を最低限にするために、非同期的に、すなわち、個々のプロセスが実行している間に実施される。
【００６３】
[0077]さらに別の例において、マルウェア行動署名は、ブラウザによるプラグインをロードする試みがマルウェアを示していることを指示してよい。しかし、いくつかのプラグインは良性であり、動作することを許容されるべきである。例示的な実施形態において、同期ルール例外は、個々のプラグインが一定の権威によってデジタル署名されたかどうかをテストし、はいのとき、ブラウザが良性であることを決定してよい。同期署名のマッチのケースにおいて、ブラウザは、プラグインをロードし、実行することを許容されてよい。さらなるルール例外は、次に、プラグインを署名するために使用される証明書が現在有効であるか、または破棄されたかどうかを非同期的に判定してよい。個々の証明書が破棄されたとき、ＣＳＡ４０は、ブラウザを終了し、および／またはアラートを表示してよい。証明書の有効性をテストすることは、典型的には、リクエストをリモートサーバに送ることを要求し、したがって、同期的に行われる場合、ユーザエクスペリエンスに実質的に影響を与えることがある。
【００６４】
[0078]上記の実施形態が、本発明の範囲を逸脱することなく、多くの方式で変えられてよいことが当業者には明らかであろう。それに応じて、本発明の範囲は、以下の特許請求の範囲およびこれらの法的均等物によって決定されるべきである。
【図１】
2018520446.tif 000003
【図２−Ａ】
2018520446.tif 000004
【図２−Ｂ】
2018520446.tif 000005
【図３】
2018520446.tif 000006
【図４−Ａ】
2018520446.tif 000007
【図４−Ｂ】
2018520446.tif 000008
【図４−Ｃ】
2018520446.tif 000009
【図５】
2018520446.tif 000010
【図６】
2018520446.tif 000011
【図７】
2018520446.tif 000012
【図８】
2018520446.tif 000013
【図９】
2018520446.tif 000014
【図１０】
2018520446.tif 000015
【図１１】
2018520446.tif 000016
【国際調査報告】
2018520446.tif 000017
2018520446.tif 000018
2018520446.tif 000019