(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]図１１は、本発明の一部の実施形態による、アクティビティモニタ７４（図７）により実行されるステップの例示的なシーケンスを示す。ステップ３０２〜３０４のシーケンスでモニタ７４は、クライアントシステム１０の内部でのトリガイベントの発生に対して待機する。例示的なトリガイベントは、プロセスの起動または終結などの、クライアントシステム１０上で実行するプロセスのライフサイクルイベントを含む。他の例は、ＤＬＬなどの実行可能モジュールをロードまたはアンロードするプロセスを含む。さらに別の例示的なトリガイベントは、親プロセスが子プロセスの集合を産することである。そのようなトリガイベントの発生を検出するために、アクティビティモニタ７４は、ある決まったＯＳ関数、例えば、プロセスを実行状態に起動するためにＯＳ４６により使用される関数を、呼び出すこと、またはフックすることなどの、当技術分野で知られている任意の方法を使用し得る。
【００４５】
[0066]ステップ３０６でアクティビティモニタ７４は、イベントのタイプ、実例として、実行状態への新しいプロセスの起動を識別し得る。トリガイベントが実際に発生したとき、ステップ３０８は、それぞれのトリガイベントを引き起こすか、トリガイベントにより影響を及ぼされているかのいずれかであるプロセスを識別し得る。一部の実施形態ではモニタ７４は、そのようなプロセスの識別情報を、現在実行状態にある各々のプロセスを表すためにＯＳ４６により使用されるデータ構造から決定し得る。実例としてＷｉｎｄｏｗｓでは、各々のプロセスはエグゼクティブプロセスブロック（ＥＰＲＯＣＥＳＳ）として表され、そのブロックは、中でも、それぞれのプロセスのスレッドの各々に対するハンドル、および、ＯＳ４６が、それぞれのプロセスを複数の実行するプロセスから識別することを可能とする、一意的なプロセスＩＤを含む。同様のプロセス表現が、Ｌｉｎｕｘ（登録商標）などの他のＯＳに対して利用可能である。２つ以上のプロセスがトリガイベントにより影響を及ぼされるとき、ステップ３０８は、それぞれのプロセス間の関係性を決定することをさらに含み得る。実例として、親プロセスが子プロセスを起動するとき、モニタ７４は、子および親の識別情報、ならびに、それらの関係性のタイプ（派生）をレコード化し得る。次にステップ３１０でアクティビティモニタ７４は、トリガイベントに関する通知を判断ユニット７２に送信し得る。
【００４６】
[0067]図１２は、本発明の一部の実施形態による、判断ユニット７２により実行されるステップの例示的なシーケンスを示す。ステップ３１２〜３１４のシーケンスで判断ユニット７２は、通知の受信に対して待機する。そのような通知は、アクティビティモニタ７４によって（上記を確認されたい）、または、アンチマルウェアエンジン５６によって（例えば、図７でのセキュリティイベント通知６４を確認されたい）のいずれかで伝達され得る。通知が受信されるとき、ステップ３１６は、通知が、アンチマルウェアエンジン５６から受信されるセキュリティイベント通知であるかどうかを判定し、はい（ＹＥＳ）であるとき、ステップ３２０で判断ユニット７２は、受信されるタイプまたはセキュリティイベント通知によって進行する（さらに多くの詳細は下記に）。いいえ（ＮＯ）であるとき、ステップ３１８は、通知が、アクティビティモニタ７４から受信されるトリガイベント通知であるかどうかを判定し、はいであるとき、ステップ３２２で判断ユニット７２は、通知によって伝達されるトリガイベントのタイプによって進行する。
【００４７】
[0068]図１３は、トリガイベントがプロセスの起動を含むとき、ステップ３２２（図１２）の内部で判断ユニット７２により実行されるステップの例示的なシーケンスを示す。ステップ３２４で判断ユニット７２は、それぞれのプロセスによりロードされる実行可能モジュールの集合を決定し得る。ステップ３２４を実行するために、判断ユニット７２は、当技術分野で知られている任意の方法を用い得る。実例として、Ｗｉｎｄｏｗｓ（登録商標）ＯＳを走らせるクライアントシステムでは、プロセスを起動する際にＯＳ４６は、それぞれのプロセスに関連付けられるリソースを管理するためにＯＳ４６により使用されるデータを含む、プロセス環境ブロック（ＰＥＢ：ｐｒｏｃｅｓｓ  ｅｎｖｉｒｏｎｍｅｎｔ  ｂｌｏｃｋ）として知られているプロセス固有のデータ構造をセットアップする。そのようなデータは、ロードされるモジュールの仮想メモリアドレスを含む。判断ユニット７２はしたがって、ロードされるモジュールを、それぞれのプロセスのＰＥＢによって識別し得る。
【００４８】
[0069]次に判断ユニット７２は、ステップ３２６〜３４２のシーケンスをループで、対象とされるプロセスによりロードされる各々のモジュールに対して実行し得る。ステップ３２６は、ロードされるモジュールを選択する。ステップ３２８で判断モジュールは、選択されるモジュールの識別インジケータを計算するものであり、識別インジケータは、キャッシュ２２２および／またはサーバ２１４が、選択されるモジュールをあいまいさなしに識別することを可能とするものである。一部の実施形態では識別情報インジケータは、中でも、選択されるモジュールのコードセクションのハッシュ、または、選択されるモジュールのコードセクションを含む。ハッシュを計算するために使用される例示的なハッシュ関数は、セキュアハッシュ（ＳＨＡ）およびメッセージダイジェスト（ＭＤ）アルゴリズムを含む。一部の実施形態ではキャッシュマネージャ７０は、識別するハッシュを、キャッシュ２２２へのルックアップキーとして使用し得る。他の例示的な識別情報インジケータは、中でも、選択されるモジュールのファイル名、サイズ、バージョン、および、タイムスタンプなどの、それぞれのモジュールのメタデータを含み得る。
【００４９】
[0070]ステップ３３０は、キャッシュマネージャ７０に、選択されるモジュールのモジュール評判データをキャッシュ２２２から検索するように命令する。ステップ３３０は、選択されるモジュールの識別情報インジケータをキャッシュマネージャ７０に送出し、選択されるモジュールのモジュール評判インジケータ８０をキャッシュマネージャ７０から受信することを含み得る。ステップ３３２は、キャッシュルックアップが成功したかどうか、すなわち、選択されるモジュールの評判データがキャッシュ２２２で見出されたかどうかを判定し、はいであるとき、判断ユニットは、下記で説明されるステップ３４２に進む。キャッシュ２２２が現在、要求される評判データを保持しないとき（実例として、要求される評判データがキャッシュ２２２から期限切れになったとき）、ステップ３３４で判断ユニット７２は、クラウドマネージャ６８に、評判データを評判サーバ２１４から検索するように命令し得る。ステップ３３４は、選択されるモジュールの識別情報インジケータ（例えば、ハッシュ識別子）を含む評判要求をサーバ２１４に送出し、それぞれのモジュールのクラウド評判インジケータ７８をサーバ２１４から受信することを含み得る。インジケータ７８を検索するために、サーバ２１４の一部の実施形態は、選択されるモジュールの識別するハッシュを、中央評判データベース１６、および／または、環境固有の評判データベース２４へのルックアップキーとして使用し得る。そのようなデータベースルックアップが失敗するとき、すなわち、選択されるモジュールに対する評判データが評判データベースで見出されなかったとき、サーバ２１４は失敗のインジケータを戻し得る。
【００５０】
[0071]ステップ３３６〜３３８のシーケンスで判断ユニット７２は、選択されるモジュールのモジュール評判インジケータ８０を、選択されるモジュールのクラウド評判インジケータ７８によって明確化（ｆｏｒｍｕｌａｔｅ）し得る。一部の実施形態では、モジュールスキャンパラメータ値８１ａおよびキャッシュ期限切れインジケータ８１ｂを決定することは、クラウド評判インジケータ７８からのそれぞれの値（それぞれ、項目７９ａおよび７９ｂ、図１０−Ａ〜Ｂを確認されたい）をコピーすることを含む。一部の実施形態では、ステップ３３８で判断ユニット７２は、モジュール評価インジケータ８１ｃを、信頼される、信頼されない、または、不明である、のいずれかとして決定し得る。１つの例では、選択されるモジュールは、データベースルックアップが成功したとき、すなわち、ステップ３３４が、選択されるモジュールに対するクラウド評判インジケータを戻したとき、信頼される、と宣言される。選択されるモジュールに対する評判データが評判データベースで見出されなかったとき、選択されるモジュールは、不明である（中性）の評価を受け得る。一部の実施形態では、判断ユニット７２が、選択されるモジュール（または、選択されるモジュールの別個のインスタンス）が悪意を疑われるということを指示する、アンチマルウェアエンジン５６からのセキュリティ通知を受信したとき、選択されるモジュールは、ステップ３３４が、選択されるモジュールに対するクラウド評判インジケータを戻したか否かに関わらず、信頼されない、の評価を受け得る。
【００５１】
[0072]ステップ３４０で判断ユニット７２は、キャッシュマネージャ７０に、選択されるモジュールの評判データ（インジケータ８０など）をキャッシュ２２２に記憶するように命令する。一部の実施形態ではキャッシュマネージャは、それぞれのモジュールが悪意を疑われるとき、キャッシュ期限切れインジケータ８１ｂの値を改変し得る。実例として、判断ユニットが、それぞれのモジュールに関するセキュリティ通知を受信したとき、インジケータ８１ｂは、永続的レコード（期限切れ時間なし）を指示するように修正され得る。
【００５２】
[0073]ステップ３４２が次いで、処理するために残されている何らかのさらに多くの実行可能モジュールが存在するかどうかを判定し、はいであるならば、実行は、上記で説明されたステップ３２６に戻る。対象プロセスの最後の実行可能モジュールが処理されたとき、ステップ３４４〜３４６のシーケンスが、対象プロセスのプロセス評判インジケータ８２を、対象プロセスの構成要素となる実行可能モジュールのモジュール評判インジケータ８０によって決定する。プロセス評判インジケータ８２を決定するための例示的な判断表が、表１で与えられる。
【００５３】
【表１】
0006317434.tif 000002
【００５４】
[0074]ステップ３４６で判断ユニット７２は、対象プロセスのスキャンパラメータ値８３ａを、対象プロセスの構成要素である実行可能モジュールのスキャンパラメータ値８１ａによって決定する。一部の実施形態では、各々のセキュリティ機能７６ａ〜ｄ（図７）に対して、プロセススキャンパラメータ値８３ａのそれぞれの集合が、対象プロセスの編成要素である実行可能モジュールのモジュールスキャンパラメータ値集合８１ａに適用される集合演算によって決定されるものであり、パラメータ値集合８１ａは、それぞれの機能に対応するものである。プロセススキャンパラメータ値８３ａを決定するために使用される例示的な集合演算は、中でも、和集合および共通集合を含む。あるいは、モジュールスキャンパラメータ集合８１ａがバイナリ値を含むとき、集合演算は、論理ＡＮＤおよびＯＲ演算子を含み得る。プロセススキャンパラメータ値８３ａのそのような決定の例が、下記で、図９のプロセス８４ｂに対して与えられる。表２は、プロセス８４ｂの構成要素である各々のモジュールの例示的なモジュールスキャンパラメータ値８１ａ、および、プロセス８４ｂの、結果として生じるプロセススキャンパラメータ値８３ａを示す。
【００５５】
【表２】
0006317434.tif 000003
【００５６】
[0075]表２の例では、第３および第５の列は、共通集合／ＡＮＤ演算子を使用して処理されるパラメータ値集合を列挙し、一方で、第４および第６の列は、和集合／ＯＲ演算子を使用して処理されるパラメータ値集合を列挙する。機能Ｆ１はリアルタイム保護プロシージャであり得るものであり、機能Ｆ２は挙動のスキャナであり得る。スキャンパラメータ値は、以下の例示的な意味を有し得る。
ａ１：アンチウィルス技術Ｔ１をアクティブにする
ａ２：ディスクファイルを読み出すための試行を監視しない
ａ３：ディスクファイルに書き込むための試行を監視しない
ａ４：実行可能ファイルのみをスキャンする
ｂ１：ヒューリスティック集合Ｈ１を不能にする
ｂ２：ヒューリスティック集合Ｈ２を不能にする
ｂ３：挙動のスキャン技術Ｔ２をアクティブにする
一部の実施形態では判断ユニット７２は、集合｛ａ２，ａ４｝、｛ａ４｝、｛ａ２，ａ４｝、および、｛ａ２，ａ３，ａ４｝の共通集合をとって｛ａ４｝を生出し、集合｛ａ１｝および｛Ｎ／Ａ｝の和集合をとって｛ａ１｝を生出し得る。判断ユニット７２はさらに、２つの結果として生じる集合｛ａ１｝および｛ａ４｝の和集合をとって、｛ａ１，ａ４｝を、セキュリティ機能Ｆ１に対応する、プロセスＢのプロセススキャンパラメータ値８３ａの集合として生出し得る。
【００５７】
同様にセキュリティ機能Ｆ２に対して、判断ユニット７２は、集合｛ｂ１｝、｛ｂ１｝、｛ｂ１｝、および、｛ｂ１，ｂ２｝の共通集合をとって｛ｂ１｝を生出し、集合｛ｂ３｝および｛Ｎ／Ａ｝の和集合をとって｛ｂ３｝を生出し得る。結果として生じる集合｛ｂ１｝および｛ｂ３｝の和集合として決定される集合｛ｂ１，ｂ３｝は、したがって、セキュリティ機能Ｆ２に対応する、プロセスＢのプロセススキャンパラメータ値８３ａの集合を表し得る。様々なパラメータの上記で列挙された意味を使用すると、プロセススキャンパラメータ値８３ａは、プロセスＢをスキャンする際に、リアルタイム保護コンポーネントは、実行可能オブジェクトをスキャンするのみであるべきであり、アンチウィルス技術Ｔ１をアクティブにすべきであり、一方で挙動のスキャナコンポーネントは、ヒューリスティック集合Ｈ１を不能にし、挙動のスキャン技術Ｔ２をアクティブにすべきであるというように、アンチマルウェアエンジン５６に命令する。
【００５８】
[0076]プロセススキャンパラメータ値８３ａおよびプロセス評価インジケータ８３ｃを計算した後、判断ユニットは、対象プロセスのプロセス評判インジケータ８２を集成し、ステップ３４８で、インジケータ８２をアンチマルウェアエンジン５６に送信し得る。
【００５９】
[0077]図１４は、図１での環境１２ａ〜ｂなどの隔離環境での評判要求の例示的な処理を例証する。図７〜８で例証される例示的なシステムと比較されると、図１４のシステムは、中央評判サーバ１４とエンドクライアント１０との間の、追加的なレベルのキャッシングおよびサーバルックアップを導入する。そのような構成は、サーバ１４とエンドクライアントシステム１０との間のデータトラフィックを低下させることにより、アンチマルウェア動作を促進し得る。
【００６０】
[0078]図２および１４で図示されるものに類する構成は、さらには、評判データをハンドリングすることの環境固有の様式を可能にし得る。一部の実施形態では環境固有の評判データベース２４は、それぞれの隔離環境１２に固有に修整される、クラウドおよび／またはモジュール評判インジケータの集合を含む。１つのそのような例では、企業イントラネットのクライアントシステム１０ｄ〜ｅ（図２）は、Ｍｉｃｒｏｓｏｆｔ  Ｏｆｆｉｃｅ（登録商標）などの広く使用されるソフトウェアアプリケーションＸを走らせる。アプリケーションＸは、それぞれのクライアントシステムがインターネットに接続される限りはマルウェアに対して脆弱である、実行可能モジュールＹをロードする。クライアントシステム１０ｄ〜ｅを接続するローカルネットワーク１２０がインターネットに直接接続されないとき、実例として、ネットワーク１２０がファイアウォールにより保護されるとき、アプリケーションＸはもはや、インターネット接続性に関連付けられる脆弱性によって損害を受けない。したがって、アプリケーションＸをそのような脆弱性に対して監視することは、システム１０ｄ〜ｅ上では（すなわち、隔離環境１２の内部では）必要でない場合があり、一方でそのような監視は、インターネットに直接接続されるシステムでは重要であり得る。一部の実施形態では、アンチマルウェアエンジン５６を構成するスキャンパラメータは、エンジン５６を走らせるそれぞれのクライアントシステムが、隔離環境１２の内部で動作したか、または隔離環境１２の外側で動作したかによって、異なる値にセットされ得る。エンジン５６はしたがって、環境１２の内部で実行するモジュールＹのインスタンスを、環境１２の外側で実行するモジュールＹのインスタンスとは別個の様式でスキャン／監視するように構成され得る。
【００６１】
[0079]環境固有性の別の例では、エンタープライズは、隔離環境１２の外側の他のクライアントシステムにより使用されない、占有的なソフトウェアアプリケーションＸを使用する。アプリケーションＸの実行可能モジュールＹに関わる評判データは、したがって、他のクライアントシステムにより使用される公算が大きくない。一部の実施形態ではそのような評判データは、環境固有の評判データベース２４に保存されるのみであり、中央評判データベース１６には保存されない。そのような構成によって、隔離環境１２の外側で動作するクライアントに対する、ならびに、環境１２の内側で動作するクライアントに対する、データベースルックアップの効率は増大し得る。
【００６２】
[0080]一部の実施形態では、図１４で図示される実行フローは、図１３でのステップ３２８〜３４０の実行と同時進行する。ローカル評判サーバ１１４は、サーバキャッシュマネージャ１７０、ローカル環境マネージャ８８、および、サーバクラウドマネージャ１６８を含み得る。サーバキャッシュマネージャ１７０およびサーバクラウドマネージャ１６８の動作は、それぞれ、図７〜８および図１３に関係して上記で説明された、キャッシュマネージャ７０およびクラウドマネージャ６８の動作とよく似たものであり得る。一部の実施形態では、クライアントシステム１０の評判マネージャ５８が対象実行可能モジュールの評判データを要するとき、マネージャ５８は、対象モジュールの識別情報インジケータ（例えば、ハッシュ識別子）を含む評判要求１６０を明確化し得るものであり、要求１６０をローカル評判サーバ１１４に、ローカルネットワーク１２０を介して送信し得る。ステップ３５２でサーバキャッシュマネージャ１７０は、それぞれのモジュールに対する評判データをサーバ評判キャッシュ２２でルックアップする。そのようなデータがキャッシュ２２に現存するとき、実行は、下記で説明されるステップ３６２に進む。評判データがキャッシュされないとき、ステップ３５４でローカル環境マネージャ８８は、評判データを環境固有の評判データベース２４でルックアップする。評判データがデータベース２４で見出されるとき、実行はステップ３６２に進む。評判データがデータベース２４で見出されないとき、ステップ３５８でサーバクラウドマネージャ１６８は、評判データを中央評判サーバ１４に要求し得る。次いでステップ３６０でサーバクラウドマネージャ１６８は、サーバ１４から受信される応答によって、中央評判サーバ１４が、要求されるデータを検索したかどうかを判定する。クラウドマネージャ１６８が、それぞれのモジュールのクラウド評判インジケータ７８などの評判データを受信するとき、ローカル評判サーバ１１４は、それぞれのモジュールのモジュール評判インジケータ８０を計算し（例えば、図１３でのステップ３３６〜３３８の説明を確認されたい）、ステップ３６４でサーバキャッシュマネージャは、インジケータ８０をサーバ評判キャッシュ２２に保存する。ステップ３６２でローカル評判サーバ１１４は、評判要求１６０への応答を、要求するクライアント１０に送出し得る。一部の実施形態ではステップ３６２は、プロセス評判インジケータ８２を計算することをさらに含み得る（例えば、図１３でのステップ３４４〜３４６の説明を確認されたい）。
【００６３】
[0081]ステップ３２２（図１２）の実行の別の例では、トリガイベントは、ＤＬＬなどの実行可能モジュールをロードする対象プロセスを含む。一部の実施形態では、新しいモジュールをロードすることが、対象プロセスの評判インジケータ８２を変化させる場合がある。実例として、信頼されないモジュールをロードすることが、プロセスの評判を、肯定的／信頼される、から、中性／不明である、に、または、否定的／信頼されない、にまでも落とす場合がある。インジケータ８２を再計算することは、実例として、ステップ３２８から３４０（図１３）まで通して実行することであって、選択されるモジュールが、新しくロードされる実行可能モジュールである、実行することを行って、それぞれのモジュールのモジュール評判インジケータ８０を決定することを含み得る。次いで判断ユニット７２は、インジケータ８２を、ステップ３４４〜３４６に関係して上記で説明されたものと同様の様式で決定し得る。実例としてプロセス評価インジケータ８３ｃは、判断表（例えば、表１を確認されたい）によって決定され得るものであり、プロセススキャンパラメータ値８３ａは、現在の値８３ａを、新しくロードされるモジュールのモジュールスキャンパラメータ値８１ａと、和集合／ＯＲおよび共通集合／ＡＮＤなどの演算子を使用して組み合わせることにより更新され得る。
【００６４】
[0082]ステップ３２２（図１２）の実行の別の例では、トリガイベントは、ＤＬＬなどの実行可能モジュールをアンロードする対象プロセスを含む。そのような事例では判断ユニット７２は、対象プロセスのプロセス評判インジケータ８２を、対象プロセスの新しいモジュール編成を反映するように再算出し得る。インジケータ８２を再算出するために、一部の実施形態は、図１３で例証されるステップのシーケンスを実行し得る。一部の実施形態では判断ユニット７２は、プロセス評判インジケータ８２を、対象プロセスの現在のプロセス評価インジケータ８３ｃによって再算出すべきかどうかを判断し得る。実例として、対象プロセスが現在、否定的／信頼されない、と評価されるとき、判断ユニットは、インジケータ８２を再算出することなく、対象プロセスの存続時間の間、否定的／信頼されない評価を維持し得る。
【００６５】
[0083]図１５は、セキュリティイベント通知を受信する際に判断ユニット７２により実行されるステップ（図１２でのステップ３２０）の例示的なシーケンスを示す。一部の実施形態ではセキュリティイベント通知６４（図７）は、疑わしいプロセス、および／または、疑わしいモジュールのインジケータ、ならびに、それぞれの通知をトリガするセキュリティイベントのタイプのインジケータを含む。実例として通知６４は、プロセスＹのモジュールＸがコードをプロセスＺ内に注入したということを指示し得るものであり、この例では、Ｘは疑わしいモジュールであり得るものであり、Ｙは疑わしいプロセスであり得るものであり、コード注入はトリガセキュリティイベントであり得る。ステップ３７２は、セキュリティ通知６４を調べて、実例として、セキュリティイベントのタイプを抽出することと、疑わしいプロセス、および／または、疑わしいモジュールを識別することとを行う。ステップ３７４で判断ユニット７２は、ステップ３７２で識別されるセキュリティイベントが、アンチマルウェアエンジン５６に、パラノイドモードと呼称される動作の特定のモードを始めるように命令することを正当化するものであるかどうかを判定し得る。はいであるとき、ステップ３７６で判断ユニット７２は、セキュリティアラート６６（図６）をアンチマルウェアエンジン５６に送信し得る。
【００６６】
[0084]一部の実施形態では、パラノイドモードをアクティブにすることは、現在実行状態のすべてのプロセスのプロセス評価インジケータ８３ｃを、否定的／信頼されない、に、パラノイドモード時間帯と呼称されることになる、数分などの時間のあらかじめ決定された期間の間、一時的に変化させることをさらに含み得る。パラノイドモード時間帯が経過した後、すべてのプロセスの評判インジケータは、セキュリティアラート６６より前の値に復帰させられ得る。一部の実施形態では、パラノイドモード時間帯はイベント固有であり、一部のセキュリティイベントは、他のセキュリティイベントより長い時間の間パラノイドモードをアクティブにすることが当然ある。２つ以上のセキュリティイベントがおおよそ同じ時間に発生するとき、一部の実施形態は、パラノイドモード時間帯を、少なくとも、すべての個々のセキュリティイベントの最も長いパラノイドモード時間帯と同じ大きさの値でセットする。いくつものセキュリティイベントがシーケンスで発生するとき、パラノイドモード時間帯は、累積的であり得るものであり、または、シーケンス内の最後のイベントのパラノイドモード時間帯に同期して期限切れになるように決定され得る。パラノイドモードに関するさらに多くの詳細が、下記で与えられる。
【００６７】
[0085]パラノイドモードを起こすことが正当化されないとき、ステップ３７８で判断ユニット７２は、疑わしいモジュールのモジュール評価インジケータ８１ｃを、ステップ３７２で識別されるセキュリティイベントのタイプによって更新し得る。モジュール評価インジケータを更新することは、実例として、疑わしいモジュールを、信頼される、から、中性、または、信頼されない、に、セキュリティイベントの重大度に依存して格下げすることを指示し得る。ステップ３８０で判断ユニット７２は、キャッシュマネージャ７０に、疑わしいモジュールの更新される評判データをキャッシュ２２２に保存するように命令し得る。ステップ３８０は、システム１８に、更新物を中央評判データベース１６に含めるように命令する、データベース更新システム１８への評判フィードバックを送出することをさらに含み得る（詳細に関しては、下記を確認されたい）。
【００６８】
[0086]判断ユニット７２は次いで、疑わしいモジュールのインスタンスを現在使用するプロセスの集合を識別し得る。そのようなプロセスを識別することは、アクティビティモニタ７４により管理および提供される情報によって進行し得る。次に判断ユニットは、ステップ３８４〜３９０のシーケンスをループで、それぞれの集合内の各々のプロセスに対して実行して、そのようなプロセスの評判インジケータ８２を更新し得る。そのような更新することは、疑わしいモジュールに関わる新しいセキュリティデータを、クライアントシステム１０の全体に効果的に伝搬させ得る。ステップ３８４は、プロセスをプロセスの集合から選択するものであり、それらのプロセスは、それらのプロセスのメモリ空間内にロードされる疑わしいモジュールのインスタンスを現在有するものである。ステップ３８６は、選択されるプロセスのプロセス評判インジケータ８２を、実例として、図１３に関係して上記で説明されたステップのシーケンスを使用して再算出し得る。ステップ３８６の結果として、一部のプロセスの評判は、肯定的／信頼される、から、中性／不明である、に、または、否定的／信頼されない、に格下げされ得るものであり、同様に一部のプロセスは、中性／不明である、から、否定的／信頼されない、に格下げされ得る。ステップ３８８は、選択されるプロセスの更新されるプロセス評判インジケータ８２をアンチマルウェアエンジン５６に送信し得る。ステップ３９０で判断ユニット７２は、まだ更新されない何らかのさらに多くのプロセスが存在するかどうかをチェックし、はいであるとき、ステップ３８４に戻る。
【００６９】
[0087]図１６は、本発明の一部の実施形態による、アンチマルウェアエンジン５６により実行されるステップの例示的なシーケンスを例証する。エンジン５６は、評判マネージャ５８と同時的に実行し得るものであり、上記で説明されたように、マネージャ５８と通知および／または評判データを交換し得る。ステップ３９４〜３９６のシーケンスでアンチマルウェアエンジン５６は、イベントの発生に対して待機するように構成され、一方で、マルウェアを検出および／または除去することなどのアンチマルウェア動作を実行する。マルウェア検出は、クライアントシステム１０上で現在実行するプロセスおよび／または実行可能モジュールの集合を監視することと、実例として、それぞれのプロセスおよび／またはモジュールにより実行される、ある決まったアクションを捕捉し、そのようなアクションが、悪意のあるものである、または、マルウェアを指し示すかどうかを判定することとを含み得る。一部の実施形態では、エンジン５６のセキュリティ機能７６ａ〜ｄは、機能固有のスキャンパラメータを調整することにより、互いに独立して構成され得る。そのようなスキャンパラメータの値を調整することにより、エンジン５６は、動作の複数の別個のモードおよび／またはプロトコルの各々で動作するように構成され得る。一部の実施形態では、そのようなスキャンパラメータは、各々のプロセスおよび／または実行可能モジュールに対して独立してセットされ得るものであり、そのことによってエンジン５６は、可能性として別個のプロトコルを使用して、各々のそのようなプロセスまたはモジュールをスキャン／監視し得る。プロセス固有のスキャンパラメータ値の例は、上記で示されたような、評判マネージャ５８によりエンジン５６に送信されるプロセス評判インジケータ８２のスキャンパラメータ値８３ａである。
【００７０】
[0088]ステップ３９６は、イベントが発生したかどうかを判定し、いいえであるとき、実行をステップ３９４に戻す。そのようなイベントは、クライアントシステム１０の内部で発生するセキュリティイベント、ならびに、セキュリティアラート６４およびプロセス評判インジケータ８２を評判マネージャ５８から受信することを含む。イベントが発生したとき、ステップ３９８でエンジン５６は、イベントが、セキュリティアラートを受信することを含んでいたかどうかを判定し得るものであり、いいえであるとき、エンジン５６はステップ４００に進行し得る。一部の実施形態ではセキュリティアラート６６は、エンジン５６に、パラノイドモードを始める、または、終わらせるように命令する。パラノイドモードを始めるために、ステップ４０４でエンジン５６は、セキュリティ機能７６ａ〜ｄのスキャンパラメータを、厳格なセキュリティプロトコルに対応する、値のあらかじめ決定された集合にリセットし得るものであり、したがって、評判マネージャ５８から受信されるいずれのプロセス固有の値も無効にする。一部の実施形態では、パラノイドモードの内部でアクティブにされる厳格なセキュリティプロトコルは、他の場合では計算リソースを節約するために休止状態であり得るセキュリティ機能をアクティブにすることを含む。そのような機能は、それぞれのセキュリティアラートをトリガした脅威のタイプを固有に対象とされる、検出ルーチンおよび／またはプロシージャを含み得る。パラノイドモードは、中でも、検出ヒューリスティックの追加的な集合をアクティブにすること、および、アンチマルウェア動作をスピードアップするために使用される最適化の集合を不能にすることをさらに含み得る。一部の実施形態ではパラノイドモードは、セキュリティアラート６６で指示される時間の限られた期間の間アクティブにされ得るものであり、パラノイドモードは、指示される期間の後で自動的に期限切れになり得るものであり、または、エンジン５６にパラノイドモードを終わらせるように明示的に命令するセキュリティアラート６６を受信することに応じてオフにされ得る。一部の実施形態では、パラノイドモードを終わらせることは、スキャンパラメータを、パラノイドモードのアクティブ化に先行してレコード化された、プロセス固有の、および／または、モジュール固有の値にリセットすることを含む。
【００７１】
[0089]ステップ４００でアンチマルウェアエンジン５６は、イベントが、プロセス評判インジケータを評判マネージャ５８から受信することを含むかどうかを判定し、いいえであるとき、エンジン５６はステップ４０２に進行する。評判インジケータが受信されたとき、ステップ４０６でアンチマルウェアエンジンは、スキャンパラメータ値を、受信された評判インジケータにより指示される新しい値に更新し得る。
【００７２】
[0090]ステップ４０２でエンジン５６は、イベントがセキュリティイベント（実例として、プロセスがライブラリを別のプロセス内に注入した）であるかどうかを判定し、いいえであるとき、エンジン５６はステップ３９４に戻る。セキュリティイベントが実際に検出されたとき、ステップ４０８は、それぞれのセキュリティイベントをトリガする疑わしいモジュール、および／または、疑わしいプロセスを識別し、ステップ４１０でエンジン５６は、疑わしいモジュールの識別情報、および、セキュリティイベントのタイプを指示するセキュリティイベント通知６４を評判マネージャ５８に送信する。
【００７３】
[0091]図１７は、本発明の一部の実施形態による、評判更新システム１８（例えば、図１を確認されたい）の例示的な構成を示す。システム１８は、それぞれのモジュールに関わる評判フィードバック９０をクライアントシステム１０ａ〜ｅから受信することに応じて、馴染みのあるモジュールの現在の評判データを変化させることにより、および／または、中央評判データベース１６に、評判フィードバック９０で識別される、馴染みのないモジュールに対して決定される評判データを追加することにより、中央データベース１６に記憶される評判データを最新に保つように構成され得る。一部の実施形態では、馴染みのあるモジュールは、データベース１６がすでに評判データをそれらに対して内包するソフトウェアオブジェクトを表し、一方で、馴染みのないモジュールは、フィードバック９０が受信されるとき、データベース１６に、それらに対して利用可能である評判データがないオブジェクトを表す。馴染みのないモジュールに関する情報は、クライアントシステム１０ａ〜ｅから、および／または、新しい製品もしくは製品更新物をリリースするソフトウェアベンダから受信され得る。
【００７４】
[0092]一部の実施形態では評判更新システム１８は、フィードバック分析器９２と、フィードバック分析器９２に接続されるモジュール分析エンジン９４と、分析器９２およびエンジン９４に接続されるデータベース更新ユニット９６とを含む。モジュール分析エンジン９４は、馴染みのないモジュールの評判を評価することと、そのようなモジュールに対するクラウド評判インジケータ７８を明確化することとを行うように構成され得る。一部の実施形態ではエンジン９４は、各々のモジュールのアクションおよび／または挙動のレコードを収集するように構成され、レコードは、オペレータおよび／または機械が、それぞれの馴染みのないモジュールに対する最適なスキャンパラメータ値を導出することを可能とするものである。スキャンパラメータ値のそのような導出および／または最適化は、当技術分野で知られている任意の方法により実行され得る。レコードを収集するために、エンジン９４はイベント検出コンポーネントを用い得るものであり、それらのコンポーネントは、それぞれの馴染みのないモジュールによる、子オブジェクトの起動、または、コードの注入などのランタイムイベントを捕捉するように構成され得る。一部の実施形態ではモジュール分析エンジン９４は、それぞれの馴染みのないモジュールに対する、クラウドスキャンパラメータ値７９ａおよび／またはキャッシュ期限切れインジケータ７９ｂを決定するようにさらに構成され得る。そのような決定は、エンジン９４のコンポーネントにより実行されて、全体的に自動的であり得るものであり、または、人間オペレータにより監督され得る。
【００７５】
[0093]図１８は、評判フィードバック９０をクライアントシステム１０から受信する際に更新システム１８により実行されるステップの例示的なシーケンスを例証する。一部の実施形態では評判フィードバック９０は、それぞれのモジュールをフィードバック９０の主題として指示する、実行可能モジュールの識別情報インジケータ（例えば、ハッシュ識別子）を含む。それぞれのモジュールが馴染みのあるものであるとき、評判フィードバック９０は、それぞれのモジュールの評判の変化のインジケータをさらに含み得る。一部の実施形態では評判は、実例として、それぞれのモジュールが肯定的、中性、または、否定的評判を有するということを指示する、モジュール評価インジケータ（例えば、図１０−Ｂでの項目８１ｃを確認されたい）により説明される。評判の変化は、クライアントシステム１０でセキュリティイベントを引き起こすそれぞれのモジュールによりトリガされ得る（さらには、図１６でのステップ４０２、４０８、および、４１０に関係付けられる上記の論考を確認されたい）。実例として、モジュールが、マルウェアを指し示すアクションを実行するとき、その評判は、肯定的／信頼される、から、中性／不明である、または、否定的／信頼されない、にまでも格下げされ得る。そのような事例では評判フィードバック９０は、それぞれのモジュールにより引き起こされるセキュリティイベントのタイプ（例えば、コード注入）を指し示すインジケータをさらに含み得る。評判フィードバック９０が、馴染みのないモジュールを指すとき、フィードバック９０は、コードのセクション、実例として、それぞれのモジュールのすべての実行可能コード、ならびに／または、中でも、それぞれのモジュールのモジュールファイル名、バイトサイズ、タイムスタンプ、および、パスなどのメタデータを含み得る。
【００７６】
[0094]ステップ４１２〜４１４のシーケンスでフィードバック分析器９２は、評判フィードバック９０により指示されるフィードバックのタイプ（例えば、評判更新）を決定し、フィードバック９０が、馴染みのある実行可能モジュールを指すか、または、馴染みのない実行可能モジュールを指すかを決定する。それぞれのモジュールが、馴染みのあるものであるとき、ステップ４１６でシステム１８は、データベース更新ユニット９６を用いて、それぞれのモジュールに関して中央評判データベース１６で現在保持される評判データを、フィードバック９０により指示される評判の変化を反映するように更新する。一部の実施形態では、それぞれのモジュールの評判が、肯定的／信頼される、から、中性／不明である、に、または、否定的／信頼されない、に格下げされるとき、データベース更新ユニット９６は、それぞれのモジュールの評判レコードを中央評判データベース１６から削除し得る。そのような実施形態ではデータベース１６は、肯定的／信頼される、と現在格付けされる実行可能モジュールのレコードのみを効果的に記憶し得る。
【００７７】
[0095]フィードバック９０が、馴染みのないモジュールを指示するとき、ステップ４１８で評判更新システム１８は、それぞれのモジュールのデータを、分析のためにモジュール分析エンジン９４に送出する。ステップ４１８でエンジン９４は、それぞれのモジュールが悪意のあるものである公算が大きいかどうかを、それぞれのモジュールのコードのセクションを分析することにより判定し得る。エンジン９４は、それぞれのモジュールが、アクションのあらかじめ決定された集合（例えば、ファイルをネットワークからダウンロードする、ファイルをディスクに書き込む、コードを注入する等）のいずれかを実行するかどうかを判定するなど、馴染みのないモジュールの機能の集合をさらに決定し得る。一部の実施形態では、ステップ４１８はさらには、馴染みのないモジュールを、実行可能モジュールの複数のクラスまたはカテゴリ（例えば、メイン実行可能ファイル、共有ライブラリ等）の１つに分類することを含み得る。
【００７８】
[0096]ステップ４２０でモジュール分析エンジン９４は、クライアントアンチマルウェアエンジン５６を構成するために使用されるスキャンパラメータ値の集合を含む、それぞれのモジュールに対するクラウド評判インジケータを決定し得る。次にステップ４２２で評判更新システム１８は、データベース更新ユニットを用いて、馴染みのないモジュールに対して決定されるクラウド評判インジケータ７８を中央評判データベース１６に保存し得る。一部の実施形態ではステップ４２２は、肯定的／信頼される評判評価をエンジン９４から受けた、馴染みのないモジュールに対してのみ実行される。
【００７９】
[0097]上記で説明された例示的なシステムおよび方法によって、コンピュータシステムなどのクライアントシステムを、ウィルス、トロイの木馬、および、スパイウェアなどのマルウェアから保護することが可能となる。一部の実施形態では評判マネージャは、アンチマルウェアエンジンと同時的に実行する。アンチマルウェアエンジンは、それぞれのクライアントシステム上で実行するマルウェアを検出すること、および／または、そのようなマルウェアを除去する、もしくは、無能力にすることなどの動作を実行する。クライアントシステム上で実行する各々のプロセスに対して、評判マネージャは、評判インジケータをアンチマルウェアエンジンに送信し得るものであり、評判インジケータは、それぞれのプロセスが悪意のあるものでないという信頼のレベルを指し示すものである。
【００８０】
[0098]従来のアンチマルウェアシステムでは、ソフトウェアオブジェクトは、それらの評判に関わらずスキャンされる。対照的に、本発明の一部の実施形態では、アンチマルウェアエンジンは、優遇措置を信頼されるオブジェクトに与え得る。実例としてアンチマルウェアエンジンは、それが、使用して、不明であるオブジェクトをスキャンすることになるものと比較されると、計算的により不経済でないプロトコルを使用して、信頼されるオブジェクトをスキャンし得る。１つのそのような例では、アンチマルウェアエンジンの機能の部分集合は、信頼されるオブジェクトをスキャンするときに不能にされ得る。そのような手法は、信頼されるオブジェクトをスキャンすることに関連付けられる計算負担を低減することにより、アンチマルウェア性能を実質的に改善し得る。
【００８１】
[0099]一部の実施形態ではアンチマルウェアエンジンは、スキャンパラメータの集合を調整することにより、複数の別個のモードで動作するように構成され得る。プロセス固有の様式でスキャンパラメータの値を調整することによって、アンチマルウェアエンジンは、各々のプロセスを、プロセス固有の方法またはプロトコルを使用してスキャンすることが可能になる。一部の実施形態ではスキャンパラメータ値は、それぞれのオブジェクトの評判によって選定され、ゆえに、アンチマルウェア方法またはプロトコルは、スキャンされるオブジェクトの評判によって変動し得る。
【００８２】
[0100]一部の従来のアンチマルウェアシステムは、最適化の集合をアンチマルウェアルーチンに適用することにより、スキャニングの計算負担を低減することを試行する。そのような最適化は、対象オブジェクトがオブジェクトの特定のカテゴリに属するかどうかを、それぞれのオブジェクトの機能の集合によって判定し、優遇措置を、それぞれのカテゴリに属するオブジェクトに与えることを含み得る。そのような最適化は、マルウェアのタイプごとに効率的に変形しない場合があり、それぞれのカテゴリに適合することにより検出を逃れるように固有に設計されるマルウェアエージェントにより付け込まれる場合がある。対照的に、本発明の一部の実施形態ではオブジェクトは、それぞれのオブジェクトが悪意のないものであるという信頼のレベルを指し示す評判によってであって、それぞれのオブジェクトの機能によってではなく、優遇措置を与えられる。そのような手法は、新興の脅威を含む、マルウェアのタイプまたはカテゴリごとに容易に変形し得る。さらに、評判マネージャはアンチマルウェアエンジンから独立して動作するので、アンチマルウェアエンジンは、評判マネージャの動作に影響を及ぼすことなく、新しいスキャニング方法およびプロシージャを組み込むようにアップグレードされ得る。
【００８３】
[0101]本発明の一部の実施形態では、対象ソフトウェアオブジェクトの評判は、それぞれのオブジェクトのビルディングブロックの集合の評判によって決定され得る。そのようなビルディングブロックの例は、中でも、プロセスのメイン実行可能ファイル、および、それぞれのプロセスによりロードされる共有ライブラリを含む。各々のビルディングブロックの評判は静的であり得るものであり、そのような評判のインジケータは、ローカルリポジトリ（例えば、ローカルキャッシュ）および／またはリモートリポジトリ（例えば、中央評判データベース）に記憶され、それぞれのビルディングブロックのあらゆるインスタンスに対して再使用され得る。対照的に、対象オブジェクト自体の評判は、評判マネージャにより、対象オブジェクトのセキュリティイベントおよび／またはライフサイクルイベントに応じて、繰り返し計算されて、動的に可変であり得る。
【００８４】
[0102]共有ライブラリなどのビルディングブロックの評判は、それぞれのビルディングブロックが悪意のあるものでないという信頼のレベルを指示し得る。個々のビルディングブロックのそのような評判は、中央評判サーバにリモートで接続される複数のクライアントシステムにわたって分散される、そのようなビルディングブロックの複数の別個のインスタンスの挙動によって決定され得る。本発明の一部の実施形態では、ビルディングブロックの記憶される評判データは、それぞれのビルディングブロックのインスタンスを必然的に含むセキュリティイベントに応じて更新され得る。１つのそのような例では、共有ライブラリが、マルウェアを指し示すアクションを実行するとき、それぞれのライブラリの評判は、信頼される、から、不明である、に、または、信頼されない、に格下げされ得る。評判の更新されるインジケータは、ローカルキャッシュに保存され得る、かつ／または、中央評判データベースに送信され得る。そのような構成によって、評判の何らかの変化が、それぞれの共有ライブラリのインスタンスを使用する他のローカルプロセスに、およびさらに、評判サーバに接続される他のクライアントシステムに、迅速に伝搬することが可能となる。
【００８５】
[0103]一部の実施形態では、ビルディングブロックの記憶される評判データは、それぞれのビルディングブロック、および／または、それぞれのビルディングブロックのインスタンスを含むプロセスを監視するようにアンチマルウェアエンジンを構成するために使用される、スキャンパラメータ値の集合を含む。実例として、何のヒューリスティックを使用してそれぞれのオブジェクトの挙動を監視すべきかを指示する、そのようなパラメータ値は、人間オペレータにより、または、自動的に機械により決定され得る。最適なスキャンパラメータ値は、実例として、制御される環境でのそれぞれの実行可能モジュールの実行を監視し、モジュールの挙動の、および／または、静的な機能の集合を決定することにより決定され得る。スキャンパラメータ値は、マルウェアエージェントの新しく発見されるタイプおよび変種に対処するために効率的に更新され得る。上記で説明されたサーバおよび／またはキャッシュ評判ルックアップの機構によって、そのような更新物は次いで、評判サーバに接続されるすべてのクライアントシステムに伝搬し得る。
【００８６】
[0104]上記の実施形態が、本発明の範囲から逸脱することなく多くの方途で改変され得るということは、当業者には明らかであろう。したがって本発明の範囲は、以下の特許請求の範囲、および、それらの法的均等物により決定されるべきである。
【図１】
0006317434.tif 000004
【図２】
0006317434.tif 000005
【図３】
0006317434.tif 000006
【図４】
0006317434.tif 000007
【図５】
0006317434.tif 000008
【図６】
0006317434.tif 000009
【図７】
0006317434.tif 000010
【図８】
0006317434.tif 000011
【図９】
0006317434.tif 000012
【図１０】
0006317434.tif 000013
【図１１】
0006317434.tif 000014
【図１２】
0006317434.tif 000015
【図１３】
0006317434.tif 000016
【図１４】
0006317434.tif 000017
【図１５】
0006317434.tif 000018
【図１６】
0006317434.tif 000019
【図１７】
0006317434.tif 000020
【図１８】
0006317434.tif 000021