(57)【特許請求の範囲】
【請求項１】
マルウェアを検知するためのコンピュータ実施方法であって、
一組の既知のマルウェア定義に基づいたフィルタをクライアント装置においてローカルに格納し、前記一組の既知のマルウェア定義から既知のマルウェア定義のサブセットを前記クライアント装置においてローカルに格納する工程であって、前記サブセットは、前記クライアント装置において検知された前記既知のマルウェア定義に対応するマルウェアの所定の可能性に基づいて選択される、工程と、
入力ファイルが前記一組の既知のマルウェア定義内のマルウェア定義のものと一致する特性を有するかどうかを検知するために前記入力ファイルに前記フィルタを適用する工程と、
前記フィルタを適用する工程に基づき前記入力ファイルが前記一組の既知のマルウェア定義内のマルウェア定義のものと一致する特性を有すると検知されたことに応答して、当該一組の既知のマルウェア定義内の当該マルウェア定義が前記既知のマルウェア定義のサブセット内にローカルに格納されているかどうかを決定する工程と、
前記フィルタを適用する工程に基づき前記入力ファイルが前記一組の既知のマルウェア定義内のマルウェア定義のものと一致する特性を有すると検知されたこと、かつ、前記決定する工程に基づき当該一組の既知のマルウェア定義内の当該マルウェア定義が前記既知のマルウェア定義のサブセット内にローカルに格納されていないと決定されたことに応答して、中央サーバから当該マルウェア定義を取得する工程と、
前記取得したマルウェア定義を使用して前記入力ファイルをスキャンする工程と、
前記スキャンする工程に基づき前記入力ファイルがマルウェアを含むかどうかを判断する工程と、
前記判断する工程に基づき前記入力ファイルが前記マルウェアを含まないと判断されたことに応答して、当該入力ファイルを特定する報告を前記中央サーバに送信する工程と、
前記報告の応答として、前記判断する工程に基づき前記入力ファイルが前記マルウェアを含まないと判断された場合に、前記フィルタの将来のアプリケーションにおいて誤陽性発生の可能性を低減する修正されたフィルタを前記中央サーバから受信する工程と
を含む方法。
【請求項２】
前記マルウェア定義は、前記マルウェアに存在することがわかっている特徴的バイトパターンを含み、
前記入力ファイルをスキャンする工程は、前記特徴的バイトパターンが前記入力ファイルに存在するかどうかを判断する工程を含む、請求項１に記載の方法。
【請求項３】
前記一組の既知のマルウェア定義から前記既知のマルウェア定義のサブセットを前記中央サーバから受信する工程と、
前記フィルタを前記中央サーバから受信する工程と
をさらに含む、請求項１に記載の方法。
【請求項４】
更新された一組の既知のマルウェアに基づき生成された更新フィルタを含む更新を前記中央サーバから受信する工程をさらに含む、請求項１に記載の方法。
【請求項５】
前記フィルタは前記入力ファイルに対するハッシュ関数を計算するようにされたＢｌｏｏｍフィルタを含み、
前記ハッシュ関数の出力は前記入力ファイルが前記一組の既知のマルウェア定義のいずれかと一致する特性を有するかどうかを示す、請求項１に記載の方法。
【請求項６】
前記入力ファイルに前記Ｂｌｏｏｍフィルタを適用する工程は、マルウェアの誤陽性検出を生ずる可能性があるが、誤陰性検出を生ずることができない、請求項５に記載の方法。
【請求項７】
前記フィルタは、
各マルウェア定義毎のハッシュ関数を計算する工程と、
前記ハッシュ関数の出力に基づき前記フィルタを定義する工程と、
に従って生成される、請求項１に記載の方法。
【請求項８】
マルウェアを検知するためのコンピュータプログラムであって、
一組の既知のマルウェア定義に基づいたフィルタをクライアント装置においてローカルに格納し、前記一組の既知のマルウェア定義から既知のマルウェア定義のサブセットを前記クライアント装置においてローカルに格納し、前記サブセットは、前記クライアント装置において検知された前記既知のマルウェア定義に対応するマルウェアの所定の可能性に基づいて選択され、
入力ファイルが前記一組の既知のマルウェア定義内のマルウェア定義のものと一致する特性を有するかどうかを検知するために前記入力ファイルに前記フィルタを適用し、
前記フィルタを適用する工程に基づき前記入力ファイルが前記一組の既知のマルウェア定義内のマルウェア定義のものと一致する特性を有すると検知されたことに応答して、当該一組の既知のマルウェア定義内の当該マルウェア定義が前記既知のマルウェア定義のサブセット内にローカルに格納されているかどうかを決定し、
前記フィルタを適用する工程に基づき前記入力ファイルが前記一組の既知のマルウェア定義内のマルウェア定義のものと一致する特性を有すると検知されたこと、かつ、前記決定する工程に基づき当該一組の既知のマルウェア定義内の当該マルウェア定義が前記既知のマルウェア定義のサブセット内にローカルに格納されていないと決定されたことに応答して、中央サーバから当該マルウェア定義を取得し、
前記取得したマルウェア定義を使用して前記入力ファイルをスキャンし、
前記スキャンする工程に基づき前記入力ファイルがマルウェアを含むかどうかを判断し、
前記判断する工程に基づき前記入力ファイルが前記マルウェアを含まないと判断されたことに応答して、当該入力ファイルを特定する報告を前記中央サーバに送信し、そして
前記報告の応答として、前記判断する工程に基づき前記入力ファイルが前記マルウェアを含まないと判断された場合に、前記フィルタの将来のアプリケーションにおいて誤陽性発生の可能性を低減する修正されたフィルタを前記中央サーバから受信する
ようにコンピュータを実行させるコンピュータプログラム。
【請求項９】
前記マルウェア定義は、前記マルウェアに存在することがわかっている特徴的バイトパターンを含み、
前記入力ファイルをスキャンする工程は、前記特徴的バイトパターンが前記入力ファイルに存在するかどうかを判断する工程を含む、請求項８に記載のコンピュータプログラム。
【請求項１０】
前記一組の既知のマルウェア定義から前記既知のマルウェア定義のサブセットを前記中央サーバから受信し、そして
前記フィルタを前記中央サーバから受信する
ようにコンピュータをさらに実行させる、請求項８に記載のコンピュータプログラム。
【請求項１１】
更新された一組の既知のマルウェアに基づき生成された更新フィルタを含む更新を前記中央サーバから受信する
ようにコンピュータをさらに実行させる、請求項８に記載のコンピュータプログラム。
【請求項１２】
前記フィルタは前記入力ファイルに対するハッシュ関数を計算するようにされたＢｌｏｏｍフィルタを含み、
前記ハッシュ関数の出力は前記入力ファイルが前記一組の既知のマルウェア定義のいずれかと一致する特性を有するかどうかを示す、請求項８に記載のコンピュータプログラム。
【請求項１３】
前記入力ファイルに前記Ｂｌｏｏｍフィルタを適用する工程は、マルウェアの誤陽性検出を生ずる可能性があるが、誤陰性検出を生ずることができない、請求項１２に記載のコンピュータプログラム。
【請求項１４】
前記フィルタは、
各マルウェア定義毎のハッシュ関数を計算する工程と、
前記ハッシュ関数の出力に基づき前記フィルタを定義する工程と
に従って生成される、請求項８に記載のコンピュータプログラム。
【請求項１５】
クライアント装置にマルウェア定義を配信する方法であって、
一組の既知のマルウェア定義から、入力ファイルが前記一組の既知のマルウェア定義のものと一致する特性を有するかどうかを検知するフィルタを生成する工程と、
前記クライアント装置に前記フィルタを配信する工程と、
前記クライアント装置に配信された前記フィルタを生成するために使用される前記一組の既知のマルウェア定義からマルウェア定義のサブセットを選択する工程であって、前記マルウェアのサブセットは、前記一組の既知のマルウェア定義の全てよりも少なく含み、前記サブセットは、前記クライアント装置において検知された前記既知のマルウェア定義に対応するマルウェアの所定の可能性に基づいて選択される、工程と、
前記選択されたマルウェア定義のサブセットを前記フィルタと共にサーバが前記クライアント装置に配信する工程と、
前記クライアント装置によって前記フィルタが前記入力ファイルに適用された際に、当該入力ファイルが前記一組の既知のマルウェア定義内のマルウェア定義のものと一致する特性を有すると検知されたこと、かつ、当該一組の既知のマルウェア定義内の当該マルウェア定義が前記クライアントに配信された前記既知のマルウェア定義のサブセット内に格納されていないと決定されたことに応答して、当該マルウェア定義についての前記クライアント装置からの照会を受信する工程と、
前記照会に応答して、前記入力ファイルのスキャンに利用される、前記照会されたマルウェア定義を前記クライアント装置に送信する工程と、
前記照会されたマルウェア定義は前記入力ファイルに存在しないことを示す報告を前記クライアント装置から受信する工程と、
前記報告の受信に応答して、前記フィルタの将来のアプリケーションにおいて誤陽性発生の可能性を低減するために前記フィルタを修正し、前記修正されたフィルタを前記クライアント装置に送信する工程と、
を含む方法。
【請求項１６】
前記クライアント装置からのマルウェア定義の照会の頻度に基づき前記クライアント装置に配信すべき前記既知のマルウェア定義のサブセットを更新する工程、をさらに含む、請求項１５に記載の方法。
【請求項１７】
前記フィルタは、前記入力ファイルに対しハッシュ関数を計算するようにされたＢｌｏｏｍフィルタを含み、
前記ハッシュ関数の出力は、前記入力ファイルが前記一組の既知のマルウェア定義のいずれかと一致する特性を有するかどうかを示す、請求項１５に記載の方法。
【請求項１８】
前記一組の既知のマルウェア定義は、前記クライアント装置において最も検知される可能性が高いマルウェア定義を含む、請求項１に記載の方法。
【請求項１９】
前記一組の既知のマルウェア定義は、前記クライアント装置において最も検知される可能性が高いマルウェア定義を含む、請求項８に記載のコンピュータプログラム。
【請求項２０】
前記マルウェア定義のサブセットは、前記クライアント装置において最も検知される可能性が高いマルウェア定義を含む、請求項１５に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、一般的にはコンピュータセキュリティに関し、さらに具体的にはマルウェア（ｍａｌｗａｒｅ）を検知することに関する。
【背景技術】
【０００２】
コンピュータウィルス、ワーム、トロイの木馬、スパイウェアなどのマルウェアは、現代のコンピュータシステムに絶え間ない脅威をもたらす。悪意のあるファイルに対抗するために、コンピュータシステムは、通常、悪意のあるファイルを検知し、特定し、除去しようとするアンチウイルスソフトウェアを実行する。従来のアンチウイルスソフトウェアは、既知のマルウェアに対応する各定義を有する定義データベースを格納する。アンチウイルスソフトウェアは、格納された定義に一致するマルウェアを検知するためにクライアントマシン上のファイルを定期的にスキャンする。検知されたマルウェアは次に無効化または削除されてよい。
【０００３】
アンチウイルスのプログラムはマルウェアを検知し削除することができるが、既存プログラムを回避するように設計された新しいマルウェアが絶えず作られている。したがって、新たにリリースされたマルウェアを検知できるようにこれらアンチウイルス定義を頻繁に更新することが重要である。これらの更新は通常、アンチウイルスプログラムのベンダーにより提供される。
【０００４】
近年、新しい既知のマルウェアの数は劇的に増加してきており、更新の配信をますます難しい課題にしている。頻繁な更新は、すべての古い定義を格納し維持し続ける一方で新しい定義を絶えず受信し格納しなければならないクライアントマシンのデータ過負荷問題を引き起こす可能性がある。これは、例えば自動預金受払機（ＡＴＭ）などの限られた物理メモリを有するクライアントマシン、あるいは限られたネットワーク帯域幅を有するマシンにとって特に問題である。さらに、クライアントマシンに多くの定義を配信することは結果的に定義配信業者に著しいコストをかける。
【０００５】
この問題に対する１つの手法は、連続的な脅威をもたらすとはもはや思われない古い定義を削除することによりアンチウイルスソフトウェアにより使用される活性化定義の数を低減することである。しかしながら、これらの古い脅威が再び現われると、この手法はクライアントを攻撃に晒したままにする。別の従来の手法は、ローカルマシンに定義を配信することよりむしろ定義のすべてを格納するための中央アンチウイルスサーバを設けることである。しかしながら、この手法は局所的な記憶要件を低減するが、クライアントとサーバ間のネットワークトラフィックを著しく増加させて、全体性能およびコストの著しい改善をもたらさない。したがって、必要なのは、クライアント装置にマルウェア定義を配信するための改良されたシステムである。
【発明の概要】
【課題を解決するための手段】
【０００６】
本システム、方法、コンピュータプログラム製品はマルウェアを検知する。クライアント装置では、入力ファイルが一組の既知のマルウェア定義内のマルウェア定義と一致する特性を有するかどうかを判断するために、スキャンエンジンが入力ファイルにフィルタを適用する。フィルタに基づき入力ファイルが一致特性を有するということを判断したことに応答して、ファイルは既知のマルウェアの定義を使用してスキャンされる。スキャンエンジンは、入力ファイルがマルウェアを含むかどうかをスキャンに基づいて判断する。
【０００７】
中央サーバは、一組の既知のマルウェア定義に基づいてフィルタを生成し、このフィルタをクライアントに配信する。中央サーバはまた、既知のマルウェア定義のサブセットの、クライアントに配信すべき定義を決定する。一実施形態では、ファイルをスキャンするとき、スキャンエンジンは定義がローカルに格納されているかどうかを判断する。定義がローカルに格納されていない場合、クライアントはサーバから定義を要求し、サーバはクライアントに定義を送信する。
【０００８】
本明細書において説明される特徴と利点はすべてが包括的であるというわけではない。特に、添付図面、明細書、および特許請求範囲に照らして多くの追加機能と利点が当業者には明らかになる。また、明細書で使用される言語は読みやすさと教示的目的のために主として選択されたものであって、本発明の主題を定義または限定するために選択されたものでないということに留意されたい。
【０００９】
開示される実施形態は、詳細説明、添付の特許請求範囲および添付図面から容易に明らかとなる他の利点と特徴を有する。
【図面の簡単な説明】
【００１０】
【図１】一実施形態による計算環境の上位ブロック図である。
【図２】一実施形態による中央サーバのブロック図である。
【図３】一実施形態による典型的なコンピュータシステムを図示する上位ブロック図である。
【図４】一実施形態によるクライアント装置のメモリおよび記憶部品のブロック図である。
【図５】一実施形態によるスキャンエンジンのブロック図である。
【図６】一実施形態による悪意のあるソフトウェアを検知する処理を示すフローチャートである。
【発明を実施するための形態】
【００１１】
その実例を添付図面で示すいくつかの実施形態を以下に詳細に参照する。実施実行可能なときはいつも添付図面では同様なまたは類似の参照番号が使用されることがあり、これらは同様なまたは類似の機能を指すことができるということに留意されたい。添付図面では例示目的のためだけの実施形態を示す。当業者は、本明細書で示される構造および方法の別の実施形態を本明細書に記載の原理から逸脱することなく採用し得るということを以下の説明から容易に認識するだろう。
【００１２】
図１は、一実施形態による計算環境１００の上位ブロック図である。計算環境１００は中央サーバ１３０とそのすべてがネットワーク１０２により接続されるクライアント１０４とを含む。説明を簡単にするために図１では３つのクライアント１０４だけを示す。計算環境１００の実施形態はネットワーク１０２に接続されるさらに多くのクライアント１０４を有することができる。
【００１３】
一実施形態では、クライアント１０４は、ファイルをダウンロードし、インストールし、実行すること、および／またはネットワーク１０２を介しアクセス可能なウェブサイトをブラウズすること、を含む活動を実行するために１または複数のユーザにより使用されるコンピュータである。他の実施形態では、クライアント１０４は、携帯情報端末（ＰＤＡ）、携帯電話、ページャ、テレビ「セットトップボックス」などのコンピュータ以外のネットワーク化可能装置である。クライアント１０４は、ウィルス、ワーム、トロイの木馬、スパイウェア等のマルウェアからの攻撃に脆弱であるかもしれなく、通常、マルウェアを検知、除去、および／または阻止するためにアンチウイルスソフトウェアを実行する。クライアント１０４として使用されるコンピュータシステムの実施形態については、図３を参照して以下にさらに詳細に説明する。
【００１４】
ネットワーク１０２は、クライアント１０４と中央サーバ１３０間の通信経路を表す。一実施形態では、ネットワーク１０２はインターネットである。ネットワーク１０２はまた、必ずしもインターネットの一部ではない専用通信リンクまたは私設通信リンクを利用することができる。一実施形態では、ネットワーク１０２は標準的な通信技術および／またはプロトコルを使用する。したがって、ネットワーク１０２は、Ｅｔｈｅｒｎｅｔ，８０２．１１、統合サービスディジタル網（ＩＳＤＮ）、デジタル加入者線（ＤＳＬ）、非同期転送モード（ＡＴＭ）等の技術を使用したリンクを含むことができる。同様に、ネットワーク１０２上で使用されるネットワークプロトコルは、伝送制御プロトコル／インターネットプロトコル（ＴＣＰ／ＩＰ）、ハイパーテキスト転送トランスポートプロトコル（ＨＴＴＰ）、簡易メール転送プロトコル（ＳＭＴＰ）、ファイル転送プロトコル（ＦＴＰ）等を含むことができる。ネットワーク１０２上で交換されるデータは、ハイパーテキストマークアップ言語（ＨＴＭＬ）、拡張可能マークアップ言語（ＸＭＬ）等を含む技術および／または形式を使用して表すことができる。さらに、リンクのすべてまたはいくつかは、セキュアソケットレイヤ（ＳＳＬ）、セキュアＨＴＴＰ、および／または仮想私設ネットワーク（ＶＰＮ）などの従来の暗号技術を使用して暗号化することができる。別の実施形態では、エンティティは、上述のものの代わりにまたはそれに加えて、カスタムおよび／または専用データ通信技術を使用することができる。
【００１５】
中央サーバ１３０は、１つまたは複数の標準コンピュータシステム、例えば以下に説明する図３のコンピュータシステムを含むことができる。中央サーバ１３０は、クライアント１０４にアンチウイルスの更新を配信するためにネットワーク１０２を介しクライアント１０４と通信する。一実施形態では、中央サーバ１３０はインターネットを介しアクセス可能であり、第三者プロバイダにより維持される。あるいは、中央サーバ１３０はローカル企業ネットワークの管理者により維持されてもよい。例えば、企業内では、企業は、外部サービスに依存せずにすべてのクライアント１０４に更新を配信するためにそれ自身の中央サーバ１３０を維持することができる。
【００１６】
中央サーバ１３０は、更新したマルウェア定義をクライアント１０４に定期的に配信することができる。あるいは、クライアント１０４は、潜在的脅威が疑われかつ定義がローカルに入手可能でない場合、中央サーバ１３０に１つまたは複数の特定の定義を照会することができる。一実施形態では、中央サーバ１３０は全マルウェア定義を各クライアント１０４に配信するのではなくむしろ１つまたは複数のフィルタを配信する。フィルタは、マルウェア定義から生成され、スキャン中の入力ファイルが既知のマルウェア定義のものと一致する特性を有するかどうかを判断するために使用される。スキャン中、クライアント１０４はスキャン中のファイルにフィルタを適用し、フィルタは陽性検出か陰性検出のいずれかを出力する。一実施形態では、フィルタは、誤陽性検出を時に発生してもよいが誤陰性検出を決して発生しないように設計される。例えば、場合によっては、フィルタは、フィルタ処理中のファイル内にマルウェアが実際には存在しない場合、マルウェアの陽性検出を誤って出力してもよい。但し、フィルタは、マルウェアが存在する場合、フィルタを生成するために使用した一組の既知のマルウェア定義内にこのマルウェア定義が含まれる限り、陰性検出を決して誤って出力しない。フィルタは、全定義のデータより格段に少ないデータを含み、したがってクライアント１０４の記憶要件と帯域幅要件を低減するので有利である。
【００１７】
１つまたは複数のフィルタを生成し配信することに加えて、中央サーバ１３０はすべての既知マルウェアの一組の全定義を格納する。スキャン中、適用フィルタが潜在的なマルウェアを検知すると、クライアント１０４は中央サーバ１３０に照会して全定義を取り込むことができる。次に、クライアント１０４は、フィルタ結果が真陽性（すなわち、フィルタ処理されたファイルが実際にマルウェアを含む）であったか誤陽性（すなわち、フィルタ処理されたファイルが実際にはマルウェアを含まない）だったかどうかを判断するために全定義を使用してファイルをスキャンする。一実施形態では、中央サーバ１３０はまた、クライアント１０４に既知のマルウェア定義のサブセットの全定義を配信する。例えば、中央サーバは、最も深刻な脅威をもたらすと考えられるマルウェアの定義（例えば、マルウェアの最も頻度の高い３０％の定義）を配信してもよい。このようにして、検知される可能性の最も高いマルウェアの全定義をローカルに取り込むことができ、ネットワークトラフィックを低減することができる。
【００１８】
図２には、中央サーバ１３０の例示的な実施形態を示す。中央サーバ１３０は、危険度評価モジュール２０２、配信サーバ２０４、定義生成モジュール２０６、フィルタ生成モジュール２０８、定義データベース２１０、およびフィルタデータベース２１２を含む。定義生成モジュール２０６は新しいマルウェアが発見されるたびに既知のマルウェアの全定義を生成する。一実施形態では、全定義は、マルウェア中に存在することがわかっている特徴的バイトパターンを含む１つまたは複数の署名を含む。あるいは、定義は、共通の振る舞いに基づきマルウェアを検知する発見的方法（ｈｅｕｒｉｓｔｉｃ）を含んでもよい。定義は通常、マルウェアのインスタンスを調べ解析するセキュリティ解析器からの入力に基づき生成される。生成されると、全定義が定義データベース２１０に格納される。
【００１９】
危険度評価モジュール２０２は、既知の各マルウェア脅威の相対危険度を評価し、クライアント１０４に配信すべき定義のサブセットを決定する。残りの定義は中央サーバ１３０にだけ格納される。評価モジュール２０２は、危険度の再評価を定期的に実行しそれに応じて更新された定義セットを配信することができる。一実施形態では、危険度評価モジュール２０２はクライアント装置１０４からデータを収集し、この情報を使用してマルウェアの相対危険度を判断する。例えば、危険度評価モジュール５０２は、特定の定義に対する、中央サーバ１３０により受信された照会の数を監視することができる。中央サーバ１３０が特定の定義について頻繁に照会された場合、危険度評価モジュール２０２はこの定義をクライアント１０４に配信すべきであると判断してよい。最も頻度の高い定義を配信することにより、中央サーバ１３０とクライアント１０４間のネットワークトラフィックを低減することができる。
【００２０】
フィルタ生成モジュール２０８は、マルウェア定義に基づき１つまたは複数のフィルタを生成し、これをフィルタデータベース２１２に格納する。一実施形態では、フィルタ生成モジュール２０８は、一組のマルウェア定義から１つまたは複数のＢｌｏｏｍフィルタを生成する。Ｂｌｏｏｍフィルタは、要素が一組（例えば、一組の既知のマルウェアファイル）のメンバーかどうかを判断するために使用されるタイプのフィルタである。Ｂｌｏｏｍフィルタを生成するために、フィルタ生成モジュール２０８は空のビット値配列から始める。既知の各マルウェア定義毎に多くのハッシュを計算する（各ハッシュ関数の出力はビット配列内の位置にポインタを与える）。次に、ハッシュ関数により出力されたこれらの位置のそれぞれは１に設定され、一方、残りの位置は０に設定される。使用可能な多くのハッシュ関数の例は当業者によく知られている。
【００２１】
フィルタを適用するために、同一組のハッシュ関数を入力ファイルに適用し、アレイ内の位置に対する多くのポインタを返す。これらの位置のそれぞれが１のビット値を有する場合、フィルタは、入力ファイルが一組の既知のマルウェア定義内の定義に一致する特性を有するということを示す陽性検出を出力する。さらに、フィルタは、ハッシュ関数により出力された配列位置の組合せに基づき、一致したマルウェアの識別情報を決定することができる。位置のすべてが０である場合、入力ファイルはその組内に存在しない（すなわち陰性検出）。Ｂｌｏｏｍフィルタの特徴は、「誤陽性は僅かな割合で生じ得るがフィルタは誤陰性を決して返さない」ということである。
【００２２】
この種のフィルタはクライアント１０４に全定義を配信するよりむしろ非常に少ないデータ量（ビット配列値）だけを配信することにより実施することができるので有利である。いくつかの実施形態では、フィルタ生成モジュール２０８は、定義の様々なサブグループ用の複数のフィルタを生成することができる。フィルタの数を増加させることにより、より多くのフィルタデータをクライアント１０４に配信することを犠牲にして誤陽性の割合を低減することができる。
【００２３】
フィルタデータベース２１２に格納されたフィルタをクライアント１０４へ配信するために、配信サーバ２０４はネットワーク１０２と通信する。配信サーバ２０４はまた、定義データベース２１０に格納された定義のサブセットをクライアント１０４に配信することができる。例えば、配信サーバ２０４は、検知される可能性が最も高い定義の一部を配信してもよい。さらに、サーバ１３０がクライアント１０４により、ローカルに格納されていない特定の定義について照会された場合、配信サーバ２０４は要求された定義をクライアント１０４に提供することができる。
【００２４】
図３は、クライアント１０４または中央サーバ１３０として使用する典型的なコンピュータ３００を示す上位ブロック図である。図示するのはバス３０４に接続されたプロセッサ３０２である。またバス３０４に接続されるのは、メモリ３０６、記憶装置３０８、キーボード３１０、グラフィックアダプタ３１２、ポインティング装置３１４、およびネットワークアダプタ３１６である。ディスプレイ３１８はグラフィックアダプタ３１２に接続される。
【００２５】
プロセッサ３０２は、ＩＮＴＥＬ  ｘ８６互換ＣＰＵなどの任意の汎用プロセッサであってよい。記憶装置３０８は一実施形態ではハードディスク駆動装置であるが、書き込み可能コンパクトディスク（ＣＤ）またはＤＶＤあるいは固体メモリ装置などのデータを格納することができる他の任意の装置であってもよい。メモリ３０６は、例えばファームウェア、読み取り専用メモリ（ＲＯＭ）、不揮発性ＲＡＭ（ＮＶＲＡＭ）、および／またはＲＡＭであってよく、プロセッサ３０２により使用される命令とデータを保持する。ポインティング装置３１４は、マウス、トラックボールまたは他の種類のポインティング装置であってよく、コンピュータ３００にデータを入力するキーボード３１０と組み合わせて使用される。グラフィックアダプタ３１２は画像および他の情報をディスプレイ２１８上に表示する。ネットワークアダプタ３１６はコンピュータ３００をネットワーク３０２に接続する。
【００２６】
当該技術分野で周知のように、コンピュータ３００はコンピュータプログラムモジュールを実行するようにされている。本明細書で使用されるように、用語「モジュール」は規定機能を提供するためのコンピュータプログラム論理および／またはデータを指す。モジュールは、ハードウェア、ファームウェア、および／またはソフトウェアで実装されてよい。一実施形態では、モジュールは記憶装置３０８に格納され、メモリ３０６にロードされ、プロセッサ３０２により実行される。
【００２７】
図１のエンティティにより利用されるコンピュータシステム３００の種類は、エンティティにより利用される実施形態と処理能力に依存して変わってよい。例えば、携帯電話であるクライアント１０４は通常、制限された処理能力と小型表示装置３１８とを有するが、ポインティング装置３１４を欠くかもしれない。中央サーバ１３０として使用されるコンピュータシステム３００はより大きな処理能力を有するが、ディスプレイ３１８またはキーボード３１０を欠くかもしれない。
【００２８】
図４には、クライアント装置１０４のメモリ３０６と記憶装置３０８の例示的な実施形態を示す。メモリ３０６は記憶装置３０８に格納されたローカルファイル４０８をスキャンするためのスキャンエンジン４０２を含む。ここではメモリ３０６内に図示されるが、スキャンエンジン４０２は記憶装置３０８内に格納され、実行される場合にメモリ３０６にロードされてもよい。記憶装置３０８はまた、ローカルファイル４０８をスキャンするスキャンエンジン４０２により使用される１つまたは複数のフィルタ４０４および一組の全定義４０６を格納する。一実施形態では、フィルタ４０４は既知のマルウェアのすべてに基づくが、全定義４０６は既知のマルウェアのサブセットだけ（例えば、最も頻度の高い３０％）に対し格納される。
【００２９】
図５には、スキャンエンジン４０２の例示的な実施形態を示す。スキャンエンジン４０２はフィルタ処理モジュール５０４、全検知モジュール５０６、およびサーバ照会モジュール５０８を含む。フィルタ処理モジュール５０４は、スキャン処理中、１つまたは複数の格納されたフィルタ４０４をローカルファイル４０８に適用する。フィルタ４０４を適用する工程は、ファイル４０８のハッシュを計算する（結果的に陽性検出または陰性検出のいずれかとなる）工程を含む。陽性検出となった場合、全検知モジュール５０６は全定義４０６を使用して、陽性検知されたファイル４０８をスキャンする。全定義４０６は、記憶装置３０８内でローカルに入手可能であってもよいし、あるいは中央サーバ１３０から取り込まれてもよい。サーバ照会モジュール５０８は、全定義４０６がローカルに発見されない場合、サーバ１３０からの全定義を要求するためにネットワーク１０２を介し中央サーバ１３０と通信する。このとき、全検知モジュール４０６は、悪意のあるソフトウェアが実際に検知されたかあるいはフィルタ４０４が誤陽性を生じたかを判断するために定義４０６を適用する。
【００３０】
図６は、マルウェアを検知するためのスキャンエンジン４０２により実行される処理の実施形態を示す。スキャンエンジン４０２のフィルタ処理モジュール５０４は、始めに、スキャン対象のファイル４０８にフィルタ４０４を適用し（６０２）、陽性検出となったかどうかを判断する（６０４）。陽性検出がない場合、スキャンエンジン４０２はファイルがマルウェアではないと判断する（６１８）。フィルタ４０４は誤陰性の可能性を削除するように設計されているのでこの判断は確実になされ得るということに留意されたい。フィルタ処理モジュール５０４が陽性検出を生じた場合、スキャンエンジン４０２は、定義がローカルに格納されているかどうかを判断する（６０８）ために、ローカル記憶３０８内の定義３０６を検索してマルウェアの全定義を求める。定義をローカルに発見しなかった場合、サーバ照会モジュール５０８は中央サーバ１３０に全定義を照会する（６１０）。定義が既にローカルに格納されている場合、照会工程６１０はスキップされる。このとき、全検知モジュール５０６は、一致があるかどうかを判断する（６１４）ためにファイルと全定義とを比較する（６１２）。一致が検知されなかった場合、マルウェアは発見されなかった（すなわち、フィルタ結果は誤陽性だった）。全定義が発見された場合、スキャンエンジン４０２はマルウェアが検知されたと判断する（６１６）。マルウェアが検知されると、スキャンエンジン４０２は、検知されたマルウェアを示す脅威報告をクライアント装置のユーザに提供することができる。さらに、スキャンエンジン４０２は、マルウェアを無効化または除去するために従来の技術をいくつでも使用してよい。
【００３１】
一実施形態では、誤陽性が検知されると、フィルタの将来のアプリケーションで再発生する誤陽性の可能性を低減するためにフィルタを修正することができる。例えば、スキャンエンジン４０２は、中央サーバ１３０に、誤陽性を生じたファイルを特定する報告を送信してもよい。誤陽性を解析することができ、この解析に基づき新しいフィルタを生成することができる。あるいは、サーバ１３０は、フィルタの将来のアプリケーションにおいて同様の検出を無視するようにクライアントに指示するメタデータをクライアント１０４に提供してもよい。
【００３２】
上記説明のいくつかの部分では、情報の操作のアルゴリズムおよびシンボル表現の観点から本発明の実施形態を説明した。これらのアルゴリズム的説明および表現は、その作業の本質を当業者に効果的に伝達するためにデータ処理分野の熟練者により一般的に用いられた。これらの操作は、機能的に、コンピュータ的に、または論理的に説明されたが、コンピュータプログラムまたはそれと等価な電気回路、マイクロコード等により実装されるものと理解される。さらに、一般性を失うことなくこれらの操作の配置をモジュールと呼ぶこともまたしばしば便利であるがわかった。説明された操作およびそれらの関連するモジュールはソフトウェア、ファームウェア、ハードウェアまたはその任意の組合せで具現されてよい。
【００３３】
本明細書で使用されるように、「一実施形態」または「実施形態」への参照は、その実施形態に関して説明された特定の要素、特徴、構造、または特性が少なくとも一実施形態に包含されることを意味する。本明細書内の様々な箇所における「一実施形態では」の語句の出現は、必ずしもすべてが同一実施形態を参照するとは限らない。
【００３４】
本明細書で使用されるように、用語「含む」、「備える」、「有する」またはそれらの他の任意の活用形は、非独占的包含をカバーするように意図されている。例えば、要素の一覧を含む処理、方法、物または装置は、必ずしもそれらの要素だけに限定されなく、明示的に掲載されない、あるいはこのような処理、方法、物または装置に固有の他の要素を含んでもよい。さらに、特に断らない限り、「または」と「あるいは」は排他的論理和ではなく包含的論理和を指す。例えば、条件ＡまたはＢは、Ａが真（すなわち存在する）かつＢが偽（すなわち存在する）、Ａが偽（すなわち存在しない）かつＢが真（すなわち存在する）、ＡとＢ両方が真（すなわち存在する）の任意の１つにより満足される。
【００３５】
さらに、本明細書の実施形態の要素と部品を説明するために単数形不定冠詞を使用した。これは、単に便宜上、および本発明の一般的な意味を与えるためになされた。この単数記述は１つまたは少なくとも１つを含むように読むべきであり、単数形はまた、そうでないと意味することが明白でない限り複数も含む。
【００３６】
本開示を読むと、当業者は、システムのさらに別の構造および機能設計と、本明細書に開示された原理によるスパム検出および解析のための処理とを理解するだろう。したがって、特定の実施形態とアプリケーションが示され説明されたが、本発明は本明細書に開示された正確な構造と部品に限定されないということと、当業者にとって明らかな様々な修正、変更と変形は、添付の特許請求範囲で規定される実施形態の範囲から逸脱することなく、本明細書に開示された本発明の方法と装置の配置、操作、および詳細において成し得るということとを理解すべきである。
【図１】
0005483033.tif 000002
【図２】
0005483033.tif 000003
【図３】
0005483033.tif 000004
【図４】
0005483033.tif 000005
【図５】
0005483033.tif 000006
【図６】
0005483033.tif 000007