(57)【要約】      （修正有）【課題】マルウェアの誤検出を低減する。【解決手段】信頼性が不明なファイルがコンピュータ上の潜在的脅威として識別される。ファイルのそれぞれについての信頼性レベルがバックエンド１２４から受信される。ファイルのそれぞれの信頼性レベルが閾値レベルと比較される。ファイルのそれぞれの信頼性レベルが閾値レベルを満たす場合に、脅威の誤検出としてファイルのそれぞれが指定される。ファイルのそれぞれの信頼性レベルが閾値レベルを満たさない場合に、脅威の真の検出としてファイルのそれぞれが指定される。【選択図】図１
2010079906.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータ上のマルウェアを検出する方法であって、
前記コンピュータ上の潜在的脅威として、信頼性が不明なファイルを識別するステップと、
バックエンドから前記ファイルのそれぞれについての信頼性レベルを受信するステップと、
前記ファイルのそれぞれの前記信頼性レベルを閾値レベルと比較するステップと、
前記ファイルのそれぞれの前記信頼性レベルが前記閾値レベルを満たす場合に、脅威の誤検出として前記ファイルのそれぞれを指定するステップと、
前記ファイルのそれぞれの前記信頼性レベルが前記閾値レベルを満たさない場合に、脅威の真の検出として前記ファイルのそれぞれを指定するステップと、
を備える方法。
【請求項２】
脅威の誤検出として指定された前記ファイルのそれぞれが利用されるのを可能とするステップと、
脅威の真の検出として指定された前記ファイルのそれぞれが利用されるのを阻止するステップと
をさらに備える請求項１に記載の方法。
【請求項３】
信頼性が不明な前記ファイルが、前記ファイルを含むソフトウェアのインストール中に又は後に潜在的脅威として識別され、
当該方法が、前記ソフトウェアのインストールに応じて、前記バックエンドから前記ファイルのそれぞれについての前記信頼性レベルをリクエストするステップをさらに備える請求項１又は２に記載の方法。
【請求項４】
前記ファイルについての識別情報を使用して、前記バックエンドから前記ファイルのそれぞれについての前記信頼性レベルをリクエストするステップをさらに備える請求項１〜３のいずれか一項に記載の方法。
【請求項５】
前記ファイルのそれぞれについての前記識別情報が、前記ファイルのそれぞれの要約を含む請求項４に記載の方法。
【請求項６】
前記バックエンドがサーバ上で実行され、
当該方法が、前記ファイルのそれぞれについての前記信頼性レベルのために、ネットワークを介して前記コンピュータから前記サーバに対してリクエストを送信するステップをさらに備える請求項１〜５のいずれか一項に記載の方法。
【請求項７】
前記ファイルのそれぞれについての前記信頼性レベルが、複数の信頼性レベルのうちの１つであり、前記複数の信頼性レベルが、信頼性が低減する順序で、プロバイダ信頼レベル、コミュニティ信頼レベル、コミュニティ存在レベル、及び、不明であり、前記閾値レベルが前記コミュニティ存在レベルである請求項１〜６のいずれか一項に記載の方法。
【請求項８】
プロセッサによって実行された場合に前記プロセッサに請求項１〜７のいずれか一項に記載の方法を実行させる命令が格納されたコンピュータ読み取り可能な媒体。
【請求項９】
コンピュータ上のマルウェアを検出する装置であって、
前記コンピュータ上の潜在的脅威として、信頼性が不明なファイルを識別する手段と、
バックエンドから前記ファイルのそれぞれについての信頼性レベルを受信する手段と、
前記ファイルのそれぞれの前記信頼性レベルを閾値レベルと比較する手段と、
前記ファイルのそれぞれの前記信頼性レベルが前記閾値レベルを満たす場合に、脅威の誤検出として前記ファイルのそれぞれを指定する手段と、
前記ファイルのそれぞれの前記信頼性レベルが前記閾値レベルを満たさない場合に、脅威の真の検出として前記ファイルのそれぞれを指定する手段と
を備える装置。
【請求項１０】
脅威の誤検出として指定された前記ファイルのそれぞれが利用されるのを可能とする手段と、
脅威の真の検出として指定された前記ファイルのそれぞれが利用されるのを阻止する手段と
をさらに備える請求項９に記載の装置。
【請求項１１】
信頼性が不明な前記ファイルが、前記ファイルを含むソフトウェアのインストール中に又は後に潜在的脅威として識別され、
前記装置が、前記ソフトウェアのインストールに応じて、前記バックエンドから前記ファイルのそれぞれについての前記信頼性レベルをリクエストする手段をさらに備える請求項９又は１０に記載の装置。
【請求項１２】
前記ファイルについての識別情報を使用して、前記バックエンドから前記ファイルのそれぞれについての前記信頼性レベルをリクエストする手段をさらに備える請求項９〜１１のいずれか一項に記載の装置。
【請求項１３】
前記ファイルのそれぞれについての前記識別情報が、前記ファイルのそれぞれの要約を含む請求項１２に記載の装置。
【請求項１４】
前記バックエンドがサーバ上で実行され、
前記装置が、前記ファイルのそれぞれについての前記信頼性レベルのために、ネットワークを介して前記コンピュータから前記サーバに対してリクエストを送信する手段をさらに備える請求項９〜１３のいずれか一項に記載の装置。
【請求項１５】
前記ファイルのそれぞれについての前記信頼性レベルが、複数の信頼性レベルのうちの１つであり、前記複数の信頼性レベルが、信頼性が低減する順序で、プロバイダ信頼レベル、コミュニティ信頼レベル、コミュニティ存在レベル、及び、不明であり、前記閾値レベルが前記コミュニティ存在レベルである請求項９〜１４のいずれか一項に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
[0001]本発明は、一般に、コンピュータシステムに関する。特に、本発明は、マルウェアの誤検出を低減する方法及び装置に関する。
【背景技術】
【０００２】
[0002]消費者及び企業は、機密データを格納するためにコンピュータをますます頼りにしている。したがって、悪意のあるプログラマは、他者のコンピュータ及び機密データに対する不法な支配及びアクセスを得るための活動を頻繁に増やしているように見える。そのような悪意のあるプログラマは、他者の所有物であるコンピュータシステム及び機密データを危険にさらすことが意図されたウィルス、トロイの木馬、ワーム、及び、同様のタイプのプログラムを作り出し続けている。これらの悪意のあるプログラムは、大抵は一般に「マルウェア」と称される。
【０００３】
[0003]セキュリティソフトウェア企業は、アンチ・ウィルス、アンチ・スパイウェア、又は、他のタイプのアンチ・マルウェア製品等の様々なクライアントセキュリティ製品の開発により、高まりつつあるマルウェアの風潮に対抗している。しかしながら、いくつかのアンチ・マルウェア製品は、様々な評価ルールを使用してあらゆるアクセスについてファイル及び他のサブシステムを監視及び解析するように構成されているため、クライアントコンピュータのパフォーマンスに影響を与える。いくつかのアンチ・マルウェア製品は、アクセスされたファイル及びサブシステムについての解析の結果をキャッシュすることがあるが、そのような結果は、評価ルールが変えられた場合には無効にされる。例えば、いくつかのアンチ・ウィルス製品において、アンチ・ウィルスシグネチャーが変化した場合には、以前の評価結果は無効とされる。これは、各ファイル／サブシステムのアクセスが再度解析されることから、クライアントコンピュータのパフォーマンス低下をもたらす。問題は、アンチ・マルウェア製品が通常はマルウェアを有しないコンピュータ上の公知の不良ファイルを探すという事実によってさらに悪化する。したがって、アンチ・マルウェアプログラムは、コンピュータのパフォーマンスを低下させることがあり、大抵のコンピュータシステム及びユーザにとってほとんど利益にならない。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
[0004]したがって、マルウェアの誤検出を低減する方法及び装置の必要が技術的に存在する。
【課題を解決するための手段】
【０００５】
[0005]本発明の態様は、コンピュータ上のマルウェアを検出する方法、装置、及び、コンピュータ読み取り可能な媒体に関する。いくつかの実施形態において、信頼性が不明なファイルは、コンピュータ上の潜在的脅威として識別される。ファイルのそれぞれについての信頼性レベルは、バックエンドによって受信される。ファイルのそれぞれについての信頼性レベルは、閾値レベルと比較される。信頼性レベルが閾値レベルを満たすファイルのそれぞれは、脅威の誤検出であるものと指定される。信頼性レベルが閾値レベルを満たさないファイルのそれぞれは、脅威の真の検出であるものと指定される。
【０００６】
[0006]本発明の上記列挙された特徴が詳細に理解され得るように、上記に簡潔に要約された本発明のより詳細な説明が、そのいくつかが添付された図面において図示される実施形態への言及によってなされる。しかしながら、留意すべきは、添付された図面が、本発明の代表的な実施形態のみを図示しており、したがって、本発明が他の均等な有効な実施形態を認めてもよいことから、その範囲に限定して考慮されるべきではないということである。
【図面の簡単な説明】
【０００７】
【図１】本発明の１つ以上の態様に係るコンピュータシステムの例としての実施形態を描いているブロック図である。
【図２】本発明のいくつかの実施形態に係るサーバコンピュータを描いているブロック図である。
【図３】本発明のいくつかの実施形態に係る検査コンピュータを描いているブロック図である。
【図４】本発明の１つ以上の態様に係るソフトウェアの信頼性を測定する方法を描いているフローチャートである。
【図５】本発明のいくつかの実施形態に係る検査対象のソフトウェアパッケージを識別する方法を描いているフローチャートである。
【図６】本発明のいくつかの実施形態に係る検査対象のソフトウェアパッケージを識別する方法を描いているフローチャートである。
【図７】本発明のいくつかの実施形態に係る監視コンピュータを描いているブロック図である。
【図８】本発明のいくつかの実施形態に係るクライアントコンピュータを描いているブロック図である。
【図９】本発明のいくつかの実施形態に係るコンピュータ上のマルウェアを検出する方法を描いているフローチャートである。
【発明を実施するための形態】
【０００８】
[0016]図１は、本発明の１つ以上の態様に係るコンピュータシステム１００の例としての実施形態を描いているブロック図である。システム１００は、クライアントコンピュータ１０２と、ネットワーク１０４と、サーバコンピュータ１０６と、検査コンピュータ１０８と、データベース１１０とを含む。いくつかの実施形態において、システム１００はまた、監視コンピュータ１０９を含んでもよい。ネットワーク１０４は、ハブ、スイッチ、ルータ等の様々なタイプの周知のネットワーク要素によって容易とされるワイヤ、ケーブル、光ファイバ、及び／又は、無線リンクによってコンピュータシステムを接続する通信システムを備える。特に、ネットワーク１０４は、クライアントコンピュータ１０２及びサーバコンピュータ１０６を接続する。ネットワーク１０４は、情報を通信するために様々な周知のプロトコルを使用してもよい。例えば、ネットワーク１０４は、インターネットプロトコル（ＩＰ）、伝送制御プロトコル（ＴＣＰ）、及び、パケットを伝送するための同類のものを使用してもよい。ネットワーク１０４は、インターネット等の広域通信網（ＷＡＮ）の一部、及び／又は、構内通信網（ＬＡＮ）の全部もしくは一部を構成してもよい。
【０００９】
[0017]クライアントコンピュータ１０２のそれぞれは、ソフトウェア１１２及びエージェント１１３を含む。コンピュータ１０２は、ソフトウェア１１２を実行してエージェント１１３を実装することができる任意のタイプの計算装置を備えてもよい。ソフトウェア１１２は、１つ以上のオペレーティング・システムを含み、１つ以上のアプリケーションプログラムをさらに含んでもよい。エージェント１１３は、マルウェアを検出するためにソフトウェア１１２を監視するように各コンピュータ１０２によって実行可能なソフトウェアを備えてもよい。エージェント１１３は、クライアントコンピュータのパフォーマンスを改善するために「ホワイトリスト」を使用するように構成されている。エージェント１１３は、ソフトウェア１１２における関心のあるファイルが信頼できるとみなされるかどうかを測定するためにサーバコンピュータ１０６によって実装されたバックエンド１２４と協働する。エージェント１１３は、ホワイトリスト上で信頼され得るファイルを含む。ホワイトリスト上の所定のファイルが変えられていない場合には、エージェント１１３は、そのようなファイルを監視しない。一般に、ソフトウェア１１２における数多くのファイルは、正当であり、バックエンド１２４によって信頼されたとみなされる。さらに、そのようなファイルは、頻繁には変化しない。そのようなものとして、エージェント１１３によって監視されるソフトウェア１１２におけるファイルの個数は低減され、これにより、クライアントコンピュータのパフォーマンスを改善する。ソフトウェアの信頼性の測定の実施形態が以下に記載される。
【００１０】
[0018]サーバコンピュータ１０６は、バックエンド１２４を実装するように構成されている。図２は、本発明のいくつかの実施形態に係るサーバコンピュータ１０６を描いているブロック図である。サーバコンピュータ１０６は、実例的に、プロセッサ２０２と、メモリ２０４と、様々なサポート回路２０６と、Ｉ／Ｏインターフェース２０８とを含む。プロセッサ２０２は、当技術分野で知られている１つ以上のマイクロプロセッサを含んでもよい。プロセッサ２０２用のサポート回路２０６は、従来のキャッシュ、電源、クロック回路、データレジスタ、及び、Ｉ／Ｏインターフェース等を含む。Ｉ／Ｏインターフェース２０８は、ネットワーク１０４及びデータベース１１０との通信用に構成されてもよい。メモリ２０４は、１つ以上の以下のランダムアクセスメモリ、読み出し専用メモリ、磁気抵抗読み出し／書き込みメモリ、光読み出し／書き込みメモリ、キャッシュメモリ、及び、磁気読み出し／書き込みメモリ等を含む。
【００１１】
[0019]いくつかの実施形態において、バックエンド１２４は、本明細書に記載された機能を実行するようにメモリ２０４に格納され且つプロセッサ２０２によって実行されるソフトウェアを使用して実装されてもよい。しかしながら、バックエンド１２４が特定用途向け集積回路（ＡＳＩＣ）等の固有に構成されたハードウェアを使用して実装されてもよいことはいうまでもない。他の実施形態において、バックエンド１２４は、固有に構成されたハードウェアとソフトウェアとの組み合わせを使用して実装されてもよい。
【００１２】
[0020]図１に戻ると、バックエンド１２４は、関心のあるファイルが信頼でき、したがってホワイトリストに載っているかどうかを測定するように、クライアントコンピュータ１０２のそれぞれにおけるエージェント１１３と協働するように構成されている。特に、バックエンド１２４は、関心のある特定ファイルの信頼性レベルについてのエージェント１１３による問い合わせを提供するように構成されている。問い合わせは、関心のあるファイルに関連する識別情報を含んでもよい。いくつかの実施形態において、識別情報は、関心のある各ファイルについての要約を含む。要約は、ハッシュ等のファイル識別子であってもよい。ハッシュは、ハッシュ関数（例えば、任意長のデータストリームの入力をとり、所定の固定サイズの値を有する出力を作り出す関数）を使用して計算された値、コード、サム、又は、他のデータであってもよい。ハッシュ関数は、巡回冗長検査（ＣＲＣ）ハッシュ関数、暗号学的ハッシュ関数（例えばメッセージ要約アルゴリズム５（ＭＤ５）ハッシュ関数）、セキュアハッシュアルゴリズム（ＳＨＡ）ハッシュ関数等であってもよい。例としてのＳＨＡハッシュ関数は、ＳＨＡ−０、ＳＨＡ−１、ＳＨＡ−２、ＳＨＡ−２５６、及び、ＳＨＡ−５１２ハッシュ関数を含む。他の周知の又は独占所有権のあるハッシュアルゴリズムがまた、ファイルの要約を測定するために使用されてもよいことはいうまでもない。いくつかの実施形態において、識別情報はまた、ファイル名、規格化したファイルパス、ファイルサイズ等の他のファイル属性を含んでもよい。
【００１３】
[0021]データベース１１０は、様々なファイルについての信頼性情報を格納するように構成されている。データベース１１０は、ファイル識別情報を信頼性のレベルと関連付けるリレーショナルデータベース等を備えてもよい。例えば、データベース１１０は、ファイル要約と信頼性の各レベルとの間の関係を格納してもよい。いくつかの実施形態において、信頼性の各レベルは、複数のレベルから選択される。例えば、ファイルには、プロバイダ信頼、コミュニティ信頼、不信頼、又は、不明から選択された信頼性レベルが割り当てられてもよい。「プロバイダ信頼」は、バックエンド１２４のプロバイダがファイルを信頼していることを示している。「コミュニティ信頼」は、ユーザのコミュニティがファイルを信頼していることを示している。「不明」は、ファイルが信頼できるかもしれず、又は信頼できないかもしれないことを示している。「不信頼」は、ファイルが信頼されるべきではなくマルウェアであり得ることを示している。バックエンド１２４は、データベース１１０に問い合わせるためにファイルについて受信した識別情報を使用し、ファイルについての各信頼性レベルを取得する。データベース１１０は、サーバコンピュータ１０６のリソース（例えば図２におけるメモリ２０４）を使用して実装されてもよい。あるいは、データベース１１０は、１つ以上の別個の格納装置及び／又はサーバコンピュータを使用して実装されてもよい。
【００１４】
[0022]検査コンピュータ１０８は、ソフトウェアパッケージを検査してファイルに対して信頼性のレベルを割り当てるために使用される。検査コンピュータ１０８は、検査部１１４を実装するように構成されている。図３は、本発明のいくつかの実施形態に係る検査コンピュータ１０８を描いているブロック図である。検査コンピュータ１０８は、実例的に、プロセッサ３０２と、メモリ３０４と、様々なサポート回路３０６と、Ｉ／Ｏインターフェース３０８とを含む。プロセッサ３０２は、当技術分野で知られている１つ以上のマイクロプロセッサを含んでもよい。プロセッサ３０２用のサポート回路３０６は、従来のキャッシュ、電源、クロック回路、データレジスタ、及び、Ｉ／Ｏインターフェース等を含む。メモリ３０４は、１つ以上の以下のランダムアクセスメモリ、読み出し専用メモリ、磁気抵抗読み出し／書き込みメモリ、光読み出し／書き込みメモリ、キャッシュメモリ、及び、磁気読み出し／書き込みメモリ等を含んでもよい。
【００１５】
[0023]いくつかの実施形態において、検査部１１４は、本願明細書に記載された機能を実行するようにメモリ３０４に格納され且つプロセッサ３０２によって実行されるソフトウェアを使用して実装されてもよい。しかしながら、検査部１１４が特定用途向け集積回路（ＡＳＩＣ）等の固有に構成されたハードウェアを使用して実装されてもよいことはいうまでもない。他の実施形態において、検査部１１４は、固有に構成されたハードウェアとソフトウェアとの組み合わせを使用して実装されてもよい。
【００１６】
[0024]図１に戻ると、検査部１１４は、ソフトウェアパッケージにおけるファイルについての信頼性のレベルを測定するように構成されている。図４は、本発明の１つ以上の態様に係るソフトウェアの信頼性を測定する方法４００を描いているフローチャートである。本方法４００の実施形態は、図１において示されたコンピュータシステム１００を参照して理解される。本方法４００は、ステップ４０２において開始し、検査部１１４がクリーンマシン１１８に信頼性が不明な１つ以上のファイルを含むものと識別されたソフトウェアパッケージ１１６をインストールする。いくつかの実施形態において、クリーンマシン１１８は、検査コンピュータ１０８上で実行するＶＭＷＡＲＥ仮想マシン等の仮想マシンを備える。クリーンマシン１１８は、オペレーティング・システム以外の他のソフトウェアパッケージがインストールされていないという点で「きれい」である。ソフトウェアパッケージ１１６がオペレーティング・システムである場合には、ソフトウェアは、クリーンマシン１１８に全く存在しない（例えば、クリーンマシンが検査コンピュータ１０８における仮想マシンである場合には、仮想マシンイメージは、オペレーティング・システムが検査されるとして生成されてもよい）。仮想マシンよりもむしろ、クリーンマシン１１８がハードウェア（例えば、検査コンピュータ１０８又は検査コンピュータ１０８に接続された他のコンピュータにおけるハードウェア）を使用して実装されてもよいことはいうまでもない。
【００１７】
[0025]いくつかの実施形態において、ソフトウェアパッケージ１１６は、サーバコンピュータ１０６からの出力を使用して識別される。図５は、本発明のいくつかの実施形態に係る検査対象のソフトウェアパッケージを識別する方法５００を描いているフローチャートである。本方法５００の実施形態は、図１を参照して理解される。本方法５００は、ステップ５０２において開始し、バックエンド１２４がクライアントコンピュータ１０２に格納された関心のあるファイルについての識別情報を受信する。識別情報の実施形態は、上述した通りである。ステップ５０４において、バックエンド１２４は、クライアントコンピュータ１０２の間の拡散率（prevalence）によって順序付けられた信頼性が不明なファイルのリストを生成する。いくつかの実施形態において、バックエンド１２４は、ステップ５０２において受信した識別情報を使用してファイルの拡散率を測定する。例えば、識別情報は、所定のファイルについての信頼性レベルがリクエストされたクライアントコンピュータ１０２の台数を示す。信頼性のレベルがより多くのクライアントコンピュータ１０２によってリクエストされたファイルには、より高い拡散率が割り当てられる。信頼性のレベルがより少ないクライアントコンピュータ１０２によってリクエストされたファイルには、より低い拡散率が割り当てられる。いくつかの実施形態において、バックエンド１２４は、拡散率を測定するためにステップ５０２からの識別情報の代わりに又はそれと組み合わせて他の外部情報５０６を使用してもよい。外部情報５０６は、例えば、それらのソフトウェアパッケージの拡散率に関するソフトウェア発行元からの情報を含んでもよい。
【００１８】
[0026]ステップ５０８において、バックエンド１２４は、拡散率の閾値があればそれを超えない拡散率を有するそれらのファイルをリストから除去する。例えば、信頼レベルが数台のクライアントコンピュータ１０２のみによってリクエストされたファイルの個数であってもよい。拡散率の閾値は、ファイルの検査が始まる前に特定台数のクライアントコンピュータのリクエストが必要とされるように設定されてもよい。ステップ５１０において、バックエンド１２４は、検査対象のファイルのレポート１２０を出力する。レポート１２０は、検査対象のファイルを含む１つ以上のソフトウェアパッケージを識別するために管理者又はユーザによって使用されてもよい。管理者又はユーザは、ソフトウェアパッケージを取得してそれらを格納してもよく、又は、それらを検査コンピュータ１０８に供給してもよい（例えばソフトウェアパッケージ１１６）。
【００１９】
[0027]図４のステップ４０２に戻ると、いくつかの実施形態において、ソフトウェアパッケージ１１６は、自動的に識別される。図６は、本発明のいくつかの実施形態に係る検査対象のソフトウェアパッケージを識別する方法６００を描いているフローチャートである。本方法６００の実施形態は、図１を参照して理解される。図１において示されているように、システム１００は、ソフトウェアパッケージモニタ１３０に構成された監視コンピュータ１０９を含んでもよい。ソフトウェアパッケージモニタ１３０は、検査対象のソフトウェアパッケージを自動的に識別するために本方法６００を実行してもよい。
【００２０】
[0028]図７は、本発明のいくつかの実施形態に係る監視コンピュータ１０９を描いているブロック図である。監視コンピュータ１０９は、実例的に、プロセッサ７０２と、メモリ７０４と、様々なサポート回路７０６と、Ｉ／Ｏインターフェース７０８とを含む。プロセッサ７０２は、当技術分野で知られている１つ以上のマイクロプロセッサを含んでもよい。プロセッサ７０２用のサポート回路７０６は、従来のキャッシュ、電源、クロック回路、データレジスタ、及び、Ｉ／Ｏインターフェース等を含む。Ｉ／Ｏインターフェース７０８は、ネットワーク１０４との通信用に構成されてもよい。Ｉ／Ｏインターフェース７０８はまた、検査コンピュータ１０８との通信用に構成されてもよい。メモリ７０４は、１つ以上の以下のランダムアクセスメモリ、読み出し専用メモリ、磁気抵抗読み出し／書き込みメモリ、光読み出し／書き込みメモリ、キャッシュメモリ、及び、磁気読み出し／書き込みメモリ等を含んでもよい。
【００２１】
[0029]いくつかの実施形態において、ソフトウェアパッケージモニタ１３０は、本願明細書に記載された機能を実行するようにメモリ７０４に格納され且つプロセッサ７０２によって実行されるソフトウェアを使用して実装されてもよい。しかしながら、ソフトウェアパッケージモニタ１３０が特定用途向け集積回路（ＡＳＩＣ）等の固有に構成されたハードウェアを使用して実装されてもよいことはいうまでもない。他の実施形態において、ソフトウェアパッケージモニタ１３０は、固有に構成されたハードウェアとソフトウェアとの組み合わせを使用して実装されてもよい。
【００２２】
[0030]図１及び図６に戻ると、本方法６００は、ステップ６０２において開始し、ソフトウェアパッケージモニタ１３０がソフトウェアの信頼できる供給源であるものと示されたベンダーのウェブサイトを監視する。例えば、オペレーティング・システム及び他の周知で人気があるソフトウェアパッケージのベンダーは、ソフトウェアの信頼できる供給源とみなされてもよい。そのようなベンダーは、インターネット上の特定の発行ポイントにおいて新規のソフトウェアパッケージ及び／又は現在のソフトウェアパッケージの更新を公開することがある（留意すべきは、更新は、本記載のためにソフトウェアパッケージであると考えられるということである）。例えば、オペレーティング・システム又は他のアプリケーションのベンダーは、オペレーティング・システム又はアプリケーションについての定期的な更新を提供するウェブサイトをメンテナンスすることがある。ソフトウェアパッケージモニタ１３０は、検査されていないソフトウェアパッケージを検出するために、そのようなウェブサイトを監視するように構成されてもよい。ステップ６０４において、ソフトウェアパッケージモニタ１３０は、検査コンピュータ１０８にロードするために未検査のソフトウェアパッケージを取得する。例えば、ソフトウェアパッケージモニタ１３０は、ネットワーク１０４を介して未検査のソフトウェアパッケージをダウンロードしてもよい。ソフトウェアパッケージモニタ１３０は、（監視コンピュータ１０９が検査コンピュータ１０８に接続されている場合には）未検査のソフトウェアパッケージを直接検査コンピュータ１０９に送信してもよい。あるいは、管理者又はユーザは、監視コンピュータ１０９からダウンロードされたソフトウェアパッケージを取り出し、それらを検査コンピュータ１０８にロードしてもよい。
【００２３】
[0031]図１のステップ４０２に戻ると、１つの実施形態において、ソフトウェアパッケージ１１６のインストールは、以下のように開始する。すなわち、ステップ４０４において、検査部１１４は、ソフトウェアパッケージ１１６のインストールに先だって、クリーンマシン１１８のソフトウェア状態の第１のスナップショットを取得する。例えば、ソフトウェアパッケージ１１６がアプリケーションである場合には、第１のスナップショットにおけるソフトウェア状態は、アプリケーションがインストールされる前のオペレーティング・システムの状態であってもよい。ソフトウェアパッケージ１１６がオペレーティング・システムである場合には、ソフトウェア状態は、空であってもよい（すなわち、ソフトウェア状態がない）。ステップ４０６において、検査部１１４は、ソフトウェアパッケージ１１６のインストール後に、クリーンマシン１１８のソフトウェア状態の第２のスナップショットを取得する。第２のスナップショットは、ソフトウェアパッケージ１１６のインストールによってインストールされた及び／又は変更されたファイルに起因して、第１のスナップショットとは異なる。
【００２４】
[0032]ステップ４０８において、検査部１１４は、ソフトウェアパッケージ１１６のインストールに基づいてレポートパッケージ１３５を生成する。レポートパッケージ１３５は、ソフトウェアパッケージ１１６によってクリーンマシン１１８にインストールされた及び／又は変更されたファイルのカタログを含む。いくつかの実施形態において、検査部１１４は、ステップ４０４及びステップ４０６において生成された第１及び第２のスナップショットを比較（例えばスナップショットの前後）することにより、インストールされた及び／又は変更されたファイルのカタログを生成してもよい（ステップ４１０）。レポートパッケージ１３５は、バージョン情報や製品ベンダー等のソフトウェアパッケージ１１６に関連する他の情報を含んでもよい。レポートパッケージ１３５はまた、ソフトウェアパッケージ１１６によってインストールされた及び／又は変更されたファイルのバイナリーを含んでもよい。
【００２５】
[0033]ステップ４１２において、検査部１１４は、レポートパッケージ１３５のカタログにおける各ファイルの識別属性を測定する。識別属性は、クライアントコンピュータ１０２から受信したファイル識別データ、すなわち、要約（例えばＳＨＡ−２ハッシュ）、ファイル名、規格化したファイルパス、ファイルサイズ、関連するソフトウェアパッケージ、バージョン情報、及び、ディジタル署名等と同一又は類似であってもよい。
【００２６】
[0034]ステップ４１４において、検査部１１４は、ファイルのそれぞれに対して信頼性のレベルを割り当てるように、レポートパッケージ１３５のカタログにおけるファイルのそれぞれを処理する。信頼性レベルは、様々な方法及び情報を使用して所定ファイルに割り当てられてもよい。いくつかの実施形態において、検査部１１４は、マルウェアについてのカタログにおけるファイルのそれぞれをスキャンする（ステップ４１６）。マルウェアについてのファイルをスキャンする技術は、当技術分野で知られている。マルウェアであるものと示されたファイルには、「不信頼」のレベルが割り当てられる。いくつかの実施形態において、検査部１１４は、レポートパッケージ１３５のカタログにおける１つ以上のファイルについてのディジタル署名を解析する（ステップ４１８）。ソフトウェアパッケージ１１６によってインストールされたいくつかのファイルは、ベンダーによってディジタル的に署名されてもよい。ディジタル署名が検証され得た場合には、各ファイルには、「プロバイダ信頼」又は「コミュニティ信頼」のレベルが割り当てられ得る。いくつかの実施形態において、検査部１１４は、カタログにおけるファイルの起源を測定し、そのような起源の信頼性の大きさを取得する（ステップ４２０）。例えば、検査部１１４は、ファイルのベンダーを識別し、公知のベンダー及び対応する信頼のレベルのリストに対するベンダーを相互参照してもよい。ベンダーには、例えば、「プロバイダ信頼」、「コミュニティ信頼」、「不信頼」、又は、「不明」の間の異なる信頼のレベルが割り当てられてもよい。いくつかの実施形態において、検査部１１４は、カタログにおけるファイルの統計的解析を実行する（ステップ４２２）。例えば、検査コンピュータ１０８は、上述したようにクライアントコンピュータ１０２によってレポートされた識別情報ファイルを格納してもよいデータベース１１０との通信用に構成されてもよい。いくつかの実施形態において、データベース１１０はまた、特定のクライアントコンピュータ１０２が、多かれ少なかれ、マルウェアによって影響を及ぼされそうであるかどうかを示す「ウィルス予防策評価」等を含むクライアントコンピュータ１０２についての統計値を保持する。検査部１１４は、クライアントコンピュータ１０２上のファイル及びクライアントコンピュータ１０２についてのウィルス予防策評価の存在に関して、カタログにおけるファイルの統計的解析を実行してもよい。例えば、信頼性が不明のファイルが、悪いウィルス予防策評価（例えば平均して）でクライアントコンピュータ１０２に格納されることが知られている場合には、ファイルは、よりマルウェアでありそうであるとみなされてもよく、より低い信頼評価が割り当てられてもよい。逆に、信頼性が不明のファイルが、良好なウィルス予防策評価（例えば平均して）でクライアントコンピュータ１０２に格納されることが知られている場合には、ファイルは、よりマルウェアでなさそうであるとみなされてもよく、より高い信頼評価が割り当てられてもよい。いくつかの実施形態において、検査部１１４は、レポートパッケージ１３５のカタログにおけるファイルのそれぞれについての信頼性の全体レベルを測定するために、ステップ４１６からステップ４２２の組み合わせを実行する。一般に、ステップ４１４において測定された信頼のレベルは、レポートパッケージ１３５のカタログにおけるファイルのそれぞれについての属性として含まれてもよい。
【００２７】
[0035]ステップ４２４において、検査部１１４は、出力としてレポートパッケージ１３５を提供する。そして、レポートパッケージ１３５は、カタログにおけるファイル及びそれらの信頼性の各レベルに関してデータベース１１０を更新するために使用されてもよい。いくつかの実施形態において、レポートパッケージ１３５は、サーバコンピュータ１０６に対して自動的に提供され、データベース１１０を更新するようにバックエンド１２４によって処理されてもよい。あるいは、管理者又は他のユーザは、（例えば、サーバコンピュータ１０６又は他のコンピュータとの協働を介して）レポートパッケージ１３５に基づいてデータベース１１０の更新を開始することができる。
【００２８】
[0036]上述した本発明の実施形態において、サーバコンピュータ１０６、検査コンピュータ１０８、及び、監視コンピュータ１０９の例としての構造が記載されている。他の構造が使用されてもよいことはいうまでもない。一般に、バックエンド１２４、検査部１１４、及び、ソフトウェアパッケージモニタ１３０の機能は、１つ以上のコンピュータ／サーバによって実行されてもよい。いくつかの実施形態において、検査コンピュータ１０９は、ソフトウェアパッケージ１１６のインストールが、いくつかの外部影響によってデータを破損するという可能性を未然に防止するために、ネットワーク１０４及び／又は他のコンピュータから隔離される。
【００２９】
[0037]上述した実施形態において、エージェント１１３は、信頼性レベルがカタログ内に格納された全てのファイルについて取得されるように、そのうち（例えばアイドル時間中に）各コンピュータ１０２上のファイルをカタログに入れることができる。エージェント１１３は、信頼できるファイルをホワイトリストに載せ、マルウェアについての残りのファイルをスキャンする。エージェント１１３は、様々な発見的解析の使用とともに署名に基づく公知のマルウェアの探索により、それらの残りのファイルをスキャンしてもよい。一般に、発見的解析は、不審な動作を検出するためにソフトウェア動作の監視をともなう。しかしながら、そのようなスキャンは、多数の脅威の誤検出の検出をもたらすことがある。特に、エージェント１１３は、新規にインストールされたファイルを潜在的脅威として識別することがある。ファイルが新規にインストールされたことから、エージェント１１３は、それらの信頼性レベルについてバックエンド１２４にまだ問い合わせていない。したがって、エージェント１１３は、それらのファイルのいくつかが信頼できるものであったとしても、新規にインストールされた全てのファイルをスキャンしなければならない。これは、いくつかの信頼できるファイルが脅威、すなわち、脅威の誤検出として通知されるのをもたらすことがある。
【００３０】
[0038]したがって、いくつかの実施形態において、エージェント１１３は、ファイルが新規にインストールされたのに応じて、信頼性レベルについてバックエンド１２４に問い合わせるように構成されている。エージェント１１３は、ファイルがインストールされたとき、又は、ファイルがインストールされた後の閾値期間内に、問い合わせを提示することができる。そのような実施形態において、エージェント１１３は、問い合わせを提示するために必ずしもアイドル時間を待機しない。したがって、問い合わせは、実時間で提示されたものとして照会され得る。
【００３１】
[0039]さらにまた、上述したように、バックエンド１２４は、コミュニティ全体への拡散率に基づいてファイルについての信頼性評価を開始することができる。例えば、ユーザ間の高い拡散率を有するファイルは、検査のために通知されてもよく、プロバイダ信頼、コミュニティ信頼、不明、又は、不信頼等の信頼性レベルが後に割り当てられてもよい。しかしながら、いくつかの信頼できるファイルが、検査を開始するための拡散率の閾値レベルを満たさない場合であってもよい。例えば、上述した新規にインストールされたファイルは、ユーザ間のかなりの拡散率がまだ取得されていないより新しいソフトウェアからのものであってもよい。したがって、バックエンド１２４は、エージェント１１３によって誤検出を順次もたらすことがある、実際には信頼できる（すなわち、それらが検査された場合に信頼できるとみなされる）いくつかのファイル（例えば新たなファイル）について不明の信頼レベルを返してもよい。
【００３２】
[0040]したがって、いくつかの実施形態において、「コミュニティ存在」と称される追加の信頼レベルが提供される。最高の信頼と最低の信頼との間のスケールで、レベルは、プロバイダ信頼から、コミュニティ信頼、コミュニティ存在、不明まで、その順序で及ぶ。図５を参照すると、いくつかの実施形態において、方法５００は、バックエンド１２４がコミュニティ存在の信頼のレベルに第２の拡散率の閾値を超える拡散率を有する各ファイルを割り当てる任意のステップ５１２を含んでもよい。第２の拡散率の閾値は、ステップ５０８において使用された拡散率の閾値（第１の拡散率の閾値）と同一であってもよく又は異なっていてもよい。したがって、いくつかの場合において、ファイルは、コミュニティ存在の信頼のレベルを受信するのに十分に拡散しているが、検査を開始するのに十分に拡散していないことがある。いくつかの場合において、ファイルは、検査されるのに十分に拡散しているが、そのような検査の結果を受信するのに時間が十分にないことがあり、したがって、そのようなファイルは、一時的に、コミュニティ存在の信頼のレベルを受信する。
【００３３】
[0041]図８は、本発明のいくつかの実施形態に係るクライアントコンピュータ１０２を描いているブロック図である。クライアントコンピュータ１０２は、実例的に、プロセッサ８０２と、メモリ８０４と、様々なサポート回路８０６と、Ｉ／Ｏインターフェース８０８とを含む。プロセッサ８０２は、当分野で知られている１つ以上のマイクロプロセッサを含んでもよい。プロセッサ８０２用のサポート回路８０６は、従来のキャッシュ、電源、クロック回路、データレジスタ、及び、Ｉ／Ｏインターフェース等を含む。メモリ８０４は、１つ以上の以下のランダムアクセスメモリ、読み出し専用メモリ、磁気抵抗読み出し／書き込みメモリ、光読み出し／書き込みメモリ、キャッシュメモリ、及び、磁気読み出し／書き込みメモリ等を含んでもよい。
【００３４】
[0042]いくつかの実施形態において、エージェント１１３は、本願明細書に記載された機能を実行するようにメモリ８０４に格納され且つプロセッサ８０２によって実行されるソフトウェアを使用して実装されてもよい。しかしながら、エージェント１１３が特定用途向け集積回路（ＡＳＩＣ）等の固有に構成されたハードウェアを使用して実装されてもよいことはいうまでもない。他の実施形態において、エージェント１１３は、固有に構成されたハードウェアとソフトウェアとの組み合わせを使用して実装されてもよい。
【００３５】
[0043]図９は、本発明のいくつかの実施形態に係るコンピュータ上のマルウェアを検出する方法９００を描いているフローチャートである。本方法９００は、クライアントコンピュータ１０２におけるエージェント１１３によって実行されてもよい。本方法９００は、ステップ９０２において開始し、エージェント１１３が、クライアントコンピュータ１０２上の潜在的脅威として、信頼性が不明なファイルを識別する。例えば、ファイルは、新規にインストールされたソフトウェアの一部であってもよい。新たなファイルは、ホワイトリスト上になく、したがって、信頼性が不明のものである。そのようなものとして、エージェント１１３は、マルウェアについての新たなファイルをスキャンする。署名及び／又は発見的解析を使用して、エージェント１１３は、潜在的脅威として新たなファイルのいくつかを識別してもよい。
【００３６】
[0044]ステップ９０４において、エージェント１１３は、潜在的脅威として識別されたファイルのそれぞれについての信頼性レベルをリクエストする問い合わせをバックエンド１２４に対して送信する。例えば、ファイルが新たなファイルである場合、問い合わせは、新たなファイルのインストール中に又はインストール後の閾値期間内に実時間で送信されてもよい。一般に、問い合わせは、アイドル時間中にのみよりはむしろ、新たなファイルのインストールに応じて提示されてもよい。問い合わせにおいて、エージェント１１３は、ファイルのそれぞれについての識別子をバックエンド１２４に対して送信する。いくつかの実施形態において、識別子は、上述したように、ファイルの要約（例えばＳＨＡ２）であってもよい。
【００３７】
[0045]ステップ９０６において、ファイルのそれぞれについての信頼性レベルは、バックエンドから受信される。ステップ９０８において、ファイルのそれぞれについての信頼性レベルは、信頼性レベルの閾値と比較される。例えば、所定ファイルの信頼性レベルは、複数の信頼性レベルのうちの１つであってもよい。例としての信頼性レベルは、プロバイダ信頼、コミュニティ信頼、コミュニティ存在、不明、及び、不信頼を含む。閾値レベルは、そのようなレベルのうちの１つ、例えばコミュニティ存在のレベルであってもよい。したがって、コミュニティ存在又はそれ以上の信頼性レベルを有するファイルは、信頼されるとみなされることができる。不明又はそれ以下の信頼性レベルを有するファイルは、信頼されていないとみなされることができる。
【００３８】
[0046]ステップ９１０において、エージェント１１３は、脅威の誤検出として、閾値レベル（もしあれば）を満たす信頼性レベルを有するファイルのそれぞれを指定する。ステップ９１２において、エージェント１１３は、脅威の真の検出として、閾値レベル（もしあれば）を満たさない信頼性レベルを有するファイルのそれぞれを指定する。ステップ９１４において、エージェント１１３は、脅威の誤検出のそれぞれがコンピュータ１０２によって利用され、脅威の真の検出のそれぞれがコンピュータ１０２によって利用されるのを阻止するのを可能とすることができる。
【００３９】
[0047]上述した方法の態様は、コンピュータシステムによって使用するためのプログラム製品として実装されてもよい。プログラム製品のプログラムは、実施形態の機能を定義し、これに限定されないが、（i）書き込み不可能な記憶媒体（例えば、ＣＤ−ＲＯＭドライブ又はＤＶＤドライブによって読み取り可能なＣＤ−ＲＯＭ又はＤＶＤ−ＲＯＭディスク等のコンピュータ内の読み出し専用メモリ装置）に永久に格納された情報、及び、（ii）書き込み可能な記憶媒体（例えば、ディスクドライブ内のフロッピーディスク又はハードディスクドライブ又は読み出し／書き込み可能なＣＤ又は読み出し／書き込み可能なＤＶＤ）に格納された可変情報を含む様々なコンピュータ読み取り可能な媒体に含まれ得る。そのようなコンピュータ読み取り可能な媒体は、本発明の機能を指示するコンピュータ読み取り可能な命令を伝える場合に、本発明の実施形態を表す。
【００４０】
[0048]様々な実施形態が上述された一方で、当然のことながら、それらは、例示としてのみ示されており、限定されるものではない。したがって、好ましい実施形態の広さ及び範囲は、いかなる上述した例としての実施形態によっても限定されるべきではなく、以下の特許請求の範囲及びそれらの均等物にしたがってのみ定義されるべきである。
【符号の説明】
【００４１】
１００…コンピュータシステム、１０２…クライアントコンピュータ、１０４…ネットワーク、１０６…サーバコンピュータ、１０８…検査コンピュータ、１０９…監視コンピュータ、１１０…データベース、１１２…ソフトウェア、１１３…エージェント、１１４…検査部、１１６…ソフトウェアパッケージ、１１８…クリーンマシン、１２０…レポート、１２４…バックエンド、１３０…ソフトウェアパッケージモニタ、１３５…レポートパッケージ、２０２、３０２、７０２，８０２…プロセッサ、２０４、３０４、７０４，８０４…メモリ、２０６、３０６、７０６，８０６…サポート回路、２０８、３０８、７０８，８０８…Ｉ／Ｏインターフェース。
【図１】
2010079906.tif 000003
【図２】
2010079906.tif 000004
【図３】
2010079906.tif 000005
【図４】
2010079906.tif 000006
【図５】
2010079906.tif 000007
【図６】
2010079906.tif 000008
【図７】
2010079906.tif 000009
【図８】
2010079906.tif 000010
【図９】
2010079906.tif 000011
【外国語明細書】
2010079906000001.pdf