(57)【特許請求の範囲】
【請求項１】
コンピュータシステム上でマルウェアを見つけ出すためにファイルをスキャンする方法であって、
スキャンすべきファイルをシステム内で受信するステップと、
少なくとも１つのマルウェアスキャンエンジンを使用して、マルウェアを示唆する特性をファイルが有するか否かを、１つまたは複数のヒューリスティック手法を使用して、判断するステップと、
マルウェアを示唆する特性をファイルが有すると判断された場合、少なくとも１つのクリーン度スキャンエンジンを使用して、クリーンなファイルを示唆する特性をファイルが有するか否かを、１つまたは複数のヒューリスティック手法を使用して、判断するステップと、
クリーンなファイルを示唆する特性をファイルが有すると判断された場合、誤警報であったことを通知するステップと
を含み、
少なくとも１つのクリーン度スキャンエンジンを使用して、クリーンなファイルを示唆する特性をファイルが有するか否かを判断する前記ステップが、ファイルのクリーン度の尺度を生成し、前記尺度を既定のしきい値と比較するステップを含む、方法。
【請求項２】
前記コンピュータシステムがサーバまたは１組のサーバである、請求項１に記載の方法。
【請求項３】
前記コンピュータシステムがクライアントコンピュータである、請求項１に記載の方法。
【請求項４】
少なくとも１つのクリーン度スキャンエンジンを使用して、クリーンなファイルを示唆する特性をファイルが有するか否かを判断する前記ステップが、
アプリケーションプログラミングインターフェース呼び出しを作成するコードをファイルが含むか否か判断するステップと、
グラフィックスおよび／またはサウンドデータをファイルが含むか否か判断するステップと、
人が理解できる複数の言語でのテキストデータをファイルが含むか否か判断するステップと、
クリアテキストストリングをファイルが含むか否か判断するステップと、
ファイルがマルウェアとして識別されることなくシステム内に存在していた期間を判断するステップ
のうちの１つまたは複数を含む、請求項１から３のいずれか一項に記載の方法。
【請求項５】
複数のクライアントコンピュータにマルウェアスキャンサービスを提供する方法であって、
請求項１から４のいずれか一項に記載の方法を、バックエンドサーバまたは１組のサーバで実施するステップと、
誤警報であったことが通知されたファイルに関して、さらなる自動および／または手動チェックを行って、ファイルがマルウェアであるか否かを確認するステップと、
マルウェアと確認された各ファイルと、マルウェアを示唆する特性を有するが、実際にはクリーンなファイルを示唆する特性を有する各ファイルとに関して、スキャンシグネチャおよび／またはスキャン規則を生成して前記クライアントコンピュータに配布するステップと
を含む方法。
【請求項６】
スキャンすべきファイルを受信するための入力部と、
少なくとも１つのマルウェアスキャンエンジンを使用して、マルウェアを示唆する特性をファイルが有するか否かを、１つまたは複数のヒューリスティック手法を使用して、判断するように構成された第１の処理装置と、
マルウェアを示唆する特性をファイルが有すると判断された場合、少なくとも１つのクリーン度スキャンエンジンを使用して、クリーンなファイルを示唆する特性をファイルが有するか否かを、１つまたは複数のヒューリスティック手法を使用して、判断し、クリーンなファイルを示唆する特性をファイルが有すると判断された場合、誤警報であったことを通知するように構成された第２の処理装置と
を備え、
前記第２の処理装置が、少なくとも１つのクリーン度スキャンエンジンを使用して、クリーンなファイルを示唆する特性をファイルが有するか否かを判断する際に、ファイルのクリーン度の尺度を生成し、前記尺度を既定のしきい値と比較する、コンピュータシステム。
【請求項７】
スキャンすべきファイルをシステム内で受信するステップと、
少なくとも１つのマルウェアスキャンエンジンを使用して、マルウェアを示唆する特性をファイルが有するか否かを、１つまたは複数のヒューリスティック手法を使用して、判断するステップと、
マルウェアを示唆する特性をファイルが有すると判断された場合、少なくとも１つのクリーン度スキャンエンジンを使用して、クリーンなファイルを示唆する特性をファイルが有するか否かを、１つまたは複数のヒューリスティック手法を使用して、判断するステップと、
クリーンなファイルを示唆する特性をファイルが有すると判断された場合、誤警報であったことを通知するステップと
をコンピュータに実行させるコンピュータプログラムであって、
少なくとも１つのクリーン度スキャンエンジンを使用して、クリーンなファイルを示唆する特性をファイルが有するか否かを判断する前記ステップが、ファイルのクリーン度の尺度を生成し、前記尺度を既定のしきい値と比較するステップを含む、コンピュータプログラム。
【請求項８】
請求項７に記載のプログラムを記憶するコンピュータプログラム記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マルウェアスキャンシステムでの誤警報の検出に関し、限定はしないが特に、自動化されたマルウェアスキャンシステムでの誤警報の検出に関する。
【背景技術】
【０００２】
用語「マルウェア（ｍａｌｗａｒｅ）」は、ｍａｌｉｃｉｏｕｓ  ｓｏｆｔｗａｒｅ（悪意のあるソフトウェア）の略であり、所有者の同意なくコンピュータシステムに潜入する、またはコンピュータシステムを破壊するように設計された任意のソフトウェアを表す用語として使用されている。マルウェアは、ウイルス、ワーム、トロイの木馬、ルートキット、アドウェア、スパイウェア、および任意の他の悪意のある望ましくないソフトウェアを含むことができる。デスクトップ型パーソナルコンピュータ（ＰＣ）、ラップトップ、携帯情報端末（ＰＤＡ）、または移動体電話などあらゆるコンピュータデバイスが、マルウェアの危険にさらされる可能性がある。
【０００３】
デバイスがマルウェアに感染したとき、ユーザはしばしば、望ましくない挙動およびシステム性能の低下に気付く。これは、感染が、望ましくない処理装置の活動、メモリ使用、およびネットワークトラフィックを引き起こす可能性があるからである。また、これは、安定性の問題を発生させ、アプリケーションまたはシステム全体に及ぶクラッシュをもたらすこともある。感染したデバイスのユーザは、実際の原因はユーザが気付いていないマルウェア感染であるにもかかわらず、性能低下がソフトウェアの欠陥またはハードウェアの問題によるものであると誤って考えて、不適切な修正措置を取ることがある。
【０００４】
マルウェア作成者は、自分のソフトウェアを検出されにくいように設計するので、マルウェアの検出は困難な課題である。マルウェア作成者はしばしば、システム上でマルウェアの存在を故意に隠す技術を採用し、すなわち、現在実行しているプロセスを列挙するオペレーティングシステムテーブルにマルウェアアプリケーションが現れないことがある。
【０００５】
コンピュータデバイスは、マルウェアを検出し、場合によっては駆除するために、アンチウイルスソフトウェアを利用する。このアンチウイルスソフトウェアは、マルウェアを検出するために、スキャン、整合性チェック、およびヒューリスティック解析を含めた様々な方法を利用する。これらの方法のうち、マルウェアスキャンは、個々のマルウェアプログラムを特徴付けるウイルスの指紋すなわち「シグネチャ」を見つけ出すためにファイルを検査するアンチウイルスソフトウェアを伴う。典型的には、これは、アンチウイルスソフトウェアが、それらのシグネチャを含むデータベースを有することを必要とする。アンチウイルスソフトウェアの提供者が新たなマルウェアの脅威を識別したとき、その脅威が解析されて、そのシグネチャが抽出される。ここで、マルウェアが「知られ」、そのシグネチャを更新情報としてアンチウイルスソフトウェアデータベースに供給することができる。
【０００６】
マルウェアを検出し、シグネチャを生成してクライアント端末に配布するために、マルウェア検出アプリケーション提供者の「バックエンド」操作は、クライアント端末で利用可能なよりもかなり多くの量の計算を行って多数のファイルおよびコードサンプルを処理する。いくつかの場合には、これは、バックエンドでのファイルおよびコードサンプルの手動解析を含むこともある。当然、アプリケーション提供者の目標は、マルウェアバックエンド検出プロセスをできるだけ自動化し、それと同時に誤警報の危険を最小限にすることである。
【発明の概要】
【発明が解決しようとする課題】
【０００７】
本発明の目的は、自動化された、または少なくとも部分的に自動化されたマルウェア検出方式のための誤警報検出プロセスを提供することである。この目的は、マルウェアの疑いがある、またはマルウェアを含む疑いがあるサンプルを選別して、クリーンなファイルおよびコードを特徴付ける特性を有する度合いまたはそのような挙動を示す度合いを決定することによって実現される。
【課題を解決するための手段】
【０００８】
本発明の第１の態様によれば、コンピュータシステムでマルウェアを見つけ出すためにファイルをスキャンする方法が提供される。この方法は、スキャンすべきファイルをシステム内で受信することと、少なくとも１つのマルウェアスキャンエンジンを使用して、マルウェアを示唆する特性をファイルが有するか否かを判断することとを含む。マルウェアを示唆する特性をファイルが有すると判断された場合、少なくとも１つのクリーン度スキャンエンジンを使用して、クリーンなファイルを示唆する特性をファイルが有するか否かを判断する。クリーンなファイルを示唆する特性をファイルが有すると判断された場合、誤警報であったことが通知される。
【０００９】
本発明は、マルウェア検出プロセスへの人為的介入の必要性を減らすことができ、それと同時にサービス提供者および／またはユーザに誤警報の可能性を警告する。サービス提供者の場合、本発明は、提供者がより信頼性の高い製品またはサービスを配布することができるようにする。
【００１０】
本発明のコンピュータシステムは、例えばマルウェア検出サービスの提供者によって操作されるサーバまたは１組のサーバでよい。あるいは、コンピュータシステムは、例えばエンドユーザが所有するクライアントコンピュータでよい。
【００１１】
少なくとも１つのクリーン度スキャンエンジンを使用して、クリーンなファイルを示唆する特性をファイルが有するか否かを判断するステップをさらに考慮すると、このステップは、
アプリケーションプログラミングインターフェース呼び出しを行うコードをファイルが含むか否か判断すること、
グラフィックスおよび／またはサウンドデータをファイルが含むか否か判断すること、
人が理解できる複数の言語でのテキストデータをファイルが含むか否か判断すること、
クリアテキストストリングをファイルが含むか否か判断すること、
ファイルがマルウェアとして識別されることなくシステム内に存在していた期間を判断すること
のうちの１つまたは複数を含むことができる。当然、他の基準を定義することもできる。
【００１２】
少なくとも１つのクリーン度スキャンエンジンを使用して、クリーンなファイルを示唆する特性をファイルが有するか否かを判断するステップは、ファイルのクリーン度の尺度を生成し、その尺度を既定のしきい値と比較するステップを含むことができる。
【００１３】
本発明の第２の態様によれば、複数のクライアントコンピュータにマルウェアスキャンサービスを提供する方法であって、
本発明の上記第１の態様の方法をバックエンドサーバまたは１組のサーバで実施するステップと、
誤警報であったことが通知されたファイルに関して、さらなる自動および／または手動チェックを行って、ファイルがマルウェアであるか否か確認するステップと、
マルウェアと確認された各ファイルと、マルウェアを示唆する特性を有するが、実際にはクリーンなファイルを示唆する特性を有する各ファイルとに関して、スキャンシグネチャおよび／またはスキャン規則を生成してクライアントコンピュータに配布するステップと
を含む方法が提供される。
【００１４】
本発明の第３の態様によれば、スキャンすべきファイルを受信するための入力部と、少なくとも１つのマルウェアスキャンエンジンを使用して、マルウェアを示唆する特性をファイルが有するか否かを判断するように構成された第１の処理装置とを備えるコンピュータシステムが提供される。このシステムは、第２の処理装置をさらに備え、第２の処理装置は、マルウェアを示唆する特性をファイルが有すると判断された場合、少なくとも１つのクリーン度スキャンエンジンを使用して、クリーンなファイルを示唆する特性をファイルが有するか否か判断し、クリーンなファイルを示唆する特性をファイルが有すると判断された場合、誤警報であったことを通知するように構成される。
【００１５】
本発明の第４の態様によれば、
スキャンすべきファイルをシステム内で受信するステップと、
少なくとも１つのマルウェアスキャンエンジンを使用して、マルウェアを示唆する特性をファイルが有するか否かを判断するステップと、
マルウェアを示唆する特性をファイルが有すると判断された場合、少なくとも１つのクリーン度スキャンエンジンを使用して、クリーンなファイルを示唆する特性をファイルが有するか否かを判断するステップと、
クリーンなファイルを示唆する特性をファイルが有すると判断された場合、誤警報であったことを通知するステップと
をコンピュータに実施させるためのコンピュータプログラムが提供される。
【００１６】
本発明の第５の態様によれば、上記第３の態様によるプログラムを記憶するコンピュータプログラム記憶媒体が提供される。
【図面の簡単な説明】
【００１７】
【図１】マルウェアの疑いを検出し、その後、誤警報を識別するためのプロセスを示す流れ図である。
【図２】マルウェアの疑いを検出し、その後、誤警報を識別するためのコンピュータの概略図である。
【発明を実施するための形態】
【００１８】
マルウェア検出アプリケーションの提供者によって実行される典型的なバックエンド検出プロセスは、毎日、数百さらには数千のソフトウェアファイル（完全なアプリケーションおよびコードサンプルを含む）を受信して解析している。これらのファイルは、例えば、スパイダ、サーチャ、ワールドワイドウェブから得ることができ、または、提供者の検出アプリケーションを実行するクライアント端末からバックエンドに送られることがある。バックエンド操作の目的は、「実際に感染報告がある（ｉｎ  ｔｈｅ  ”ｗｉｌｄ”）」新規のマルウェアを迅速に検出し、そのマルウェアに関するシグネチャを生成してクライアント端末に配布し、さらに可能であれば、感染除去メカニズムを生成して配布することである。これらのプロセスをできるだけ自動化することが望ましい。
【００１９】
マルウェア検出プロセスを考察すると、新規ファイルがバックエンドで受信されるとき、そこで動作するサーバはファイルを受け取り、ａ）そのファイルが既知のマルウェアを含むかどうか、および／またはｂ）そのファイルが疑わしい挙動、すなわちマルウェアに典型的な挙動を示す、またはそのような性質を有するかどうか判断する。これらのステップのうち最初のステップａ）は、ファイルが既知のマルウェアのシグネチャを含むかどうか判断するためにファイルを解析することによって、比較的簡単に自動化することができる。第２のステップｂ）も、多数の既知のウイルスを解析することによって得られた経験に基づき生成されている規則または「ヒューリスティック手法（ｈｅｕｒｉｓｔｉｃｓ）」を適用することによって自動化することができる。しかし、ステップｂ）は、いくつかのクリーンなファイルが１つまたは複数のヒューリスティック手法の適用に対して陽性の結果を示すことは避けられないので、誤警報を発生する危険がある。クライアント端末が、クリーンなファイルがマルウェアの疑いがあると忠告される場合、これは、スキャンアプリケーションに対する顧客の苛立ちや不満、およびアプリケーション提供者からのテクニカルサポートを求める要求の増加を含めた、いくつかの望ましくない結果をもたらすことになる。
【００２０】
ここで、疑わしいファイルに対してさらなるスキャンを行って、各ファイルに関する「クリーン度（ｃｌｅａｎｌｉｎｅｓｓ）」スコアを決定することによって、マルウェアを見つけ出すためのファイルの自動スキャンから生じる誤警報を検出するための試みが提案されている。疑わしいファイルに関するクリーン度スコアが、そのファイルがクリーンであり得ることを示す場合、ファイルに対して何らかのさらなる措置が取られて、ファイルが本当に感染しているかどうかを何らかの方法で確認する。例えば、マルウェアがほとんどないサンプルは高性能のグラフィックスまたはサウンドライブラリを使用しており、したがってファイルが多数のグラフィックスおよびサウンドコードを含む場合、マルウェアである可能性は非常に低い。そのようなファイルに関しては、高いクリーン度スコアを決定することができる。
【００２１】
クリーン度スコアは、以下のファイル特性の１つまたは複数を解析することによって決定することができる。
・コード解析：
クリーンなコードは、感染したファイルのものとは大きく異なるコードパターンを有する。例えば、クリーンなアプリケーションは、典型的には、ユーザとの対話なしではファイル書き込み操作を行わない。また、一般に、クリーンなファイルは、悪意のあるファイルよりもコードライン当たりに多くのＵＩ操作を有する。
・ＡＰＩ呼び出し頻度：
クリーンなアプリケーションは通常、悪意のあるファイルのものとは異なる関数呼び出しの統計的パターンを含む。例えば、クリーンなアプリケーションでは、ＵＩコードがかなり多い傾向がある。また、悪意のあるアプリケーションは、クリーンなファイルよりも多数の他の操作を含む傾向がある。
・関数呼び出しグラフ：
コード解析に関して上述したように、クリーンなアプリケーションによって呼び出される関数または関数の順序は、悪意のあるアプリケーションによって呼び出されるものとは異なる傾向がある。例えば、クリーンなアプリケーションは、任意のＵＩ呼び出しの前にデバイスから情報を送信することはめったにない。同じことが、ファイル操作またはレジストリ修正に関しても当てはまる。
・ストリングおよびリソース解析：
悪意のあるアプリケーションはほぼ常に「パック（ｐａｃｋｅｄ）」されており、したがって大量のクリアテキストストリングを有さない。同様に、（存在する場合に）悪意のあるアプリケーションによって使用されるリソースは、難読化されている可能性が高い。
・サンプルクリーン期間：
すなわち、提供者が知る限り、いつ以来ファイルが問題を生じていないか。
・ローカライゼーション／地域化：
例えば多言語をサポートするマルウェアファイルはほとんどない。
・地理的／ユーザプロファイル分布パターン：
マルウェアとクリーンなファイルは、地理的およびユーザプロファイル分布が大きく異なることがある。
・Ｇｏｏｇｌｅ（商標）ヒット数およびソフトウェアレビューの数：
通常、すべてのクリーンなアプリケーションに関して、Ｇｏｏｇｌｅ（商標）は、ソフトウェアに関してかなり多くのことを「知って」いる。例えば、クリーンな市販のアプリケーションは、複数のソフトウェアレビューを有する可能性が高く、クリーンなフリーウェアアプリケーションは、複数のダウンロードページから入手可能である可能性が高い。
・ダウンロードページの数：
Ｇｏｏｇｌｅ（商標）レビュー参照。
・文書化：
悪意のあるアプリケーションが「文書化」を含む可能性は非常に低い。したがって、ＣＨＭフォーマット文書化の有無に関する単純なチェックが有用とみなすことができる。
【００２２】
ファイルクリーン度の尺度は、そのファイルを感染しているものとして報告するエンドユーザの数を見ることによって決定することもできる。通常は多数のそのような報告は、ファイルがクリーンであり、広く使用されていることを示すことがある。
【００２３】
スコアは、使用される各ヒューリスティック手法ごとに割り振ることができ、それらの結果は、全体のクリーン度スコアを決定するために、場合によっては何らかの統計的な重み付けを使用して組み合わせることができる。
【００２４】
図１は、ソフトウェアファイルでマルウェアを検出するための手順を示す流れ図である。バックエンドスキャンサーバでのファイルの受信（ステップ１００）後、ステップ２００で、サーバは、最大の検出率を保証するために典型的には複数のマルウェアスキャンエンジンを使用して「従来の」マルウェアスキャンを行う。完全に自動化されたシステムを仮定して、ステップ３００でスキャンの結果、マルウェアの疑いがないファイルは、ステップ４００でクリーンと識別される。ステップ３００で疑わしいものと識別されたファイルは、次いで、ステップ５００で、クリーン度スコアを生成するためにさらなるスキャンをかけられる。ステップ６００で、このスコアが、何らかの既定のしきい値と比較される。ファイルに関するスコアがしきい値未満である場合、ステップ７００で、ファイルが悪意のあるものと識別される（さらに、ファイルのシグネチャを生成してクライアント端末に配布するなど、適切な措置が取られる）。他方、クリーン度スコアがしきい値よりも上である場合、ステップ８００で、ファイルが誤警報として識別される。これは、さらなる自動プロセスおよび／または人為的介入をトリガすることがある。
【００２５】
ここで提案した誤警報検出メカニズムは、マルウェア検出アプリケーション提供者のバックエンド操作で実施されることが考えられているが、当然、追加または代替として、その操作をクライアントフロントエンドで実施することができ、すなわち顧客／加入者に提供されるソフトウェア製品でそのメカニズムを実施することができる。この場合、生じ得る誤警報の検出は、以下の措置の１つまたは複数を引き起こすことがある。１）ファイルがクリーンなものとして合格する（メカニズムが十分に信頼されている場合のみ）。２）ユーザに警告が示される。および３）誤警報の詳細が提供者のバックエンドに渡される。措置３）は、バックエンドがファイルに対してさらなる解析を行って、結果がクライアント端末に返されるまで、クライアント端末でファイルを検疫することを含むことがある。
【００２６】
図２は、上述したマルウェア誤警報検出メカニズムを実施するように構成されたコンピュータ１を概略的に示す。この例では、コンピュータは初期マルウェアスキャンも行うが、必ずしもそれを行う必要はないことを理解されたい。コンピュータは、バックエンドサーバ、またはＰＣ、ラップトップ、ＰＤＡ、もしくは移動体電話などのクライアント端末でよい。コンピュータは、１つまたは複数の中央処理装置（ＣＰＵ）および関連のハードウェア２と、ソフトウェア命令、スキャンすべきファイル、および関連のデータを記憶するためのメモリ３とを備える。ソフトウェア命令は、上述した少なくとも２つの主機能、すなわちマルウェアスキャン機能４とクリーン度スキャンおよび取扱い機能５を行う。
【００２７】
本発明の範囲から逸脱することなく、上述した実施形態に様々な変更を加えることができることが当業者には理解されよう。
【図１】
0005738283.tif 000002
【図２】
0005738283.tif 000003