JP4828199B2 - アンチウィルスソフトウェアアプリケーションの知識基盤を統合するシステムおよび方法 - Google Patents

アンチウィルスソフトウェアアプリケーションの知識基盤を統合するシステムおよび方法 Download PDF

Info

Publication number
JP4828199B2
JP4828199B2 JP2005295239A JP2005295239A JP4828199B2 JP 4828199 B2 JP4828199 B2 JP 4828199B2 JP 2005295239 A JP2005295239 A JP 2005295239A JP 2005295239 A JP2005295239 A JP 2005295239A JP 4828199 B2 JP4828199 B2 JP 4828199B2
Authority
JP
Japan
Prior art keywords
file
application
request
malware
software applications
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2005295239A
Other languages
English (en)
Other versions
JP2006134307A (ja
Inventor
エム.マリネスク エイドリアン
フランシス トーマス アニール
エー.ゲーベル デイビッド
コスティア ミハイ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US10/984,611 external-priority patent/US7765410B2/en
Priority claimed from US10/984,207 external-priority patent/US7478237B2/en
Priority claimed from US10/984,615 external-priority patent/US7765400B2/en
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of JP2006134307A publication Critical patent/JP2006134307A/ja
Application granted granted Critical
Publication of JP4828199B2 publication Critical patent/JP4828199B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/566Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Virology (AREA)
  • Stored Programmes (AREA)

Description

本発明は、コンピューティングデバイスに関し、より詳細には、マルウェア(コンピュータウィルス、ワーム、スパイウェアなどの破壊工作ソフト、悪意のこもったソフトウェア)からのコンピューティングデバイスの保護に関する。
ますます多くのコンピュータとその他のコンピューティングデバイスがインターネットなどの各種ネットワークを通じて相互に接続されているのに従い、特にネットワークあるいは情報のストリームを通じて伝達される侵入や攻撃に対するコンピュータセキュリティの重要性が増している。当業者には認識されるように、そうした攻撃は、無論これらに限らないが、コンピュータウィルス、コンピュータワーム、システムコンポーネントの置き換え、サービス開始拒否(denial of service attacks)、あるいは正当なシステム機能の悪用/濫用などを含む様々な形で行われ、これらはすべて、1つまたは複数のコンピュータシステムの脆弱性を不正な目的に利用する。当業者は、こうした各種のコンピュータ攻撃は、技術的に互いに別個のものであると理解されると思われるが、本発明では、説明を簡潔にするために、インターネットなどのコンピュータネットワークで拡がる悪意のあるすべてのコンピュータプログラムを、以降ではまとめてコンピュータマルウェア、あるいは単にマルウェア(malware)と称する。
コンピュータシステムがコンピュータマルウェアによって攻撃される、あるいはマルウェアに「感染」した時、マイナスの結果は様々な形をとり、それらには、システムデバイスを使用不可にする;、ファームウェア、アプリケーション、またはデータファイルを消去または破損させる;潜在的に機密性のあるデータをネットワーク上の別の場所に転送する;コンピュータシステムをシャットダウンさせる;あるいはコンピュータシステムをクラッシュさせる、などが含まれる。コンピュータマルウェアのすべてではなくとも多くのさらに別の悪質な側面は、感染したコンピュータシステムを利用して他のシステムを感染させることである。
コンピュータマルウェア、具体的にはコンピュータウィルスおよびワームに対する従来の防御の1つは、市販のアンチウィルスソフトウェアアプリケーションである。概説すると、アンチウィルスソフトウェアアプリケーションは、データをスキャンして、コンピュータマルウェアに関連する識別可能なパターンを探す。コンピュータマルウェアに関連するパターンを検出すると、アンチウィルスソフトウェアアプリケーションは、そのマルウェアを隔離するか、マルウェアを削除することにより、対応することができる。不都合なことに、アンチウィルスソフトウェアアプリケーションは、通例、既知の識別可能なコンピュータマルウェアにだけ一番うまく機能する。多くの場合、これは、データ中のパターンを、マルウェアの「シグネチャー」(電子メールなどのメッセージの末尾に付加される、発信者の氏名や連絡先などを記述した行:署名ともいう)と称されるものと照合することによって行われる。
通例、既存のアンチウィルスソフトウェアアプリケーションによって行われる大半の動作は、オペレーティングシステムが「ユーザモード」の時に行われる。当業者などには知られるように、アンチウィルスソフトウェアアプリケーションのようなコンピュータプログラムは、「カーネルモード」か「ユーザモード」のいずれかで実行することができる。「カーネルモード」とは、オペレーティングシステムの最も特権を与えられ、保護されるレベルで行われる処理を指す。カーネルモードプログラムは、常に保護されたメモリに常駐し、基本的なオペレーティングシステムサービスを提供する。「ユーザモード」とは、カーネルモードデータへのアクセスを利用できないアプリケーション層で行われる処理を指す。以前は、カーネルモードから利用することができる情報および機能へのアクセスを必要とするアンチウィルスソフトウェアアプリケーションのベンダ(メーカ又は販売会社)は、オペレーティングシステムとのインターフェースをとるカーネルモードフィルタを構築する必要があった。不都合なことに、各アンチウィルスソフトウェアのベンダは、コンピューティングデバイスで行われることが予定される、入出力(以降では「I/O」と称する)などのカーネルモードから利用することができる機能にアクセスするための独自のフィルタを開発する必要があった。さらに、各アンチウィルスソフトウェアアプリケーションが、基本的に同じタスクを行うための対応するカーネルモードフィルタを有する場合、コンピューティングデバイスには、すべてカーネルにロードされたいくつかの異なるフィルタで、重複したコードが実行されるという動作上の負担がかかる。既存技術のさらに別の不都合点は、ユーザモードインターフェースに整合性と画一性がなく、エラーが生じやすいことである。したがって、アンチウィルスソフトウェアのベンダがカーネルモードフィルタを実装する必要なしに、コンピューティングデバイスで行われることが予定されるI/Oをアンチウィルスソフトウェアアプリケーションが利用することができるメカニズム(仕組み)が必要とされる。
数多くのソフトウェアのベンダが、アンチウィルスソフトウェアアプリケーションを販売し、増え続けるマルウェアのシグネチャーのデータベースを保持・整備している。実際、アンチウィルスソフトウェアのベンダの最も重要な資産の1つは、既知のマルウェアから集められたシグネチャーの知識基盤(知識ベースともいう)である。しかし、市販のアンチウィルスソフトウェアアプリケーションは、互いに互換性があるとは限らない。例えば、場合によっては、2つの異なるアンチウィルスソフトウェアアプリケーションがコンピューティングデバイスにインストールされると、データのコンフリクト(衝突)が生じるということが知られている。その結果、ユーザは、コンピューティングデバイスに複数のアンチウィルスソフトウェアアプリケーションをインストールし、それぞれのアプリケーションの知識基盤の利益を享受することができない。そのため、同じコンピューティングデバイスにインストールされた複数のアンチウィルスソフトウェアアプリケーションの知識基盤を統合する機構が必要とされる。
本発明は、複数のアンチウィルスソフトウェアアプリケーションの知識基盤を統合してコンピューティングデバイスに関連付けられたデータがマルウェアであるかどうかを判定する機構を提供することにより、上記で明らかにした必要性に対処する。本発明の一態様は、アンチウィルスソフトウェアアプリケーションが、共通情報モデル(common information model)を通じて、I/O要求に関係しているデータにアクセスできるようにする方法である。共通情報モデルは、一般にはカーネルモードフィルタから利用することができる機能を提供することにより、アンチウィルスソフトウェアのベンダがカーネルモードフィルタを作成する必要をなくする。そして、共通情報モデルは、アンチウィルスソフトウェアアプリケーションに、コンピューティングデバイスと関連つけられているデータをスキャンさせて、データがマルウェアであるかどうかを判定させることができる。マルウェアが検出されると、そのマルウェアを読み出す、記憶する、または実行する試みは阻止される。
本発明の別の態様は、コンピューティングデバイスに関連付けられたファイルが以前にマルウェアと識別されているかどうか、または以前に安全であることが確かめられているかどうかを判定する方法である。本発明のこの態様は、1つまたは複数のアンチウィルスソフトウェアアプリケーションがファイルをスキャンする際に、ファイルに変数を関連付けることを含む。この変数は、ファイルがマルウェアであるかどうかを示し、後に再呼び出しされることができる。例えば、この変数は、ユーザがファイルを実行することを試みる時に再呼び出しされることができる。変数が、ファイルがマルウェアであると示す場合は、ユーザによるファイルを実行する試みは失敗する。逆に、変数が、ファイルがマルウェアでないことを示す場合、ファイルを実行する試みは成功し、アンチウィルスソフトウェアアプリケーションがファイルの重複したスキャンを行うことは必要とされない。
本発明の別の態様は、アンチウィルスソフトウェアアプリケーションがファイルデータにアクセスすることを可能にする非常に効率的な方法である。本発明のこの態様は、1つまたは複数のアンチウィルスソフトウェアアプリケーションによってスキャンを行うために使用されるファイルマッピングセクションオブジェクトを作成することを含む。そして、アンチウィルスアプリケーションとのインターフェースをとるユーザモードアプリケーションに、ファイルマッピングセクションオブジェクトにアクセスするために使用することができるデータが与えられる。最後に、アンチウィルスソフトウェアアプリケーションによってアクセスされることができるファイルのビューが生成される。本発明のこの態様は、アンチウィルスソフトウェアアプリケーションに基本的なファイルシステム操作のセットを提供し、それによって、スキャンが行われる速度が向上する。
本発明のさらに別の実施形態では、複数のアンチウィルスソフトウェアの知識基盤を統合するコンピューティングデバイスが提供される。このコンピューティングデバイスは、セキュリティサービスアプリケーション、1つまたは複数のアンチウィルスソフトウェアアプリケーション、および、スキャンキャッシュ(scan cache)とデータマッピングモジュールを含む汎用セキュリティフィルタを含む。汎用セキュリティフィルタとセキュリティサービスアプリケーションは、共同で機能して、アンチウィルスソフトウェアアプリケーションに共通情報モデルを提供する。共通情報モデルにより、アンチウィルスソフトウェアアプリケーションは、コンピューティングデバイスで行われることが予定されるI/O要求にアクセスすることができる。I/O要求がインターセプト(傍受)されると、アンチウィルスソフトウェアアプリケーションは、共通情報モデルと対話してスキャン(ウイルス・チェック)をスケジュールすることができる。スキャンが行われる時、セキュリティサービスアプリケーションは、コンピューティングデバイスにインストールされた異なるアンチウィルスソフトウェアアプリケーションを認識しており、データのコンフリクトを防ぐことができる。
さらに別の実施形態では、コンテンツ、すなわち本明細書に記載される方法に従ってコンピューティングデバイスを動作させるプログラムとともにコンピュータ可読媒体が提供される。
前述の本発明の態様とそれに伴う利点・効果の多くは、添付図面と併せて以下の詳細な説明を参照することによってそれらがより理解されると、より容易に理解されよう。
本発明によれば、複数のアンチウィルスソフトウェアアプリケーションの知識基盤(knowledge base)を統合する(aggregate)、システム、メソッド、およびコンピュータ可読媒体が提供される。アンチウィルスソフトウェアアプリケーションなどのユーザモードアプリケーションには、共通情報モデルを通じてI/O要求などのファイルシステム操作へのアクセス権が与えられ、それにより、アンチウィルスソフトウェアのベンダがカーネルモードフィルタを作成する必要がなくなる。I/O要求がインターセプト(傍受)されると、本発明は、コンピューティングデバイスにインストールされた各アンチウィルスソフトウェアアプリケーションに、スキャンを行わせてその要求に関係しているデータがマルウェアであるかどうかを判定させることができる。本発明は、アンチウィルスソフトウェアアプリケーションのコンテクストで説明するが、当業者および他の者は、本発明は他の分野のソフトウェア開発にも適用できることを認識されよう。したがって、ここに記載される本発明の実施形態は、本質的に例示的なものであり、制限的なものとは解釈すべきでない。
図1は、従来技術によって構成されたコンピューティングデバイス100のブロック図である。コンピューティングデバイス100は、これらに限定しないが、パーソナルコンピューティングデバイス、サーバベースのコンピューティングデバイス、携帯情報端末、携帯電話、何らかの種のメモリを有する他の電子デバイスなどを含む各種のデバイスでよい。図示を容易にするため、また本発明の理解には重要でないため、図1には、キーボード、マウス、プリンタ、あるいは他のI/Oデバイス、ディスプレイなど、多くのコンピューティングデバイスが有する一般的なコンポーネントは示さない。
図1に示すコンピューティングデバイス100は、ハードウェアプラットフォーム102、オペレーティングシステム104、およびアプリケーションプラットフォーム106を含む。図示を簡単にするため、また本発明の理解に重要でないため、図1には、中央演算処理装置、メモリ、ハードドライブなど、ハードウェアプラットフォーム102に通例含まれるコンポーネントは図示しない。また、同じ理由から、図1には、オペレーティングシステム104およびアプリケーションプラットフォーム106のコンポーネントも図示しない。
図1に示すように、コンピューティングデバイス100のコンポーネントは、最下層のハードウェアプラットフォーム102および最上層のアプリケーションプラットフォーム106とともに階層化される。図1の階層化は、本発明は、階層環境で実施されることが好ましいことを表す。コンピューティングデバイス100に含まれる各層は、低い層ではシステムに依存する。より具体的には、アプリケーションプラットフォーム106は、オペレーティングシステム104の上で実行され、ハードウェアプラットフォーム102のコンポーネントに直接アクセスすることはできない。代わりに、アプリケーションプラットフォーム106によるハードウェアプラットフォーム102へのアクセスは、オペレーティングシステム104によって管理される。当業者および他の者に知られるように、オペレーティングシステム104は、アプリケーションプラットフォーム106が利用することができるサービスを規定するアプリケーションプログラミングインターフェース(「API」)をアプリケーションプラットフォーム106に提供する。
図2は、I/O要求に関係しているデータへのアクセス権をアンチウィルスソフトウェアアプリケーションに与える従来技術の手法を説明するのに適したブロック図である。当業者および他の者に知られるように、コンピュータユーザは、ハードドライブ、フロッピー(登録商標)ディスク、ランダムアクセスメモリ、コンパクトディスク(「CD」)などのメモリデバイスにデータを読み書きする必要性を常に有する。例えば、大半のソフトウェアアプリケーションによって提供される一般的な操作の1つは、メモリデバイスに記憶されたファイルを開き、そのファイルの内容をコンピュータディスプレイに表示することである。しかし、ファイルを開くと、そのファイルに関連付けられたマルウェアを実行させる可能性があるので、アンチウィルスソフトウェアアプリケーションは、通例、開く動作が満たされる前に、ファイルのスキャンまたは他の分析を行う。マルウェアが検出された場合、スキャンを行ったアンチウィルスソフトウェアアプリケーションは、例えばファイルを開く動作を失敗させることにより、マルウェアの実行を阻止することができる。また、アンチウィルスソフトウェアアプリケーションは、マルウェアを除去する、またはマルウェアを「隔離所」(quarantine)に入れるオプションをコンピュータユーザに提示する場合もある。
当業者および他の者に知られるように、コンピューティングデバイスで行われるI/O要求は、I/Oシステムと称されるオペレーティングシステム104(図1)のコンポーネントによって扱われる。マルウェアからコンピューティングデバイスを保護するために、I/O要求が受け取られると、アンチウィルスソフトウェアアプリケーションにその事が通知される。次いで図2を参照して、I/O要求に関係しているデータへのアクセスをアンチウィルスソフトウェアアプリケーションに提供する周知のプロセスを説明する。図2に示すコンピューティングデバイス100は、I/Oシステム200、ローカルまたはリモートのI/Oデバイス202、ユーザアプリケーション204、アンチウィルスフィルタ206〜210、および、ユーザモードまたはカーネルモードに常駐するアンチウィルスソフトウェアアプリケーション/ドライバ212〜216を含む。I/Oを行う要求がユーザアプリケーション204などのユーザアプリケーションから生成されると、I/Oシステム200がその要求を受け取る。図2に示すように、ユーザアプリケーションはユーザモードで動作し、カーネルモードのI/Oシステム200によって満たされるI/O要求を生成する。要求が満たされる前に、I/O要求が満たされる予定であることがアンチウィルスフィルタ206、208、および210に通知されることができる。それに応答して、アンチウィルスフィルタ206、208、および210はそれぞれ、I/O要求に関係しているデータをスキャンすべきことを、各自のアンチウィルスソフトウェアアプリケーション/ドライバ212、214、および216に指示することができる。I/O要求に関係しているデータがマルウェアである場合、アンチウィルスソフトウェアアプリケーション/ドライバは、I/O要求が満たされることを阻止するように構成されることができる。逆に、I/O要求がマルウェアに関連しない場合、I/Oシステム200は、I/O要求を満たさせる。例えば、I/Oシステム200は、一部のシステムではハードドライブ、フロッピー(登録商標)ディスク、フラッシュメモリ、テープドライブ、コンパクトディスク(「CD」)などのローカルのハードウェアデバイスであるI/Oデバイス202にデータを書き込ませることができる。あるいは、I/Oデバイス202は、ネットワーク接続を通じてコンピューティングデバイス100に接続されたリモートのハードウェアデバイスであってもよい。
不都合なことに、図2に示す、I/O要求に関係しているデータへのアクセス権をアンチウィルスソフトウェアアプリケーションに与える従来技術の手法には、アンチウィルスソフトウェアのベンダが各自カーネルモードフィルタを開発することが必要となるという不利点がある。図2に示すように、アンチウィルスフィルタ206、208、210は、特定のアンチウィルスソフトウェアアプリケーションとの関連でしか使用されることができない。さらに、各アンチウィルスソフトウェアアプリケーションが、基本的に同じタスクを行うカーネルモードフィルタを維持するので、コンピュータシステムには、重複したコードが同時にメモリにロードされるという動作上の負担がかかる。
不都合なことに、図2に示す、I/O要求に関係しているデータへのアクセス権をアンチウィルスソフトウェアアプリケーションに与える従来技術の手法には、コンピューティングデバイスからのマルウェアの除去を妨げる可能性があるという不都合点もある。2つ以上のアンチウィルスソフトウェアアプリケーションが同じコンピューティングデバイスにインストールされると、データのコンフリクトが生じることが分かっている。例えば、2つのアンチウィルスソフトウェアアプリケーションが、コンピューティングデバイスに記憶されたあるファイルがマルウェアに感染していると判断する可能性がある。第1のアンチウィルスソフトウェアアプリケーションは、ファイルデータを削除することにより、ファイルの「感染を駆除」することを試みる可能性がある。しかし、第1のアンチウィルスソフトウェアアプリケーションがファイルデータを削除する試みを行うと、通例は第2のアンチウィルスソフトウェアアプリケーションにそのことが通知される。この場合、第2のアンチウィルスソフトウェアアプリケーションは、感染したファイルへのアクセスを阻止するように構成されている場合がある。また、第1のアンチウィルスソフトウェアアプリケーションは、第2のアンチウィルスソフトウェアアプリケーションなどの他のアプリケーションが、感染したファイルにアクセスすることを阻止するように構成されている場合がある。明らかに、この状況では、マルウェアは、第1のアンチウィルスソフトウェアアプリケーションによっても、第2のアンチウィルスソフトウェアアプリケーションによっても削除されることができない。
図3は、本発明による、I/O要求に関係しているデータへのアクセスをアンチウィルスソフトウェアアプリケーションに提供する手法を説明するのに適したブロック図である。以下に、本発明が実施されることが可能な適切なコンピューティングデバイス300の1つの例示的な概要を提供する。図3に示すコンピューティングデバイス300は、上記で図2を参照して説明した同じ名前のコンポーネントと同じように動作することが可能ないくつかのコンポーネントを含む。コンピューティングデバイス300は、I/Oシステム302、I/Oデバイス304、ユーザアプリケーション306、アンチウィルスソフトウェアアプリケーション308、310、312、セキュリティサービスアプリケーション314、および、スキャンキャッシュ318とデータマッピングモジュール320を含む汎用セキュリティフィルタ316を含む。本発明によって実施される、ソフトウェアによって実施されるルーチンは、セキュリティサービスアプリケーション314と、スキャンキャッシュ318およびデータマッピングモジュール320を含む汎用セキュリティフィルタ316とに含まれる。図3に示すように、セキュリティサービスアプリケーション314はユーザモードで実行され、汎用セキュリティフィルタ316はカーネルモードで実行される。おおまかに説明すると、本発明によって実施されるルーチンは、アンチウィルスソフトウェアアプリケーション308、310、312などのユーザモードアプリケーションが、I/Oシステム302によって満たされることが予定されるI/O要求に関係しているデータにアクセスする方法を提供する。図3に示すように、アンチウィルスソフトウェアアプリケーション308、310、312は、カーネルモードフィルタを使用せずに機能することができる。また、コンピューティングデバイス300を使用して、複数のアンチウィルスソフトウェアアプリケーションの知識基盤を統合して、データをスキャンし、データがマルウェアに感染しているかどうかを判定することができる。図3およびそれに付随するテキストではアンチウィルスソフトウェアアプリケーションを使用して本発明の実施形態を説明するが、本発明のソフトウェアによって実施されるルーチンは、他のタイプのアプリケーションとの関連で使用することができる。同様に、本発明のソフトウェアによって実施されるルーチンは、アプリケーションの代わりに、特定の機能を行うサービスと通信することができる。したがって、図3に示すコンピューティングデバイス300のコンポーネントは、限定的なものではなく、例示的なものと解釈すべきである。
上述したように、本発明のソフトウェアによって実施されるルーチンの一部は、汎用セキュリティフィルタ316に置かれる。本発明の一実施形態についての一般的な説明では、汎用セキュリティフィルタ316は、ユーザアプリケーション306などのユーザアプリケーションから行われるI/O要求を傍受する。それに応答して、汎用セキュリティフィルタ316は、コンピューティングデバイス300内へのマルウェアの拡散あるいは実行を阻止するルーチンを行う。より具体的には、汎用セキュリティフィルタ316は、セキュリティサービスアプリケーション314(下記で説明する)と通信して、アンチウィルスソフトウェアアプリケーションに、要求に関係しているファイルを分析させ、そのファイルがマルウェアを含んでいるかどうかを判定させる。マルウェアが検出された場合は、汎用セキュリティフィルタ316は、I/Oシステム302と通信し、要求が満たされることを阻止するように働く。
図3に示すように、汎用セキュリティフィルタ316は、本発明がI/Oシステム302からインターセプトされたI/O要求を分析する速度を向上させるスキャンキャッシュ318を含む。例えば、当業者および他の者に知られるように、ユーザアプリケーションは、同じファイルを対象とする連続したI/O要求を頻繁に行う。この場合、本発明は、最初のI/O要求を傍受し、アンチウィルスソフトウェアアプリケーション308、310、312にそのファイルをスキャンさせ、ファイルがマルウェアに感染していないことを確認させる。ファイルが感染していない場合、続くI/O要求は、ファイルのスキャンをトリガしない。代わりに、スキャンキャッシュ318が、ファイルがマルウェアに感染しているかどうかに関するファイルのステータス(状態)を追跡して、不必要なスキャンが行われないようにする。ファイルは、(1)マルウェアであることが判明、(2)安全であることが判明、(3)不明、に分類される。ファイルのスキャンは多くのリソース(資源)を使うプロセスなので、不要なスキャンが行われないようにすることによって本発明の速度が向上する。下記でさらに詳しく説明するように、スキャンキャッシュ318は、マルウェアの拡散または実行を阻止する目的のシステムに加えて、ファイルの状態を追跡する他のシステムと併せて使用することができる。例えば、ソフトウェアアプリケーションの中には、ユーザがデータを補助ハードウェアデバイスに「バックアップ」あるいは保存できるものがある。その場合、ソフトウェアアプリケーションは、補助ハードウェアデバイスがそのファイルの最新のバージョンを有するかどうかに関して、コンピューティングデバイス上の各ファイルの状態を追跡する。スキャンキャッシュ318をそのタイプのシステムと併せて使用して、コンピューティングデバイス上のファイルの状態を追跡することができる。
汎用セキュリティフィルタ316は、アンチウィルスソフトウェアアプリケーション308、310、312がファイルをスキャンする確実性と速度を向上させるデータマッピングモジュール320を含む。通例、最近のアンチウィルスソフトウェアアプリケーションがファイルを開く動作をインターセプトすると、ファイルデータを読み出すために使用される第2のファイルハンドル(file handle)が開かれる。しかし、当業者および他の者に知られるように、ファイルは、複数のアプリケーションが同時にファイルにアクセスできないように「ロック」されている場合がある。その場合、別のアプリケーションがファイルを「ロック」していると、アンチウィルスソフトウェアアプリケーションは、データを読み出すことができない場合がある。さらに、新しいハンドルを開くと、別のアプリケーションがファイルを開けなくなる可能性があり、その結果従来技術ではアプリケーションが失敗していた。しかし、データマッピングモジュール320は、第2のファイルハンドルを作成することを必要とせずに、アンチウィルスソフトウェアアプリケーション308、310、312などのアプリケーションに、ファイルデータへのアクセスを与える。データマッピングモジュール320は、代わりに、ファイルデータをそこから読み出すことができる低レベルのオブジェクトへのアクセスをアプリケーションに与える。低レベルのオブジェクトへのアクセスは、別のアプリケーションがファイルを「ロック」しているかどうかに関係なく利用することができる。また、第2のファイルハンドルを作成するには、相当の計算リソースが必要となる。そのため、アンチウィルスソフトウェアアプリケーションが低レベルのオブジェクトを使用してファイルデータを読み出せるようにすることにより、アンチウィルスソフトウェアアプリケーションがマルウェアのスキャンを行うことができる速度が上がる。下記でさらに詳しく説明するように、データマッピングモジュール320は、ファイルデータを読み出す他のシステムと併せて使用することができる。例えば、一部のソフトウェアアプリケーションは、ファイルがハードウェアデバイスに記憶される前にファイルを暗号化し、ハードウェアデバイスから取出しが行われる時にファイルを復号する。その場合、データマッピングモジュール320を使用して、暗号化アプリケーションがファイルのデータにアクセスする効率的な方式を提供することができる。
図3に示すように、コンピューティングデバイス300は、諸機能の中でも特にコンピューティングデバイス300にインストールされたアンチウィルスソフトウェアアプリケーションとのインターフェースとして機能するセキュリティサービスアプリケーション314を含む。セキュリティサービスアプリケーション314は、アンチウィルスソフトウェアアプリケーションが、走査プロファイル(scanning profile)を登録し、作成することを可能にする。走査プロファイルは、アンチウィルスアプリケーションが「興味深い」と認識するI/O要求を識別する。例えば、走査プロファイルは、I/O要求が、マルウェアの感染に関して「不明」の状態を有するファイルを対象とする時に、アンチウィルスソフトウェアアプリケーションがスキャン(走査)を行うことを示すことができる。あるいは、走査プロファイルは、特定タイプのI/O要求が生成された時にアンチウィルスソフトウェアアプリケーションがスキャンを行うように規定されることもできる。いずれにせよ、アンチウィルスソフトウェアアプリケーションは、セキュリティサービスアプリケーション314に登録し、スキャンが行われる状況を規定するプロファイルを作成する。セキュリティサービスアプリケーション314は、登録された異なるアンチウィルスソフトウェアアプリケーション間のスキャンをスケジュールする役割を担う。
本発明の実施は、図3に示す例示的コンピューティングデバイス300に限定されない。例えば、図3とそれに伴うテキストは、ユーザモードで実行されるアンチウィルスソフトウェアアプリケーション308、310、312について述べる。しかし、本発明のソフトウェアによって実施されるルーチンは、カーネルモードで実行されるアンチウィルスソフトウェアフィルタと通信するように構成してもよい。また、同図には、コンピューティングデバイス300は、ユーザアプリケーション306からI/O要求を受け取るものとして示している。しかし、当業者および他の者に知られるように、I/O要求は、リモートコンピューティングデバイス間の通信に使用されるプロトコルなど他の供給源から受け取られる場合もある。さらに、I/Oデバイス304は、同図では、コンピューティングデバイス300のコンポーネントであるハードウェアデバイスとなっている。しかし、I/Oデバイス304は、ネットワーク接続を通じてコンピューティングデバイス300に接続されたリモートのハードウェアデバイスであってもよい。あるいは、I/O要求は、ハードウェアデバイスを対象としない場合もある。代わりに、I/O要求は、これらに限らないが、パイプ、通信リソース、ディスクデバイス、コンソール(操作卓)、メールスロット(郵便物投入口)など、ファイル作成コマンドを使用してアクセスされることが可能なオブジェクトを対象とする場合がある。したがって、図3に示すコンピューティングデバイス300のコンポーネントは、限定的ではなく、例示的なものと解釈されたい。
図4は、複数のアンチウィルスソフトウェアアプリケーションの知識基盤を統合するための例示的一メソッド400の流れ図である。要約すると、メソッド400は、共通情報モデルを通じてアンチウィルスソフトウェアアプリケーションをI/O要求に接触させる。I/O要求が生成されると、メソッド400は、コンピューティングデバイスにインストールされた1つまたは複数のアンチウィルスソフトウェアアプリケーションによるスキャンが必要であるかどうかを判定する。スキャンが必要である場合、メソッド400は、生成されたI/O要求のタイプに「関与した」(interested)アンチウィルスソフトウェアアプリケーションを識別する。共通情報モデルを通じて、1つまたは複数のアンチウィルスソフトウェアアプリケーションがスキャンを行って、そのI/O要求にマルウェアが関係しているかどうかを判定することができる。引き続き、図1〜図3とそれに伴う説明を参照して、図4に示す複数のアンチウィルスソフトウェアアプリケーションの知識基盤を統合する例示的メソッド400を説明する。
判定ブロック402で、メソッド400は、アイドルの状態を保ち、通例はI/Oシステム302(図3)などのオペレーティングシステムのカーネルモードコンポーネントによって受け取られるI/O要求を待つ。当業者には理解されるように、I/O要求は、各種のメカニズムを通じて生成されることができる。例えば、ワードプロセッシングプログラムのユーザが、ドロップダウンメニューまたは他のグラフィック方式の入力システムから「オープンファイル」(ファイルを開く)コマンドを発行させることができる。「オープンファイル」コマンドを満たすために、ワードプロセッシングプログラムは、メモリデバイスからファイルデータを得ることを要求するAPIコール(API呼び出し)を発行することができる。別の例として、ウェブブラウザプログラムのユーザが、リモートコンピュータからファイルをダウンロードするためのコマンドを発行する場合がある。このコマンドを満たすために、ウェブブラウザプログラムは、I/Oデバイス304(図3)などのハードウェアデバイスにデータストリームを記憶するためのAPIコールを発行することができる。I/O要求が生成されると、I/Oシステム302は、ハードウェアデバイスと対話してその要求を満たす。しかし、メソッド400は、I/Oシステム302によって満たされる前にI/O要求をインターセプト(傍受)して、マルウェアの実行および/または拡散を未然に防ぐ。
判定ブロック404で、メソッド400は、ブロック402で受け取られたI/O要求が、新しいファイルを作成させるコマンドであるかどうかを判定する。ブロック402でインターセプトされる可能性のあるI/O要求のタイプの1つは、新しいファイルを作成させるものである。このタイプの要求は、コンピューティングデバイスをマルウェアにさらすことはない。下記のブロック422で説明するように、新しいファイルを作成させるコマンドは、メソッド400によって受け取られる他のI/O要求とは異なる形で扱われる。新しいファイルを作成させるコマンドは、最近のオペレーティングシステムで利用することができる多種のコマンドの1つを使用して生成されることができる。例えば、Windows(登録商標)オペレーティングシステムの場合には、「CreateFile」APIなど、新しいファイルを作成する専用のAPIを使用して新しいファイルが作成されることができる。あるいは、ある状況では、open、overwrite、supersedeのAPIなど他のAPIを使用して新しいファイルが作成されることができる。ブロック404で受け取られた要求が新しいファイルを作成させるコマンドである場合には、メソッド400は、下記のブロック422に進む。これに対して、要求が新しいファイルを作成させるコマンドでない場合には、メソッド400はブロック406に進む。
判定ブロック406で、メソッド400は、ブロック402でインターセプトされたI/O要求が、コンピューティングデバイスをマルウェアにさらす可能性を持つかどうかを判定する。当業者および他の者に知られるように、I/O要求の中には、コンピューティングデバイスをマルウェアにさらす可能性がないものがある。例えば、I/O要求が「オープンファイル」コマンドであり、指定されたファイルにデータがまったくない場合には、そのコマンドの要求に応じても、コンピューティングデバイスがマルウェアにさらされることはない。同様に、ブロック402で受け取られるI/O要求は、ディレクトリを開く、または閉じるコマンドである場合もある。その場合、I/O要求は、コンピューティングデバイスをマルウェアにさらすことはない。当業者および他の者には、この他のタイプのI/O要求が、コンピューティングデバイスをマルウェアにさらす可能性を持たないことが理解されよう。したがって、上記の例は、限定的なものでなく、例示的なものと解釈されたい。ブロック402で受け取られた要求がコンピューティングデバイスをマルウェアにさらす可能性を持たない場合には、メソッド400は、下記のブロック426に進む。これに対し、ブロック402で受け取られた要求がコンピューティングデバイスをマルウェアにさらす可能性を持つ場合には、メソッド400はブロック408に進む。
ブロック408で、メソッド400は、スキャンキャッシュ318などのデータベースにクエリーし、ブロック402で受け取られたI/O要求の対象となるファイルの状態を識別する。下記でさらに詳しく説明するように、1つまたは複数のアンチウィルスソフトウェアアプリケーションがマルウェアに関してファイルをスキャンする際には、ファイルに変数が関連付けられる。この変数は、(1)マルウェアであることが判明、(2)正常であることが判明、(3)不明、を含む3つの可能な状態の1つを表す。
例示の目的で、単なる例として、例示的スキャンキャッシュ318の内容を図5に示す。ここで図示するように、スキャンキャッシュ318は、3つの列からなり、各列は、複数の項目を含む。これら列は、ファイルインデックス502、第1ビット504、および第2ビット506として特定される。ファイルインデックス502のフィールドは、ファイルを一意に識別するために使用できる値を保持する。当業者および他の者に知られるように、メモリデバイスは、通例、ボリュームと称される論理単位に区分される。各ボリュームは、そのボリューム上のファイルについての情報が記憶される中心の位置を有する。例えば、Windows(登録商標)NTファイルシステム(「NTFS」)は、ボリュームにある各ファイルについてのレコードを保持するマスタファイルテーブル(「MFT」)を維持する。ファイルが作成されると、そのファイルの新しいレコードがMFTに記憶され、ファイル属性を記憶するために所定量の空間が割り当てられる。例えば、各ファイルには、MFTにおけるそのファイルの場所を表す一意のファイルインデックスが割り当てられる。下記でさらに詳しく説明するように、本発明により1つまたは複数のアンチウィルスソフトウェアアプリケーションによってファイルがスキャンされる際には、そのファイルに関連付けられたMFTのインデックス値が、スキャンキャッシュ318のファイルインデックス502フィールドに入力される。第1ビット504および第2ビット506フィールドは、それぞれ、ファイルの状態を総合的に識別する値を格納する。例えば、第1ビット504フィールドと第2ビット506フィールドはどちらも、「0」または「1」のいずれかの値を保持する。本発明の一実施形態では、第1ビット504フィールドが「1」を含み、第2ビット506フィールドが「0」を含む場合、ファイルの状態は「マルウェアであることが判明」になる。あるいは、第1ビット504フィールドが「0」を含み、第2ビット506フィールドが「1」を含む場合、ファイルの状態は、「正常であることが判明」になる。また、第1ビット504フィールドが「0」を含み、第2ビット506フィールドが「0」を含む場合は、ファイルの状態は「不明」になる。図5には特定の属性を有するスキャンキャッシュ318を示すが、当業者は、スキャンキャッシュ318は、ここに挙げられるすべての属性より多い属性でも、少ない属性でも動作することが可能であることを理解されよう。
ファイルの状態を追跡する従来の手法は、スキャンキャッシュ318と比べると、エラーが生じやすく、多くのリソースを必要とする。例えば、ファイルがマルウェアに感染したかどうかを追跡する周知の技術の1つは、ハッシュテーブルを用いる。I/O要求がインターセプトされると、文字列によるファイル名をハッシュキーとして使用してハッシュテーブルが検索される。しかし、ファイル名は、常にファイルを一意に識別するとは限らない。例えば、ユーザがファイルを参照する「リンク」を作成した場合、そのファイルは、2つ以上のファイル名に関連付けられる場合がある。その場合、ハッシュテーブルは、同じファイルに対して複数のエントリを含む場合がある。その結果、ファイルが2つ以上のファイル名で参照される場合には、アンチウィルスソフトウェアアプリケーションは、不必要なスキャンを行う可能性がある。上記のように、スキャンキャッシュ318は、MFTから得られる一意のファイルインデックスを使用してファイルを識別するため、重複したスキャンが行われない。また、ハッシュキーを計算する、あるいは文字列によるファイル名を検索することは、ビットマップにビットをクエリーすることと比べると、リソースを多く必要とする。例えば、ハッシュテーブルは、通例、メモリを非常に多く消費するので、最終的には新しいファイルを収容するためにハッシュテーブルのエントリが除去される。しかし、スキャンキャッシュ318のエントリは、必要とするメモリが少量なので、新しいエントリに対応するためにエントリが除去されることがない。
上記のように、スキャンキャッシュ318は、1つまたは複数のファイルの状態を追跡する他のシステムと併せて使用することができる。単なる例として、スキャンキャッシュ318は、(1)補助ハードウェアデバイスへの記憶に関してのファイルの状態を追跡する「バックアップ」アプリケーション、(2)ファイルが暗号化されているかどうかを追跡する暗号化/解読アプリケーション、(3)ファイルが不適切な内容を含むかどうかを追跡する内容フィルタリングアプリケーション、と併せて実施することができる。当業者および他の者に知られるように、追加的なデータを記憶するためのビットをスキャンキャッシュ318に加えて、そのようなタイプのシステムの要求に対応することができる。
図4に戻り、判定ブロック410で、メソッド400は、ファイルに関連付けられた状態が「正常であることが判明」であるかどうか、すなわちマルウェアへの感染がないかどうかを判定する。本発明の例示的実施形態では、ファイルが「正常であることが判明」であるかどうかに関する判定は、スキャンキャッシュ318に保持されるビット情報など、データベースで保持されるデータを分析することによって行われる。データベースにクエリーし、ファイルインデックスに関連付けられた情報を分析することは、当技術分野で一般に知られる技術を使用して行うことができるので、本発明で用いられるその技術の説明は、ここでは提供しない。ファイルが「正常であることが判明」と識別された場合、メソッド400は、下記のブロック426に進む。これに対して、ファイルが「正常であることが判明」以外の状態に関連付けられている場合、メソッド400は、ブロック412に進む。
判定ブロック412で、メソッド400は、ファイルに関連付けられた状態が「マルウェアであることが判明」であるかどうかを判定する。ファイルが「正常であることが判明」と識別される場合と同様に、ファイルが「マルウェアであることが判明」であるかどうかの判定は、スキャンキャッシュ318に保持されているビット情報など、データベースに保持されているデータを分析することによって行われる。ファイルの状態が「マルウェアであることが判明」と識別された場合には、メソッド400は、下記のブロック428に進む。これに対して、ファイルが不明の状態に関連付けられている場合には、メソッド400はブロック414に進む。
ブロック414で、メソッド400は、ユーザモードで実行されるアンチウィルスソフトウェアアプリケーションにファイルデータへのアクセス権を与える。ブロック414に達した場合、ファイルに関連付けられた状態は「不明」であり、メソッド400は、1つまたは複数のアンチウィルスソフトウェアアプリケーションに、ブロック402でインターセプトされたI/O要求の対象となるファイルをスキャンさせる。本発明は、ファイルデータにアクセスする効率的な方式をアンチウィルスソフトウェアアプリケーションに提供し、そのためマルウェアのスキャンを迅速に行うことができる。以下で、図6を参照して、アンチウィルスソフトウェアアプリケーションにファイルデータへのアクセス権を与える方法の一実施形態を後述する。
ブロック416で、メソッド400は、ブロック402で受け取られたI/O要求の対象となるファイルのスキャンを行うアンチウィルスソフトウェアアプリケーションを選択する。先に図3を参照して述べたように、本発明の態様では、アンチウィルスソフトウェアアプリケーションが走査プロファイルを登録し、作成することができる。走査プロファイルは、アンチウィルスソフトウェアアプリケーションにとって「関与している」(interesting)I/O要求を規定する(define)。メソッド400は、コンピューティングデバイスにインストールされたアンチウィルスソフトウェアアプリケーションの走査プロファイルを調べ、インターセプトされたI/O要求に「関与している」アンチウィルスソフトウェアアプリケーションを順次選択する。
ブロック418で、メソッド400は、選択されたアンチウィルスソフトウェアアプリケーションに、データをスキャンさせ、ブロック402で受け取られたI/O要求の対象となるファイルがマルウェアに感染しているかどうかを判定させる。上記のように、アンチウィルスソフトウェアアプリケーションは通例、感染が存在するかどうかを判定する際に、データのパターンをマルウェアの「シグネチャー」と照合する。しかし、次第に、アンチウィルスソフトウェアアプリケーションは、予防型のマルウェア検出手法を用いるようになっている。例えば、一部のアンチウィルスアプリケーションは、仮想動作環境の内側でデータを「実行」させることにより、プログラムの振る舞いをエミュレートする。仮想動作環境のリソースの悪用/濫用が検出された場合、アンチウィルスソフトウェアアプリケーションは、ファイルがマルウェアに感染していると判定する。いずれにせよ、ブロック418で、選択されたアンチウィルスソフトウェアアプリケーションは、ファイルデータを得、ファイルデータがマルウェアに感染しているかどうかを判定する動作を行う。下記で図6を参照してさらに詳しく説明するように、ファイルデータは、登録されたアンチウィルスソフトウェアアプリケーションが利用できる共通情報モデルを使用して得ることができる。
マルウェアへの感染が存在するかどうかの判定を行うのに加えて、アンチウィルスソフトウェアアプリケーションは、ブロック418で修復措置をとることができる。当業者および他の者に知られるように、最近のアンチウィルスソフトウェアアプリケーションは、マルウェアと識別されたデータを削除するか、マルウェアの感染を他の形で修復することができる場合がある。ブロック418でマルウェアが検出された場合、選択されたアンチウィルスソフトウェアアプリケーションは、修復措置をとることを許される。アンチウィルスソフトウェアアプリケーションは一度に1つしか選択されることができないので、ブロック418でとられる修復措置は、データコンフリクトの可能性なく行われる。言い方を変えると、メソッド400は、アンチウィルスソフトウェアアプリケーションによってとられる修復措置が順次行われるようにスケジュールし、これは、データビュー(data view)が他のアンチウィルスソフトウェアアプリケーションに関して整合のとれたものになることを意味する。
判定ブロック420で、メソッド400は、別のアンチウィルスソフトウェアアプリケーションが選択されるかどうかを判定する。先に述べたように、メソッド400を使用して複数のアンチウィルスソフトウェアアプリケーションの知識基盤を統合して、マルウェアの存在を検出することができる。別のアンチウィルスソフトウェアアプリケーションが選択されない場合、メソッド400は、下記のブロック422に進む。逆に、別のアンチウィルスソフトウェアアプリケーションが選択される場合は、メソッド400は、ブロック416に戻り、ブロック402でインターセプトされたI/O要求に「関与した」すべてのアンチウィルスソフトウェアアプリケーションがスキャンを行うことができるまで、ブロック416から420が繰り返される。
ブロック422で、ファイルの状態が、スキャンキャッシュ318などのデータベースに記憶される。上記のように、特定の事例では、メソッド400は、アンチウィルスソフトウェアアプリケーションにファイルデータをスキャンさせ、ファイルがマルウェアに感染しているかどうかの判定を行わせることができる。本発明の一例示的実施形態では、1つまたは複数のアンチウィルスソフトウェアアプリケーションがマルウェアの存在を検出し、感染を修復することができない場合には、ファイルは、スキャンキャッシュ318内で「マルウェアであることが判明」とマークされる。この実施形態では、どのアンチウィルスソフトウェアアプリケーションもマルウェアの存在を検出しない場合、ファイルは、スキャンキャッシュ318で「正常であることが判明」とマークされる。当業者および他の者には、ファイルがマルウェアに感染したことを判定することが可能な他の実施形態があることが理解されよう。例えば、メソッド400は、ファイルがスキャンキャッシュ318で「マルウェアと判明」と識別されるには、コンピューティングデバイスにインストールされたアンチウィルスソフトウェアアプリケーションの大多数がマルウェアを検出することを必要とすることができる。より一般的には、メソッド400は、アンチウィルスソフトウェアアプリケーションによって生成される結果セットの加重値を計算するシステムとともに実施することができる。その場合には、加重値が閾値量を超えると、ファイルがスキャンキャッシュ318で「マルウェアであることが判明」とマークされる。アプリケーションから受け取られる入力に基づいて加重値を計算するシステムは当技術分野で一般に知られるので、そうしたシステムについてのさらなる説明は、ここでは提供しない。
上記でブロック404で説明したように、ブロック402でインターセプトされるI/O要求は、新しいファイルを作成させるコマンドである場合がある。その場合は、コンピューティングデバイスをマルウェアにさらすことなく、コマンドを満たすことができる。ブロック422で、コマンドの対象であるファイルの状態がスキャンキャッシュ318で「正常であることが判明」と識別される。上記ブロック408で述べたように、本発明の一実施形態では、MFTから一意のファイルインデックス値が取得され、その値を使用してスキャンキャッシュ318のファイルを識別する。ただし、コンピューティングデバイスからファイルが削除されると、MFTは、削除されるファイルに関連付けられたファイルインデックス値を新しいファイルに再割り当てすることができる。本発明は、ファイルが削除される時にスキャンキャッシュ318に記録されたファイルの状態を変更しない。その代わりに、新しいファイルを作成させるコマンドが受け取られると、本メソッドは、削除されるファイルの状態を、コマンドの対象となるファイルの状態に、単に上書きする。
上記のように、メソッド400は、ファイルの状態をスキャンキャッシュ318などのデータベースに記憶させる。事例によっては、スキャンキャッシュ318がファイルシステムの増大に対応できるように、ブロック422で追加的な管理手順を行うことができる。例えば、本発明の一実施形態では、I/O要求が、スキャンキャッシュ318にエントリを維持していない、以前に識別されなかったファイルを対象とする場合には、より大きなスキャンキャッシュが作成される。小さなスキャンキャッシュ318のコンテンツ(内容)が、以前に識別されなかったファイルの状態と併せて、大きなスキャンキャッシュにコピーされる。この実施形態の最適化は、スキャンキャッシュ318に割り当てられたメモリを、まだI/O要求の対象となっていない追加的なファイルについて、以前に識別されなかったファイルを収容するために必要な最小の割合を超える所定の割合だけ増大させる。
判定ブロック424で、メソッド400は、ファイルに関連付けられた状態が「マルウェアであることが判明」であるかどうかを判定する。新しいファイルを作成させるコマンドがインターセプトされた場合、または、状態が「不明」のファイルが1つまたは複数のアンチウィルスソフトウェアアプリケーションによってスキャンされる場合に、メソッド400は、ブロック424に達する。いずれの場合も、ファイルに関連付けられた状態がスキャンキャッシュ318などのデータベースに記憶される。したがって、ブロック424のファイルがマルウェアに感染しているかどうかの判定は、以前に記憶されたデータを再呼び出しすることによって行われる。ファイルの状態がマルウェアと識別された場合、メソッド400は、下記のブロック428に進む。それに対して、ファイルがマルウェアと識別されない場合、メソッド400はブロック426に進む。
ブロック426で、メソッド400は、プログラムの実行を、I/Oシステム302(図3)などのオペレーティングシステムのコンポーネントに戻す。先に述べたように、メソッド400は、I/O要求が満たされる前にI/O要求をインターセプトして、マルウェアの実行および/または拡散を防ぐ。ブロック426に達した場合、ブロック402でインターセプトされたI/O要求は、コンピューティングデバイスをマルウェアに感染させることがないか、コンピューティングデバイスにインストールされたアンチウィルスソフトウェアアプリケーションによってスキャンされ、マルウェアではないと識別されたデータに関連するか、のいずれかである。いずれの場合も、I/O要求を満たしてもマルウェアが実行および/または拡散することはない。したがって、プログラムの実行がI/Oシステム302に返された後で、I/O要求は従来技術に従って満たされる。そして、メソッド400はブロック430に進み、終了する。
ブロック428で、メソッド400は、プログラムの実行をI/Oシステム302などのオペレーティングシステムのコンポーネントに戻す。しかし、ブロック428に達した場合、ブロック402でインターセプトされたI/O要求は、マルウェアの実行および/または拡散につながる可能性がある。そのため、プログラムの実行がI/Oシステム302に返された後で、I/O要求は失敗し、コンピュータユーザにマルウェアの感染が通知される。メソッド400は次いでブロック430に進み、終了する。
本発明の実施は、図4に示す例示的メソッド400に限定されない。例えば、メソッド400は、別個の開始と終了を有するものと図示している。しかし、本発明の実際の実施形態では、I/O要求は、連続したプロセスでインターセプトされる。あるI/O要求を満たす結果、マルウェアが実行しおよび/または拡散すると、確信するのに足る情報が存在する場合には、メソッド400は、そのI/O要求を失敗させる。また、本発明は、上記の例に限定されない。例えば、メソッド400は、主としてファイルデータをスキャンするコンテクストで説明した。しかし、当業者は、本発明の範囲から逸脱せずに、メソッド400を使用して他のデータの単位をスキャンしてよいことを理解されよう。
図6は、高度に最適化された方式でアンチウィルスソフトウェアアプリケーションにファイルデータへのアクセスを与えるために、図4を参照して上述したメソッド400と併せて使用することが可能な、例示的な一アクセスメソッド600の流れ図である。要約すると、メソッド600は、スキャンを行うために1つまたは複数のアンチウィルスソフトウェアアプリケーションによって使用されるセクションオブジェクトを作成することを含む。そして、アンチウィルスソフトウェアアプリケーションとのインターフェースをとるユーザモードアプリケーションに、セクションオブジェクトにアクセスするのに必要な情報が与えられる。最後に、1つまたは複数のアンチウィルスソフトウェアが基本的なファイルシステム操作を行うことを可能にするセクションオブジェクトのビュー(一覧表)が作成される。引き続き図1〜5とそれに伴う説明を参照して、図6に示す例示的なアクセスメソッド600を説明する。
判定ブロック602で、アクセスメソッド600は、スキャン要求が受け取られるまでアイドル状態となる。先に述べたように、セキュリティサービスアプリケーション314(図3)が、コンピューティングデバイス300にインストールされたアンチウィルスソフトウェアアプリケーションとのインターフェースとして機能する。アンチウィルスソフトウェアアプリケーションは、そのアンチウィルスソフトウェアアプリケーションがスキャンを行う状況を規定する走査プロファイルを作成することができる。ブロック602で、セキュリティサービスアプリケーション314(図3)が、アンチウィルスソフトウェアアプリケーションからスキャン要求を受け取る。2つのユーザモードアプリケーション間での要求の通信は、当技術分野で一般に知られる技術を使用して実施することができるので、このような技術についてのさらなる説明はここでは提供しない。
ブロック604で、1つまたは複数のアンチウィルスソフトウェアアプリケーションによってスキャンされるファイルのセクションオブジェクトが作成される。当業者および他の者に知られるように、セクションオブジェクトは、カーネルモードアプリケーションとユーザモードアプリケーションがデータを共有することを可能にする。本発明の一例示的実施形態では、セキュリティサービスアプリケーション314が汎用セキュリティフィルタ316に要求を行って、スキャンされるファイルのセクションオブジェクトを作成させる。図2に示すように、ファイルマッピングセクションオブジェクトが作成される前に、オペレーティングシステム104は、ユーザモードからカーネルモードに切り替わる。より具体的には、オペレーティングシステム104は、ユーザモードで実行されるセキュリティサービスアプリケーション314が、カーネルモードで実行される汎用セキュリティフィルタ316に要求を行った後にユーザモードからカーネルモードに切り替わる。カーネルモードへの切り替えが完了すると、汎用セキュリティフィルタ316は、スキャン対象のファイルを識別し、ファイルマッピングセクションオブジェクトを作成させる関数を呼び出すことによって要求に応答する。
ブロック606で、スキャンされるファイルにアクセスするのに必要な情報が、ユーザモードアプリケーションに入手できるようにされる。より具体的には、ブロック604で作成されたファイルマッピングセクションオブジェクトが、汎用セキュリティフィルタ316により、セキュリティサービスアプリケーション314のオブジェクトテーブルに挿入される。当業者および他の者に知られるように、最近のオペレーティングシステムは通例、所定のドメインの内側でプログラムを実行する。例えば、一部のオペレーティングシステムでは、プログラムは、オブジェクトテーブルと称されるそのプログラムに独自のデータ構造で参照されるオブジェクトにのみアクセスすることができる。ブロック604で作成されたセクションオブジェクトをセキュリティサービスアプリケーション314に関連付けられたオブジェクトテーブルに挿入することにより、ブロック604で作成されたセクションオブジェクトが、セキュリティサービスアプリケーション314から利用できるようになる。図2に示すように、ファイルマッピングセクションオブジェクトがセキュリティサービスアプリケーション314のオブジェクトテーブルに挿入されると、オペレーティングシステム104は、カーネルモードからユーザモードに切り替わる。
判定ブロック608で、アクセスメソッド600は、アイドルのままとなり、アンチウィルスソフトウェアアプリケーションがファイルデータを要求するのを待つ。先に述べたように、I/O動作がインターセプトされると、1つまたは複数のアンチウィルスソフトウェアアプリケーションは、共通情報モデルと対話してスキャンをスケジュールすることができる。スキャンを完了するために、アンチウィルスソフトウェアアプリケーションは、基本的なファイルシステム操作を行う必要がある場合がある。例えば、通例、アンチウィルスソフトウェアアプリケーションは、ファイルデータを「読み出し」、そのデータを既知のマルウェアのシグネチャーと比較する。本発明によれば、アンチウィルスソフトウェアアプリケーションは、セキュリティサービスアプリケーション314に登録されたアプリケーションが利用することのできる共通情報モデルを使用して基本的なファイルシステム操作を行うことができる。本発明の一実施形態では、共通情報モデルは、APIのセットの形態で、登録されたアプリケーションが利用することができる。いずれの場合も、判定ブロック608で、アクセスメソッド600は、アイドルの状態になり、アンチウィルスソフトウェアがファイルデータを要求するのを待つ。
判定ブロック610で、アクセスメソッド600は、スキャンされるファイルのビューをセキュリティサービスアプリケーション314のメモリ空間にマッピングする必要があるかどうかを判定する。特に一意のファイルの複数のスキャンが同時に行われる可能性があるので、セキュリティサービスアプリケーション314の仮想アドレス空間の効率的な使用を実現するために、ファイルの「ビュー」をアプリケーションのメモリ空間にマッピングして、アプリケーションがファイルデータの一部にアクセスできるようにすることができる。すべてのファイルデータが一度にアプリケーションのメモリ空間にロードされない場合もあるので、現在のビューから得られないデータが要求されると、新しいビューがマッピングされる。ブロック608で要求されるデータが、セキュリティサービスアプリケーション314のメモリ空間にマッピングされたビューから入手できない場合、アクセスメソッド600は、新しいビューをマッピングする必要があると判断し、ブロック612に進む。対して、ブロック608で要求されるデータが、セキュリティサービスアプリケーション314のメモリ空間にマッピングされたビューから入手できる場合は、アクセスメソッド600は、下記のブロック614に進む。
ブロック612で、ブロック604で作成されたセクションオブジェクトのビューがマッピングされて、セキュリティサービスアプリケーション314などのユーザモードアプリケーションが、ファイルデータの要求を満たすことができるようになる。セキュリティサービスアプリケーション314は、スキャンされるファイルを識別する、汎用セキュリティフィルタ316から提供されるデータを得る。セキュリティサービスアプリケーション314のメモリ空間にすでにビューがマッピングされている場合、アクセスメソッド600は、オペレーティングシステム104に、その現在のビューを除去させるAPI呼び出しを行う。次いで、セキュリティサービスアプリケーション314は、オペレーティングシステム104に、新しいビューをマッピングさせる別のAPI呼び出しを行う。それに応答して、オペレーティングシステム104は、要求されるデータを得ることができるファイルのビューをマッピングする。Windows(登録商標)オペレーティングシステムのコンテクストでは、「MapViewOfFile()」および「UnMapViewOfFile()」のAPIを使用して、アプリケーションのメモリ空間にファイルをマッピングし、メモリ空間から除去することができる。ただし、ここに提供される例は、限定的ではなく例示的なものと解釈されたい。
ブロック614で、ブロック608で要求されたデータが、要求の生成元であるアンチウィルスソフトウェアアプリケーションに通信される。必要なビューが(ブロック612で)セキュリティサービスアプリケーション314のメモリ空間に作成されると、システムは、当技術分野で一般に知られる方法を使用してそのデータを要求元のアンチウィルスソフトウェアアプリケーションに送信することができる。
判定ブロック616で、アクセスメソッド600は、ブロック602で受け取られたスキャン要求を生成したアンチウィルスソフトウェアアプリケーションが、ファイルデータへのアクセスを完了したかどうかを判定する。先に述べたように、セキュリティサービスアプリケーション314は、コンピューティングデバイスにインストールされたアンチウィルスソフトウェアアプリケーションに基本的なファイルシステム操作のセットを提供することにより、インターフェースの役割を果たす。アンチウィルスソフトウェアアプリケーションがファイルのスキャンを終了すると、そのアプリケーションは、スキャンが完了したことをセキュリティサービスアプリケーション314に伝え、アクセスメソッド600はブロック618に進み、終了する。これに対して、アンチウィルスソフトウェアアプリケーションがファイルのスキャンをまだ終了しておらず、ファイルデータへのアクセスを継続している場合、アクセスメソッド600は、アンチウィルスソフトウェアアプリケーションがファイルのスキャンを終えるまで、ブロック608から616に戻る。
アクセスメソッド600は、他のシステムと併せて使用して、基本的なファイルシステム操作を行う非常に高速な方式(way)を提供することができる。単なる例として、アクセスメソッド600は、(1)ファイルにデータを読み書きする暗号化/解読アプリケーション、および(2)ファイルデータを読み出し、そのファイルデータが不適切な内容を含むかどうかを判定する内容フィルタリングアプリケーション、と併せて実施することができる。しかし、アクセスメソッド600は、基本的なファイルシステム操作を行うためにどのようなアプリケーションによっても使用されることができるので、ここに提供される例は、限定的ではなく例示的なものと解釈されたい。
本発明の好ましい実施形態を図示し、説明したが、本発明の主旨および範囲から逸脱せずに各種の変更をそれら実施形態に加えることが可能であることは理解されよう。
従来技術によるコンピューティングデバイスの階層構造を示すブロック図である。 従来技術によるマルウェアのスキャンを行うのに適したアンチウィルスソフトウェアアプリケーションを含むコンピューティングデバイスの構成要素のブロック図である。 本発明によるマルウェアを識別するのに適したアンチウィルスソフトウェアアプリケーションを含むコンピューティングデバイスの構成要素のブロック図である。 本発明による複数のアンチウィルスソフトウェアアプリケーションの知識基盤を統合する方法の一例示的実施形態を説明する流れ図である。 図4に示す方法と併せてデータを記憶し、再呼び出しするのに適したスキャンキャッシュの図である。 本発明による、図4に示す方法と併せて使用して、ファイルデータへのアクセスをアンチウィルスソフトウェアアプリケーションに与えることができるアクセスメソッドの一例示的実施形態を説明する流れ図である。
符号の説明
100 コンピューティングデバイス
102 ハードウェアプラットフォーム
104 オペレーティングシステム
106 アプリケーションプラットフォーム
200 I/Oシステム
202 ローカルまたはリモートのI/Oデバイス
204 ユーザアプリケーション
206 アンチウィルスフィルタ
208 アンチウィルスフィルタ
210 アンチウィルスフィルタ
212 アンチウィルスソフトウェアアプリケーション
214 アンチウィルスソフトウェアアプリケーション
216 アンチウィルスソフトウェアドライバ
300 コンピューティングデバイス
302 I/Oシステム
304 ローカルまたはリモートのI/Oデバイス
306 ユーザアプリケーション
308 アンチウィルスソフトウェアアプリケーション
310 アンチウィルスソフトウェアアプリケーション
312 アンチウィルスソフトウェアアプリケーション
314 セキュリティサービスアプリケーション
316 汎用セキュリティフィルタ
318 スキャンキャッシュ
320 データマッピングモジュール
502 ファイルインデックス
504 第1ビット
506 第2ビット

Claims (20)

  1. プロセッサ及び、システムメモリを含むコンピューティングデバイスにおいて、前記コンピューティングデバイスは、I/Oシステム、セキュリティサービスアプリケーション、及び、汎用セキュリティフィルタも含み、前記コンピューティングデバイスは、コンピューティングデバイスに常駐する複数の異なるアンチウィルスソフトウェアアプリケーションを含み、前記複数の異なるアンチウィルスソフトウェアアプリケーションは、少なくとも第1のアンチウィルスソフトウェア、及び、第2の異なるアンチウィルスソフトウェアを含み、コンピューティングデバイスにおける前記複数の異なるアンチウィルスソフトウェアアプリケーションの知識基板を統合してマルウェアの実行または拡散を阻止する、コンピュータによって実施される方法であって、
    (a)前記汎用セキュリティフィルタが、I/O要求を傍受し、前記I/O要求は、前記コンピューティングデバイスに常駐するユーザアプリケーションの代わりに、前記I/Oシステムから、I/Oデバイスに向けて発行され、前記I/O要求は、前記要求が前記I/Oデバイスにより満たされる前に傍受される、該要求を傍受するステップと、
    (b)前記汎用のセキュリティフィルタが、前記I/O要求に関係しているファイルデータを前記セキュリティサービスアプリケーションに提供するステップと、
    (c)前記セキュリティサービスアプリケーションが、前記コンピューティングデバイスに常駐する前記複数の異なるアンチウィルスソフトウェアアプリケーションのそれぞれのためのスキャニングプロファイルに基づいて、前記コンピューティングデバイスに常駐する前記複数の異なるアンチウィルスソフトウェアアプリケーションの中から選択された1以上の選択されたアンチウィルスソフトウェアアプリケーションのためにスキャンをスケジューリングするステップと、
    (d)前記セキュリティサービスアプリケーションが、別のアプリケーションが前記ファイルデータを含むファイルにロックをかけているときでさえ、前記1以上のアンチウィルスソフトウェアアプリケーションに前記ファイルデータへのアクセス権を提供するステップと、
    (e)前記1以上のアンチウィルスソフトウェアアプリケーションのそれぞれが、前記ファイルデータを分析して、前記ファイルがマルウェアを含むかどうかを判定するステップと、
    (f)前記1以上のアンチウィルスソフトウェアアプリケーションの少なくとも1つが、前記ファイルデータがマルウェアを含むことを検出するステップと、
    (g)前記マルウェアの検出に応答して、前記I/O要求が満たされることを阻止するステップと
    を備えることを特徴とする方法。
  2. 前記アンチウィルスソフトウェアアプリケーションによって分析された前記ファイルの状態を追跡するためのデータベースを作成するステップであって、前記ファイルの状態は、(1)マルウェアであることが判明、(2)安全であることが判明、(3)不明、に分類されることを特徴とする請求項1に記載の方法。
  3. 前記データベースは、前記ファイルの状態を表す変数にファイルインデックス値を関連付けることを特徴とする請求項に記載の方法。
  4. 前記データベース中で変数に前記ファイルインデックス値を関連付けるステップは、
    (a)前記ファイルインデックス値が前記データベースに入力されているかどうかを判定するステップと、
    (b)前記ファイルインデックス値が前記データベースにない場合、
    (i)ボリュームにある各ファイルの一意のファイルインデックス値を保持するデータ構造を有するオブジェクトテーブルから前記ファイルインデックス値を得るステップと、
    (ii)前記ファイルインデックス値を前記データベースに入力するステップと
    を含むことを特徴とする請求項に記載の方法。
  5. (a)前記ファイルがマルウェアを含む場合、前記ファイルがマルウェアを含むことを示す変数を、前記データベース中でファイルインデックス値に関連付けるステップと、
    (b)逆に、前記ファイルがマルウェアを含まない場合は、前記ファイルがマルウェアを含まないことを示す変数を、前記データベース中で前記ファイルインデックス値に関連付けるステップと
    をさらに備えることを特徴とする請求項4に記載の方法。
  6. クエリーに応答して、前記ファイルインデックス値に関連付けられた前記変数を答えるステップをさらに備えることを特徴とする請求項に記載の方法。
  7. 前記データベースで前記ファイルインデックス値に関連付けられる前記変数は、2ビットからなることを特徴とする請求項に記載の方法。
  8. ボリュームにある各ファイルの一意のファイルインデックス値を保持する前記データ構造を有するオブジェクトテーブルは、マスタファイルテーブルであることを特徴とする請求項に記載の方法。
  9. 前記アンチウィルスソフトウェアアプリケーションに前記ファイルデータへのアクセス権を提供するステップは、
    (a)前記ファイルデータをオブジェクトにマッピングするステップであって、前記オブジェクトは、前記複数の異なるアプリケーションに同時にアクセスできるように構成される、ステップと、
    (b)前記オブジェクトに前記選択された1以上のアンチウィルスソフトウェアアプリケーションのそれぞれに提供するステップと、
    を含むことを特徴とする請求項1に記載の方法。
  10. 前記セキュリティサービスアプリケーションは、前記アンチウィルスソフトウェアアプリケーションにより前記オブジェクトにアクセスする要求をスケジュールすることを特徴とする請求項に記載の方法。
  11. 前記ファイルデータをオブジェクトにマッピングするステップは、前記セキュリティサービスアプリケーションに関連付けられたオブジェクトテーブルに前記オブジェクトを挿入するステップを含むことを特徴とする請求項に記載の方法。
  12. 前記アンチウィルスソフトウェアアプリケーションは、カーネルモードフィルタを実装することなく、前記ファイルデータにアクセスすることを特徴とする請求項1に記載の方法。
  13. 前記アンチウィルスソフトウェアアプリケーションは、ファイルハンドルを作成せずに、前記ファイルデータにアクセスすることを特徴とする請求項1に記載の方法。
  14. 前記複数の異なるアンチウィルスソフトウェアアプリケーションのそれぞれは、前記ファイルデータの分析より前に、前記セキュリティサービスアプリケーションに登録させるステップと
    を含むことを特徴とする請求項1に記載の方法。
  15. アンチウィルスソフトウェアアプリケーションのそれぞれのための前記スキャニングプロファイルは、前記アンチウィルスソフトウェアアプリケーションに関与しているI/O要求を定義していることを特徴とする請求項14に記載の方法。
  16. 複数の異なるアンチウィルスソフトウェアアプリケーションの知識基盤を統合してマルウェアの実行または拡散を防ぐ、コンピュータ実行可能なアンチウィルスシステムであって、前記複数の異なるアンチウィルスソフトウェアアプリケーションは、前記アンチウィルスシステムに常駐し、前記アンチウィルスシステムは、
    プロセッサと
    前記プロセッサと接続されて、通信可能なメモリとを備え、
    前記メモリは、前記アンチウィルスシステムを実施するように構成される、コンピュータ実行可能命令を記録し、前記アンチウィルスシステムは、
    (a)前記アンチウィルスシステムに常駐するアプリケーションの代わりに、要求するI/O要求を発行するステップを実施するように構成されるカーネルモードI/Oシステムと、
    (b)前記要求が前記I/Oデバイスにより満たされる前に、常駐するユーザアプリケーションの代わりに、前記I/Oシステムから、発行された前記I/O要求を傍受するステップと、
    前記I/O要求に関係しているファイルデータを前記セキュリティサービスアプリケーションに提供するステップと を実施するように構成されるユーザモード汎用セキュリティフィルタと、
    (c)前記コンピューティングデバイスに常駐する前記複数の異なるアンチウィルスソフトウェアアプリケーションのそれぞれのためのスキャニングプロファイルに基づいて、前記複数の異なるアンチウィルスソフトウェアアプリケーションの中から選択された、選択されたアンチウィルスソフトウェアアプリケーションのためにスキャンをスケジューリングするステップと、
    別のアプリケーションが前記ファイルデータを含むファイルにロックをかけているときでさえ、選択されたアンチウィルスソフトウェアアプリケーションに前記ファイルデータへのアクセス権を提供するステップと、
    前記選択されたアンチウィルスソフトウェアアプリケーションに、前記ファイルデータをマルウェアのために分析させるステップと、
    マルウェアの検出に応答して、I/O要求が満たされることを阻止するステップと を実施するように構成されるカーネルモードセキュリティサービスアプリケーションと
    を備えることを特徴とシステム。
  17. 前記カーネルモードセキュリティサービスアプリケーションは、前記ユーザモード汎用セキュリティフィルタと通信してI/O要求を傍受し、前記アンチウィルスソフトウェアアプリケーションに前記ファイルデータを分析させ、前記ファイルがマルウェアを含むかどうかを判定させることを特徴とする請求項16に記載のシステム。
  18. 前記アンチウィルスソフトウェアアプリケーションによって分析された前記ファイルの状態を追跡することが可能なスキャンキャッシュをさらに備えることを特徴とする請求項17に記載のシステム。
  19. アンチウィルスソフトウェアアプリケーションは、前記ユーザモードセキュリティサービスアプリケーションに登録し、前記アンチウィルスソフトウェアアプリケーションに前記ファイルデータを分析させる前記要求を規定することを特徴とする請求項16に記載のシステム。
  20. プロセッサ及び、システムメモリを含むコンピューティングデバイスにおいて、前記コンピューティングデバイスは、カーネルモードI/Oシステム、ユーザモードセキュリティサービスアプリケーション、及び、カーネルモード汎用セキュリティフィルタも含み、前記コンピューティングデバイスは、コンピューティングデバイスに常駐する複数の異なるアンチウィルスソフトウェアアプリケーションを含み、前記複数の異なるアンチウィルスソフトウェアアプリケーションは、少なくとも第1のアンチウィルスソフトウェア及び、第2の異なるアンチウィルスソフトウェアを含み、前記複数の異なるアンチウィルスソフトウェアアプリケーションの知識基板を統合してマルウェアの実行または拡散を阻止する、コンピュータによって実施される方法であって、
    (a)前記カーネルモード汎用セキュリティフィルタが、I/O要求を傍受し、前記I/O要求は、前記コンピューティングデバイスに常駐するユーザモードアプリケーションの代わりに、前記カーネルI/Oシステムから、I/Oデバイスに向けて発行され、前記I/O要求は、前記要求が前記I/Oデバイスにより満たされる前に傍受される、該要求を傍受するステップと、
    (b)前記カーネルモード汎用のセキュリティフィルタが、前記I/O要求に関係しているファイルデータを前記セキュリティサービスアプリケーションに提供するステップと、
    (c)前記ユーザモードセキュリティサービスアプリケーションが、前記コンピューティングデバイスに常駐する前記複数の異なるアンチウィルスソフトウェアアプリケーションのそれぞれのためのスキャニングプロファイルに基づいて、前記コンピューティングデバイスに常駐する前記複数の異なるアンチウィルスソフトウェアアプリケーションの中から選択された第1のアンチウィルスソフトウェアアプリケーションを含む選択された1以上のアンチウィルスソフトウェアアプリケーションのためにスキャンをスケジューリングするステップと、
    (d)前記ユーザモードセキュリティサービスアプリケーションが、第1のアンチウィルスソフトウェアアプリケーションに前記ファイルデータがマルウェアを含むかどうかを判定させ、同時に、少なくとも第2のアンチウィルスソフトウェアアプリケーションに前記ファイルデータがマルウェアを含むかどうかを判定させるステップと、
    (e)前記ファイルデータが前記ファイルデータの分析の結果としてマルウェアに感染していると判定されたときに、
    前記ユーザモードセキュリティサービスアプリケーションが、前記I/O要求が満たされることを阻止し、前記ファイルデータを、前記ファイルが感染していることを示す指標に関連付け、
    他のアプリケーションがスキャンキャッシュへの参照を通して、前記ファイルデータの前記状態を効率的に追跡できるように、前記指標を前記システムメモリ内の前記スキャンキャッシュに記録するステップと、
    (f)前記ファイルデータが前記ファイルデータの分析の結果としてマルウェアに感染していないと判定されたときに、
    前記ユーザモードセキュリティサービスアプリケーションが、前記I/O要求が満たされることを許容し、前記ファイルデータを、前記ファイルが感染していないことを示す指標に関連付け、
    他のアプリケーションがスキャンキャッシュへの参照を通して、前記ファイルデータの前記状態を効率的に追跡できるように、前記指標を前記システムメモリ内の前記スキャンキャッシュに記録するステップと、
    (g)将来の判定において記憶された指標を少なくとも一部使用することは、前記ファイルデータに関連付けられた要求が満たされることに関連付けられるステップと、
    を備えることを特徴とする方法。
JP2005295239A 2004-11-08 2005-10-07 アンチウィルスソフトウェアアプリケーションの知識基盤を統合するシステムおよび方法 Expired - Fee Related JP4828199B2 (ja)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
US10/984,611 2004-11-08
US10/984,615 2004-11-08
US10/984,611 US7765410B2 (en) 2004-11-08 2004-11-08 System and method of aggregating the knowledge base of antivirus software applications
US10/984,207 US7478237B2 (en) 2004-11-08 2004-11-08 System and method of allowing user mode applications with access to file data
US10/984,615 US7765400B2 (en) 2004-11-08 2004-11-08 Aggregation of the knowledge base of antivirus software
US10/984,207 2004-11-08

Publications (2)

Publication Number Publication Date
JP2006134307A JP2006134307A (ja) 2006-05-25
JP4828199B2 true JP4828199B2 (ja) 2011-11-30

Family

ID=35636878

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005295239A Expired - Fee Related JP4828199B2 (ja) 2004-11-08 2005-10-07 アンチウィルスソフトウェアアプリケーションの知識基盤を統合するシステムおよび方法

Country Status (4)

Country Link
EP (1) EP1655682B8 (ja)
JP (1) JP4828199B2 (ja)
KR (1) KR101201118B1 (ja)
CN (1) CN101894225B (ja)

Families Citing this family (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7660797B2 (en) * 2005-05-27 2010-02-09 Microsoft Corporation Scanning data in an access restricted file for malware
EP1933248A1 (de) * 2006-12-12 2008-06-18 secunet Security Networks Aktiengesellschaft Verfahren zur sicheren Datenverarbeitung auf einem Computersystem
US9251350B2 (en) 2007-05-11 2016-02-02 Microsoft Technology Licensing, Llc Trusted operating environment for malware detection
US7853999B2 (en) * 2007-05-11 2010-12-14 Microsoft Corporation Trusted operating environment for malware detection
US8104088B2 (en) * 2007-05-11 2012-01-24 Microsoft Corporation Trusted operating environment for malware detection
US8065728B2 (en) * 2007-09-10 2011-11-22 Wisconsin Alumni Research Foundation Malware prevention system monitoring kernel events
JP2009139722A (ja) * 2007-12-07 2009-06-25 Tani Electronics Corp カラーを利用した暗号化方法および暗号化装置
US8353041B2 (en) * 2008-05-16 2013-01-08 Symantec Corporation Secure application streaming
US8161556B2 (en) * 2008-12-17 2012-04-17 Symantec Corporation Context-aware real-time computer-protection systems and methods
US9721090B2 (en) 2010-04-29 2017-08-01 Safend Ltd. System and method for efficient inspection of content
US8424093B2 (en) 2010-11-01 2013-04-16 Kaspersky Lab Zao System and method for updating antivirus cache
US7962959B1 (en) 2010-12-01 2011-06-14 Kaspersky Lab Zao Computer resource optimization during malware detection using antivirus cache
EP2447859B1 (en) 2010-11-01 2015-04-08 Kaspersky Lab, ZAO System and method for acceleration of malware detection using antivirus cache
WO2013041016A1 (zh) * 2011-09-19 2013-03-28 北京奇虎科技有限公司 处理计算机病毒的方法和装置
CN103034805B (zh) * 2011-09-30 2015-12-16 腾讯科技(深圳)有限公司 多引擎病毒查杀方法和装置
US9043903B2 (en) 2012-06-08 2015-05-26 Crowdstrike, Inc. Kernel-level security agent
US9292881B2 (en) 2012-06-29 2016-03-22 Crowdstrike, Inc. Social sharing of security information in a group
CN102819709B (zh) * 2012-08-15 2016-03-30 小米科技有限责任公司 一种实现系统安全的方法及装置
JP5969618B2 (ja) * 2012-10-10 2016-08-17 株式会社日立製作所 セキュリティシステム、および、セキュリティ監視方法
CN103699838B (zh) * 2013-12-02 2018-05-04 百度国际科技(深圳)有限公司 病毒的识别方法及设备
US10289405B2 (en) 2014-03-20 2019-05-14 Crowdstrike, Inc. Integrity assurance and rebootless updating during runtime
US9628279B2 (en) * 2014-09-30 2017-04-18 Microsoft Technology Licensing, Llc Protecting application secrets from operating system attacks
RU2589862C1 (ru) * 2015-06-30 2016-07-10 Закрытое акционерное общество "Лаборатория Касперского" Способ обнаружения вредоносного кода в оперативной памяти
US10339316B2 (en) 2015-07-28 2019-07-02 Crowdstrike, Inc. Integrity assurance through early loading in the boot phase
WO2017200942A1 (en) * 2016-05-15 2017-11-23 John Steven Systems and methods for model-based analysis of software
US10387228B2 (en) 2017-02-21 2019-08-20 Crowdstrike, Inc. Symmetric bridge component for communications between kernel mode and user mode
US10740459B2 (en) 2017-12-28 2020-08-11 Crowdstrike, Inc. Kernel- and user-level cooperative security processing
CA3042934A1 (en) 2018-05-12 2019-11-12 Netgovern Inc. Method and system for managing electronic documents based on sensitivity of information
CN110826065B (zh) * 2019-10-30 2022-03-15 亚信科技(成都)有限公司 一种扫描方法、装置及系统
CN114564720A (zh) * 2022-02-18 2022-05-31 北京圣博润高新技术股份有限公司 程序文件审核方法、装置、电子设备及存储介质

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5854916A (en) 1995-09-28 1998-12-29 Symantec Corporation State-based cache for antivirus software
JPH1166669A (ja) * 1997-08-08 1999-03-09 Rinku Concept:Kk コンピュータウイルス自動検出装置
US6094731A (en) 1997-11-24 2000-07-25 Symantec Corporation Antivirus accelerator for computer networks
US6021510A (en) * 1997-11-24 2000-02-01 Symantec Corporation Antivirus accelerator
US6728964B1 (en) 1998-06-13 2004-04-27 Intel Corporation Monitoring function
JP4567275B2 (ja) * 2002-02-28 2010-10-20 株式会社エヌ・ティ・ティ・ドコモ 移動通信端末、情報処理装置、中継サーバ装置、情報処理システム及び情報処理方法
US7024672B2 (en) * 2002-06-26 2006-04-04 Microsoft Corporation Process-mode independent driver model
JP3979285B2 (ja) * 2002-12-17 2007-09-19 株式会社日立製作所 情報処理システム
JP2005100093A (ja) * 2003-09-25 2005-04-14 Forval Creative Inc ウイルスメール保護監視装置および方法ならびにそのプログラム、ウイルスメール保護中継装置ならびにそのプログラム

Also Published As

Publication number Publication date
KR20060051383A (ko) 2006-05-19
EP1655682A3 (en) 2006-05-31
CN101894225B (zh) 2013-02-13
EP1655682B8 (en) 2016-10-12
JP2006134307A (ja) 2006-05-25
EP1655682B1 (en) 2016-08-17
EP1655682A2 (en) 2006-05-10
KR101201118B1 (ko) 2012-11-13
CN101894225A (zh) 2010-11-24

Similar Documents

Publication Publication Date Title
JP4828199B2 (ja) アンチウィルスソフトウェアアプリケーションの知識基盤を統合するシステムおよび方法
US7765410B2 (en) System and method of aggregating the knowledge base of antivirus software applications
US7478237B2 (en) System and method of allowing user mode applications with access to file data
US7765400B2 (en) Aggregation of the knowledge base of antivirus software
US8161557B2 (en) System and method of caching decisions on when to scan for malware
US7676845B2 (en) System and method of selectively scanning a file on a computing device for malware
US7660797B2 (en) Scanning data in an access restricted file for malware
US7779472B1 (en) Application behavior based malware detection
US7836504B2 (en) On-access scan of memory for malware
US20110047618A1 (en) Method, System, and Computer Program Product for Malware Detection, Analysis, and Response
JP4629796B2 (ja) 限定的プロセスでのファイル変換
US7665123B1 (en) Method and apparatus for detecting hidden rootkits
US8281410B1 (en) Methods and systems for providing resource-access information
EP3756121B1 (en) Anti-ransomware systems and methods using a sinkhole at an electronic device
US7251735B2 (en) Buffer overflow protection and prevention
WO2016079602A1 (en) Malicious code protection for computer systems based on process modification
CN114116606A (zh) 针对windows全系统的文件保护方法及系统
US8171552B1 (en) Simultaneous execution of multiple anti-virus programs
KR100704721B1 (ko) 실시간 감시를 통한 컴퓨터 보호 방법 및 이에 따라 보호되는 컴퓨터 보호 시스템과 실행가능한 파일이 보호되는 시스템
KR101954421B1 (ko) 하드디스크나 ssd 기반의 worm 저장장치에서 실시간으로 위변조를 방지하는 데이터 기록 방법
CA3155237A1 (en) Ransomware prevention
KR20030090568A (ko) 단말기 내의 자원 보호 시스템 및 방법
JP2022060950A (ja) 欺瞞システム、欺瞞方法および欺瞞プログラム
JP2007219786A (ja) 未知のマルウェアによる情報漏洩防止システム
KR102309695B1 (ko) 호스트 침입 탐지를 위한 파일 기반 제어방법 및 장치

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20081007

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110520

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110819

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20110909

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110914

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140922

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R371 Transfer withdrawn

Free format text: JAPANESE INTERMEDIATE CODE: R371

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R360 Written notification for declining of transfer of rights

Free format text: JAPANESE INTERMEDIATE CODE: R360

R360 Written notification for declining of transfer of rights

Free format text: JAPANESE INTERMEDIATE CODE: R360

R371 Transfer withdrawn

Free format text: JAPANESE INTERMEDIATE CODE: R371

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees