(57)【特許請求の範囲】
【請求項１】
命令を記憶したメモリユニットを含むホストシステムであって、前記命令は、前記ホストシステムの少なくとも１つのハードウェアプロセッサにより実行されると、前記ホストシステムに、エンティティ管理モジュールと、エンティティ評価器と、スコアリングエンジンとを形成させ、
前記エンティティ管理モジュールは、評価されるソフトウェアエンティティのコレクションを管理するように構成され、前記コレクションを管理することは、
前記コレクションの第１のエンティティの子孫エンティティの集合を識別することと、
前記第１のエンティティが終了したものであるかを判定することと、
前記第１のエンティティが終了したものであるときに、子孫エンティティの前記集合のすべてのメンバが終了したものであるかを判定することと、
子孫エンティティの前記集合のすべてのメンバが終了したものであるときに、前記第１のエンティティを前記コレクションから除去することと
を含み、
前記エンティティ評価器は、
前記第１のエンティティを評価基準によって評価することと、
前記第１のエンティティが前記評価基準を満たすときに、評価インジケータを前記スコアリングエンジンに送信することと
を行うように構成され、
前記スコアリングエンジンは、
前記第１のエンティティに対して求められた第１のスコア、および、前記コレクションの第２のエンティティに対して求められた第２のスコアを記録することであって、前記の第１および第２のスコアは前記評価基準によって求められた、記録することと、
前記の第１および第２のスコアを記録することに応じて、ならびに、前記評価インジケータを受信することに応じて、前記第２のスコアを前記評価インジケータによって更新することと、
前記第２のエンティティが悪意あるものであるかを、更新された前記第２のスコアによって判定することと、
前記評価インジケータを受信することに応じて、前記第１のスコアを前記評価インジケータによって更新することと、
前記第１のエンティティが悪意あるものであるかを、更新された前記第１のスコアによって判定することと
を行うように構成された、ホストシステム。
【請求項２】
請求項１に記載のホストシステムであって、前記第１のエンティティは、前記第２のエンティティの子である、ホストシステム。
【請求項３】
請求項１に記載のホストシステムであって、前記第２のエンティティは、前記第１のエンティティの子である、ホストシステム。
【請求項４】
請求項１に記載のホストシステムであって、前記第１のエンティティは、前記第２のエンティティにより注入されたコードのセクションを含む、ホストシステム。
【請求項５】
請求項１に記載のホストシステムであって、前記第２のエンティティは、前記第１のエンティティにより注入されたコードのセクションを含む、ホストシステム。
【請求項６】
請求項１に記載のホストシステムであって、前記第２のスコアを更新することは、前記第２のスコアを、ｗ・Ｓによって求められた量だけ変化させることを含み、Ｓは前記第１のスコアであり、ｗは数値的な重みである、ホストシステム。
【請求項７】
請求項１に記載のホストシステムであって、評価されるソフトウェアエンティティの前記コレクションを管理することは、
新しいソフトウェアエンティティの起動をインターセプトすることと、
前記新しいソフトウェアエンティティを前記コレクションに追加することと
をさらに含む、ホストシステム。
【請求項８】
命令を記憶するコンピュータ可読記憶媒体であって、前記命令は、ホストシステムの少なくとも１つのプロセッサにより実行されると、前記ホストシステムを、
評価されるソフトウェアエンティティのコレクションを管理することであって、
前記コレクションの第１のエンティティの子孫エンティティの集合を識別することと、
前記第１のエンティティが終了したものであるかを判定することと、
前記第１のエンティティが終了したものであるときに、子孫エンティティの前記集合のすべてのメンバが終了したものであるかを判定することと、
子孫エンティティの前記集合のすべてのメンバが終了したものであるときに、前記第１のエンティティを前記コレクションから除去することと、
前記第１のエンティティに対して求められた第１のスコア、および、前記コレクションの第２のエンティティに対して求められた第２のスコアを記録することであって、前記の第１および第２のスコアは評価基準によって求められた、記録することと、
前記の第１および第２のスコアを記録することに応じて、前記第１のエンティティを前記評価基準によって評価することと、
前記第１のエンティティを評価することに応じて、前記第１のエンティティが前記評価基準を満たすときに、前記第２のスコアを更新することと、
前記第２のスコアを更新することに応じて、前記第２のエンティティが悪意あるものであるかを、更新された前記第２のスコアによって判定することと、
前記第１のエンティティを評価することに応じて、前記第１のエンティティが前記評価基準を満たすときに、前記第１のスコアを更新することと、
前記第１のエンティティが悪意あるものであるかを、更新された前記第１のスコアによって判定することと
を含む、管理すること
を行うように構成する、コンピュータ可読記憶媒体。
【請求項９】
請求項８に記載のコンピュータ可読記憶媒体であって、前記第１のエンティティは、前記第２のエンティティの子である、コンピュータ可読記憶媒体。
【請求項１０】
請求項８に記載のコンピュータ可読記憶媒体であって、前記第２のエンティティは、前記第１のエンティティの子である、コンピュータ可読記憶媒体。
【請求項１１】
請求項８に記載のコンピュータ可読記憶媒体であって、前記第１のエンティティは、前記第２のエンティティにより注入されたコードのセクションを含む、コンピュータ可読記憶媒体。
【請求項１２】
請求項８に記載のコンピュータ可読記憶媒体であって、前記第２のエンティティは、前記第１のエンティティにより注入されたコードのセクションを含む、コンピュータ可読記憶媒体。
【請求項１３】
請求項８に記載のコンピュータ可読記憶媒体であって、前記第２のスコアを更新することは、前記第２のスコアを、ｗ・Ｓによって求められた量だけ変化させることを含み、Ｓは前記第１のスコアであり、ｗは数値的な重みである、コンピュータ可読記憶媒体。
【請求項１４】
請求項８に記載のコンピュータ可読記憶媒体であって、評価されるソフトウェアエンティティの前記コレクションを管理することは、
新しいソフトウェアエンティティの起動をインターセプトすることと、
前記新しいソフトウェアエンティティを前記コレクションに追加することと
をさらに含む、コンピュータ可読記憶媒体。
【請求項１５】
ホストシステムの少なくとも１つのプロセッサが、評価されるソフトウェアエンティティのコレクションを管理するステップを含む方法であって、前記コレクションを管理するステップは、
前記コレクションの第１のエンティティの子孫エンティティの集合を識別するステップと、
前記第１のエンティティが終了したものであるかを判定するステップと、
前記第１のエンティティが終了したものであるときに、子孫エンティティの前記集合のすべてのメンバが終了したものであるかを判定するステップと、
子孫エンティティの前記集合のすべてのメンバが終了したものであるときに、前記第１のエンティティを前記コレクションから除去するステップと、
前記第１のエンティティに対して求められた第１のスコア、および、前記コレクションの第２のエンティティに対して求められた第２のスコアを記録するステップであって、前記の第１および第２のスコアは評価基準によって求められた、ステップと、
前記の第１および第２のスコアを記録することに応じて、前記第１のエンティティを前記評価基準によって評価するステップと、
前記第１のエンティティを評価することに応じて、前記第１のエンティティが前記評価基準を満たすときに、前記第２のスコアを更新するステップと、
前記第２のスコアを更新することに応じて、前記第２のエンティティが悪意あるものであるかを、更新された前記第２のスコアによって判定するステップと、
前記第１のエンティティを評価することに応じて、前記第１のエンティティが前記評価基準を満たすときに、前記第１のスコアを更新するステップと、
前記第１のエンティティが悪意あるものであるかを、更新された前記第１のスコアによって判定するステップと
を含む、方法。
【発明の詳細な説明】
【技術分野】
【０００１】
[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]ステップ３２２でスコアリングエンジン３８は、例えば次式の合計として、それぞれのプロセスに対して決定される個々の評価スコアを組み合わせることにより、エンティティＸの集計スコアを決定し得る。
【００５６】
【数１】
0006317435.tif 000002
【００５７】
[0066]ステップ３２４でエンジン３８は、集計スコアを、あらかじめ決定されたしきい値と比較し得る。集計スコアがしきい値を上回らないとき、スコアリングエンジン３８は、下記で説明されるステップ３２６に進行し得る。一部の実施形態ではしきい値は、ユーザ入力によって決定される値に設定され得る。そのようなしきい値の値は、それぞれのユーザのセキュリティ選好を反映し得る。例えば、ユーザが、厳格なセキュリティを選ぶとき、しきい値は、比較的低い値に設定され得るものであり、ユーザが、より寛容なセキュリティ設定を選好するとき、しきい値は、比較的高い値に設定され得る。一部の実施形態ではしきい値の値は、図１０〜１１に関係して下記で説明されるように、リモートセキュリティサーバから受信され得る。
【００５８】
[0067]一部の実施形態では、ステップ３２２〜３２４でスコアリングエンジン３８は、複数の集計スコアを決定し、各々の集計スコアを（場合によっては別個の）しきい値と比較し得る。各々のそのような集計スコアは、評価スコアの別個の部分集合によって決定され得る。例示的な実施形態では、スコアの各々のそのような部分集合、および、評価基準のそれらのスコアの対応する部分集合は、マルウェアの特定のクラスまたはタイプ（例えば、トロイの木馬、ルートキット、その他）を表し得る。このことによってエンジン３８は、検出されるマルウェアの分類を実施することが可能となり得る。別の実施形態ではスコアリングエンジン３８は、悪意あることの様々な程度（例えば、クリーン、疑わしい、危険、および、危機的）によって実行エンティティを分類するために、複数のしきい値の値を用いる。
【００５９】
[0068]集計スコアがしきい値を上回るとき、ステップ３２６でエンジン３８は、評価されるプロセスが悪意あるものであると判断し得るものであり、アンチマルウェアアクションをとり得る。一部の実施形態では、そのようなアンチマルウェアアクションは、とりわけ、評価されるプロセスを終了させること、評価されるプロセスを検疫すること、および、評価されるプロセスのリソース（ファイル、または、メモリのセクションなど）を除去する、または不能にすることを含み得る。一部の実施形態ではアンチマルウェアアクションは、例えば、メッセージをシステムアドミニストレータに、ネットワークアダプタ２２によってホストシステム１０に接続されるコンピュータネットワークを介して送出することにより、ホストシステム１０のユーザに警告すること、および／または、システムアドミニストレータに警告することをさらに含み得る。一部の実施形態ではアンチマルウェアアクションは、図１０〜１１に関係して下記で説明されるように、セキュリティ報告をリモートセキュリティサーバに送出することもまた含み得る。
【００６０】
[0069]ステップ３２８〜３３０のシーケンスでエンジン３８は、Ｘに関係付けられるエンティティＸ＊を識別し得るものであり、その場合Ｘ＊のスコアは、Ｘの現在のスコア更新の後に続いて更新することを必要とする。例えばＸ＊は、Ｘの親または子のエンティティであり得る。一部の実施形態ではエンティティＸ＊は、エンティティＸのＥＳＯのフィールド７６ｇ〜ｋ（例えば、図８を確認されたい）によって識別され得る。そのようなエンティティＸ＊が現存しないとき、または、すべてのそのようなエンティティＸ＊がすでにスコア更新に対して考慮されているとき、エンジン３８はステップ３１２に戻る。少なくともエンティティＸ＊が存在するとき、ステップ３３２でスコアリングエンジンは、Ｘ＊を現在のエンティティとし、ステップ３１８に戻る。
【００６１】
[0070]図３〜４で図示される例示的なスコアリングエンジン３８は、ＶＭ３２の内部で、ＯＳプロセッサ特権レベル（例えば、カーネルモード）で動作する。代替的実施形態ではスコアリングエンジン３８は、ＶＭ３２の内部で、ユーザモードで、または、ＶＭ３２の外側で、ハイパーバイザ３０のプロセッサ特権レベルでも実行し得る。
【００６２】
[0071]一部の実施形態ではイントロスペクションエンジン４０は、実質的にハイパーバイザ３０と同じ特権レベルで実行し、ＶＭ３２（図３）などの仮想マシンのイントロスペクションを実施するように構成される。ＶＭの、または、それぞれのＶＭ上で実行するソフトウェアエンティティのイントロスペクションは、とりわけ、ソフトウェアエンティティの挙動を分析すること、そのようなエンティティのメモリアドレスを決定し、および／または、それらのメモリアドレスにアクセスすること、ある決まったプロセスのアクセスを、そのようなアドレスに配置されるメモリのコンテンツに制約すること、そのようなコンテンツを分析すること、ならびに、それぞれのエンティティの評価インジケータ（例えば、図５でのインジケータ５２ｄ）を決定することを含み得る。
【００６３】
[0072]一部の実施形態ではホストシステム１０は、マルウェア検出イベントに関する詳細などのセキュリティ情報を、リモートセキュリティサーバと交換するように構成され得る。図１１は、そのような例示的な構成を例示するものであり、その構成では、上記で論考されたシステム１０などの複数のホストシステム１０ａ〜ｃが、セキュリティサーバ１１０にコンピュータネットワーク２６を介して接続される。例示的な実施形態ではホストシステム１０ａ〜ｃは、企業の従業員により使用される個々のコンピュータであり、一方でセキュリティサーバ１１０は、それぞれの企業のネットワークアドミニストレータにより、システム１０ａ〜ｃ上で発生する、マルウェア脅威またはセキュリティイベントを監視するように構成されたコンピュータシステムを備え得る。別の実施形態では、例えば、各々のホストシステム１０ａ〜ｃが、何十または何百もの仮想マシンをホストするサーバである、サービスとしてのインフラストラクチャ（ＩＡＡＳ：Ｉｎｆｒａｓｔｒｕｃｔｕｒｅ−ａｓ−ａ−ｓｅｒｖｉｃｅ）システムでは、セキュリティサーバ１１０は、すべてのそのようなＶＭに対するアンチマルウェア動作を中央位置から管理するように構成されたコンピュータシステムを備え得る。さらに別の実施形態ではセキュリティサーバ１１０は、アンチマルウェアソフトウェアのプロバイダ（例えば、とりわけ、セキュリティアプリケーション４４のプロバイダ）により、ネットワーク２６の周囲の様々なシステム上で検出されるマルウェアに関する統計および／または挙動データを受信するように構成されたコンピュータシステムを備え得る。ネットワーク２６は、インターネットなどのワイドエリアネットワークを含み得るものであり、一方で、ネットワーク２６の部分は、ローカルエリアネットワーク（ＬＡＮ）を含み得る。
【００６４】
[0073]図１２は、図１１で示されるような実施形態での、ホストシステム１０とセキュリティサーバ１１０との間の例示的なデータ交換を示す。ホストシステム１０は、セキュリティ報告８０をサーバ１１０に送出し、セキュリティ設定８２の集合をサーバ１１０から受信するように構成され得る。一部の実施形態ではセキュリティ報告８０は、とりわけ、ホストシステム１０上で実行するエンティティ評価器５０ａ〜ｃおよび／もしくは４０により決定される、エンティティ評価インジケータ５２ａ〜ｄおよび／もしくはスコア、ならびに／または、スコアリングエンジン３８により決定される集計スコアを含む。セキュリティ報告８０は、それぞれのシステム１０および評価されるエンティティを識別するデータ（例えば、エンティティＩＤ、名前、パス、ハッシュ、または、他の種類のエンティティ識別子）、ならびに、エンティティ評価インジケータ／スコアを、そのインジケータ／スコアが決定された対象であるホストシステムおよびエンティティに関連付けるインジケータもまた含み得る。一部の実施形態では報告８０は、ホストシステム１０上で実行するエンティティに関する統計および／または挙動データをさらに含み得る。システム１０は、報告８０を、マルウェアの検出を基にして、および／または、予定によって（例えば、数分ごと、１時間ごと、その他）送出するように構成され得る。
【００６５】
[0074]一部の実施形態ではセキュリティ設定８２は、エンティティ評価器の動作パラメータ（例えば、図５でのフィルタ５０ａ〜ｃのパラメータ）、および／または、スコアリングエンジン３８のパラメータを含み得る。エンジン３８の例示的なパラメータは、とりわけ、評価されるプロセスが悪意あるものであるかどうかを判断するためのしきい値、ならびに、スコア値８０および重み８２ａ〜ｅを含む。
【００６６】
[0075]一部の実施形態ではサーバ１１０は、最適化アルゴリズムを走らせて、そのようなパラメータを動的に調整して、マルウェア検出性能を最大にし、例えば検出率を増大し、一方で偽陽性を最小にする。最適化アルゴリズムは、様々なエンティティ評価器によりスコアリングエンジン３８に報告されるエンティティ評価インジケータ／スコアを含む、複数のホストシステム１０ａ〜ｃ上で実行する様々なエンティティに関する統計および／または挙動データを受信し、パラメータに対する最適な値を決定し得る。次いで値は、それぞれのホストシステムにネットワーク２６を介して送信される。
【００６７】
[0076]最適化の１つのそのような例では、スコア値８０を変化させることによって、それぞれの評価基準の関連性が、互いに対して効果的に変化し得る。マルウェア脅威は、典型的には次々と発生し、世界中の多数のコンピュータシステムが、同じマルウェアエージェントにより、短い時間間隔で影響を及ぼされる。セキュリティ報告８０をリアルタイムで複数のホストシステムから受信することにより、セキュリティサーバ１１０は、現在のマルウェア脅威に、現在までのところで遅れずについてゆくようにされ得るものであり、最適なセキュリティ設定８２を、それぞれのホストシステムに迅速に給送し得るものであり、設定８２は例えば、現在のマルウェア脅威を検出するために最適化されるスコア値８０の集合を含む。
【００６８】
[0077]上記で説明された例示的なシステムおよび方法によって、コンピュータシステムなどのホストシステムを、ウィルス、トロイの木馬、およびスパイウェアなどのマルウェアから保護することが可能となる。ホストシステム上で現在実行するプロセスおよびスレッドなどの複数の実行可能エンティティの各々に対して、スコアリングエンジンは、複数の評価スコアを記録し、各々のスコアは、別個の評価基準によって決定される。一部の実施形態では、評価されるソフトウェアエンティティは、実質的に範囲および複雑度において、例えば、オペレーティングシステムおよび／または仮想マシンの、個々の実行スレッドから、個々のアプリケーションまで、全体のインスタンスまで変動し得る。
【００６９】
[0078]監視されるエンティティが、評価基準を満たす（例えば、アクションを実施する）たびに、エンティティのそれぞれのスコアが更新される。対象エンティティのスコアを更新することが、対象エンティティに関係付けられる他のエンティティのスコア更新をトリガし得る。そのような関係付けられるエンティティは、とりわけ、対象エンティティの子、対象エンティティの親、内に対象エンティティがコードを注入したエンティティ、および、コードを対象エンティティ内に注入したエンティティを含む。
【００７０】
[0079]従来のアンチマルウェアシステムは、典型的には、各々のエンティティを、他のエンティティとは別々にスコアリングする。一部のマルウェアは、悪意ある活動を、悪意あるプロセスの子プロセスなどの、いくつかの別個のエージェントの間で分割し、そのことによって、個々のエージェントのどれも、検出されるのに充分なマルウェアを示す活動を実施しないようにすることにより、検出を逃れることを試み得る。対照的に本発明の一部の実施形態は、スコアを１つのエンティティから、他の関係付けられるエンティティに伝搬させ、したがって、マルウェアを示すデータを、関係付けられるエンティティにわたって補強する。スコア伝搬によって、悪意ある活動に関与させられるエージェントの少なくとも１つが検出されることが確実になり得る。
【００７１】
[0080]１つの例示的な逃れ戦略では、マルウェアエージェントは、複数の子プロセスを生み出し、閉止する場合がある。悪意ある活動は、子プロセスの間で分割され得るものであり、そのことによって、いかなる個々の子のアクションも、それらのアクション単独ではマルウェア警報をトリガしない場合がある。本発明の一部の実施形態ではスコアは、１つのエンティティから別のものに、後者が終了したものであるときでも伝搬し得る。そのような構成は、それが子プロセスの悪意あることを検出することに失敗し得る場合でも、親プロセスを悪意あるものとして検出し得る。一部の実施形態は、現在評価中のエンティティのリストを維持し、リストは、アクティブなエンティティ、および、終了したものであるエンティティの両方を含み得る。エンティティは、それぞれのエンティティのすべての子孫が終了したものであるときにのみ、リストから取り除かれ得る。
【００７２】
[0081]従来のアンチマルウェアシステムでは、ただ１つのスコアが典型的には、各々のエンティティに対して記録される。各々がその別個の基準によって計算される、複数のエンティティごとのスコアを保つことにより、本発明の一部の実施形態によって、スコアは、関係付けられるエンティティの間で、基準ごとを基礎として伝搬させられることが可能となる。そのようなスコアは、伝搬を基にして増大するか、さもなければ減少し得るものであり、そのことによって、各々のエンティティのライフサイクルの全体を通しての、悪意あることのより精密な評定が、偽陽性検出がより少ない状態で可能となる。一部の実施形態では、１つのエンティティのスコアが、関係付けられるエンティティのスコアに影響を及ぼす度合いは、数値的な伝搬重みによって調整可能である。そのような重みは、エンティティによって、および／または、評価基準によって異なり得るものであり、そのことによって、スコア伝搬の柔軟および精密な調整作業が可能となる。重み値は、人間のオペレータにより決定され得るものであり、および／または、マルウェア検出性能を改善することに向けられた、自動化された最適化に左右される場合がある。
【００７３】
[0082]一部の従来のアンチマルウェアシステムは、評価されるエンティティが悪意あるものであるかどうかを決定することを、それぞれのエンティティが、マルウェアを示す挙動を実施するかどうか、および／または、エンティティが、コードのマルウェアを示すシーケンスなどの、マルウェアを示す特徴を有するかどうかを決定することにより行う。対照的に本発明の一部の実施形態では、エンティティ評価基準は、必ずしもそれらの基準単独ではマルウェアを示すものではない。例えば一部の基準は、エンティティが、ファイルを開くこと、または、ＩＰアドレスにアクセスすることなどの良性のアクションを実施するかどうかを決定することを含む。それでもそのようなアクションは、他のアクションと組み合わされるときに悪意あるものになり得るものであり、それらの他のアクション自体は、それら単独ではマルウェアを示すものではない場合があるものである。多種多様のエンティティ挙動および／または特徴を監視し、多数の（場合によっては何百もの）評価スコアを記録し、そのようなスコアをエンティティごとの方式で集計することにより、本発明の一部の実施形態は、検出率を増大し、一方で偽陽性を最小にし得る。
【００７４】
[0083]本発明の一部の実施形態は、仮想化される環境を保護し得る。仮想化をサポートするように構成された実施形態では、本発明の一部のコンポーネントは、仮想マシンの内部で実行し得るものであり、一方で他のものは、それぞれの仮想マシンの外側で、例えば、それぞれの仮想マシンをエクスポーズするハイパーバイザのレベルで実行し得る。ハイパーバイザレベルで実行するそのようなコンポーネントは、アンチマルウェア動作を、それぞれのホストシステム上で同時に実行する複数の仮想マシンに対して実施するように構成され得る。
【００７５】
[0084]上記の実施形態が、多くの方途で、本発明の範囲から逸脱することなく改変され得ることは、当業者には明らかであろう。したがって本発明の範囲は、以下の特許請求の範囲、および、それらの法的均等物により決定されるべきである。
【図１】
0006317435.tif 000003
【図２−Ａ】
0006317435.tif 000004
【図２−Ｂ】
0006317435.tif 000005
【図３】
0006317435.tif 000006
【図４】
0006317435.tif 000007
【図５】
0006317435.tif 000008
【図６】
0006317435.tif 000009
【図７】
0006317435.tif 000010
【図８】
0006317435.tif 000011
【図９】
0006317435.tif 000012
【図１０】
0006317435.tif 000013
【図１１】
0006317435.tif 000014
【図１２】
0006317435.tif 000015