(57)【要約】【課題】コンピュータ上で実行される１つまたは複数の自己完結型オペレーティング環境インスタンスにセキュリティを提供するセキュリティ方式を提供すること。【解決手段】本セキュリティ方式は、監視プロセスなどによって制御可能な１組のセキュリティアプリケーションの実施を含むことができる。１組のセキュリティアプリケーションおよび監視プロセスは共に、１つまたは複数の自己完結型オペレーティング環境を実行するためのプラットフォームを提供することもできるコンピュータのホストシステム上で動作することができる。本セキュリティ方式は、１つまたは複数の自己完結型オペレーティング環境中で動作するプロセス、および自己完結型オペレーティング環境外のコンピュータ上で動作するプロセスを保護する。【選択図】図２
2006178936.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータにおいて、前記コンピュータのエミュレートされた資源にそれぞれがアクセスする、自己完結型プロセス実行環境の複数のインスタンスをモニタし保護する方法であって、
有害なプロセスを検出するために自己完結型プロセス実行環境の前記複数のインスタンスのそれぞれをモニタする少なくとも１つのセキュリティアプリケーションを、前記コンピュータ上で実行するステップであって、前記少なくとも１つのセキュリティアプリケーションは、自己完結型プロセス実行環境の前記複数のインスタンスの外部で実行されるステップと、
１組のセキュリティアプリケーションによって、自己完結型プロセス実行環境の前記複数のインスタンスの前記それぞれの仮想資源の走査を可能にするステップであって、前記仮想資源は前記コンピュータのエミュレートされた資源を含むステップと
を含み、
前記可能にするステップは、前記コンピュータの主オペレーティングシステムによって認識された前記資源を認識するように、前記１組のセキュリティアプリケーションを構成するステップを含むことを特徴とする方法。
【請求項２】
前記少なくとも１つのセキュリティアプリケーションは、自己完結型プロセス実行環境の前記複数のインスタンスのそれぞれの中で１対１の対応関係で動作するそれに対応したエージェントセキュリティプロセスとの通信を介して、自己完結型プロセス実行環境の前記複数のインスタンスのそれぞれにアクセスすることを特徴とする請求１に記載の方法。
【請求項３】
前記少なくとも１つのセキュリティアプリケーションは、前記少なくとも１つのセキュリティアプリケーションがそれを介して前記エミュレートされた資源にアクセスできる一様なインターフェースを提供する仮想マシンオブジェクトインターフェースを介して、自己完結型プロセス実行環境の前記複数のインスタンスのそれぞれにアクセスすることを特徴とする請求項１に記載の方法。
【請求項４】
前記少なくとも１つのセキュリティアプリケーションは、前記コンピュータによって提供されるホストシステム中で実行され、自己完結型プロセス実行環境の前記複数のインスタンスのそれぞれはまた、前記ホストシステム中で実行されることを特徴とする請求項１に記載の方法。
【請求項５】
前記少なくとも１つのセキュリティアプリケーションは、前記コンピュータによって提供されるホストシステム中で実行されること、自己完結型プロセス実行環境の前記複数のインスタンスのそれぞれはまた、前記ホストシステム中で実行されること、ならびに前記少なくとも１つのセキュリティアプリケーションは、少なくとも一部分が、前記ホストシステム中で実行される監視プロセスによって制御されることを特徴とする請求項１に記載の方法。
【請求項６】
前記１組のセキュリティアプリケーションによって自己完結型プロセス実行環境の前記複数のインスタンスの前記それぞれの仮想資源の前記走査を可能にする前記ステップは、自己完結型プロセス実行環境の前記複数のインスタンスのうちの１つと関連付けられた仮想メモリ構造へのアクセス権を提供するステップを含むことを特徴とする請求項１に記載の方法。
【請求項７】
前記１組のセキュリティアプリケーションによって自己完結型プロセス実行環境の前記複数のインスタンスの前記それぞれの仮想資源の走査を可能にする前記ステップは、自己完結型プロセス実行環境の前記複数のインスタンスのうちの１つと関連付けられた仮想ハードディスク構造へのアクセス権を提供するステップを含むことを特徴とする請求項１に記載の方法。
【請求項８】
前記１組のセキュリティアプリケーションによって自己完結型プロセス実行環境の前記複数のインスタンスの前記それぞれの仮想資源の走査を可能にする前記ステップは、自己完結型プロセス実行環境の前記複数のインスタンスのうちの１つと関連付けられた仮想ネットワークアダプタ構造へのアクセス権を提供するステップを含むことを特徴とする請求項１に記載の方法。
【請求項９】
前記１組のセキュリティアプリケーションによって自己完結型プロセス実行環境の前記複数のインスタンスの前記それぞれの仮想資源の走査を可能にする前記ステップは、自己完結型プロセス実行環境の前記複数のインスタンスのうちの１つと関連付けられた仮想ドライバ構造へのアクセス権を提供するステップを含むことを特徴とする請求項１に記載の方法。
【請求項１０】
有害なプロセスが、自己完結型プロセス実行環境の前記複数のインスタンスのうちの１つで検出された場合、
まだ非活動化されていない場合、前記インスタンスを非活動化するステップと、
前記インスタンスを修復するステップと、
前記修復されたインスタンスを、活動化するために前記コンピュータのホスト環境にロードするステップと
をさらに含むことを特徴とする請求項１に記載の方法。
【請求項１１】
望ましくないプロセスアクションによって生じた損害に対して、オペレーティングシステムを保護するためのコンピュータシステムにおける方法であって、
前記コンピュータシステムのインフラストラクチャのコアとなる諸態様（ｃｏｒｅ  ａｓｐｅｃｔｓ）から少なくとも部分的に隔離された前記オペレーティングシステム上で動作するカーネルを休止するステップと、
望ましくないプロセスアクションの兆候があるかどうかを判定するために前記カーネルを検査するステップであって、前記検査の少なくとも一部分は、前記少なくとも部分的に隔離されたオペレーティングシステムから独立している監視プロセスによって実施されるステップと、
前記少なくとも部分的に隔離されたオペレーティングシステム中に望ましくないプロセスアクションの兆候がある場合、前記望ましくないプロセスアクションを抑制する措置を講ずるステップと
を含むことを特徴とする方法。
【請求項１２】
前記望ましくないプロセスアクションを抑制する前記措置は、前記少なくとも部分的に隔離されたオペレーティングシステムを中断し、さらなるモニタリングを実施するステップを含むことを特徴とする請求項１１に記載の方法。
【請求項１３】
前記望ましくないプロセスアクションを抑制する前記措置は、前記少なくとも部分的に隔離されたオペレーティングシステム上で動作する選択プロセスを中断するステップことを含むことを特徴とする請求項１１に記載の方法。
【請求項１４】
前記望ましくないプロセスアクションを抑制する前記措置は、前記望ましくないプロセスアクションに関連するプロセスを終了させるステップを含むことを特徴とする請求項１１に記載の方法。
【請求項１５】
コンピュータシステムのコアコンポーネントに関連付けられた特権操作へのアクセス権を確保するためのコンピュータシステムであって、
プロセッサと、
前記プロセッサと通信する主メモリストレージと、
第２のストレージ装置と、
オペレーティングシステムと、
ホストシステムであって、
１つまたは複数の仮想マシンであり、前記１つまたは複数の仮想マシンのそれぞれが、前記仮想マシンに関連付けられた環境中で動作するとき、有害なプロセスが直接前記コアコンポーネントにアクセスできないように前記コンピュータシステムの前記コアコンポーネントから隔離されていること、また前記１つまたは複数の仮想マシンのうちのそれぞれ１つが、仮想オペレーティングシステムのインスタンス、仮想メモリへのアクセス権、および少なくとも１つの仮想ドライバを含む仮想マシンと、
セキュリティアプリケーションと組み合わせて前記１つまたは複数の仮想マシンをモニタリングするのに使用される少なくとも１つの監視プロセスであり、前記モニタリングは有害プロセスの可能な検出を含み、また前記少なくとも１つの監視プロセスおよびセキュリティアプリケーションは前記仮想マシンから隔離されている監視プロセスと
を含むホストシステムと
を備えることを特徴とするシステム。
【請求項１６】
前記モニタリングはさらに、前記仮想メモリのアドレス空間のモニタリングを含むことを特徴とする請求項１５に記載のシステム。
【請求項１７】
前記仮想マシンはさらに、１つまたは複数のエミュレートされた装置へのアクセス権を含み、前記モニタリングはさらに、前記エミュレートされた装置のモニタリングを含むことを特徴とする請求項１５に記載のシステム。
【請求項１８】
前記仮想マシンはさらに、エミュレートされたハードドライブへのアクセス権を含み、前記モニタリングはさらに、前記エミュレートされたハードドライブのモニタリングを含むことを特徴とする請求項１５に記載のシステム。
【請求項１９】
前記モニタリングはさらに、前記仮想マシン上で動作するプロセスへの入力、またはプロセスからの出力に対して保全性の検証を実施することを含むことを特徴とする請求項１５に記載のシステム。
【請求項２０】
前記仮想マシンはさらに、エミュレートされたハードドライブへのアクセス権を含み、前記モニタリングはさらに、前記仮想メモリまたは前記エミュレートされたハードドライブ上に常駐するファイルの保全性を検査することを含むことを特徴とする請求項１５に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書に記載の技術は、一般に、コンピュータオペレーティングシステムのセキュリティおよび保全性を維持することに関する。
【背景技術】
【０００２】
システムに損害を与え、混乱させるように特に設計されたソフトウェア（例えば、悪意のあるソフトウェアまたは「マルウェア（ｍａｌｗａｒｅ）」）がコンピュータシステムに侵入すると、コンピュータのオペレーティングシステムの保全性が、したがってコンピュータシステム全体が、大きく汚染されることになる。コンピュータユーザによるセキュリティ上の関心および要件は広い範囲にわたっているが、ウィルス、ワーム、およびトロイの木馬による脅威の増加を考えると、ほとんどのコンピュータユーザは、オペレーティングシステムプロセスやメモリプロセスなど、自分のコンピュータの重要なインフラストラクチャコンポーネントの保全性に関心がある。
【０００３】
マルウェアのいくつかのタイプは、コンピュータを攻撃するためにそのオペレーティングシステムの特権操作（ｐｒｉｖｉｌｅｇｅｄ  ｏｐｅｒａｔｉｏｎ）を使用する。このような特権操作は、通常、特権ユーザまたはプロセスによってのみアクセス可能な命令または命令の組からなる。例えば、マルウェアが何らかの方法で１つまたは複数のこれらの特権操作にアクセスできる場合、それは、オペレーティングシステムファイルの削除または破壊、メモリ内オペレーティングシステムコンポーネントの攻撃、ユーザファイルの削除、および他の多くの有害となる可能性を生ずる結果になり得る。いくつかの場合、悪意のないプロセスであっても、意図せずに特権操作にアクセスするという挙動を介してコンピュータシステムに損害を与えることがある。より一般的には、ほとんどどのプロセスも、単に特権ユーザの識別を装うだけで特権操作へのアクセス権を取得することができる。
【０００４】
普通、オペレーティングシステムは、プロセスをホストし、またそのプロセスにシステムサービスを提供するためのインフラストラクチャを提供する。オペレーティングシステムは、通常、システム資源に対して、アクセス制御や所有権を有効にするなどの基本的なセキュリティ保護を提供する。例えば、普通のオペレーティングシステム環境では、ホストファイアウォール、ぜい弱性評価、パッチ検出、ビヘイビアブロッキング（ｂｅｈａｖｉｏｒａｌ  ｂｌｏｃｋｉｎｇ）、ホストまたはネットワークの侵入検知、およびアンチウィルス技術などの保護セキュリティサービスはすべて、オペレーティングシステム中で固有のアプリケーションとして動作する。これらの対策にもかかわらず、オペレーティングシステムは、それが攻撃されているのかどうか正確に判定できないことがある。具体的には、悪意のあるコードまたは他のマルウェアがコンピュータシステムを攻撃し、十分な制御権を取得すると（例えば、管理者レベルのアクセス権）、攻撃されているかどうかオペレーティングシステムが判定するさらなる試みは、そのような試みに対する機構が破壊されている可能性もあるため、もはやすべて信用できなくなる。その理由は、オペレーティングシステムまたはそれを保護するために用いられるアプリケーションによって使用されるメモリ内またはディスク上の構造のいずれも、事実上、その悪意のあるコードにより変更可能だからである。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
コンピュータシステムおよびそのオペレーティングシステムを保護するための一手法は、アンチウィルスソフトウェア、パーソナルファイアウォール、および侵入検知システムなどの１組のセキュリティアプリケーションをインストールすることを含む。コンピュータネットワークや、アレイ中に配置された１群のコンピュータシステムなど複数のコンピュータシステムを有するシステムでは、個々のコンピュータシステムはそれぞれ、それ自体の１組のセキュリティアプリケーションを動作させる。これは、ネットワークまたはアレイにおける各コンピュータシステムが、それ自体のネットワーク接続、それ自体の中央処理装置、それ自体のオペレーティングシステムのインスタンスなどを有する物理的に別個のエンティティであるからである。コンピュータシステムおよびそのオペレーティングシステムが汚染されるのを阻止するために、このようなセキュリティアプリケーションを各コンピュータシステムにインストールすることができるが、このようなセキュリティアプリケーションは、コンピュータシステム上で動作する他の任意のアプリケーションと同様に攻撃にぜい弱であるため、コンピュータシステムを保護するのには役立たない。
【０００６】
コンピュータシステムおよびそのオペレーティングシステムを保護するための他の手法では、メモリなどコンピュータシステムの諸態様は、そのコンピュータシステムの諸態様を隔離することによって保護される。
【課題を解決するための手段】
【０００７】
本明細書に記載のコンピュータセキュリティ技法は、ホストシステム上で動作する複数の論理的に隔離された仮想マシンをモニタし、保護し、修復するための単一のセキュリティプロセス（または１組のセキュリティプロセス）の使用を含む様々なセキュリティ機能を提供する。いくつかの実施形態では、本セキュリティ技法は、コンピュータ上で実行される１つまたは複数の自己完結型（ｓｅｌｆ−ｃｏｎｔａｉｎｅｄ）オペレーティング環境インスタンスにセキュリティを提供する。本セキュリティ技法は、監視プロセスによって制御できるセキュリティアプリケーションの実施を含むことができる。そのセキュリティアプリケーションは、１つまたは複数の仮想マシンをモニタすることができる。そのモニタリングは、セキュリティアプリケーションによって仮想マシンをオフラインで走査すること、各仮想マシン上で動作するエージェントセキュリティプロセスを実施することなどを含む様々な技法を使用して実施することができる。
【０００８】
いくつかの実施形態では、１組のセキュリティアプリケーションと監視プロセスは共に、１つまたは複数の自己完結型オペレーティング環境を実行するためのプラットフォームも提供できるコンピュータのホストシステム上で動作することができる。そのセキュリティ技法は、１つまたは複数の自己完結型オペレーティング環境中で動作するプロセス、およびその自己完結型オペレーティング環境外のコンピュータ上で動作するプロセスを保護することができる。
【発明を実施するための最良の形態】
【０００９】
図面中、同じ参照番号は、同一のまたは実質的に同様のエレメントもしくは動作を識別する。特定のエレメントもしくは動作に関する議論をうまく進めるために、参照番号中の最上位の桁は、そのエレメントが最初に導入された図番を指すものとする（例えば、エレメント２０４は、図２に関して最初に導入され論じられている）。
【００１０】
本発明を、次に、様々な実施形態に関して説明する。以下の説明は、本発明のそれらの実施形態の十分な理解のため、およびその実施可能な記述のために特有な詳細を提供する。しかし、当業者であれば、本発明は、その詳細な説明なしに実施できることが理解されよう。他の例では、本発明の諸実施形態の説明を不必要にあいまいにすることのないように、周知の構造および機能は図示しておらず、詳細に説明していない。
【００１１】
提示された本説明で使用される用語は、それが本発明のある特有な実施形態の詳細な説明と共に使用されていたとしても、その最も広い合理的な意味に解釈されるものとする。いくつかの用語は以下で強調されることもあり得るが、制限された意味に解釈されるように意図されている用語は、この詳細な説明セクションで示すように明示的かつ具体的に定義されよう。
【００１２】
Ｉ．概要  
本明細書で述べるコンピュータセキュリティ技法は、ホストシステム上で動作する複数の論理的に隔離された仮想マシンをモニタし、保護し、修復するための単一のセキュリティプロセス（または１組のセキュリティプロセス）の使用を含む様々なセキュリティ機能を提供する。
【００１３】
いくつかの実施形態では、物理マシン上で実行されるホストシステムは、オペレーティングシステムおよびアプリケーションをその上で実行できる仮想マシンを提供する。多くのプロセスを仮想マシン上で実行できるが、一般に、仮想マシン上で実行されるオペレーティングシステムおよびアプリケーションは、仮想マシンを提供するホストシステムによって許可された場合、または仮想マシンに割り当てられたゲストによって指定された場合を除き、資源（例えば、メモリおよび装置）にアクセスすることはできない。
【００１４】
仮想マシンがマルウェアを実行する場合、どんな損害も、仮想マシンのオペレーティングシステム、アプリケーション、およびアクセス可能な資源に限定される。このように、コンピュータは、実質的に仮想マシン上で実行されるマルウェアの影響から保護されることになる。
【００１５】
いくつかの実施形態では、ホストシステムは、仮想マシン上で実行されるオペレーティングシステムおよびアプリケーションが、物理マシンの資源またはオペレーティングシステムへの望ましくない変更を起こし得る特権操作を実施することを阻止する。例えば、仮想マシン上で実行されるオペレーティングシステムは、仮想マシン内では管理者特権が与えられ得るが、物理マシン内では与えられない。
【００１６】
いくつかの実施形態では、ホストシステムは、事前にセキュリティプロセスを実施する。このようなセキュリティプロセスの実施例には、ホストファイアウォールモニタ、ぜい弱性評価モニタ、パッチ検出モニタ、ビヘイビアブロッキングモニタ、ホストもしくはネットワーク侵入検知モニタ、およびアンチウィルス技術が含まれる。一般に、本セキュリティプロセスは、仮想マシン、ホストシステム、さらに、物理マシンのセキュリティを高めるように構成される。
【００１７】
いくつかの実施形態では、セキュリティプロセスは、ホストシステム上で動作する監視プロセスとして具体化され、またはその監視プロセス（ｓｕｐｅｒｖｉｓｏｒｙ）によって制御される。監視プロセスは、セキュリティプロセスを可能にし、あるいは（例えば、メモリ内データ構造またはオブジェクトモデルの形で）仮想メモリ、仮想ディスク、仮想ネットワークアダプタ、仮想ドライバなどを含む仮想マシンのコンポーネントに対する何らかのアクセスレベルおよび可視性をセキュリティプロセスに提供することができる。例えば、監視プロセスにより、セキュリティプロセスは、マルウェアまたはセキュリティ違反（ｂｒｅａｃｈ）の兆候に対して、メモリ内のデータ構造を走査し、あるいは仮想マシンの仮想ハードディスクに対応するディスク上に記憶されたデータ構造を走査することができる。さらに（あるいは、代替的に）、ホストシステムによりサポートされたオブジェクトモデルが提供されたとき、監視プロセスは、仮想マシンの状態（メモリ状態または通信状態など）についての情報をホストシステムに戻すようにすることができる。一般に、ホストシステムおよび監視プロセスは、何らかの隔離レベルを提供するので、本セキュリティプロセスは、その仮想マシン中で実行されている有害なプログラムにまだアクセス不能状態のままで仮想マシンのセキュリティを監視し、モニタすることができる。この方法によると、本セキュリティプロセスは、それがモニタリングする必要のあるプログラムにより改ざんされまたは無効にされることから守られる。
【００１８】
いくつかの実施形態では、本セキュリティプロセスは、仮想マシンのモニタを実行することが停止されかつ仮想マシンのメモリ、装置、およびＣＰＵ状態に関するすべての情報が物理ファイルに書き出されたセーブ状態にある仮想マシンをモニタし、修復するのに使用することができる。本セキュリティプロセスはまた、通常、仮想マシンマネジャにより起動された休止状態にある仮想マシンをモニタし修復するのに使用することもできる。その休止状態中は、仮想マシンは実行を停止するが、次の命令および処理をいつでも再開する用意のある状態にとどまる。休止またはセーブ状態のいずれのシナリオであっても、仮想マシン内の仮想オペレーティングシステムはその状態変化に関する知識は何も有していない。同様に、本セキュリティプロセスは、仮想マシンがホストシステムにロードされる前に、それを走査し、修復しまたはクリーンアップする能力を有することができる。
【００１９】
いくつかの実施形態では、ホストシステムは、仮想マシンのハードディスクを、それが物理ディスクであるかのようにマウント（ｍｏｕｎｔ）し、次いで、（他の任意のマウントされたディスクのように）ブロックレベルで仮想ハードディスクを走査することができる。例えば、ホストシステムは、物理マシンのオペレーティングシステムにロードできるディスクドライバを使用することができる。次いで、そのディスクドライバは、その仮想ハードディスクを解釈し、ローカルに接続されたディスクとしてそれをホストシステムに提示する。
【００２０】
仮想マシンを監視する他の手法は、各仮想マシン中で「エージェント」セキュリティプロセスを動作させることである。この手法では、エージェントセキュリティプロセスは、ホストシステム上の主セキュリティプロセスと関連付けられる。エージェントセキュリティプロセスは、主セキュリティプロセスへの通信チャネルを開き、仮想マシンによる攻撃の発見およびその攻撃からの回復を支援する。そのシナリオは、そのエージェントセキュリティプロセスが攻撃中に汚染される危険を含み得るが、エージェントはなお、主セキュリティプロセスを介して利用可能な外部の回復オプションを有することができる。いくつかのシナリオでは（例えば、ハイパーバイザの使用を含むシナリオ）、エージェントは、それが実際にモニタしている仮想マシンとは異なる仮想マシン中で動作することができる。
【００２１】
いくつかの実施形態では、ホストシステムは、定期的に各仮想マシンの状態全体のスナップショットをとることができる。理論的には、そのスナップショットは、性能のわずかなオーバーヘッドで瞬間的に実施することもできる。しかし、その技法による多くのバリエーションが可能である。セキュリティプロセスが仮想マシン内で異常を検出した場合（例えば、オペレーティングシステムをオーバーライトするマルウェア、またはそれ自体をメモリ内プログラムとして示すマルウェア）、次にホストシステムは、仮想マシンの状態を最新のスナップショットの状態に復元させ、その異常の再発を阻止するように処置をし、仮想マシンを再起動することができる。
【００２２】
ＩＩ．代表的なシステム  
図１〜５および以下の議論は、本発明を実施することができる適切な環境の概略的で、全体的な説明を提供する。必須ではないが、本発明の諸態様は、汎用コンピュータ（例えば、サーバコンピュータ、無線装置、またはパーソナル／ラップトップコンピュータ）によって実行されるルーチンなどのコンピュータ実行可能命令の一般的なコンテキストで記述される。当業者であれば、本発明は、インターネット機器、ハンドヘルド装置（ＰＤＡ（ｐｅｒｓｏｎａｌ  ｄｉｇｉｔａｌ  ａｓｓｉｓｔａｎｔ：携帯情報端末）を含む）、ウェアラブルコンピュータ、あらゆる種類のセルラもしくはモバイル電話、組込み型コンピュータ（車両に結合されたものを含む）、マルチプロセッサシステム、マイクロプロセッサベースのもしくはプログラム可能な家庭用電子機器、セットトップボックス、ネットワークＰＣ、ミニコンピュータ、メインフレームコンピュータなどを含む、他の通信、データ処理、またはコンピュータシステムコンフィギュレーションと共に実施できることが理解されよう。
【００２３】
本発明の諸態様は、本明細書で詳細に説明する１つまたは複数のコンピュータ実行可能命令を実施するように特にプログラムされ、構成され、または構築された特殊目的のコンピュータまたはデータプロセッサ中で実施することができる。本発明の諸態様はまた、タスクまたはモジュールが通信ネットワークを介してリンクされた遠隔処理装置によって実施される分散コンピューティング環境中で実施することもできる。分散コンピューティング環境中では、プログラムモジュールが、ローカルと遠隔の両方のメモリストレージ装置中に位置することができる。
【００２４】
本発明の諸態様は、半導体メモリ、ナノテクノロジメモリ、有機または光メモリ、または他の可搬型データ記憶媒体上のマイクロコードとして、磁気的もしくは光学的に読取り可能なコンピュータディスクを含むコンピュータ可読媒体上に記憶されまたは配布され得る。実際に、コンピュータで実施される命令、データ構造、画面表示、および本発明の諸態様下の他のデータは、インターネットまたは他のネットワーク（無線ネットワークを含む）を介して、伝播媒体（例えば、電磁波、音波など）上の伝播信号上で、ある時間期間にわたって配布され、あるいは、任意のアナログもしくはデジタルネットワーク（パケット交換、回路交換、または他の方式）で提供することができる。当業者であれば、本発明の部分は、サーバコンピュータ上に常駐するが、一方、その対応する部分は移動体装置などのクライアントコンピュータ上にも常駐することが理解されよう。
【００２５】
図１を参照すると、本コンピュータセキュリティ技法を実施できるコンピュータシステム（物理マシン）１００は、様々なコンポーネントを提供する。そのコンポーネントは、標準もしくは汎用のコンピュータオペレーティングシステム１０４に加えて、それと組み合わせて、またはそれに代えてコンピュータシステム１００上で動作するように構成されたホストシステム１０２を含む。いくつかの実施形態では、ホストシステム１０２は、固有のかつ／または特権化された監視およびセキュリティ機能以外のものにはすべてアクセスできないように構成することができる。ホストシステム１０２は、メモリ管理ユニット（ＭＭＵ）１０８を有するプロセッサ１０６、ディスク１１０、メモリ１１２、通信サブシステム１１４、および１つまたは複数のシステムドライバ１１６など１つまたは複数のコンピュータ資源とインターフェースをとることができる。
【００２６】
いくつかの実施形態では、１つまたは複数の仮想マシン１１８は、ホストシステム１０２の制御下で動作し、ホストシステム１０２に従属することができる。仮想マシン１１８はそれぞれ、プロセッサおよび他のマシン資源の仮想化およびエミュレーションを可能にするコンポーネントの集合体から構成することができる。例えば、例示の実施形態に示すように、仮想マシン１１８のそれぞれは、仮想ネットワークアダプタ１１９、（物理マシンのメモリ１１２の割り振られた部分で構成できる）仮想メモリ１２０、仮想ディスク１２２、および非仮想システムドライバ１１６の仮想インスタンスをそれぞれが表す１つまたは複数の仮想ドライバ１２４を含む、１組のエミュレートされた資源へのアクセス権を有する。仮想オペレーティングシステムのインスタンス１２６は、これらの各仮想マシン１１８上で動作する。いくつかの実施形態では、仮想オペレーティングシステムインスタンス１２６は、物理マシンのオペレーティングシステム１０４の全部または部分的な複製とすることができる。
【００２７】
一般に、仮想マシン１１８は、様々なページレベルの保護を提供するためにＭＭＵ１０８に依存することができる。一般に、各仮想マシン上で動作するアプリケーションまたはプロセス１２９は、それぞれの仮想マシンのエミュレートされた資源（例えば、仮想メモリ１２０、仮想ディスク１２２、仮想ドライバ１２４、オペレーティングシステム１２６など）だけを使用する。このようなアプリケーションまたはプロセス１２９は、「ゲスト（ｇｕｅｓｔ）」コードと呼ばれることがある。エミュレートされた資源は、ホストシステム１０２上の標準の保護機構に従っており、それは、明示的にそうするように命令されない限り、ゲストコードに対してどんなホストシステムのユーザデータも公開しないという意味で信用できると考えられる。
【００２８】
いくつかの実施形態では、エミュレートされた資源は、ホストシステム１０２と仮想マシン１１８上で動作しているゲストコードとの間で、入出力ポートアクセス、メモリマップドレジスタ、ＤＭＡ（ｄｉｒｅｃｔ  ｍｅｍｏｒｙ  ａｃｃｅｓｓ）、割り込みなどのいくつかの統合技法を用いてデータを交換することができる。他のデータ交換技法は、クリップボードの共用、ファイルのドラッグアンドドロップ、時間同期化などを含む。このようなデータ交換技法をサポートするために、仮想マシン１１８は、非同期ゲストイベント、同期ホストコール、ゲストコードとホストシステム１０２の間のデータ転送、統合サービスレジストリなどを含むいくつかの機能を提供することができる。
【００２９】
任意のいくつかの可能な技法を使用してホストシステム１０２上で、仮想マシン１１８を作成または開始することができる。例えば、一実施形態では、ホストシステム１０２は、仮想マシンのインスタンスを作成し、起動することができ、また作成時に仮想マシンのためのパラメータを構成することができる。いくつかの実施形態では、ホストシステム１０２は、（おそらく共用の）ディスク１１０上にある既存の仮想マシンのイメージの位置を突き止め、新しい仮想マシンインスタンスとしてそのイメージをロードすることができる。いくつかの場合では、そのローディングは、仮想マシンのインスタンスを「インポートする」と呼ばれ、データをあるアプリケーションから他のアプリケーションへ取り込む「インポート」機能に何らかの意味で類似している。
【００３０】
いくつかの実施形態では、１組の１つまたは複数の監視プロセス１２８がホストシステム１０２上で動作する。いくつかの実施形態では、１つまたは複数の監視プロセス１２８が、仮想オペレーティングシステムのインスタンス１２６への完全なもしくは部分的なアクセス権を有することができ、各仮想マシン１１８にセキュリティサービスを提供することができる。いくつかの実施形態では、監視プロセス１２８はまた、デジタル著作権管理（ＤＲＭ）およびライセンシングコントロールなどの活動を処理することができる。この構成によると、仮想マシン１１８上で動作するどんなマルウェアであっても各仮想マシンの外の資源にアクセスできないので、監視プロセス１２８は、一般に、そのマルウェアによる破壊から安全である。
【００３１】
いくつかの実施形態では、１つまたは複数の監視プロセス１２８は、ホストシステム１０２上の仮想マシン１１８のすべてを保護しかつ／または監視することができる１組のセキュリティアプリケーション（例えば、アンチウィルスソフトウェア、パーソナルファイアウォール、侵入検知システムなど））を制御する。例えば、１つまたは複数の監視プロセスは、１組のセキュリティアプリケーションによって、複数の仮想マシンのオフライン走査を行うようにすることができる。オフライン走査は、仮想マシンの仮想資源がコンピュータシステム（物理マシン）上に仮想オブジェクトとして常駐するとき、そのそれぞれを１組のセキュリティアプリケーションが認識するように構成することを含むことができる。この方法では、１組のセキュリティアプリケーションは、（例えば、仮想マシンのデータ構造の内部フォーマットの知識を用いて）仮想マシンの外からそれらの仮想資源を調べる（走査する）ことができる。
【００３２】
「セキュリティアプリケーション」および「監視プロセス」の用語が本明細書で使用されているが、このような概念はアプリケーションまたはプロセスに限定されるものではない。そうではなくて、仮想マシンおよび／またはその資源へのサービスを提供するように構成されたユーティリティまたは機能であれば、本発明の範囲を逸脱せずに所望の結果を達成するためにホストシステム上で実施することができる。このようなユーティリティまたは機能のいくつかの実施例は、アンチアドウェア（ａｎｔｉ−ａｄｗａｒｅ）ユーティリティ、アンチスパイウェア（ａｎｔｉ−ｓｐｙｗａｒｅ）ユーティリティ、ディスクデフラグメンタ（ｄｅｆｒａｇｍｅｎｔｅｒ）などを含む。
【００３３】
仮想マシン資源のオフライン走査は、仮想マシンが動作中に、または休眠中（例えば、休止もしくはセーブ状態中）に行うことができる。例えば、既存の仮想マシンイメージの位置が突き止められホストシステム１０２にロードすることにより仮想マシンを作成できる状態では、オフライン走査（および任意の必要なクリーンアップもしくは修復）を仮想マシンインスタンスが「インポート」される前に行うことも可能である。休止またはセーブ状態中に走査できる仮想マシン資源は、仮想ハードディスク、仮想マシンメモリコンテンツ、仮想通信ポートバッファ構造などを含む。いくつかの実装形態では、休止した仮想マシンのメモリにアクセスすることはできない。しかし、仮想マシンメモリは、なお、仮想マシンがセーブ状態にある間に、または仮想マシンのスナップショットを介してアクセス可能である。
【００３４】
図２を参照すると、図１の様々なコンポーネントを例示するオフライン走査コンフィギュレーション２００の一実施例が示されている。そのコンフィギュレーションでは、セキュリティアプリケーション２０２および任意選択の監視プロセス１２８がホストシステム１０２上に常駐している。監視プロセス１２８によって少なくとも部分的に制御され得るセキュリティアプリケーション２０２は、仮想マシン１１８の資源を、セキュリティ違反の兆候に対して走査することができる１つのデータ構造または１組のデータ構造として眺める。セキュリティアプリケーション２０２が、生の形の、仮想マシン１１８の資源にアクセスし、セキュリティ違反を正確に検出できるようにするために、その資源と関連付けられたデータ構造の意味およびコンフィギュレーションについての情報を利用することができる。いくつかの実施形態では、この情報は、データ構造の意味およびコンフィギュレーションにおける意図的な変更を反映するために更新される。
【００３５】
例えば、図２のセキュリティアプリケーション２０２は、仮想マシン１１８を、１つまたは複数の既知のウィルスまたはワームに感染しているかどうか判定するために走査するアンチウィルス走査エンジンとすることができる。走査プロセスを開始するために、アンチウィルスエンジン２０２は、現在のシグネチャ定義ファイルをそのプログラムメモリにロードする。例えば、そのシグネチャ定義ファイルは、仮想マシンの仮想ハードディスク構造の意味およびコンフィギュレーションを定義でき、したがって、仮想マシンのハードディスクをその現在の状態で走査したときアンチウィルスエンジンに対して基準点を提供する。
【００３６】
次に、アンチウィルスエンジンは、走査により仮想マシンの仮想ハードディスクに関係する物理マシンのハードディスクの一部を読み取るようにする。この方法では、アンチウィルスエンジンは、仮想ハードディスクのコンテンツを効果的に読み取り、悪意のあるソフトウェア検出技術分野の当業者により使用される方法および技法を用いて、そのコンテンツ（例えば、コンテンツオブジェクト）を既知の悪意のあるコンテンツのリストと比較する。この実施例では、仮想ハードディスク内のコンテンツオブジェクトは、ファイル、またはＭｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ（登録商標）のシステムレジストリからの鍵などオペレーティングシステムによって処理される他のオブジェクト、あるいは悪意のあるもしくは望ましくないソフトウェアのインスタンスの一部として識別され得るディスク上の他のオブジェクトであり得る。悪意のあるソフトウェアを発見すると、アンチウィルスエンジンは、どの攻撃しているオブジェクトも除去するようにし、またはオブジェクト内に位置する感染を除去するように試みることができる。
【００３７】
図３Ａは、オフライン走査コンフィギュレーション３００の第２の実施例を提供する。このコンフィギュレーションでは、監視プロセス１２８によってサポートされている仮想マシンオブジェクトインターフェース３０２は、セキュリティアプリケーション３０４がそれを介して仮想マシンの資源にアクセスできる一様なインターフェースを提供する。その仮想マシンオブジェクトインターフェース３０２は、仮想マシンの間で変わり得る仮想マシンデータ構造を、走査および他の活動のために、セキュリティアプリケーション３０４によりアクセス可能な共通のフォーマットにマップすることができる。したがって、セキュリティアプリケーション３０４は、その共通のフォーマットにアクセスするように開発されるだけでよく、仮想マシンが有する可能性のあるすべてのフォーマット変化に対応する必要はない。例えば、ホストシステム１０２は、（ディスク状態、メモリ状態または通信状態などの）仮想マシン１１８の状態についての情報を発見することができ、したがって、セキュリティアプリケーション３０４は、セキュリティ違反または他の問題がないかそれらを監視することができる。さらに、仮想マシンオブジェクトインターフェース３０２は、複数のセキュリティアプリケーションによって使用できる機能を提供することができる。例えば、仮想マシンオブジェクトインターフェース３０２は、他のセキュリティプロセスが、ワームペイロードなどの悪意のあるコンテンツを有するネットワークパケットの着信がないか仮想マシンの仮想ネットワークアダプタを走査できるようにする機能を提供することもできる。
【００３８】
このコンフィギュレーションは、仮想マシンの設計者およびセキュリティアプリケーションの設計者に何らかの柔軟性を提供する。例えば、仮想マシンの設計者は、セキュリティアプリケーションの設計者に影響を与えずに、仮想マシンのデータ構造を変更することができる。したがって、セキュリティアプリケーション３０４は、仮想マシンが有する可能性のあるすべてのフォーマット変化ではなく、その共通のフォーマットにアクセスするようにだけ開発すればよい。
【００３９】
いくつかの実施形態では、オフライン走査技法は、セキュリティアプリケーションが仮想マシンの現在の状態として認識しているものと、現在の仮想マシンの状態との同期を容易にとることができ、したがって、より正確で一貫性のある走査機能を提供することができる。この同期化は、仮想マシンの状態が急速に変化している場合に有益であり得る。
【００４０】
図３Ｂを参照すると、この同期化が達成できる１つの方法は、ほぼ実時間の仮想マシンの自己一貫性のあるビューを提供するエージェントプロセス３２２を動作させることによるものである。仮想マシン１１８上で動作できるエージェントプロセス３２２は、次いで、仮想マシンのそのビューを仮想マシンオブジェクトインターフェース３０２にエキスポートし、次いでそのインターフェースは、適切な情報を監視プロセスおよび／またはセキュリティアプリケーションに提供することができる。いくつかの実施形態では、エージェントプロセス３２２は、仮想マシンオブジェクトインターフェース３０２で使用できるＡＰＩ（ａｐｐｌｉｃａｔｉｏｎ  ｐｒｏｇｒａｍｍｉｎｇ  ｉｎｔｅｒｆａｃｅ）を提供することができる。（代替として、セキュリティアプリケーションは、仮想マシンオブジェクトインターフェース３０２によって使用できる同様のＡＰＩを提供することもできる。）
【００４１】
この同期化が達成できる代替の方法は、仮想マシン１１８にその状態の一定のスナップショットを作成させ、そのスナップショットをメモリまたはディスクに記憶させることである。このようなスナップショットは、数秒「古い（ｓｔａｌｅ）」ものかもしれないが、それにもかかわらず自己一貫性のものである。
【００４２】
図３Ｃを参照すると、仮想マシンのセキュリティ走査を提供する代替の技法は、セキュリティアプリケーション３３６および監視プロセス３３４が（直接ホストシステム１０２上ではなく）指定された仮想マシン３３２上で動作するように構成されたシステム３３０である。セキュリティアプリケーション３３６および監視プロセス３３４は、次いで、他の仮想マシン１１８をモニタしかつ／または走査して問題を検出する。この方法では、指定された仮想マシン３３２（セキュリティのモニタリング専用とすることができる）は、攻撃から保護されたままでいることができる。
【００４３】
ＩＩＩ．システムフロー  
図４から図８は、図１のシステム内で行われるプロセスを示す代表的な流れ図である。これらの流れ図は、すべての機能またはデータ交換を示しておらず、そうではなくて、本システム下で交換されたコマンドおよびデータの理解を提供する。当業者であれば、いくつかの機能またはコマンド／データ交換を反復し、変更し、削除し、または補うことができ、またここに示していない他の態様を容易に実施できることが理解されよう。
【００４４】
図４を参照すると、例えば、図１の監視プロセスによって実施される監視ルーチン４００は、仮想マシン上で動作するプロセスまたは仮想オペレーティングシステムをモニタし、変更し、かつ／または構成するために、ホストシステム上で（またはシステム外で）動作することができる。代替として、監視ルーチン４００は、強化された（しかし仮想ではない）オペレーティングシステム上で動作するプロセスをモニタし、変更し、かつ／または構成することができる。
【００４５】
ブロック４０１で、ルーチン４００は、仮想マシンのオペレーティングシステムを休止する。判断ブロック４０２で、ルーチン４００は、仮想マシン内で生ずる有害な活動（例えば、ならず者（ｒｏｇｕｅ）プロセス）から生じ得る変化がないかを検査する。例えば、ルーチン４００は、仮想マシンのオペレーティングシステムカーネルの一部を走査して問題がないかどうか検査することができる。仮想オペレーティングシステムカーネルをモニタすることの代替として（またはそれに加えて）、ルーチン４００は、仮想（または強化された）オペレーティングシステムに接続された他の側面を監視することもできる。例えば、ルーチン４００は、仮想アドレス空間をモニタし、エミュレートされた装置をモニタし、エミュレートされたハードドライブをモニタし、保全性検証を実施し（例えば、チェックサムを実施し）、仮想ディスクまたはメモリに常駐するファイルの保全性を検査することなどを実施できる。
【００４６】
判断ブロック４０２で、ルーチン４００が有害な活動から生ずる可能性のある変化を検出しない場合、ルーチン４００は、ブロック４０４に進み、終了前に仮想オペレーティングシステムカーネルを再起動する。しかしいくつかの実施形態では（図示せず）、ルーチン４００は、（ある時間枠の経過後に）ブロック４０１にループバックして、（仮想オペレーティングシステムのインスタンスが終了されていない限り）休止および検査ステップを再度実施することができる。しかし、判断ブロック４０２で、ルーチン４００が有害な活動から生ずる可能性のある変化を検出した場合、ブロック４０３に進み、ルーチンは、抑制（ｃｏｎｔａｉｎｍｅｎｔ）アクションを開始する。例示的な抑制アクションは、ゲストオペレーティングシステムを中断して追加の走査を行うこと、選択プロセスを中断すること、マルウェアを除去すること、および仮想オペレーティングシステムを再フォーマットしていかなる損害も修復することなどの活動を含むことができ、「スナップショット」をとった後に仮想マシンを遮断し、それによって、仮想マシン環境が、仮想マシンの再起動後などにほぼ復元できるようにする。
【００４７】
図５は、ホストシステム上で動作する仮想マシンのオフライン走査および修復を実施するように構成された１組のセキュリティアプリケーション（例えば、アンチウィルスソフトウェア）を制御する監視プロセスによって実施できるオフライン走査ルーチン５００の一実施例を提供する。ブロック５０１で、ルーチン５００は、動作中の仮想マシンの現在の状態の定期的なスナップショットを取得する。ブロック５０２で、ルーチンは、取得された定期的なスナップショットを走査する。判断ブロック５０３で、問題が検出された場合、ルーチンはブロック５０４に進み、ルーチンは動作中の仮想マシンに問題を通知し、あるいは問題が生ずる前の最後のセーブ状態にロールバックするように仮想マシンに命令する。判断ブロック５０３で、ルーチン５００が問題を検出しなかった場合は、ルーチンはブロック５０１にループバックして次の期間のスナップショットを取得する。
【００４８】
図６は、ホストシステム上で動作する複数の仮想マシンのオフライン走査および修復を実施するように構成された１組のセキュリティアプリケーション（例えば、アンチウィルスソフトウェア）を制御する監視プロセスによって実施できるオフライン走査ルーチン６００の一実施例を提供する。例えば、ルーチン６００は、マルウェアの感染により使用不可となった仮想マシンを検出し回復させるのに使用することができる。ブロック６０１で、ルーチン６００は、物理ディスクをマウントするのに類似した方法で、仮想マシンの次の構造またはコンポーネントをホストシステムにマウントする。この方法では、その構造またはコンポーネントは、外部にある走査オブジェクトとして処理されずに、コンピュータのオペレーティングシステムの一部として組み込まれる。ホストシステムの観点からは、その構造またはコンポーネントをエミュレートされたコンポーネントとして見ることができる。いくつかの実施形態では、仮想マシンの構造またはコンポーネントをオブジェクト化することができ、それによって、ホストシステムは、１組のセキュリティアプリケーションがそれらを走査するためのインターフェースを提供できるようになる。例えば、メモリ内のマルウェアを走査するために、仮想マシンのメモリをオブジェクト化することができる。
【００４９】
ブロック６０２で、１組のセキュリティアプリケーションは、仮想ハードドライブ構造（またはメモリ内構造など）を走査する。判断ブロック６０３で、走査した構造が汚染されていた場合、ルーチン６００は、ブロック６０４に進み、セキュリティアプリケーションがその仮想ハードドライブ構造（またはメモリ内構造など）を修復する。しかし、判断ブロック６０３で、走査したコンポーネントが汚染されていない場合、ルーチンは判断ブロック６０５に進む。
【００５０】
判断ブロック６０５で、仮想マシンの構造またはコンポーネントがすべて走査されている場合、そのルーチンは終了する。そうではない場合、ルーチンはブロック６０１にループバックして、次の仮想マシン構造またはコンポーネントをマウントする。
【００５１】
いくつかの実施形態では、ルーチン６００は、各仮想マシンハードドライブにおける走査間で生ずる変化を追跡する最適化技法を組み合わせて使用することもできる。この方法では、ルーチン６００は、最後の走査からの変化だけを走査すればよく、したがって走査における効率が改善される。例えば、その最適化ルーチンは、ブロックレベルで、仮想マシンのハードドライブの変化を追跡することもできる。ブロックレベルにおける変化は、次いで、走査目的に合わせて（典型的なアンチウィルスソフトウェアはファイルレベルで走査するため）ファイルレベルでの変化へとマップすることができる。代替的には、マスタファイルテーブル構造に対する変更を注目することによって、その変化を追跡することも可能である。それには、ホストシステムで前のマスタファイルテーブルのチェックポイントを記憶することが含まれ得る。
【００５２】
図７は、ホストシステム上で動作する複数の仮想マシンのオフライン走査および修復を実施するように構成された１組のセキュリティアプリケーション（例えば、アンチウィルスソフトウェア）を制御する監視プロセスによって実施できるオフライン走査ルーチン７００の一実施例を提供する。例えば、ルーチン７００は、マルウェアの感染により使用不可となった仮想マシンを検出し、回復させるのに使用することができる。仮想マシンの構造またはコンポーネントを走査前にマウントする図６のオフライン走査ルーチンと反対に、図７のルーチンはその構造またはコンポーネントを外部から走査する。ブロック７０１で、ルーチン７００は、仮想マシンの次の構造またはコンポーネントを走査する。ホストシステムの観点からは、その構造またはコンポーネントをエミュレートされたコンポーネントとして見ることができる。いくつかの実施形態では、仮想マシンの構造またはコンポーネントをオブジェクト化することができ、それによって、１組のセキュリティアプリケーションでそれらを走査するためのインターフェースを、ホストシステムが提供できるようになる。例えば、メモリ内のマルウェアを走査するために、仮想マシンのメモリをオブジェクト化することができる。
【００５３】
判断ブロック７０２で、走査した構造が汚染されていた場合、ルーチン７００は、ブロック７０３に進み、セキュリティアプリケーションは、仮想ハードドライブ構造（またはメモリ内構造）を修復する。しかし、判断ブロック７０２で、走査したコンポーネントが、汚染されていない場合、ルーチンは判断ブロック７０４に進む。判断ブロック７０４で、仮想マシンの構造またはコンポーネントがすべて走査されている場合、ルーチンは終了する。そうでない場合は、ルーチンはブロック７０１にループバックして、次の仮想マシン構造またはコンポーネントをマウントする。
【００５４】
図８は、ホストシステム上で動作する複数の仮想マシンのオフライン走査および修復を実施するように構成された１組のセキュリティアプリケーション（例えば、アンチウィルスソフトウェア）を制御する監視プロセスによって実施できるオフライン走査ルーチン８００の第２の実施例を提供する流れ図である。ルーチン８００で、図３Ｂのエージェントプロセス３２２などのエージェントプロセスは、走査されているときの仮想マシンの実際の状態と、セキュリティアプリケーションが認識している仮想マシンの状態との同期をとることを可能にする。
【００５５】
ブロック８０１で、ルーチン８００は、（ホストシステム上でまたは仮想マシンオブジェクトインターフェース上で動作する図３Ｂのセキュリティアプリケーション３０４などの）セキュリティアプリケーションとエージェントプロセスとの間で、何らかのマシン間通信インターフェースを介して通信を確立する。ブロック８０２で、ルーチン８００は、仮想マシンのメモリへのアクセス権を確立する。例えば、ホストシステム上で動作するエージェントプロセスは、仮想マシンのアプリケーションメモリに対応する仮想バッファへのアクセス権を提供することができる。ルーチンはブロック８０３に進み、セキュリティアプリケーションは、セキュリティ問題の兆候がないかメモリを走査する。例えば、セキュリティアプリケーションがアンチウィルス走査エンジンである場合、そのアンチウィルス走査エンジンは、周知の悪意のあるソフトウェアのシグネチャにマッチするコードパターンを求めてメモリを走査することができる。判断ブロック８０４で、仮想マシンの任意の構造またはコンポーネントが汚染されていた場合、ルーチン８００はブロック８０５に進み、セキュリティアプリケーションおよび／またはエージェントプロセスは、コンピュータメモリをクリーンアップする。代替的には、セキュリティアプリケーションは、エージェントプロセスに仮想マシンに対する修正アクションをとるように知らせることもできる。しかし、判断ブロック８０４で、構造またはコンポーネントが何も汚染されていない場合、ルーチンは終了する。
【００５６】
ＩＶ．結論  
コンテキストが他に明確に要求しない限り、本説明および特許請求の範囲を通して、用語「含む／備える（ｃｏｍｐｒｉｓｅ、ｃｏｍｐｒｉｓｉｎｇ）」などは、排他的または網羅的な意味とは反対の包括的な意味に解釈されるべきである。すなわち、「含むが、それだけに限らない」という意味である。さらに、用語「本明細書による（ｈｅｒｅｉｎ）」、「上記の（ａｂｏｖｅ）」、「下記の（ｂｅｌｏｗ）」、および同様な意味の用語は、本出願で使用された場合、本出願の任意の特定部分ではなく、本出願全体を指すものとする。特許請求の範囲が、複数の項目のリストに関して、用語「または／あるいは（ｏｒ）」を使用する場合、その用語は、以下の用語の解釈、すなわち、リストにある項目のいずれか、リストにある項目のすべて、およびリストにある項目の任意の組合せのすべてを含む。
【００５７】
本発明の諸実施形態の上記詳細な説明は、網羅的なものではなく、あるいは上記で開示された正確な形態に本発明を限定するものではない。本発明の特有な諸実施形態、および諸実施例が例示のために前述されているが、当業者であれば理解されるように、本発明の範囲に含まれる様々な等価な変更形態が可能である。例えば、プロセスまたはブロックが所与の順序で提示されているが、代替の実施形態では、異なる順序の諸ステップを有するルーチンを実施し、または異なる順序の諸ブロックを有するシステムを使用することができ、またいくつかのプロセスまたはブロックを削除し、移動し、追加し、細分化し、組み合わせ、かつ／または変更することができる。これらの各プロセスまたはブロックは、様々な異なる方法で実施することもできる。さらに、プロセスまたはブロックは、シリーズに実施されるものとして示されることがあるが、そうではなく、そのプロセスまたはブロックを並列に実施し、あるいは異なる時間に実施することもできる。コンテキストが許容する場合、単数または複数を使用する上記の詳細な説明中の用語はまた、コンテキストが許容する場合、それぞれ複数または単数を含むことができる。
【００５８】
本明細書で提供する発明の教示は、必ずしも本明細書に記載のシステムである必要はなく、他のシステムにも適用することができる。上記の様々な実施形態のエレメントおよび動作を組み合わせて、他の実施形態を提供することもできる。
【００５９】
本出願は、本出願の権利者が所有する２００４年１２月２１日に出願された、「Method and System for a Self-healing Device（自己修復装置のための方法およびシステム）」と題する米国特許出願に関連する。上記特許および出願、ならびに添付の出願文書中にリストできる任意のものも含む他の参照はすべて、参照のために本明細書に組み込む。本明細書の態様は、必要であれば変更することが可能であり、上記の様々な参照によるシステム、機能、および概念を使用して、本発明のさらなる諸実施形態を提供することができる。
【００６０】
上記の詳細な説明に照らして、これらのおよび他の変更を本発明に行うことができる。上記の説明は、本発明のいくつかの実施形態を詳細に説明し、企図された最良の形態が述べられているが、テキスト中でいかに詳細に記載されていようとも、本発明は、様々な方法で実施することができる。上記のように、本発明のいくつかの機能または態様を説明するときに使用される特定の用語は、何らかの特有の特性、機能、またはその用語が関連する本発明の態様に本発明を限定するために、その用語が本明細書で再定義されることを意味するものと解釈されるべきではない。一般に、上記の詳細な説明セクションが、明示的にこのような用語を定義しない限り、特許請求の範囲に使用される用語は、本明細書で開示の特有の諸実施形態に本発明を限定するものとして解釈されるべきではない。したがって、本発明の実際の範囲は、開示された諸実施形態だけではなく、特許請求の範囲下で、本発明を実施し実装する等価な方法すべてを包含する。
【００６１】
本発明のいくつかの態様が、いくつかの請求項形式で以下に提示されているが、本発明者は、本発明の様々の態様を、多くの請求項形式で考えている。例えば、本発明の態様が１つだけコンピュータ可読媒体中で実施されるものと記載されていた場合であっても、他の諸態様も同様にコンピュータ可読媒体中で実施することが可能である。したがって、本発明者は、本発明の他の態様のためのこのような追加の特許請求の範囲を追求するために、本出願の出願後に追加の請求項を加える権利を留保する。
【図面の簡単な説明】
【００６２】
【図１】一実施形態におけるセキュリティ技法を実施するためのシステムの一実施例を示すブロック図である。
【図２】図１のシステムにおける仮想マシンのオフライン走査の一実施例を示すブロック図である。
【図３Ａ】図１のシステムにおける仮想マシンのオフライン走査の代替実施例を示すブロック図である。
【図３Ｂ】図１のシステムにおける仮想マシンの走査の他の実施例を示すブロック図である。
【図３Ｃ】図１のシステムにおける仮想マシンの走査のさらに他の実施例を示すブロック図である。
【図４】図１のシステムにおいて、オペレーティングシステムをモニタする監視プロセスによって実施されるルーチンを示す流れ図である。
【図５】定期的な走査を使用して、図１のシステムにおける仮想マシンをモニタするセキュリティモニタリングルーチンの一実施例を示す流れ図である。
【図６】仮想マシン構造のマウントを使用して、図１のシステムにおける仮想マシンをモニタするセキュリティモニタリングルーチンの第２の実施例を示す流れ図である。
【図７】仮想マシン構造のマウントを使用せずに、図１のシステムにおける仮想マシンをモニタするセキュリティモニタリングルーチンの第３の実施例を示す流れ図である。
【図８】仮想マシン中で動作するエージェントプロセスを使用して、図１のシステムにおける仮想マシンをモニタするセキュリティモニタリングルーチンの第２の実施例を示す流れ図である。
【符号の説明】
【００６３】
１００  コンピュータシステム
１０２  ホストシステム
１０４  オペレーティングシステム
１０６  プロセッサ
１１０  ディスク
１１２  メモリ
１１４  通信サブシステム
１１６  システムドライバ
１１８  仮想マシン
１１９  仮想マシンネットワークアダプタ
１２０  仮想マシンメモリ
１２２  仮想マシンディスク
１２４  仮想マシンドライバ
１２６  ゲストオペレーティングシステム（ＯＳインスタンス）
１２８  監視プロセス（セキュリティマネジャ）
１２９  アプリケーション
２０２  セキュリティアプリケーション
３０２  仮想マシンオブジェクトインターフェース
３０４  セキュリティアプリケーション
３２２  エージェントプロセス
３３４  監視プロセス
３３６  セキュリティアプリケーション
【図１】
2006178936.tif 000003
【図２】
2006178936.tif 000004
【図３Ａ】
2006178936.tif 000005
【図３Ｂ】
2006178936.tif 000006
【図３Ｃ】
2006178936.tif 000007
【図４】
2006178936.tif 000008
【図５】
2006178936.tif 000009
【図６】
2006178936.tif 000010
【図７】
2006178936.tif 000011
【図８】
2006178936.tif 000012