(57)【要約】  本発明の第１の態様によれば、マルウェアについてコンピュータシステムをスキャンする方法が提供される。本方法は、コンピュータシステム上で実行されているアプリケーションがファイルを開こうとしているときを判断するステップと、アプリケーションによって開いているファイルに書き込まれるデータをマルウェアスキャナキューに追加するステップと、キューイングされたファイルデータが潜在的なマルウェアに関係するかどうかを判断するためにキューイングされたファイルデータをスキャンする前に、ファイルが閉じられていることが、アプリケーションに通知されていることを保証するステップとを含む。【選択図】図３
2013526753.tif 000002
【特許請求の範囲】
【請求項１】
マルウェアについてコンピュータシステムをスキャンする方法であって、
前記コンピュータシステム上で実行されているアプリケーションがファイルを開こうとしているときを判断するステップと、
前記アプリケーションによって前記開いているファイルに書き込まれるデータをマルウェアスキャナキューに追加するステップと、
前記キューイングされたファイルデータが潜在的なマルウェアに関係するかどうかを判断するために前記キューイングされたファイルデータをスキャンする前に、前記ファイルが閉じられていることが、前記アプリケーションに通知されていることを保証するステップとを含む、方法。
【請求項２】
前記コンピュータシステム上で実行されているアプリケーションがファイルを開こうとしているときを判断する前記ステップが、新規ファイルを生成するように、または既存ファイルを開くように要求するメッセージをインターセプトするステップを含む、請求項１に記載の方法。
【請求項３】
前記ファイルに割り当てられたハンドルを取得するために、任意の検出されたファイルオープン要求メッセージに対する応答をインターセプトするステップをさらに含む、請求項２に記載の方法。
【請求項４】
前記ファイルオープン要求メッセージが、ＩＲＰ＿ＭＪ＿ＣＲＥＡＴＥ関数コードを含んでいるＩ／Ｏ要求パケット（ＩＲＰ）である、請求項２または３に記載の方法。
【請求項５】
前記アプリケーションによって前記開いているファイルに書き込まれるデータをマルウェアスキャナキューに追加する前記ステップが、
前記アプリケーションによって前記開いているファイルに前記データが書き込まれるときに、前記データをコピーするステップと、
前記コピーされたファイルデータを前記マルウェアスキャナキューに追加するステップとを含む、請求項１〜４のいずれかに記載の方法。
【請求項６】
前記アプリケーションによって前記開いているファイルに前記データが書き込まれるときに、前記データをコピーする前記ステップが、前記ファイルにデータを書き込むように要求するメッセージをインターセプトし、前記要求中で特定された前記データをコピーするステップを含む、請求項５に記載の方法。
【請求項７】
前記データ書込み要求メッセージが、ＩＲＰ＿ＭＪ＿ＣＲＥＡＴＥ関数コードを含んでいるＩ／Ｏ要求パケット（ＩＲＰ）である、請求項６に記載の方法。
【請求項８】
前記アプリケーションが、前記コピーされたファイルデータを前記マルウェアスキャナキューに追加する前に、前記ファイルを閉じ始めたかどうかを判断するステップ
をさらに含む、請求項５〜７のいずれかに記載の方法。
【請求項９】
前記アプリケーションが前記ファイルを閉じ始めたかどうかを判断する前記ステップが、前記ファイルを閉じるように要求するメッセージをインターセプトするステップを含む、請求項８に記載の方法。
【請求項１０】
前記ファイルクローズ要求メッセージが、ＩＲＰ＿ＭＪ＿ＣＬＥＡＮＵＰ関数コードまたはＩＲＰ＿ＭＪ＿ＣＬＯＳＥ関数コードを含んでいるＩ／Ｏ要求パケット（ＩＲＰ）である、請求項９に記載の方法。
【請求項１１】
前記アプリケーションによって前記開いているファイルに書き込まれるデータをマルウェアスキャナキューに追加する前記ステップが、
前記ファイルのロケーションを記録するステップと、
前記記録されたファイルロケーションを前記マルウェアスキャナキューに追加するステップとを含む、請求項１〜１０のいずれかに記載の方法。
【請求項１２】
前記ファイルのロケーションを記録する前記ステップが、
前記ファイルにデータが書き込むように要求するメッセージをインターセプトし、前記要求中で特定された前記ファイルロケーションを記録するステップを含む、請求項１１に記載の方法。
【請求項１３】
前記データ書込み要求メッセージが、ＩＲＰ＿ＭＪ＿ＣＲＥＡＴＥ関数コードを含んでいるＩ／Ｏ要求パケット（ＩＲＰ）である、請求項１２に記載の方法。
【請求項１４】
前記アプリケーションが、前記ファイルロケーションを前記マルウェアスキャナキューに追加する前に、前記ファイルを閉じ始めたかどうかを判断するステップをさらに含む、請求項１１〜１３のいずれかに記載の方法。
【請求項１５】
前記アプリケーションが前記ファイルを閉じ始めたかどうかを判断する前記ステップが、
前記ファイルを閉じるように要求するメッセージをインターセプトするステップ
を含む、請求項１４に記載の方法。
【請求項１６】
前記ファイルクローズ要求メッセージが、ＩＲＰ＿ＭＪ＿ＣＬＥＡＮＵＰ関数コードまたはＩＲＰ＿ＭＪ＿ＣＬＯＳＥ関数コードを含んでいるＩ／Ｏ要求パケット（ＩＲＰ）である、請求項１５に記載の方法。
【請求項１７】
前記アプリケーションが前記ファイルを閉じ始めた後に、前記キュー中のデータ量がしきい値を超えたときには、前記キューイングされたファイルデータのみがスキャンされる、請求項１〜１６のいずれかに記載の方法。
【請求項１８】
前記ファイルデータが前記ファイルに書き込まれた時間を記録するステップをさらに含む、請求項１〜１７のいずれかに記載の方法。
【請求項１９】
前記アプリケーションが前記ファイルを閉じ始めた後に、前記ファイルデータの年齢がしきい値を超えたときには、前記キューイングされたファイルデータのみがスキャンされる、請求項１８に記載の方法。
【請求項２０】
コンピュータプログラムコード手段を備えるコンピュータプログラムであって、前記コンピュータプログラムコード手段が、
前記コンピュータシステム上で実行されているアプリケーションがファイルを開こうとしているときを判断するステップと、
前記アプリケーションによって前記開いているファイルに書き込まれたデータをマルウェアスキャナキューに追加するステップと、
前記キューイングされたファイルデータが潜在的なマルウェアに関係するかどうかを判断するために前記キューイングされたファイルデータをスキャンする前に、前記ファイルが閉じられていることが、前記アプリケーションに通知されていることを保証するステップとを実行するように適合された、コンピュータプログラム。
【請求項２１】
コンピュータ可読媒体上で実施される、請求項２０に記載のコンピュータプログラム。
【請求項２２】
マルウェアについてファイルをスキャンするように構成されたコンピュータシステムであって、前記コンピュータシステムが、
前記コンピュータシステム上で実行されているアプリケーションがファイルを開こうとしているときを判断し、前記アプリケーションによって前記開いているファイルに書き込まれるデータをマルウェアスキャナキューに追加し、前記キューイングされたファイルデータが潜在的なマルウェアに関係するかどうかを判断するために前記キューイングされたファイルデータをスキャンする前に、前記ファイルが閉じられていることが、前記アプリケーションに通知されていることを保証するためのフィルタユニットを備える、コンピュータシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マルウェアスキャニングを実行するための方法および装置に関する。詳細には、本発明は、オンアクセスマルウェアスキャニングを実行するコンピュータシステムの性能を最適化するための方法および装置に関する。
【背景技術】
【０００２】
「マルウェア（ｍａｌｗａｒｅ）」とは、ｍａｌｉｃｉｏｕｓ  ｓｏｆｔｗａｒｅ（悪意のあるソフトウェア）の略であり、所有者の告知に基づく同意なしにコンピュータシステムに潜入する、またはコンピュータシステムに損傷を与えるように設計された任意のソフトウェアを指す用語として使用される。マルウェアは、コンピュータウイルス、ワーム、トロイの木馬、ルートキット、アドウェア、スパイウェアおよび任意の他の悪意のあるソフトウェアまたは望ましくないソフトウェアを含むことができる。
【０００３】
多くのエンドユーザは、マルウェアを検出し、場合によっては除去するために、アンチウィルスソフトウェアを利用している。マルウェアファイルを検出するために、アンチウィルスソフトウェアは、デバイスに存在するすべての他のファイルからマルウェアを特定する何らかの方法を有していなければならない。一般には、かかる方法は、アンチウィルスソフトウェアが、個々のマルウェアプログラムファイルを特徴付ける「シグネチャ」または「フィンガープリント」を含んでいるデータベースを有していることを必要とする。アンチウィルスソフトウェアのサプライヤが新たなマルウェア脅威を特定すると、マルウェア脅威が解析され、そのシグネチャが生成される。それにより、マルウェアは「既知」となり、エンドユーザのローカルのアンチウィルスソフトウェアデータベースに対する更新情報として、マルウェアのシグネチャをエンドユーザに配信することができる。
【０００４】
シグネチャスキャニングにのみ依拠してマルウェアを検出する手法を使用しても、コンピュータは依然として、シグネチャの解析が済んでいない「未知の」または「ゼロデイ」マルウェアプログラム／アプリケーション」に攻撃されやすいままである。この問題に対処するために、ほとんどのアンチウイルスアプリケーションは、マルウェアシグネチャのスキャニングに加えてヒューリスティック解析をさらに採用する。この手法は、任意のマルウェアの挙動をクリーン／正規プログラムの挙動と区別するように意図される一般的なルールの適用を含んでいる。たとえば、ＰＣ上のすべてのプログラム／アプリケーションの挙動を監視することができ、プログラム／アプリケーションが実行可能ファイルにデータを書き込もうとしている場合、アンチウィルスソフトウェアは、疑わしい挙動としてこれをフラグに付けることができる。
【０００５】
アンチウイルスアプリケーションは、一般に、コンピュータシステムのユーザが、マルウェアの存在についてコンピュータシステム上のファイルをスキャンすべきとき判断するオンデマンドスキャニングを行う。オンデマンドスキャニングでは、ユーザは、手動でスキャニングプロセスをアクティブ化することができ、あるいはある特定の状況においてスキャニングプロセスを開始するように構成することができる。たとえば、ユーザは、週ベースで特定のフォルダをスキャンし、月に一度コンピュータシステム上のすべてのファイルをスキャンするようにアンチウィルスプログラムを構成することができる。さらにまた、これらのアンチウィルスプログラムは通常、オンアクセススキャニングを実行することによって、マルウェアに対するリアルタイム保護を提供する。オンアクセススキャニングでは、ファイルにアクセスする限り、バックグラウンドで自動的にファイルをスキャンすることによって、マルウェアの存在についてコンピュータシステムを監視する。
【０００６】
ファイルに対して何らかの動作を実行する（たとえば、ファイルを開く、閉じる、または、何らかのデータをファイルに書き込む、など）ようにアプリケーションが要求するとき、アプリケーションは、入出力（Ｉ／Ｏ）システムにＩ／Ｏ要求を送る。Ｉ／Ｏシステムは、Ｉ／Ｏマネージャによってアクションが協調される複数層ドライバのセットで構成される。
【０００７】
Ｉ／Ｏマネージャは、ドライバ間の通信を管理する。すべてのドライバは、Ｉ／Ｏマネージャが呼び出すことができるサービスの標準セットを供給する。このユニフォームインターフェースにより、Ｉ／Ｏマネージャは、すべてのドライバと同様に通信することができるようになる。ドライバは、Ｉ／Ｏ要求パケット（ＩＲＰ）と呼ばれるデータ構造を使用して互いに通信する。ドライバは互いにＩＲＰを直接的にはパスしない。代わりに、ドライバは、適切な宛先ドライバにＩＲＰを配信するＩ／ＯマネージャにＩＲＰをパスする。したがって、Ｉ／Ｏマネージャは、
・通常はユーザモードアプリケーションから発信されたＩ／Ｏ要求を受け付け、
・Ｉ／Ｏ要求を表すＩＲＰを作成し、
・ＩＲＰを適切なドライバにルーティングし、
・完了するまでＩＲＰを追跡し、
・各Ｉ／Ｏ操作の要求元にステータスを返信する。
【０００８】
Ｉ／Ｏシステムにより、別々のドライバが、Ｉ／Ｏ処理の論理的に別個の各レイヤを実装することができるようになる。たとえば、最下位レイヤ中のドライバは、コンピュータの物理デバイス（これらはデバイスドライバと呼ばれる）を操作する。次いで、他のドライバがドライバスタック中のデバイスドライバの上に階層化される。
【０００９】
したがって一般的には、オンアクセススキャニングは、何らかの形態のフィルタドライバ、またはフィルタマネージャによって実装されるミニフィルタを使用して実装される。フィルタドライバまたはミニフィルタは、ドライバスタックの任意のレイヤに適合することができ、すぐ上のドライバまたはすぐ下のドライバからパスされたＩＲＰをフィルタ処理／インターセプトする。したがって、アンチウィルスプログラムは一般に、フィルタドライバまたはミニフィルタを使用して、アプリケーションによって、またはそれに代わって作成ファイルにアクセスしたいというファイルシステムへの要求をインターセプトする。次いで、アンチウィルスプログラムは、アプリケーションがファイルに書き込もうとしている任意のデータをインターセプトし、そのデータのスキャンを実行する。ただし、アンチウィルスプログラムによるファイルのスキャニングは同期して実行され、それにより、アンチウィルスプログラムがデータをスキャンしている間は、ファイルにデータを書き込む動作を完了することはできない。したがって、スキャンが完了するまで、アプリケーションの実行はブロックされ／進行が妨げられる。
【００１０】
図１に、アンチウィルスプログラムが同期オンアクセススキャニングを実行するときに、コンピュータシステムによって実装される典型的なプロセスを示す。実行されるステップは、以下の通りである。
Ａ１．アプリケーションは、その実行の一部として、ファイルに何らかのデータが書き込まれることを必要とする。したがって、アプリケーションは、新規ファイルまたは既存ファイルが開かれることを必要とする。マイクロソフト（登録商標）Ｗｉｎｄｏｗｓ（登録商標）では、アプリケーションは、新規ファイルを作成するかまたは既存ファイルを開くためにＣｒｅａｔｅＦｉｌｅ関数を呼び出す。ＣｒｅａｔｅＦｉｌｅ関数は、そのファイルに関連付けられたファイルハンドルを返信し、その後、プロセスが終了するか、または、ＣｌｏｓｅＨａｎｄｌｅ関数を使用してファイルハンドルが閉じられる。ＣｒｅａｔｅＦｉｌｅ関数を用いてファイルを開きたいという任意の後続の要求は、ファイルのハンドルが閉じられるまで実行されない。
Ａ２．次に、ＣｒｅａｔｅＦｉｌｅ関数は、ユーザモードアプリケーションに代わって、ＩＲＰ＿ＭＪ＿ＣＲＥＡＴＥ関数コードを有するＩ／Ｏ要求パケット（ＩＲＰ）を生成するＩ／Ｏマネージャを呼び出す。
Ａ３．オンアクセススキャニング機能を提供しているアンチウィルスプログラムは、Ｉ／Ｏマネージャによってファイルシステムに送られたＩＲＰ＿ＭＪ＿ＣＲＥＡＴＥ要求をインターセプトする。この際、アンチウィルスプログラムは、新規ファイルが作成されたとき、または既存ファイルが開かれたときを特定することができる。次いで、フィルタドライバは、ＩＲＰ＿ＭＪ＿ＣＲＥＡＴＥ要求を標的であるコンピュータのファイルシステムに送る。
Ａ４．ファイルシステムは、動作が成功し、ＩＲＰが完了したことを示すステータスとともに、そのファイルのファイルハンドルを含むＩＲＰを返信する。
Ａ５．フィルタドライバは、ファイルシステムによって返信されたファイルハンドルを知るために、応答して返信されたＩＲＰをインターセプトする。
Ａ６．次いで、Ｉ／Ｏマネージャは、ＣｒｅａｔｅＦｉｌｅ関数が成功したことをアプリケーションに通知する。
Ａ７．ファイルが作成されると、および／またはアプリケーションが開かれると、アプリケーションは次いで、そのファイルにデータを書き込み始める。マイクロソフト（登録商標）Ｗｉｎｄｏｗｓ（登録商標）では、アプリケーションは、ファイルハンドルによって指定された、開いているファイルにデータを書き込むために、ＷｒｉｔｅＦｉｌｅ関数コールを生成する。
Ａ８．次に、ＷｒｉｔｅＦｉｌｅ関数は、ユーザモードアプリケーションに代わって、ＩＲＰ＿ＭＪ＿ＷＲＩＴＥ関数コードを有し、書き込まれるべきデータを特定する／指摘するＩＲＰを生成するＩ／Ｏマネージャを呼び出す。
Ａ９．ファイルシステムは、特定されたデータをファイルに書き込み、動作が成功し、ＩＲＰが完了したことを示すステータスとともにＩＲＰを返信する。
Ａ１０．次いで、Ｉ／Ｏマネージャは、ＷｒｉｔｅＦｉｌｅ関数が成功したことをアプリケーションに通知する。
Ａ１１．アプリケーションは、ＷｒｉｔｅＦｉｌｅ関数が成功したという通知を受信すると、次いで、ファイルのための開いているファイルハンドルを閉じるためにＣｌｏｓｅＨａｎｄｌｅ関数を呼び出す。
Ａ１２．次に、ＣｌｏｓｅＨａｎｄｌｅ関数は、ユーザモードアプリケーションに代わって、ＩＲＰ＿ＭＪ＿ＣＬＥＡＮＵＰ関数コードか、またはＩＲＰ＿ＭＪ＿ＣＬＯＳＥ関数コードのいずれかを有するＩＲＰを生成するＩ／Ｏマネージャを呼び出す。
Ａ１３．フィルタドライバは、ファイルハンドルを使用して作成されたＩＲＰ＿ＭＪ＿ＣＬＥＡＮＵＰ要求またはＩＲＰ＿ＭＪ＿ＣＬＯＳＥ要求をインターセプトし、アンチウィルスプログラムのマルウェアスキャナがファイルハンドルによって特定されたファイルをスキャンすることを要求する。
Ａ１４．次いで、マルウェアスキャナはファイルをスキャンする。スキャンの結果が、ファイルがクリーンである（すなわち、ファイルは、何らかの形態のマルウェアに関係するものと特定されない）ことを示す場合、マルウェアスキャナはフィルタドライバに通知する。
Ａ１５．次いで、フィルタドライバは、インターセプトされたＩＲＰ＿ＭＪ＿ＣＬＥＡＮＵＰ要求またはＩＲＰ＿ＭＪ＿ＣＬＯＳＥ要求をファイルシステムに転送する。
Ａ１６．ファイルシステムはファイルを閉じ、動作が成功し、ＩＲＰが完了したことを示すステータスとともにＩＲＰを返信する。
Ａ１７．次いで、Ｉ／Ｏマネージャは、ＣｌｏｓｅＨａｎｄｌｅ関数が成功したことをアプリケーションに通知する。
Ａ１８．ＣｌｏｓｅＨａｎｄｌｅ関数が成功したという通知をアプリケーションが受信したときのみ、次いで、別のファイルにデータを書き込むことによってその実行を再開する。
【００１１】
マルウェアについてファイルが完全にスキャンされるまでファイルハンドルを閉じないようにすると、オンアクセススキャニングのこの同期プロセスは、マルウェアスキャンが完了するまで、アプリケーションが任意の他のファイルにデータを書き込むことをブロックする。言い換えれば、アプリケーションはマルウェアスキャンが完了するまで待たなければならず、その後、ファイルを処理し続けることができる。したがって、アンチウィルスプログラムは、アプリケーションの実行が進まないようにし、タスクを完了することができる速度が遅くなり、したがってコンピュータシステムの性能に影響が及ぼされる。
【発明の概要】
【００１２】
本発明の目的は、コンピュータシステム上で動作しているアプリケーションの実行にもたらされる遅延を最小限に抑え、したがって、コンピュータシステムの性能を最適化する、コンピュータシステム上でオンアクセスマルウェアスキャニングを実行する方法を提供することである。
【００１３】
本発明の第１の態様によれば、マルウェアについてコンピュータシステムをスキャンする方法が提供される。本方法は、コンピュータシステム上で実行されているアプリケーションがファイルを開こうとしているときを判断するステップと、アプリケーションによって開いているファイルに書き込まれるデータをマルウェアスキャナキューに追加するステップと、キューイングされたファイルデータが潜在的なマルウェアに関係するかどうかを判断するためにキューイングされたファイルデータをスキャンする前に、ファイルが閉じられていることが、アプリケーションに通知されていることを保証するステップとを含む。
【００１４】
本発明の実施形態は、マルウェアスキャンが完了するまで、ファイルにアクセスしているアプリケーションの実行をブロックする必要なく、アンチウィルスプログラムがファイルのオンアクセススキャニングを実行できることを規定する。
【００１５】
コンピュータシステム上で実行されているアプリケーションがファイルを開こうとしているときを判断するステップは、新規ファイルを生成するように、または既存ファイルを開くように要求するメッセージをインターセプトするステップを含むことができる。本方法は、ファイルに割り当てられたハンドルを取得するために、任意の検出されたファイルオープン要求メッセージに対する応答をインターセプトするステップをさらに含むことができる。ファイルオープン要求メッセージは、ＩＲＰ＿ＭＪ＿ＣＲＥＡＴＥ関数コードを含んでいるＩ／Ｏ要求パケット（ＩＲＰ）とすることができる。
【００１６】
アプリケーションによって開いているファイルに書き込まれるデータをマルウェアスキャナキューに追加するステップは、アプリケーションによって開いているファイルにデータが書き込まれるときに、データをコピーするステップと、コピーされたファイルデータをマルウェアスキャナキューに追加するステップと含むことができる。このデータは、ファイルにデータを書き込むように要求するメッセージをインターセプトし、要求中で特定されたデータをコピーすることによってコピーすることができる。データ書込み要求メッセージは、ＩＲＰ＿ＭＪ＿ＣＲＥＡＴＥ関数コードを含んでいるＩ／Ｏ要求パケット（ＩＲＰ）であり、コンピュータシステムのキャッシュメモリにそのデータをコピーすることができる。
【００１７】
本方法は、アプリケーションが、コピーされたファイルデータをマルウェアスキャナキューに追加する前に、ファイルを閉じ始めたかどうかを判断するステップをさらに含むことができる。アプリケーションがファイルを閉じ始めたかどうかを判断するステップは、ファイルを閉じるように要求するメッセージをインターセプトするステップを含むことができる。ファイルクローズ要求メッセージは、ＩＲＰ＿ＭＪ＿ＣＬＥＡＮＵＰ関数コードまたはＩＲＰ＿ＭＪ＿ＣＬＯＳＥ関数コードを含んでいるＩ／Ｏ要求パケット（ＩＲＰ）とすることができる。
【００１８】
アプリケーションによって開いているファイルに書き込まれるデータをマルウェアスキャナキューに追加するステップは、ファイルのロケーションを記録するステップと、記録されたファイルロケーションを前記マルウェアスキャナキューに追加するステップとを含むことができる。次いで、キューイングされたファイルデータをスキャンするステップは、記録されたファイルロケーションからのファイルデータをスキャンするステップを備えることができる。
【００１９】
ファイルのロケーションを記録するステップは、ファイルにデータが書き込むように要求するメッセージをインターセプトし、要求中で特定されたファイルロケーションを記録するステップを含むことができる。ファイルロケーションは、コンピュータシステムのキャッシュメモリに記録することができる。データ書込み要求メッセージは、ＩＲＰ＿ＭＪ＿ＣＲＥＡＴＥ関数コードを含んでいるＩ／Ｏ要求パケット（ＩＲＰ）とすることができる。
【００２０】
本方法は、アプリケーションが、ファイルロケーションをマルウェアスキャナキューに追加する前に、ファイルを閉じ始めたかどうかを判断するステップをさらに含むことができる。アプリケーションがファイルを閉じ始めたかどうかを判断するステップは、ファイルを閉じるように要求するメッセージをインターセプトするステップを含むことができる。ファイルクローズ要求メッセージは、ＩＲＰ＿ＭＪ＿ＣＬＥＡＮＵＰ関数コードまたはＩＲＰ＿ＭＪ＿ＣＬＯＳＥ関数コードを含んでいるＩ／Ｏ要求パケット（ＩＲＰ）とすることができる。
【００２１】
アプリケーションがファイルを閉じ始めた後に、キュー中のデータ量がしきい値を超えたときに、キューイングされたファイルデータのみをスキャンすることができる。代替的には、アプリケーションがファイルを閉じ始めた後、ファイルデータの年齢がしきい値を超えたときには、キューイングされたファイルデータのみをスキャンすることができる。本方法は、アプリケーションによって開かれているファイルに書き込まれたデータをマルウェアスキャナキューに追加したときに、ファイルデータがファイルに書き込まれた時間を記録するステップをさらに備えることができる。
【００２２】
メッセージのインターセプトは、フィルタユニットを使用して実装することができる。
キューイングされたファイルデータのスキャニングは、マルウェアスキャナを使用して実装することができる。フィルタユニットおよびマルウェアスキャナは、アンチウィルスプログラムの構成要素とすることができる。
【００２３】
本発明の第２の態様によれば、コンピュータプログラムコード手段を備えるコンピュータプログラムであって、コンピュータプログラムコード手段が、コンピュータシステム上で実行されているアプリケーションがファイルを開こうとしているときを判断するステップと、アプリケーションによって開いているファイルに書き込まれたデータをマルウェアスキャナキューに追加するステップと、キューイングされたファイルデータが潜在的なマルウェアに関係するかどうかを判断するためにキューイングされたファイルデータをスキャンする前に、ファイルが閉じられていることが、アプリケーションに通知されていることを保証するステップとを実行するように適合された、コンピュータプログラムが提供される。
【００２４】
本発明の第３の態様によれば、コンピュータ可読媒体上で実施される、上記で概説したコンピュータプログラムが提供される。
【００２５】
本発明の第４の態様によれば、マルウェアについてファイルをスキャンするように構成されたコンピュータシステムであって、コンピュータシステムが、コンピュータシステム上で実行されているアプリケーションがファイルを開こうとしているときを判断し、アプリケーションによって開いているファイルに書き込まれるデータをマルウェアスキャナキューに追加し、キューイングされたファイルデータが潜在的なマルウェアに関係するかどうかを判断するためにキューイングされたファイルデータをスキャンする前に、ファイルが閉じられていることが、アプリケーションに通知されていることを保証するためのフィルタユニットを備える、コンピュータシステムが提供される。コンピュータシステムは、キューイングされたファイルデータをスキャンするためのマルウェアスキャナをさらに備える。
【図面の簡単な説明】
【００２６】
【図１】オンアクセスマルウェアスキャニングを実行するプロセスを示す流れ図である。
【図２】本発明の一実施形態によるコンピュータシステムを概略的に示す図である。
【図３】本発明の一実施形態によるオンアクセスマルウェアスキャニングを実行するプロセスを示す流れ図である。
【発明を実施するための形態】
【００２７】
上述した問題を少なくとも部分的に克服するために、本明細書では、動作が実行されている間にアプリケーションの実行がブロックされない非同期オンアクセスマルウェアスキャニングを実行することによって、コンピュータシステムの性能を向上させることを提案する。この非同期スキャニングは、アプリケーションによってファイルに書き込まれている任意のデータのコピーを作成し、そのファイルデータのコピーをメモリキャッシュに格納することによって達成される。その場合、マルウェアスキャンが実行された後まで待つ必要なく、このデータをファイルに書き込み続けることができる。次いで、適切なときにマルウェアについてキャッシュ中のデータをスキャンすることができる。マルウェアスキャニング動作が実行されている間、アプリケーションの実行がブロックされないと規定することによって、アンチウィルスプログラムは、オンアクセスマルウェアスキャニングによってもたらされる遅延を最小限に抑え、それにより、コンピュータシステムの性能が最適化される。
【００２８】
図２に、本発明の一実施形態によるコンピュータシステム１を概略的に示す。コンピュータシステム１は、コンピュータハードウェアとソフトウェアとの組合せとして実装することができる。コンピュータシステム１は、メモリ２と、キャッシュ３と、プロセッサ４と、トランシーバ５とを備える。メモリ２は、コンピュータシステム１によって必要とされるファイルのすべてを格納している。メモリ２に格納されたファイルは、プロセッサ３によって実装される様々なプログラム／実行可能ファイル、ならびに任意のデータファイル６を含む。メモリ２に格納され、プロセッサ４によって実装されるプログラム／実行可能ファイルは、各々がアンチウィルスユニット９のサブユニットであり得るフィルタユニット７およびマルウェアスキャナユニット８、ならびにファイルシステム１０および任意の他のプログラム／アプリケーション１１を含む。メモリ２に格納されたデータファイル６は、アプリケーションデータファイル、マルウェア定義データファイル、ヒューリスティック解析ルールを含んでいるファイル、ホワイトリスト、ブラックリストなどを含むことができる。キャッシュ３は、マルウェアスキャナユニット８によってスキャンされるべきデータを格納するための一時的なストレージユニットを提供する。トランシーバ５は、インターネットまたはＬＡＮなどのネットワーク１３を介して、中央アンチウィルスサーバ１２と通信するために使用される。
【００２９】
中央アンチウィルスサーバ１２は一般に、コンピュータ１上で動作するアンチウィルスユニット８のプロバイダによって動作される。代替的には、中央アンチウィルスサーバ１２は、ネットワーク管理者またはスーパバイザのサーバとすることができ、コンピュータ１は、スーパバイザが受け持つネットワークの一部である。中央アンチウィルスサーバ１２は、コンピュータハードウェアとソフトウェアとの組合せとして実装することができる。中央アンチウィルスサーバ１２は、メモリ１４と、プロセッサ１５と、トランシーバ１６と、データベース１７とを備える。メモリ１４は、プロセッサ１５によって実装される様々なプログラム／実行可能ファイルを格納する。トランシーバ１６は、ネットワーク１３を介してコンピュータシステム１と通信するために使用される。データベース１７は、最新のマルウェア定義データ、ヒューリスティック解析ルール、ホワイトリスト、ブラックリストなどを格納する。
【００３０】
図３は、本発明の一実施形態によるオンアクセスマルウェアスキャニングを実行するプロセスをさらに示す流れ図である。実行されるステップは、以下の通りである。
Ｂ１．アプリケーションは、その実行の一部として、新規ファイルまたは既存ファイルにデータが書き込まれることを必要とする。新規ファイルを作成する、または既存ファイルを開くために、アプリケーションはＣｒｅａｔｅＦｉｌｅ関数を呼び出す。
Ｂ２．次に、ＣｒｅａｔｅＦｉｌｅ関数は、ユーザモードアプリケーションに代わって、ＩＲＰ＿ＭＪ＿ＣＲＥＡＴＥ関数コードを有するＩＲＰを生成するＩ／Ｏマネージャを呼び出す。
Ｂ３．アンチウィルスプログラムに関連付けられたフィルタユニットは、ファイルシステムに対して作成されたＩＲＰ＿ＭＪ＿ＣＲＥＡＴＥ要求をインターセプトし、それにより、新規ファイルが作成された、または既存ファイルが開かれたことを判断する。次いで、フィルタユニットは、ＩＲＰ＿ＭＪ＿ＣＲＥＡＴＥ要求をコンピュータのファイルシステムに送る。
Ｂ４．ファイルシステムは、動作が成功し、ＩＲＰが完了したことを示すステータスとともにそのファイルのファイルハンドルを含むＩＲＰを返信する。
Ｂ５．フィルタユニットは、アプリケーションに応答を送る前にファイルシステムによって返信されたファイルハンドルを知るために、応答して返信されたＩＲＰをインターセプトする。
Ｂ６．次いで、Ｉ／Ｏマネージャは、ＣｒｅａｔｅＦｉｌｅ関数が成功したことをアプリケーションに通知する。
Ｂ７．ファイルが作成されると、および／またはファイルが開かれると、アプリケーションは次いで、そのファイルにデータを書き込み始め、ファイルハンドルを使用してＷｒｉｔｅＦｉｌｅ関数を呼び出す。
Ｂ８．次に、ＷｒｉｔｅＦｉｌｅ関数は、ユーザモードアプリケーションに代わって、ＩＲＰ＿ＭＪ＿ＷＲＩＴＥ関数コードを有し、書き込まれるべきデータを特定する／指摘するＩＲＰを生成するＩ／Ｏマネージャを呼び出す。
Ｂ９．フィルタユニットは、ファイルハンドルを使用して作成されたＩＲＰ＿ＭＪ＿ＷＲＩＴＥ要求をインターセプトし、ファイルに書き込まれるべきデータをキャッシュにコピーする。次いで、フィルタユニットは、指定されたファイルにデータを書き込むことができるように、インターセプトされた要求をファイルシステムに転送する。
Ｂ１０．ファイルシステムは、特定されたデータをそのファイルに書き込み、動作が成功し、ＩＲＰが完了したことを示すステータスとともにＩＲＰを返信する。
Ｂ１１．次いで、Ｉ／Ｏマネージャは、ＷｒｉｔｅＦｉｌｅ関数が成功したことをアプリケーションに通知する。
Ｂ１２．アプリケーションは、ＷｒｉｔｅＦｉｌｅ関数が成功したという通知を受信すると、次いで、ファイルのための開いているファイルハンドルを閉じるためにＣｌｏｓｅＨａｎｄｌｅ関数を呼び出す。
Ｂ１３．次に、ＣｌｏｓｅＨａｎｄｌｅ関数は、ユーザモードアプリケーションに代わって、ＩＲＰ＿ＭＪ＿ＣＬＥＡＮＵＰ関数コードか、またはＩＲＰ＿ＭＪ＿ＣＬＯＳＥ関数コードのいずれかを有するＩＲＰを生成するＩ／Ｏマネージャを呼び出す。
Ｂ１４．フィルタユニットは、ファイルハンドルを使用して作成されたＩＲＰ＿ＭＪ＿ＣＬＥＡＮＵＰ要求またはＩＲＰ＿ＭＪ＿ＣＬＯＳＥ要求をインターセプトし、マルウェアについてスキャンされる予定のデータのキューに、キャッシュされたファイルデータを追加する。マルウェアスキャナキューは、キャッシュされ、スキャンの準備ができているファイルデータを含む。ファイルデータをキューに追加するために、フィルタドライバは、非同期処理のためのファイルハンドルを登録する。次いで、フィルタユニットは、インターセプトされたＩＲＰ＿ＭＪ＿ＣＬＥＡＮＵＰ要求またはＩＲＰ＿ＭＪ＿ＣＬＯＳＥ要求をファイルシステムに転送する。
Ｂ１５．ファイルシステムはファイルを閉じ、動作が成功し、ＩＲＰが完了したことを示すステータスとともにＩＲＰを返信する。
Ｂ１６．次いで、Ｉ／Ｏマネージャは、ＣｌｏｓｅＨａｎｄｌｅ関数が成功したことをアプリケーションに通知する。
Ｂ１７．アプリケーションは、ＣｌｏｓｅＨａｎｄｌｅ関数が成功したという通知を受信すると、次いで、別のファイルにデータを書き込むことまたは他のアクションを実行することによって、その実行を再開することができる。別のファイルまたは同じファイルにデータを書き込むことによってアプリケーションが継続する場合、ステップＢ１〜Ｂ１６が繰り返される。
Ｂ１８．キュー中のデータ量があらかじめ定義された最大しきい値に達すると、あるいは、キュー中のデータの最も古い項目があらかじめ定義された最大年齢を達すると、フィルタユニットは、現在マルウェアスキャナキューに存在するキャッシュに格納されたファイルデータのスキャンをマルウェアスキャナが実行することを要求する。
Ｂ１９．次いで、マルウェアスキャナは、キャッシュに格納されているキューイングされたファイルデータをスキャンする。
Ｂ２０．キュー中のデータ量があらかじめ定義された最大しきい値に達していない場合にも、キュー中のデータの最も古い項目があらかじめ定義された最大年齢に達していない場合にも、フィルタは、アプリケーションによってファイルに書き込まれたデータを格納し続け、このファイルデータをマルウェアスキャナキューに追加する。
【００３１】
代替的に、ファイルにデータを書き込むプロセスに着目し、ファイルデータをキャッシュにコピーするのではなく、フィルタユニットは、ファイルが開いている間にアプリケーションから／に送られる様々な要求および応答をインターセプトすることによって、ファイルハンドルおよびファイルへのパスなど、ファイルに関する情報を単にキャプチャするように構成することができる。次いで、ファイルが閉じられ、ファイルハンドルが解放され、ＩＲＰ＿ＭＪ＿ＣＬＥＡＮＵＰ要求またはＩＲＰ＿ＭＪ＿ＣＬＯＳＥ要求が完了すると、次いで、ファイルパスは、フィルタユニットによるマルウェアスキャナキューにマルウェアスキャナを追加することができ、それにより、格納されたロケーションから実際のファイルデータをスキャンすることができる。
【００３２】
さらなる代替例として、フィルタユニットがＩＲＰ＿ＭＪ＿ＣＬＥＡＮＵＰ要求を受信したときには、フィルタユニットは、ＩＲＰをファイルシステムにパスしないが、ＳＴＡＴＵＳ＿ＰＥＮＤＩＮＧとしてＩＲＰをマークし、ＩＲＰへのポインタを格納し、現在の処理を完了するように構成することができる。次いで、アプリケーションには、ＣｌｏｓｅＨａｎｄｌｅ関数が完了し、したがって、その実行を継続できることが通知される。ただし、ファイルシステムが、ＩＲＰ＿ＭＪ＿ＣＬＥＡＮＵＰファイルを受信していないときには、ファイルハンドルに関連付けられたファイルオブジェクトは、ファイルシステムは、ファイルからデータを読み取ることができるように有効なままである。その後、マルウェアスキャナは、非同期スキャンを実行するためにファイルデータが必要なときには、そのデータの要求をフィルタユニットに送信する。次いで、フィルタユニットは、ＩＲＰ＿ＭＪ＿ＣＬＥＡＮＵＰからのパラメータを使用してＩＲＰ＿ＭＪ＿ＲＥＡＤ要求を生成する。マルウェアスキャンが完了すると、完了されるべきファイルシステムに元のＩＲＰ＿ＭＪ＿ＣＬＥＡＮＵＰが送られ、ファイルハンドルが閉じられる。
【００３３】
フィルタユニットは、ファイルにファイルデータが書き込まれた時間の表示を記録しなければならない。次いで、フィルタユニットはその時間情報を使用して、マルウェアスキャナキュー内の最も古いファイルデータの年齢があらかじめ定義された時間限度を超えているかどうか、したがって、キューイングされたファイルデータをマルウェアスキャナによってスキャンしなければならないときを判断することができる。たとえば、この時間限度は、１秒〜１０秒の間で変動し得る。さらに、ファイルのパスは、スキャニングプロシージャ中にマルウェアスキャナによって使用され得るので（たとえば、ファイルのロケーションは、ファイルがマルウェアであるかどうか、マルウェアではないかどうかに関する表示であり得るので）、フィルタユニットはファイルのパスを記録し得る。さらにまた、もしファイルが潜在的なマルウェアに関係するとマルウェアスキャナによって特定されたときには、アンチウィルスプログラムは、任意の駆除動作および／または検疫動作を実行するために、ファイルロケーション情報を利用することができる。
【００３４】
任意選択で、アンチウィルスプログラムは、フィルタドライバによってキューに格納することができる最大データ量を制限するように構成することができる。キュー内のデータ量がこの最大限度に達すると、フィルタユニットは、キューイングされたファイルデータをスキャンするように要求する要求をマルウェアスキャナに送るように構成される。さらに、単一のファイルに書き込まれたデータ量がキャッシュおよび／またはキューの最大サイズを超えている場合、次いで、フィルタユニットは、マルウェアスキャナが新しいデータの同期スキャンを実行することを要求とするように構成することができる。次いで、スキャンが完了するまでアプリケーションの実行が進まないようにしている間に新しいデータがファイルに書き込まれるので、マルウェアスキャナは、そのデータをスキャンすることができる。
【００３５】
また、フィルタユニットは、アプリケーションがマルウェアスキャナキューに追加された、特定のファイルに現在書き込まれているデータを変更、上書きまたは削除しようとしているかどうかを判断するように構成される。次いで、フィルタユニットは、適切であると見なされる任意のアクションをとるように構成される。たとえば、既存ファイルに現在書き込まれているデータがマルウェアスキャナによってスキャンされるのを待ちながら、アプリケーションが既存ファイルに新しいデータを書き込もうとしているとフィルタユニットが判断した場合、フィルタユニットは、キューから（必要な場合には、キャッシュから）現在のファイルデータを除去し、マルウェアスキャナが新しいデータの同期スキャンを実行することを要求するように構成することができる。次いで、マルウェアスキャナは、スキャンが完了するまでアプリケーションの実行が進まないようにしている間に、新しいデータがファイルに書き込まれるので新しいデータをスキャンすることになる。さらに、ファイルに現在書き込まれているデータがスキャンされるのを待っている間に、アプリケーションがそのファイルを削除しようとしているとフィルタユニットが判断した場合、フィルタユニットは、キューから（必要な場合には、キャッシュから）そのファイルのデータを削除するように構成することができる。
【００３６】
代替的には、フィルタユニットがキャッシュへのファイルデータのコピーを行い、アプリケーションがそのデータを修正、上書きまたは削除しようとしているとフィルタユニットが判断した場合、フィルタユニットは、以下のいずれかを行うように構成することができる。
・キャッシュとキューの両方からの現在のファイルデータを保持し、新たに書き込まれたファイルデータをキャッシュおよびキューに適宜追加する。マルウェアスキャナは次いで、直近のファイルデータおよび先行データをスキャンする。
・キャッシュとキューの両方からの現在のファイルデータを除去し、新たに書き込まれたファイルデータをキャッシュおよびキューに適宜追加する。次いで、マルウェアスキャナは、直近のファイルデータのみをスキャンする。
【００３７】
アプリケーションがデータファイルを書き込み続け、それにより、マルウェアスキャナが先行するマルウェアスキャニングキュー中のデータのスキャニングを完了する前に、マルウェアスキャニングキュー中のデータ量がしきい値最大サイズを達した場合、フィルタユニットは、以下のいずれかを行うように構成することができる。
・マルウェアスキャナが先行するマルウェアスキャニングキュー中のデータのスキャニングを完了するまで、アプリケーションの任意のさらなる実行をブロックし、それにより、マルウェアスキャナキューをスキャンし、より多くのファイルデータを受け入れるためにマルウェアスキャナキューを解放するように、現在マルウェアスキャニングキュー中にあるファイルデータをマルウェアスキャナにパスすることができる。
・より多くのファイルデータを受け入れるためにマルウェアスキャナキュー内に十分な空間ができるまで、任意の連続するファイルデータの同期マルウェアスキャニングを要求する。
【００３８】
上述した方法は、マルウェアスキャンが完了するまで、ファイルにアクセスしているアプリケーションが進行しないようにブロックする必要なく、アンチウィルスプログラムがファイルのオンアクセススキャニングを実行できることを規定する。したがって、この方法により、ファイルのオンアクセスマルウェアスキャニングを実行するように構成されたコンピュータシステムの性能が最適化される。さらに、キャッシュ内にファイルデータを格納するとき、上述した方法は、コンピュータハードディスクなどのコンピュータ永続メモリからアクセスするよりも速くファイルデータにアクセスできることを規定する。さらに、上記で説明される非同期マルウェアスキャニングを実行する方法は、同期マルウェアスキャニングも非同期マルウェアスキャニングも、フィルタユニットによりファイルにデータが書き込まれないようになり、その後ファイルハンドルが閉じられないようにするので、従来の同期マルウェアスキャニング方法と比較して、コンピュータシステムのセキュリティにいかなる追加のリスクをもたらさない。さらに、ファイルにデータを書き込むアプリケーションの動作と並行してファイルデータのスキャニングを行うことを可能にすることによって、オンアクセスマルウェアスキャニングを実装するときに、さらにコンピュータシステムの性能を改善するために、上述された方法は、現代のコンピュータシステムのマルチプロセッサ機能、マルチタスク機能、マルチスレッディング機能、およびハイパースレッディング機能を活用することができる（Ｉｎｔｅｌ（登録商標）ハイパースレッディングテクノロジー、テクニカルユーザーガイド（２００３年１月）参照）。
【００３９】
当業者には、本発明の範囲から逸脱することなく、上述した実施形態に様々な変更を加え得ることが理解されよう。
【図１】
2013526753.tif 000003
【図２】
2013526753.tif 000004
【図３】
2013526753.tif 000005
【手続補正書】
【提出日】平成24年8月8日(2012.8.8)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
コンピュータシステムを操作する方法であって、
前記コンピュータシステム上で実行されているアプリケーションがファイルを開こうとしているときを判断するステップと、
前記アプリケーションによって前記開いているファイルに書き込まれるデータをマルウェアスキャナキューに追加するステップとを含み、
前記アプリケーションが前記ファイルを閉じ始めた後に、前記キュー中のデータ量がしきい値を超えたときに、又は、前記キュー中のデータの年齢がしきい値を超えたときに、
前記マルウェアスキャナキューのデータのみがスキャンされる、方法。
【請求項２】
前記コンピュータシステム上で実行されているアプリケーションがファイルを開こうとしているときを判断する前記ステップが、新規ファイルを生成するように、または既存ファイルを開くように要求するメッセージをインターセプトするステップを含む、請求項１に記載の方法。
【請求項３】
前記ファイルに割り当てられたハンドルを取得するために、任意の検出されたファイルオープン要求メッセージに対する応答をインターセプトするステップをさらに含む、請求項２に記載の方法。
【請求項４】
前記ファイルオープン要求メッセージが、ＩＲＰ＿ＭＪ＿ＣＲＥＡＴＥ関数コードを含んでいるＩ／Ｏ要求パケット（ＩＲＰ）である、請求項２または３に記載の方法。
【請求項５】
前記アプリケーションによって前記開いているファイルに書き込まれるデータをマルウェアスキャナキューに追加する前記ステップが、
前記アプリケーションによって前記開いているファイルに前記データが書き込まれるときに、前記データをコピーするステップと、
前記コピーされたファイルデータを前記マルウェアスキャナキューに追加するステップとを含む、請求項１〜４のいずれかに記載の方法。
【請求項６】
前記アプリケーションによって前記開いているファイルに前記データが書き込まれるときに、前記データをコピーする前記ステップが、前記ファイルにデータを書き込むように要求するメッセージをインターセプトし、前記要求中で特定された前記データをコピーするステップを含む、請求項５に記載の方法。
【請求項７】
前記データ書込み要求メッセージが、ＩＲＰ＿ＭＪ＿ＣＲＥＡＴＥ関数コードを含んでいるＩ／Ｏ要求パケット（ＩＲＰ）である、請求項６に記載の方法。
【請求項８】
前記アプリケーションが、前記コピーされたファイルデータを前記マルウェアスキャナキューに追加する前に、前記ファイルを閉じ始めたかどうかを判断するステップ
をさらに含む、請求項５〜７のいずれかに記載の方法。
【請求項９】
前記アプリケーションが前記ファイルを閉じ始めたかどうかを判断する前記ステップが、前記ファイルを閉じるように要求するメッセージをインターセプトするステップを含む、請求項８に記載の方法。
【請求項１０】
前記ファイルクローズ要求メッセージが、ＩＲＰ＿ＭＪ＿ＣＬＥＡＮＵＰ関数コードまたはＩＲＰ＿ＭＪ＿ＣＬＯＳＥ関数コードを含んでいるＩ／Ｏ要求パケット（ＩＲＰ）である、請求項９に記載の方法。
【請求項１１】
前記アプリケーションによって前記開いているファイルに書き込まれるデータをマルウェアスキャナキューに追加する前記ステップが、
前記ファイルのロケーションを記録するステップと、
前記記録されたファイルロケーションを前記マルウェアスキャナキューに追加するステップとを含む、請求項１〜４のいずれかに記載の方法。
【請求項１２】
前記ファイルのロケーションを記録する前記ステップが、
前記ファイルにデータが書き込むように要求するメッセージをインターセプトし、前記要求中で特定された前記ファイルロケーションを記録するステップを含む、請求項１１に記載の方法。
【請求項１３】
前記データ書込み要求メッセージが、ＩＲＰ＿ＭＪ＿ＣＲＥＡＴＥ関数コードを含んでいるＩ／Ｏ要求パケット（ＩＲＰ）である、請求項１２に記載の方法。
【請求項１４】
前記アプリケーションが、前記ファイルロケーションを前記マルウェアスキャナキューに追加する前に、前記ファイルを閉じ始めたかどうかを判断するステップをさらに含む、請求項１１〜１３のいずれかに記載の方法。
【請求項１５】
前記アプリケーションが前記ファイルを閉じ始めたかどうかを判断する前記ステップが、
前記ファイルを閉じるように要求するメッセージをインターセプトするステップ
を含む、請求項１４に記載の方法。
【請求項１６】
前記ファイルクローズ要求メッセージが、ＩＲＰ＿ＭＪ＿ＣＬＥＡＮＵＰ関数コードまたはＩＲＰ＿ＭＪ＿ＣＬＯＳＥ関数コードを含んでいるＩ／Ｏ要求パケット（ＩＲＰ）である、請求項１５に記載の方法。
【請求項１７】
前記ファイルデータが前記ファイルに書き込まれた時間を記録するステップをさらに含む、請求項１〜１６のいずれかに記載の方法。
【請求項１８】
コンピュータプログラムコード手段を備えるコンピュータプログラムであって、前記コンピュータプログラムコード手段が、
前記コンピュータシステム上で実行されているアプリケーションがファイルを開こうとしているときを判断するステップと、
前記アプリケーションによって前記開いているファイルに書き込まれたデータをマルウェアスキャナキューに追加するステップと、
前記アプリケーションが前記ファイルを閉じ始めた後に、前記キュー中のデータ量がしきい値を超えたときに、又は、前記キュー中のデータの年齢がしきい値を超えたときに、
前記マルウェアスキャナのデータをスキャンするステップとを実行するように適合された、コンピュータプログラム。
【請求項１９】
コンピュータ可読媒体上で実施される、請求項１８に記載のコンピュータプログラム。
【請求項２０】
マルウェアについてのデータをスキャンするためのマルウェアスキャナと、
前記コンピュータシステム上で実行されているアプリケーションがファイルを開こうとしているときを判断し、前記アプリケーションによって前記開いているファイルに書き込まれるデータをマルウェアスキャナキューに追加し、前記アプリケーションが前記ファイルを閉じ始めた後に、前記キュー中のデータ量がしきい値を超えたときに、又は、前記キュー中のデータの年齢がしきい値を超えたときに、前記マルウェアスキャナが前記マルウェアスキャナキューのデータをスキャンするように要求するためのフィルタユニットとを備える、コンピュータシステム。
【国際調査報告】
2013526753.tif 000006
2013526753.tif 000007