(57)【特許請求の範囲】
【請求項１】
第一仮想マシンインスタンスと第二仮想マシンインスタンスを含み、到来するコンテンツに対してマルウェア分析を行なうための仮想マシンインスタンスの利用を最適化するシステムであって、
前記到来するコンテンツを受け付けるように構成されているインターフェースと、
前記インターフェースと結合されたコントローラと、
を備えており、
前記コントローラは、
対象動作環境に対応する第一ソフトウェアプロファイルに基づいてインスタンス化された前記第一仮想マシンインスタンスが前記システムにおいて現在実行中であるかを判定する手段と、
前記第一ソフトウェアプロファイルに基づいて動作する前記第二仮想マシンインスタンスを前記システムにおいてインスタンス化する手段と、
を含んでおり、
前記第一仮想マシンインスタンスには、第一メモリリソースが割り当てられており、
前記第二仮想マシンインスタンスは、前記第一仮想マシンインスタンスと同時に動作し、
前記第二仮想マシンインスタンスは、前記第一仮想マシンインスタンスにより使用されるために割り当てられた前記第一メモリリソースへのアクセスが可能であり、
前記第二仮想マシンインスタンスには、コピーオンライト動作を行なう前記第二仮想マシンインスタンスのみによりアクセスが可能かつ前記第一メモリリソースとは異なる第二メモリリソースが割り当てられている、
システム。
【請求項２】
前記仮想マシンインスタンスは、第三仮想マシンインスタンスを含んでおり、
前記第二仮想マシンインスタンスをインスタンス化する手段は、コントローラ内で実現される仮想マシンプロビジョニングロジックを含んでおり、
前記仮想マシンプロビジョニングロジックは、仮想マシンクローンとして動作する前記第二仮想マシンインスタンスをインスタンス化し、かつ前記第三仮想マシンインスタンスをインスタンス化するように構成されており、
前記仮想マシンクローンは、前記第一メモリリソースを共有するとともに、前記システムによって同時に利用される複数の仮想マシンインスタンスを監視し、
前記第一メモリリソースは、前記第一仮想マシンインスタンスにより使用されるために割り当てられた前記第一メモリリソース内に少なくとも一つのメモリページを含んでおり、
前記第三仮想マシンインスタンスは、前記第一ソフトウェアプロファイルとは異なる第二ソフトウェアプロファイルに基づいており、
前記第三仮想マシンインスタンスには、前記第一仮想マシンインスタンスまたは前記第二仮想マシンインスタンスによって共有されていない第三メモリリソースが割り当てられており、
前記仮想マシンプロビジョニングロジックは、
（１）前記第一仮想マシンインスタンスと前記第二仮想マシンインスタンスを含む複数の仮想マシンインスタンスがインスタンス化された後、前記システム内で既に実行中である当該複数の仮想マシンインスタンスの数と前記第三仮想マシンインスタンスの合計数が、同時に動作する仮想マシンインスタンスの所定数を表す閾値を上回るかを判断し、
（２）前記合計数が前記閾値を上回らない場合、前記第三仮想マシンインスタンスをインスタンス化し、
（３）前記合計数が前記閾値を上回る場合、前記第三仮想マシンインスタンスのインスタンス化を行なわない、
請求項１に記載のシステム。
【請求項３】
前記第二仮想マシンインスタンスをインスタンス化する手段は、
前記到来するコンテンツに対するマルウェア分析を行なうために、前記第一仮想マシンインスタンスの仮想マシンクローンとして動作する前記第二仮想マシンインスタンスを含み、かつ前記第一仮想マシンインスタンスによってもアクセス可能な前記第一メモリリソースを共有する複数の仮想マシンインスタンスの第一セットをインスタンス化し、
前記到来するコンテンツに対するマルウェア分析を行なうために、前記第一メモリリソースとは異なる第二メモリリソースへのアクセスが可能な複数の仮想マシンインスタンスの第二セットをインスタンス化する、
請求項１に記載のシステム。
【請求項４】
前記インターフェースは、ネットワークポートである、
請求項１に記載のシステム。
【請求項５】
第一仮想マシンインスタンスと第二仮想マシンインスタンスを含み、到来するコンテンツに対してマルウェア分析を行なうための仮想マシンインスタンスの利用を最適化するコンピュータ制御された方法であって、
第一仮想動作環境を提供するために第一メモリリソースが割り当てられた前記第一仮想マシンインスタンスを、コントローラによってインスタンス化し、
前記第一仮想マシンインスタンスと同時に動作し、かつ前記第一仮想マシンインスタンスとともに前記第一メモリリソースを共有する前記第二仮想マシンインスタンスを、コントローラによってインスタンス化し、
前記第二仮想マシンインスタンスによりコピーオンライト動作が行なわれると、前記第一仮想マシンインスタンスのアクセスが不可能かつ前記第一メモリリソースとは異なる第二メモリリソースが、前記第二仮想マシンインスタンスに割り当てられる、
コンピュータ制御された方法。
【請求項６】
前記仮想マシンインスタンスは、第三仮想マシンインスタンスを含んでおり、
前記第一仮想マシンインスタンスと前記第二仮想マシンインスタンスを含む複数の仮想マシンインスタンスがインスタンス化された後、当該複数の仮想マシンインスタンスの数と前記第三仮想マシンインスタンスの合計数が、同時に動作する仮想マシンインスタンスの所定数を表す閾値を上回るかを判断し、
前記合計数が前記閾値を上回らない場合、前記第三仮想マシンインスタンスをインスタンス化し、
前記合計数が前記閾値を上回る場合、前記第三仮想マシンインスタンスのインスタンス化を行なわない、
請求項５に記載のコンピュータ制御された方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示における実施形態は、データセキュリティの分野に関連する。より具体的には、本開示における一実施形態は、マルウェアコンテンツ検出システム内で動作する複数の仮想マシンインスタンスにより使用されるリソースの割当てを最適化するシステム、装置、および方法に関連する。
【背景技術】
【０００２】
過去十年間で、悪意あるソフトウェア（マルウェア）は、インターネットユーザの間で広く知られる問題になっている。例えば、マルウェアは、ダウンロード可能なコンテンツ内に埋め込まれ、コンピュータの通常動作に悪影響を与えたり攻撃したりするように構成されたプログラムまたはファイルである。マルウェアの例としては、ボット、コンピュータウイルス、ワーム、トロイの木馬、スパイウェア、アドウェアなどのプログラムが挙げられる。これらは、ユーザや管理者の許可なく電子装置内で動作する。電子装置の例としては、コンピュータ、タブレット、スマートフォン、サーバ、ルータ、ウェアラブル技術などのデータ処理能力を有するエレクトロニクスが挙げられる。
【０００３】
例えば、コンテンツは、悪意あるウェブサイトによりホストされたウェブページに関連付けられたオブジェクトとともに埋め込まれうる。当該コンテンツをダウンロードすることにより電子メールメッセージを受信または開封すると、別のウェブページが悪意あるウェブサイトから要求されるようにするマルウェアがコンピュータにインストールされうる。例えば、電子メールメッセージは、実行可能なマルウェアが埋め込まれたポータブルドキュメントフォーマット（ＰＤＦ）文書などの添付物を含みうる。また、マルウェアは、感染したコンピュータからネットワークに接続されたストレージ装置（ファイルシェアなど）にアップロードされた様々な攻撃ベクタを通じて感染したファイル内に存在しうる。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
過去数年間で、様々なタイプのセキュリティアプライアンスがネットワークにおける複数のセグメントに設置されている。これらのセキュリティアプライアンスは、当該複数のセグメントを伝わって侵入するコンテンツ内に埋め込まれたマルウェアの存在を明らかにするために、仮想マシン（ＶＭ）を使用する。しかしながら、各仮想マシンには仮想動作のために大量のメモリが割当てられることを要するため、従来のセキュリティアプライアンスにおいては、メモリの増設に係るコストの増加に鑑みてマルウェア分析のために同時に動作するＶＭの数が制限される。
【課題を解決するための手段】
【０００５】
本開示の様々な実施形態は、マルウェアコンテンツ検出（ＭＣＤ）システム、および対応する方法に関する。当該方法は、同時に実行される仮想マシン（ＶＭ）インスタンスの数と構成をあらゆるレベルのリソースについて最適化するためのものである。このＶＭ最適化技術は、同じソフトウェアプロファイルに基づくとともにマルウェアと疑われるコンテンツを同時に分析するように構成されている複数のＶＭインスタンスをプロビジョニングすることに関する。この「ソフトウェアプロファイル」は、疑わしいコンテンツを受信するように仕向けられた動作環境（ゲストオペレーティングシステムの種別やバージョン、アプリケーションの種別とバージョン、仮想デバイスなど）の仮想化に用いられる情報を含む。当該ソフトウェアプロファイルは、ＶＭインスタンスの仮想動作環境を生成するために用いられる。
【０００６】
当該ＶＭインスタンスは、「ＶＭクローン」（生成時にシステムメモリや仮想ディスクスペースなどのシステムリソースを共有するように構成されたＶＭインスタンス）としてインスタンス化される。これらのリソースは、所定の仮想動作状態に設定された特定のソフトウェアプロファイルを有する動作環境を仮想化するために割り当てられる。よって、当該特定のソフトウェアプロファイルに関連付けられた当該ＶＭクローンは、インスタンス化に際して同じ仮想動作状態とされる。
【０００７】
しかしながら、実行中や上記割り当てられたものと異なるリソースの要求時に、ＶＭクローンはコピーオンライト（ＣＯＷ）動作を行ないうる。ＣＯＷ動作は、当該ＶＭクローンによってのみ使用されるための別リソースを割り当てる。このとき、当該ＶＭクローンは、固有のＶＭインスタンスになるが、上記ＣＯＷ動作を通じて専用に割り当てられたリソースとは別の上記共有リソースの使用を継続できる。よって、同じソフトウェアプロファイルに関連付けられたリソースを共有しているＶＭインスタンスにより、より多数のＶＭインスタンスがマルウェア分析のために同時に使用されうる（少なくとも一部が重複するように実行される）。割り当てが必要とされる別の（非共有）リソースは僅かであり、メモリ容量への影響は最小限である。
【０００８】
一例として、第一ＶＭクローンは、リソース（メモリ、仮想ディスクスペースなど）を割り当てることによりインスタンス化される。当該リソースは、所定の仮想動作状態（ゲストＯＳとウェブブラウザの初期化後など）で始まる特定のソフトウェアプロファイルによる当該ＶＭクローンの実行をサポートする。特定のソフトウェアプロファイルの例としては、ゲストＯＳとしてウインドウズ（登録商標）７、アプリケーションとしてインターネットエクスプローラ（登録商標）バージョン９が挙げられる。第一ＶＭクローンが実行中にインスタンス化され、かつ同じ特定のソフトウェアプロファイルに基づく後続のＶＭクローンの全ては、第一ＶＭクローンに割り当てられたものと同一のリソースを共有するように構成される。よって、全てのＶＭクローンは、インスタンス化に際して同一の仮想動作状態とされる。
【０００９】
実行中や上記割り当てられた共有リソースとは別の追加リソースの要求時に、第一ＶＭクローンはＣＯＷ動作を行なう。これにより、第一ＶＭクローンに由来するＶＭインスタンスによってのみ使用される追加リソースが割り当てられる（例えば、共有リソースの一部であるメモリページとは異なる少なくとも一つのメモリページが割り当てられる）。同じ動作が、実行中である他のＶＭクローンにも適用可能である。
【００１０】
より具体的には、本発明の一実施形態によれば、上記のＶＭ最適化技術は、多数のＶＭディスクファイルを備えるＶＭプロファイルデータベースを利用する。各ＶＭディスクファイルは、ＶＭディスクファイルの構成を記述するプロファイル情報を含む。例えば、当該プロファイル情報は、当該ＶＭディスクファイルによってサポートされる具体的なソフトウェアプロファイルを特定しうる。当該ソフトウェアプロファイルは、ゲストＯＳの種別とバージョンの少なくとも一方を、少なくとも一つのアプリケーションのイメージとバージョン番号の少なくとも一方とともに含みうる。ＶＭディスクファイルは、ＶＭ状態情報をさらに含む。ＶＭ状態情報は、状態をキャプチャするためのＶＭスナップショットの結果、ディスクデータ、および特定時点におけるＶＭの構成（すなわち、所定の仮想動作状態）でありうる。
【００１１】
例えば異なるデータフローからの「疑わしい」コンテンツに対して動的な分析を行なうために同じソフトウェアプロファイルに基づく複数のＶＭインスタンスが必要とされる場合、当該ソフトウェアプロファイルをサポートしているＶＭディスクファイルが選択され、当該ＶＭディスクファイルより上記ＶＭクローンがインスタンス化される。現在のＶＭ利用とは異なり、当該ＶＭクローンは、実行中に同じリソースを共有し、その構成をカスタマイズするためにＣＯＷ機能を利用する。これにより、得られる複数のＶＭインスタンスの同時実行が可能となる一方、これら複数のＶＭインスタンスのサポートに必要とされるメモリ量を最小化できる。
【図面の簡単な説明】
【００１２】
発明の実施形態例は、限定を伴うことなく添付の図面に示される。同じ参照符号は、同様の要素を示す。
【００１３】
【図１】通信ネットワーク内に配置された複数のＶＭに対するリソースの割り当てが最適化されたマルウェアコンテンツ検出（ＭＣＤ）システムを示すブロック図の第一の例である。
【図２】図１のＭＣＤシステムを示すブロック図の第二の例である。
【図３】図１のＭＣＤシステムを示す具体的なブロック図の例である。
【図４】ＶＭクローンの各ファミリに対して行なわれるコピーオンライト動作を示すブロック図の例である。
【図５】ＶＭクローンの特定ファミリに対して行なわれるコピーオンライト動作を示すブロック図の例である。
【図６】ＶＭクローンをインスタンス化する動作を具体的に示すフローチャートの例である。
【図７Ａ】複数のＶＭクローンに対して同時に行なわれるコピーオンライト動作を示すフローチャートの例である。
【図７Ｂ】複数のＶＭクローンに対して同時に行なわれるコピーオンライト動作を示すフローチャートの例である。
【発明を実施するための形態】
【００１４】
１．用語
以降の説明においては、発明の特徴を記述するために特定の用語が使用される。例えば、特定の状況下において、「ロジック」と「エンジン」の両用語は、少なくとも一つの機能を実行するように構成されたハードウェア、ファームウェア、ソフトウェアの少なくとも一つを表す。ハードウェアの場合、ロジック（あるいはエンジン）は、データを処理あるいは記憶する機能を有する回路を含みうる。そのような回路の例としては、マイクロプロセッサ、少なくとも一つのプロセッサコア、プログラマブルゲートアレイ、マイクロコントローラ、特定用途向け集積回路、無線受信回路、無線送信回路、無線送受信回路、半導体メモリ、組合せロジックが挙げられるが、これらに限定あるいは制限されない。
【００１５】
ロジック（あるいはエンジン）は、少なくとも一つのソフトウェアモジュールの形態でありうる。そのような例としては、実行可能なアプリケーションの形態である実行可能なコード、アプリケーションプログラミングインターフェース（ＡＰＩ）、サブルーチン、関数、プロシージャ、アプレット、サーブレット、ソースコード、オブジェクトコード、共有ライブラリまたはダイナミックロードライブラリ、少なくとも一つの指令が挙げられる。これらのソフトウェアモジュールは、あらゆる適当な非一時的な記憶媒体または一時的な記憶媒体に記憶されうる。一時的な記憶媒体の例としては、電気的、光学的、音響的などの形態をとる伝達信号（搬送波、赤外信号、デジタル信号など）が挙げられる。非一時的な記憶媒体の例としては、プログラマブル回路、半導体メモリ、揮発性メモリ（例えば、あらゆるランダムアクセスメモリ；ＲＡＭ）のような非永続性ストレージ、不揮発性メモリ（読出し専用メモリ；ＲＯＭ、電源バックアップ型ＲＡＭ、フラッシュメモリ、フェーズチェンジメモリなど）のような永続性ストレージ、半導体ドライブ、ハードディスクドライブ、光ディスクドライブ、携帯メモリ装置などが挙げられる。ファームウェアの例としては、永続性ストレージに記憶された実行可能なコードが挙げられる。
【００１６】
「コンテンツ」という語は、少なくとも一つのメッセージとして転送される情報を主に指す。各メッセージは、パケット、フレーム、非同期転送モード（ＡＴＭ）セルなど所定のフォーマットを有する一連のビットの形態でありうる。コンテンツは、入力データトラフィック内におけるデータフロー（すなわち関連メッセージ群）として受信されうる。
【００１７】
なお、コンテンツは少なくとも一つの種別のデータ（テキスト、ソフトウェア、イメージ、音声、メタデータなどのデジタルデータ）を含みうる。コンテンツの例としては、ウェブコンテンツなどのデータトラフィックが挙げられる。当該データトラフィックは、ハイパーテキスト転送プロトコル（ＨＴＴＰ）ハイパーテキストマークアップ言語（ＨＴＭＬ）プロトコルなどウェブブラウザソフトウェアアプリケーション上での表示に適した手法で送信されうる。
【００１８】
コンテンツの別例としては、電子メールが挙げられる。電子メールは、シンプルメール転送プロトコル（ＳＭＴＰ）、ポストオフィスプロトコルのバージョン３（ＰＯＰ３）、インターネットメッセージアクセスプロトコル（ＩＭＡＰ４）などの電子メールプロトコルを用いて送信されうる。コンテンツのさらに別の例としては、インスタントメッセージが挙げられる。インスタントメッセージは、セッションイニシエーションプロトコル（ＳＩＰ）やエクステンシブルメッセージングアンドプレゼンスプロトコル（ＸＭＰＰ）などを用いて転送されうる。コンテンツのさらに別の例としては、少なくとも一つのファイルが挙げられる。当該ファイルは、ファイル転送プロトコル（ＦＴＰ）などのデータ転送プロトコルを用いてファイル共有上の別のストレージへ転送されうる。
【００１９】
「マルウェア」という語は、実行時に望ましくない挙動を生ずるソフトウェアを指す。当該挙動は、世論や政府事業体または商業事業体によって定められた規則（顧客固有の規則、製造者ベースの規則など）、もしくは特定のソフトウェアプロファイルにおける潜在的な脆弱性に基づいて「望ましくない」とみなされる。この望ましくない挙動は、通信ベースの異常や実行ベースの異常を含みうる。当該異常は、（１）アプリケーションを実行する電子装置の機能を悪意ある手法で変更したり、（２）アプリケーションを実行する電子装置の機能を悪意なしに変更したり、（３）別の場面では普通に許容されうる不要な機能を提供したりする。
【００２０】
「送信媒体」という語は、複数のシステム間の通信経路を意味する。システムの例としては、セキュリティアプライアンス、サーバ、メインフレーム、コンピュータ、ネットブック、タブレット、スマートフォン、ルータ、スイッチ、ブリッジ、ブルータなどのデータ処理機能を有する電子装置が挙げられる。当該通信経路は、有線セグメントと無線セグメントの少なくとも一方を含みうる。これらの例としては、電気配線、光ファイバ、ケーブル、バストレース、赤外線やラジオ周波数（ＲＦ）を用いた無線チャネルなどの信号伝達機構が挙げられる。
【００２１】
一般に、「仮想マシン（ＶＭ）インスタンス」は、（仮想または現実の）電子装置によるシミュレーションを意味し、通常は当該シミュレーションを行なう電子装置とは異なる。ＶＭインスタンスは、仮想コンピュータの仕様に基づきうる。あるいは、ＶＭインスタンスは、コンピュータアーキテクチャと現実世界コンピュータの機能をエミュレートしうる。ＶＭインスタンスは、ハードウェアエミュレーションＶＭ、フル仮想化ＶＭ、パラ仮想化ＶＭ、ＯＳレベル仮想化ＶＭの少なくとも一つを含む様々な種別の一つでありうる。
【００２２】
「コンピュータ化」という語は、ソフトウェアとファームウェアの少なくとも一方と協働するハードウェアにより行なわれる動作を主に表す。
【００２３】
最後に、本明細書で用いられる「または」と「〜の少なくとも一つ」という語は、両立的（inclusive）であることを意味する。すなわち、「Ａ、Ｂ、またはＣ」あるいは「Ａ、Ｂ、Ｃの少なくとも一つ」は、Ａ、Ｂ、Ｃ、ＡとＢ、ＡとＣ、ＢとＣ、ＡとＢとＣのいずれをも意味する。この定義における例外は、要素、機能、ステップ、動作などの組合せが排他的（exclusive）であることが明らかな場合のみである。
【００２４】
多くの異なる形態の実施形態に対して本発明が適用可能となるように、本開示は、当該発明の原理の一例とみなされることを意図しており、本発明が図示および記載された特定の実施形態に限定されることを意図するものではない。
【００２５】
２．一般的なアーキテクチャ
図１を参照しつつ、通信システム１００のブロック図の一例を示す。通信システム１００は、複数のマルウェア検出システム（ＭＣＤ）システム１１０１〜１１０Ｎ（Ｎは１よりも大きく、例えば３である）を備えている。ＭＣＤシステム１１０１〜１１０Ｎは、ネットワーク１２５を通じて管理システム１２０と通信可能に結合されている。一般に、管理システム１２０は、ＭＣＤシステム１１０１〜１１０Ｎを管理するように構成されている。例えば、管理システム１２０は、ＭＣＤシステム１１０１〜１１０Ｎのいずれかによるマルウェア検出の結果として生成されたマルウェアサインを、少なくとも一つの他のＭＣＤシステム１１０１〜１１０Ｎに共有させるように構成されている。例えば、当該共有は、サブスクリプションに基づいて行なわれる。
【００２６】
発明の本実施形態によれば、第一ＭＣＤシステム１１０１は、電子装置である。当該電子装置は、（１）通信ネットワーク１３０を通じて送られたデータトラフィックを少なくとも一つのサーバ装置１４０と少なくとも一つのクライアント装置１５０の間で遮断し、（２）当該データトラフィック内のコンテンツをリアルタイムにモニタするように構成されている。より具体的には、第一ＭＣＤシステム１１０１は、通信ネットワーク１３０を通じて受信されたコンテンツを検査し、「疑わしい」コンテンツを特定するように構成されうる。入力されたコンテンツの検査中に特定された少なくとも一つの特性がある程度の確率でマルウェアの存在を示していると評価されると、当該コンテンツは「疑わしい」と特定される。
【００２７】
その後、当該疑わしいコンテンツは、マルウェアを含んでいるかを検出するために、仮想マシン（ＶＭ）実行環境内でさらに分析される。ＶＭ実行環境は、同じソフトウェアプロファイルをサポートしている複数のＶＭインスタンスを備えうる。特に、当該疑わしいコンテンツは、同じ目的の動作環境志向である複数のデータフロー内で検出される。これらのＶＭインスタンスは、「ＶＭクローン」として作成される。ＶＭクローンとは、所定の仮想動作状態において特定のソフトウェアプロファイルをサポートするように割り当てられた共有リソースへの読出し専用アクセスを伴うＶＭインスタンスである。よって、全てのＶＭクローンは、同じソフトウェアプロファイルをサポートし、最初の実行時において同一の状態とされる。
【００２８】
しかしながら、複数のＶＭクローンの一つは、リソースの変更（特定のメモリページへの書込みなど）を要求する。この場合、ＶＭインスタンスは、そのＶＭに対してのみアクセス可能な追加のリソースを作成するためにコピーオンライト動作を行なう。よって、図示の例においては、複数のＶＭインスタンスをサポートするために必要とされる割り当てメモリの総量が、各ＶＭインスタンスにより排他的に要求される追加のリソースとともにソフトウェアプロファイルに割り当てられた共有システムリソースの量と等しくなるように最小化される。
【００２９】
本実施形態に係る通信システム１００によれば、第一ＭＣＤシステム１１０１は、ウェブベースのセキュリティアプライアンスでありうる。当該セキュリティアプライアンスは、入力されたデータトラフィックを検査し、当該データトラフィックに関連付けられたコンテンツがマルウェアを含むかを特定し、含む場合に当該コンテンツのより詳細な分析を行なうように構成される。より詳細な分析は、ＶＭ実行環境内におけるＶＭインスタンスにおいて行なわれ、当該データトラフィックが電子装置によって実際に処理された場合に生じうる望ましくない挙動を検出する。当該分析の詳細は後述する。
【００３０】
通信ネットワーク１３０は、インターネットなどのパブリックコンピュータネットワークを含みうる。この場合、破線で示される付加的なファイアウォール１５５が通信ネットワーク１３０とクライアント装置１５０の間に介挿されうる。あるいは、通信ネットワーク１３０は、無線電話通信ネットワーク、広域ネットワーク、構内ネットワーク、複数のネットワークの組合せなどのプライベートコンピュータネットワークでありうる。
【００３１】
第一ＭＣＤシステム１１０１は、ネットワークインターフェース１６０を介して（ファイアウォール１５５の背後で）通信ネットワーク１３０と結合されている様子が図示されている。ネットワークインターフェース１６０は、データ捕捉装置（「タップ」や「ネットワークタップ」と称される）として動作する。データ捕捉装置は、クライアント装置１５０との間を行き来するデータトラフィックを受け付け、当該データトラフィックから第一ＭＣＤシステム１１０１へコンテンツを提供するように構成されている。
【００３２】
一般に、ネットワークインターフェース１６０は、クライアント装置１５０とやり取りされるコンテンツを受け取ると、サーバ装置１４０、クライアント装置１５０、または通信ネットワーク１３０によるパフォーマンスの大幅な低下を伴うことなく、それをコピーする。ネットワークインターフェース１６０は、コンテンツの任意の部分（例えば任意の数のデータパケット）をコピーできる。
【００３３】
幾つかの実施形態において、ネットワークインターフェース１６０は、クライアント装置１５０向けにデータトラフィックからメタデータを捕捉できる。当該メタデータは、悪意あるコンテンツだけでなくそのようなコンテンツのソフトウェアプロファイルを当該データトラフィックが含んでいないかを判断するために使用される。当該メタデータは、サーバ装置１４０とクライアント装置１５０の少なくとも一方と関連付けられうる。別の実施形態においては、ヒューリスティックモジュール１７０が、データトラフィックと関連付けられたコンテンツを分析することにより、ソフトウェアプロファイルを判断できる。
【００３４】
第一ＭＣＤシステム１１０１が専用のアプライアンスやコンピュータシステムとして実現されるいずれの実施形態においても、ネットワークインターフェース１６０は、当該アプライアンスやコンピュータシステムに統合されたアセンブリを含みうる。当該アセンブリは、ネットワークポート、ネットワークインターフェースカード、および関連するロジック（不図示）を含む。当該ロジックは、ファイアウォール１５５を通過するデータトラフィックを中断なく「タップ」し、当該データトラフィックのコピーをヒューリスティックモジュール１７０に提供するために、通信ネットワーク１３０に接続するように構成されている。別の実施形態においては、ネットワークインターフェース１６０は、通信経路（例えば、ファイアウォール１５５、ルータ、スイッチなどのネットワーク装置）上の中間装置に統合されうる。あるいは、ネットワークインターフェース１６０は、スタンドアローンのコンポーネント（適当な市販のネットワークタップなど）でありうる。仮想環境においては、仮想ネットワークからトラフィックをコピーするために仮想タップ（ｖＴＡＰ）が使用されうる。
【００３５】
図１にさらに示されるように、第一ＭＣＤシステム１１０１は、ヒューリスティックエンジン１７０、ヒューリスティックデータベース１７５、スケジューラ１８０、ストレージ装置１８５、分析エンジン１９０、および報告モジュール１９５を含みうる。幾つかの実施形態において、ネットワークインターフェース１６０は、第一ＭＣＤシステム１１０１内に含まれうる。また、ヒューリスティックエンジン１７０、スケジューラ１８０、分析エンジン１９０の少なくとも一つは、プロセッサにより実行されるソフトウェアモジュールでありうる。当該プロセッサは、疑わしいコンテンツを受信し、マルウェア分析を行ない、ヒューリスティックデータベース１７５、ストレージ装置１８５、および報告モジュール１９５の少なくとも一つとして動作する少なくとも一つの非一時的な記憶媒体にアクセスするように構成されている。幾つかの実施形態において、ヒューリスティックエンジン１７０は、プロセッサにより実行されるソフトウェアモジュールであり、スケジューラ１８０と分析エンジン１９０は、別のプロセッサにより実行されるソフトウェアモジュールでありうる。これら二つのプロセッサは、物理的に離れた場所に配置され、ネットワークなどを介して通信可能に結合されうる。
【００３６】
一般に、ヒューリスティックエンジン１７０は、後続のマルウェア分析が到来コンテンツの一部に対してのみ行なわれるようにするフィルタとして機能する。これにより、システムリソースを節約し、分析されたコンテンツ内のマルウェアの存在を判断するための応答時間をより短くできる。付随する効果として、「脆弱性」（マルウェアにより攻撃されうるコンテンツの一部）を有しうる到来コンテンツの一部のみを分析することにより、より多くの数のＶＭが協働するようにサポートされうる。
【００３７】
図１に示されるように、ヒューリスティックエンジン１７０は、到来コンテンツのコピーをネットワークインターフェース１６０から受信し、「疑わしい」コンテンツがあるかを判断するために経験則を適用する。ヒューリスティックエンジン１７０により適用される経験則は、ヒューリスティックデータベース１７５に記憶されているデータと規則の少なくとも一方に基づきうる。また、ヒューリスティックエンジン１７０は、捕捉されたコンテンツのイメージを、当該コンテンツを実行または開くことなく調べうる。
【００３８】
例えば、ヒューリスティックエンジン１７０は、捕捉されたコンテンツのメタデータまたは属性とコードイメージ（実行ファイルのバイナリイメージなど）の少なくとも一方を調べうる。これにより、捕捉されたコンテンツの特定部分が、悪意ある攻撃に対応する所定の属性パターンと一致または高い相関を有しているかが判断される。本開示の一実施形態によれば、ヒューリスティックエンジン１７０は、このヒューリスティック分析の適用後、少なくとも一つのデータフローから得たコンテンツを疑わしいと判定する。
【００３９】
その後、本発明の一実施形態によれば、ヒューリスティックモジュール１７０は、クライアント装置１５０の属性を特定する当該疑わしいコンテンツのメタデータまたは属性の少なくとも一部を、分析エンジン１９０へ送信するように構成されうる。そのようなメタデータまたは属性は、その後のマルウェア分析に必要とされるＶＭインスタンスを特定し、対応するＶＭクローンを要求するためのソフトウェアプロファイル情報を構成するために使用される。本開示の別実施形態においては、分析エンジン１９０は、少なくとも一つのメッセージ（データパケットなど）をヒューリスティックエンジン１７０から受信し、必要とされるＶＭインスタンスに関連付けられたソフトウェアプロファイル情報を特定するために当該メッセージを分析するように構成されうる。
【００４０】
テストされる疑わしいコンテンツの例としては、ウインドウズ（登録商標）７オペレーティングシステムの制御下でウインドウズ（登録商標）アウトルックバージョン１２を用いて生成された電子メールメッセージが挙げられる。当該電子メールメッセージは、アドビ（登録商標）アクロバット（登録商標）バージョン９．０に依拠するポータブルドキュメントフォーマット（ＰＤＦ）添付物を含みうる。当該電子メールが疑わしいコンテンツを含むかを判断するに際し、ヒューリスティックエンジン１７０は、疑わしいコンテンツの動的な分析を行なうために必要とされる特定種のＶＭインスタンスを特定するためにソフトウェアプロファイル情報を提供する。本例の場合、ソフトウェアプロファイル情報は、（１）ウインドウズ（登録商標）７オペレーティングシステム（ＯＳ）、（２）ウインドウズ（登録商標）アウトルックバージョン１２、および（３）アドビ（登録商標）アクロバット（登録商標）バージョン９．０によるＰＤＦサポート、を含みうる。
【００４１】
分析エンジン１９０は、ソフトウェアプロファイル情報をスケジューラ１８０に提供する。スケジューラ１８０は、ストレージ装置１８５内のＶＭディスクファイルに上記のＯＳや少なくとも一つのアプリケーションをサポートしているソフトウェアプロファイルを備えるものがあるかの調査を行なう。そのようなソフトウェアプロファイルを示すものがあり、当該ソフトウェアプロファイルに基づくＶＭインスタンスが既に動作している場合、スケジューラ１８０は、最初にＶＭインスタンスを作成するために使用されたものと同じイメージを、ＶＭクローンを作成するために使用する。よって、当該ＶＭインスタンスと当該ＶＭクローンは、同じＶＭファミリのメンバーである。上記の例の場合、当該ＶＭクローンは、電子メールの添付物を受信し、開封し、処理するように構成された仮想デバイスの実行をサポートしうる。当該ＶＭクローンは、疑わしいコンテンツを分析するために、分析エンジン１９０にアップロードされる。
【００４２】
しかしながら、ストレージ装置１８５が上記のＯＳや少なくとも一つのアプリケーションをサポートしているソフトウェアプロファイルを備えているものの、現在動作中の対応するＶＭインスタンスが存在しない場合、スケジュール１８０は、ＶＭプロビジョニングロジック（後述）から当該ソフトウェアプロファイルに関連付けられたイメージを取得する。このイメージは、その後、ＶＭクローンの生成に使用されうる。ストレージ装置１８５が上記のＯＳやアプリケーションをサポートしているソフトウェアプロファイルを備えておらず、現在動作中の対応するＶＭインスタンスも存在しない場合、スケジューラ１８０は、単にＶＭ要求を無視するか、同様のソフトウェアプロファイルに基づくＶＭプロビジョニングロジックからＶＭイメージを受信しうる。例えば、スケジューラ１８０は、ＶＭインスタンスを、同じＯＳであるが異なるバージョンの対象アプリケーションに基づいて受信しうる。あるいは、スケジューラ１８０は、同じＯＳの対象アプリケーションとは別のアプリケーションであるが同じ機能を有するもの（種別が異なるブラウザなど）を受信しうる。またあるいは、スケジューラ１８０は、同様のアーキテクチャを有する別のＯＳを受信しうる。
【００４３】
スケジューラ１８０は、クライアント装置１５０の関連するパフォーマンス特性を模倣するために、ＶＭクローンを取得および構成しうる。一例において、スケジューラ１８０は、クライアント装置１５０の特徴のうち、ネットワークインターフェース１６０によってコピーされたデータトラフィックにより影響を受けるもののみを模倣するために、ＶＭクローンの特性を構成するように設定されうる。スケジューラ１８０は、ネットワークインターフェース１６０からデータトラフィックを受信して分析することによって、コンテンツにより影響を受けるクライアント装置１５０の特徴を判断できる。クライアント装置１５０のそのような特徴の例としては、当該コンテンツを受信するポート、当該コンテンツに応答する特定のデバイスドライバ、クライアント装置１５０と結合された、あるいはクライアント装置１５０内に設けられた当該コンテンツに応答可能なデバイスなどが挙げられる。
【００４４】
本開示の別実施形態においては、ヒューリスティックエンジン１７０が、ネットワークインターフェース１６０からデータトラフィックを受信して分析することによって、コンテンツにより影響を受けるクライアント装置１５０の特徴を判断できる。この場合、ヒューリスティックエンジン１７０は、当該特徴をスケジューラ１８０と分析エンジン１９０の少なくとも一方に送信しうる。
【００４５】
例えば、本開示の一実施形態によれば、ヒューリスティックエンジン１７０は、クライアント装置１５０を特定するメタデータを分析エンジン１９０へ送信するように構成されうる。当該メタデータは、所望のソフトウェアプロファイルを特定するために使用される。あるいは、分析エンジン１９０は、データフローにおける少なくとも一つのデータパケットをヒューリスティックエンジン１７０から受信し、ソフトウェアプロファイルを特定するために当該少なくとも一つのデータパケットを分析するように構成されうる。本開示のさらに別の実施形態においては、スケジューラ１８０は、ソフトウェアプロファイル情報を、メタデータやデータパケット群の形態でネットワークインターフェース１６０またはヒューリスティックエンジン１７０から直接受信するように構成されうる。
【００４６】
ストレージ装置１８５は、ＶＭプロファイルデータベースを形成する少なくとも一つのＶＭディスクファイルを保存するように構成されている。この場合、各ＶＭディスクファイルは、ＶＭインスタンスの異なるソフトウェアプロファイルと対応付けられている。一例において、ＶＭプロファイルデータベースは、単一のＶＭインスタンスと関連付けられたＶＭディスクファイルを保存できる。当該ＶＭインスタンスは、通信ネットワーク１３０上のクライアント装置１５０のパフォーマンスを模倣するように、スケジューラ１８０によって構成されうる。あるいは、図１に示されるように、ＶＭプロファイルデータベースは、複数のＶＭディスクファイルを保存できる。この場合、各ＶＭディスクファイルは、動作中のＶＭの異なる「ファミリ」と関連付けられた情報を含む。よって、これらのＶＭディスクファイルは、多様なクライアント装置１５０のパフォーマンスをシミュレートするように提供される。
【００４７】
分析エンジン１９０は、クライアント装置１５０による異なる「疑わしい」コンテンツのデータフローの受信と実行の少なくとも一方だけでなく、異なる動作環境をシミュレートするために、少なくとも一つのＶＭクローンを含む複数のＶＭインスタンスを実行するように構成される。さらに、分析エンジン１９０は、そのようなコンテンツがクライアント装置１５０に与える影響を分析する。分析エンジン１９０は、各ＶＭインスタンスにより遂行されるマルウェアの影響を特定できる。そのような影響の例としては、異常なネットワーク送信、異常なパフォーマンスの変化などが挙げられる。この検出プロセスは、動的な悪意あるコンテンツの検出と称される。
【００４８】
分析エンジン１９０は、観察されたＶＭインスタンスの挙動に応じて、疑わしいコンテンツをマルウェアと判定しうる。報告モジュール１９５は、マルウェアの存在を示す警告を発行しうる。当該警告は、「疑わしい」コンテンツにおけるどのメッセージ（パケットなど）がマルウェアを含みうるかを特定するポインタなどの参照情報を用いる。加えて、サーバ装置１４０が悪意あるネットワークコンテンツプロバイダのリストに加えられうる。そして、サーバ装置１４０から開始される以降のネットワーク送信は、ファイアウォール１５５などによって、目的の送信先に到達することを阻止されうる。
【００４９】
図２には、第二実施形態例に係るＭＣＤシステム１１０１が示されている。本例においては、ＶＭインスタンス化のためのソフトウェアプロファイルは、ネットワークインターフェース１６０、ヒューリスティックエンジン１７０、あるいは分析エンジン１９０による疑わしいコンテンツ（メタデータ、データパケット、バイナリなど）の分析を通じては特定されない。代わりに、リソースを共有し、特定の動作状態で動作するＶＭクローンのインスタンス化を制御するために、ソフトウェアプロファイル２００がユーザやネットワーク管理者によってアップロードされる。
【００５０】
より具体的には、ユーザインターフェース２１０は、ユーザやネットワーク管理者（以降は、「ユーザや管理者」と表記する）が、少なくとも一つの所定のソフトウェアプロファイル２００に基づいて疑わしいコンテンツのオブジェクト２２０を導入できるようにする。ソフトウェアプロファイル２００は、上述したスケジューラ１８０とストレージ装置１８５の動作に基づいて少なくとも一つのＶＭインスタンスを生成するために、ユーザや管理者によりプリロードあるいは選択されうる。当該ＶＭインスタンスは、オブジェクト２２０の動的な分析を行なうことにより、当該ＶＭインスタンス内における当該オブジェクト２２０の仮想的な実行中における望ましくない挙動を見つける。
【００５１】
３．ＭＣＤシステム構成の実施形態例
図３には、本発明の一実施形態に係るＭＣＤシステム１１０１の詳細なブロック図が示されている。本例において、ＭＣＤシステム１１０１は、コントローラ（データ処理回路）３００と送信媒体３０５を介して結合されたストレージ装置１８５を備えている。コントローラ３００は、分析エンジン１９０内で動作している少なくとも一つの仮想マシン（ＶＭ）インスタンス３１０１〜３１０Ｎ（Ｎ＞１）の管理と制御の少なくとも一方を行なうように構成されている。ＶＭインスタンス３１０１〜３１０Ｎに関連付けられた情報は、ＶＭディスクファイル３６０１〜３６０Ｍ（Ｎ＞Ｍ＞１）の形態でストレージ装置１８５に保存される。
【００５２】
この場合、コントローラ３００は、ＶＭモニタあるいはマネージャ（ＶＭＭ）の一部として実現されうる。ＶＭＭは、ＶＭインスタンスを管理あるいは監視するハイパーバイザとも称され、ホストオペレーティングシステム（ＯＳ）によりホストされうる。ＶＭインスタンス３１０１〜３１０Ｎは、ゲストＯＳによってホストされうる。ホストＯＳとゲストＯＳは、同種のオペレーティングシステムであってもよいし、異種のオペレーティングシステムであってもよい。オペレーティングシステムの例としては、ウインドウズ（登録商標）、リナックス（登録商標）、ユニックス（登録商標）、マックＯＳ（登録商標）、ｉＯＳ（登録商標）や、それらの別バージョンが挙げられる。
【００５３】
複数のＶＭインスタンス３１０１〜３１０Ｎ（１＜ｉ＜Ｎ）は、第一のコンテンツに対するマルウェア分析を同時に行ないうる。本開示の一実施形態によれば、これら複数のＶＭインスタンス３１０１〜３１０Ｎの各々は、ほぼ同様のソフトウェアプロファイル（同じＯＳのＶＭや、ＯＳバージョン番号が異なる同じアプリケーション種のＶＭ、ＯＳは同じだがアプリケーション種のバージョン番号が異なるＶＭなど）に基づきうる。加えて、これら複数のＶＭインスタンスは、第二のコンテンツに対するマルウェア分析を同時に行ないうる。よって、コンテンツは、複数のＶＭファミリ用の一つのＶＭインスタンスにおいて分析されうる。このような分析は、異なるＯＳやアプリケーションバージョン（パッチパージョンを含む）におけるソフトウェアの脆弱性をチェックするメカニズムを提供する。複数のＶＭインスタンスを備える一つのＶＭファミリによってコンテンツが分析されうることも勿論である。
【００５４】
図３に示されるように、各ＶＭディスクファイル（ＶＭディスクファイル３６０１など）は、読出し専用情報を備えている。当該情報は、プロファイル情報３７０と状態情報３７５を関連するイベントログ３８０とともに含んでいる。イベントログ３８０は、ソフトウェアプロファイル３７０に基づいて、ＶＭクローン３１０１などのＶＭインスタンスの実行中における疑わしいコンテンツ３２０に係る望ましくない挙動に関連付けられた特定のイベントやアクティビティを、持続的に保存するように構成されている。
【００５５】
この場合、図示のように、プロファイル情報３７０は、ＶＭディスクファイル３６０１内でソフトウェアプロファイルを形成し、対応するＶＭクローンがインスタンス化されるものとして特定されたアイテムを示す情報を含む。ソフトウェアプロファイル内のアイテムの例としては、特定のＯＳ種やバージョン、アプリケーションの種別やバージョン、当該ＶＭディスクファイルに対応するＶＭインスタンスに必要なメモリの量、当該対応するＶＭインスタンスによりサポートされうる特定の仮想デバイスの情報などが挙げられるが、これらに限定あるいは制限されるものではない。
【００５６】
状態情報３７５は、初期化後かつ特定の仮想動作状態に入った後におけるＯＳ、アプリケーション、および仮想デバイスの少なくとも一つのスナップショットに基づく状態を含む。状態情報３７５は、各ＶＭクローンが同一かつ所定の仮想動作状態とされることを可能にする。当該動作状態において、追加のリソースがＶＭクローントランジションとしてＶＭインスタンスに割り当てられる。
【００５７】
発明の一実施形態によれば、疑わしいコンテンツ３２０が動的分析のために受信されると、ヒューリスティックエンジン１７０により行なわれる静的分析とは対照的に、コントローラ３００のスケジューラ１８０は、疑わしいコンテンツ３２０が分析される対象動作環境を正確にシミュレートするために、少なくとも一つのＶＭインスタンス３１０１〜３１０Ｎを特定および選択するように構成される。当該対象動作環境は、ソフトウェアプロファイル情報により特定される。当該情報の例としては、仮想デバイス状態を示す情報を伴う特定バージョンのＯＳとアプリケーションのイメージが挙げられる。
【００５８】
より具体的には、スケジューラ１８０は、ＶＭプロビジョニングロジック３４０とＶＭリソースロジック３４５を備えている。ＶＭプロビジョニングロジック３４０は、ＶＭクローンを生成し、ＭＣＤシステム１１０１内で同時に利用されるＶＭインスタンスの数を管理する役割を担う。これにより、ＶＭインスタンスの数は、所定のＶＭ閾値を上回らない。当該所定のＶＭ閾値は、同時に動作するＶＭに使用されるために割り当てられうる所定数のリソース（メモリ量）に基づいている。例えば、ＶＭインスタンスが少数（Ｍ；例えば１０未満）のソフトウェアプロファイルに基づく場合、より多数のＶＭインスタンスがＭＣＤシステム１１０１によりサポートされうる（すなわち、ＶＭ閾値は第一の値をとりうる）。なぜなら、ある少数のソフトウェアプロファイルが必要とされると、これらのＶＭインスタンスの多くは、他のＶＭインスタンスに使用されるために割り当てられる同じリソースのかなりの部分を共有するＶＭクローンとしてインスタンス化される。同様に、ＶＭインスタンスがより多数の異なるソフトウェアプロファイル（例えば、Ｍ＞１５）に基づく場合、サポートされうるＶＭインスタンスは少なくなる（すなわち、ＶＭ閾値は第一の値より小さな第二の値をとりうる）。ＶＭ閾値に達すると、マルウェア分析テストは遅延され、到来するコンテンツは、ＶＭの数がＶＭ閾値以下になるまで待ち行列に入れられる。このとき、ＶＭプロビジョニングロジック３４０は、ＶＭクローンのプロビジョニングの継続を許される。
【００５９】
ＶＭクローンを生成するために、疑わしいコンテンツが動的に分析される場合、ＶＭプロビジョニングロジック３４０は、疑わしいコンテンツに係る対象動作環境に対応する特定のソフトウェアプロファイルを有するＶＭインスタンスが実行されているかを、まず判断する。ＶＭインスタンスは、特定のソフトウェアプロファイルに基づいてＶＭクローンとして現在動作しているものでもよいし、過去にＶＭクローンとして動作したもの（すなわち、そのＶＭインスタンスに割り当てられた追加のリソース）であってもよい。特定のソフトウェアプロファイルを有する当該ＶＭインスタンスが実行されている場合、ＶＭプロビジョニングロジック３４０は、ＶＭクローンをインスタンス化する。この場合、さらなるリソースの割り当ては必要ない。あるいは、ＶＭプロビジョニングロジック３４０は、特定のソフトウェアプロファイルに関連付けられたＶＭディスクファイル３６０ｉ（１＜ｉ＜Ｍ）に基づいてリソースを割り当てる。
【００６０】
ＶＭリソースロジック３４５は、リソース要求に応答し、リソースと回復状態を割り当て、当該リソースの割り当てを監視するために、ＭＣＤシステム内で集中型ロジックとして動作する。より具体的には、ＶＭリソースロジック３４５は、クローンを含む各ＶＭインスタンス３１０１〜３１０Ｎにより行なわれるコピーオンライト動作のために割り当てられる追加リソース用のメモリ内のロケーションを維持するように構成されている。さらに具体的には、あるソフトウェアプロファイルに係る各ＶＭクローンは、同一の割り当てられたリソースを共有する。ＶＭクローンが追加のリソースを要求すると、ＶＭリソースロジック３４５は、要求されたリソース（特定のメモリページなど）を当該ＶＭクローンに割り当てる。リソースの割り当てに際し、ＶＭリソースロジック３４５は、割り当てられたリソースと関連付けられたアドレス指定情報を、メモリ割り当てテーブル内の当該ＶＭインスタンスに付与された識別子とともに保存する。
【００６１】
特定のソフトウェアプロファイルに対応する少なくとも一つのＶＭイメージが分析エンジン１９０により受信されると、スケジューラ１８０は、監視モジュール３３０が実行されているＶＭクローン３１０１を起動する。監視モジュール３３０は、疑わしいコンテンツ３２０の活動と挙動を監視し、到来するコンテンツがマルウェアを含んでいるか、および特定のソフトウェアプロファイルが当該マルウェアに攻撃される脆弱性を備えているかを判断するように構成されている。加えて、監視モジュール３３０は、ＶＭクローン３１０１の実行中における疑わしいコンテンツ３２０の特定のイベントや活動を連絡するために、コントローラ３００のイベントログ３５０との持続的な通信チャネルを維持する。
【００６２】
疑わしいコンテンツ３２０の処理中に特定の望ましくない挙動が検出されると、リプレイロジック３２５は、疑わしいコンテンツ３２０内にマルウェアの存在と特定のソフトウェアプロファイルにおける潜在的な脆弱性を特定する。監視モジュール３３０は、その後で通信チャネルを介してイベントログ３５０へメッセージを送信するように構成されている。当該メッセージは、イベントログ３８０の一部として持続的な記録に供されるべく、送信媒体３０５を介して送られうる。当該メッセージは、疑わしいコンテンツ３２０により引き起こされたイベントを特定する情報を含みうる。イベントログ３５０は、監視モジュール３３０によって選択的に監視および検出されたイベント（望ましくない挙動を含む）を記録する。イベントの記録は、特定の動作あるいは非動作（ファイル作成、レジストリアクセス、ＤＬＬローディング、プロセス実行、スリープのような電源管理など）に応じて開始されうる。記録されたイベントは、引き続いて分析エンジン１９０により分析されうる。当該分析は、疑わしいコンテンツ３２０がマルウェアを含むか、あるいはマルウェアを含む高い可能性を有しているかを判断するための規則や方針に基づく。
【００６３】
４．コピーオンライト動作の実施形態例
図４と図５は、ＶＭクローンの各ファミリ、および特定ファミリ内のＶＭクローンに対して行なわれるコピーオンライト（ＣＯＷ）動作を示すブロック図である。図４に示されるように、ＶＭクローンの第一ファミリ４００は、第一ソフトウェアプロファイルに基づいてインスタンス化され、ＶＭクローンの第二ファミリ４５０は、第二ソフトウェアプロファイルに基づいてインスタンス化される。すなわち、ＶＭクローンの第一ファミリ４００は、システムリソース４４０内の共有リソース４２０にアクセスするように構成された少なくとも一つのＶＭクローン（ＶＭクローン４１０、４１５など）のセットを含んでいる。共有リソース４２０は、システムリソース４４０内の所定の領域にデータを含んでおり、第一ソフトウェアプロファイルに係る特定のＯＳ、所定のアプリケーション、ハードウェアデバイス（ポートなど）を仮想化するためのデータを提供する。共有リソース４２０は、マルウェアの疑いがあるコンテンツを動的に分析するために、ＶＭクローン４１０、４１５によって少なくとも部分的に使用される。
【００６４】
第一ＶＭクローン４１０（ＶＭインスタンス）が動作し、共有リソース４２０によって提供されるリソースに加えてあるいは代えて別のリソースを要求すると、リソース４３０が割り当てられる。リソース４３０は、システムリソース４４０における少なくとも一つのページ５００に対する書き込み動作を行なうことにより獲得されうる。図４と図５に示されるように、ページ５００は、共有リソース４２０に関連付けられたメモリページ５１０とは異なる。メモリページ５００は、マルウェア分析の間、引き続き第一ＶＭクローン４１０によってアクセスされうる。さらに、第ｉＶＭクローン４１５（ＶＭインスタンス）が動作し、共有リソース４２０によって提供されるリソースに加えてあるいは代えて別のリソースを要求すると、図４と図５に示されるように、共有リソース４２０に関連付けられたメモリページ５１０とは異なる少なくとも一つのページ５２０に対する書き込み動作を行なうことにより、リソース４３５が割り当てられる。
【００６５】
図４に示されるように、ＶＭクローンの第二ファミリ４５０は、同様の構成を有している。ＶＭクローンの第二ファミリ４５０は、各々がシステムリソース４４０内の共有リソース４７０へのアクセスを有する少なくとも二つのＶＭクローン４６０、４６５を含んでいる。共有リソース４７０は、共有リソース４２０とは異なる。共有リソース４７０は、システムリソース４４０内の所定の領域にデータを含んでおり、第一ソフトウェアプロファイルとは異なる第二ソフトウェアプロファイル（異なるＯＳ種など）に係る特定のＯＳ、所定のアプリケーション、ハードウェアデバイス（ポートなど）を仮想化するためのデータを提供する。
【００６６】
５．ＶＭインスタンスの最適化
図６は、ＶＭクローンをインスタンス化する動作を具体的に示すフローチャートである。マルウェア検知分析を行なう前に、入力されたコンテンツがＭＣＤシステムにより受信される（ブロック６００）。当該コンテンツが「疑わしい」コンテンツを構成していると判断されると（ブロック６０５）、入力された疑わしいコンテンツが標的とする動作環境に関連付けられたソフトウェアプロファイル情報（ＯＳの種別やバージョン、アプリケーションの種別やバージョン、仮想デバイスなど）が判断される（ブロック６１０）。本開示の一実施形態によれば、当該ソフトウェアプロファイル情報は、当該疑わしいコンテンツを形成するデータパケットのペイロードを分析することにより判断されうる。あるいは、当該ソフトウェアプロファイル情報は、ブラウザ署名などから取得されうる。
【００６７】
その後、当該判断されたソフトウェアプロファイル情報に対応するソフトウェアプロファイルをサポートしている少なくとも一つのＶＭディスクが存在するかの判断がなされる（ブロック６１５）。存在する場合、ＶＭ閾値に達していないという条件の下（ブロック６２０）、当該ソフトウェアプロファイルに基づく少なくとも一つのＶＭクローンが、ＶＭプロビジョニングロジックによってセットアップされうる（ブロック６２５）。ＶＭ閾値に達している場合、ＶＭクローンはセットアップされず（ユーザや管理者の傍のディスプレイに警告やエラー報告のメッセージが生成されうる）、コンテンツは、セットアップされたＶＭクローンの数がＶＭ閾値未満になるまで一時的にバッファされうる（ブロック６３０）。
【００６８】
しかしながら、上記特定のソフトウェアプロファイルをサポートしているＶＭディスクが存在しない場合、上記のソフトウェアプロファイル情報が上記ＶＭディスクファイルの少なくとも一つのソフトウェアプロファイルと相関を有する情報を含んでいるかについて第二の判断がなされる（ブロック６３５）。例えば、本開示の一実施形態によれば、ソフトウェアプロファイル情報内において特定される少なくともＯＳとバージョン番号が少なくとも一つのＶＭディスクファイル内のソフトウェアプロファイルと合致している場合、当該ソフトウェアプロファイル情報は、当該少なくとも一つのＶＭディスクのソフトウェアプロファイルと相関を有している。本開示の他の実施形態によれば、ソフトウェアプロファイル情報が、（１）少なくとも一つのＶＭディスクファイル内のソフトウェアプロファイルによってバージョン種とは独立して特定されるＯＳ、（２）あるＶＭディスクファイル内のソフトウェアプロファイルによってバージョン種に依らず必須のアプリケーションとともに特定されるＯＳ、（３）あるＶＭディスクファイル内のソフトウェアプロファイルによって必須のアプリケーションと同じ機能を有するアプリケーションとともに特定されるＯＳを含む場合、当該ソフトウェアプロファイル情報は、当該ソフトウェアプロファイルと対応する。必要とされる対応レベルは、管理者やユーザによって設定されうる。
【００６９】
当該ＯＳが提供されていない場合や当該特定されたＯＳのサポートがない場合、エラー報告がユーザや管理者に提供されうる（ブロック６３０）。しかしながら、上記第二の判断により、当該ＯＳがＭＣＤシステムなどによってサポートされていることが検出されると、ＶＭ閾値に達していないという条件の下、当該特定のＯＳ種に係る全てのソフトウェアプロファイルについてＶＭクローンが生成されうる（ブロック６４０、６４５）。ＶＭ閾値は、様々な手法で演算されうる。ＶＭ閾値を上回ると、エラー報告が生成されうる（ブロック６３０）。そうでなければ、複数のＶＭクローンが生成されて分析エンジンに供給され、当該複数のＶＭクローンの一つが、リプレイロジックの一部として実行される。
【００７０】
一例として、ＶＭ閾値は、ＶＭ動作に割り当てられたメモリ量（２０ＧＢなど）を分析することによって演算されうる。当該メモリ量は、（ａ）別々のソフトウェアプロファイルに関連付けられた各ＶＭクローンに割り当てられた第一の所定メモリサイズ（１ＧＢなど）の合計、および（ｂ）（ａ）に係るソフトウェアプロファイルの一つに関連付けられた追加ＶＭクローンの各々に割り当てられた第二の所定メモリサイズ（１００ＭＢなど）に内訳される。この数値例に沿ってＭＣＤシステムが２０個のＶＭクローン（各々が別のソフトウェアプロファイルに関連付けられている）をサポートできる場合、１０個のＶＭクローンが別々のソフトウェアプロファイルに関連付けられ、これらのソフトウェアプロファイルに１００個の追加ＶＭクローンが関連付けられる。あるいは、５個のＶＭクローンが別々のソフトウェアプロファイルに関連付けられ、これらのソフトウェアプロファイルに１５０個の追加ＶＭクローンが関連付けられる。
【００７１】
図７Ａと図７Ｂは、複数のＶＭクローンによって同時に行なわれるコピーオンライト動作に係るフローチャートの例を示している。第一のＶＭクローンが分析エンジンによって受信されると、当該第一のＶＭクローンは、リプレイロジックにロードされ、第一のＶＭクローンのインスタンス化を引き起こした疑わしいコンテンツを分析するために実行される（ブロック７００、７０５）。当該分析は、当該疑わしいコンテンツ内のマルウェアによって引き起こされる望ましくない挙動を検出するために行なわれる。
【００７２】
第一のＶＭクローンの実行中、共有リソースにおける少なくとも一つのメモリページ内のデータを変更しうる書き込み動作に応じて、ＶＭリソースロジックは、書き込み用データを受信するために追加リソースを割り当てる（ブロック７１０、７１５）。その後、第一のＶＭクローンは、コピーオンライト（ＣＯＷ）動作を行ない、当該書き込み用データを当該追加リソース内に保存する（ブロック７２０）。やや異なる機能（当該共有リソースにおける上記少なくとも一つのメモリページ以外へのアクセスなど）の場合、第一のＶＭクローンは、第一のＶＭインスタンスとみなされる。この第一のＶＭインスタンスは、書き込まれたデータを保存している当該追加リソースのみへのアクセスを有する。第一のＶＭクローン（インスタンス）の実行および疑わしいコンテンツの分析が未完である場合、ＶＭリソースロジックは、必要に応じて第一のＶＭクローン（インスタンス）による使用に供される追加リソースの割り当てを継続する（ブロック７２５）。
【００７３】
第一のＶＭクローンにより行なわれる動作（図７Ｂにおいて符号Ａが付されている）と同時に、分析エンジンは、第二のＶＭクローンを受信する。第二のＶＭクローンもまた、リプレイロジックにロードされ、疑わしいコンテンツを分析するために実行される（ブロック７３０、７３５）。第二のＶＭクローンは、第一のＶＭクローンと同じソフトウェアプロファイルに関連しており、疑わしいコンテンツは、第一のＶＭクローンによって分析された疑わしいコンテンツとは別のデータフローから抽出される。
【００７４】
第二のＶＭクローンの実行中、やはり共有リソースにおける少なくとも一つのメモリページ内のデータを変更しうる書き込み動作に応じて、ＶＭリソースロジックは、書き込み用データを受信するために別の追加リソースを割り当てる（ブロック７４０、７４５）。その後、第一のＶＭクローンは、コピーオンライト（ＣＯＷ）動作を行ない、当該書き込み用データを当該別の追加リソース内に保存する（ブロック７５０）。やや異なる機能（当該共有リソースにおける当該メモリページ以外へのアクセスなど）の場合、第二のＶＭクローンは、第二のＶＭインスタンスとみなされる。
【００７５】
この後、第二のＶＭインスタンスは、書き込まれたデータを保存している当該他の追加リソースのみへのアクセスを有する。第二のＶＭクローン（インスタンス）の実行および疑わしいコンテンツの分析が未完である場合、ＶＭリソースロジックは、必要に応じて第二のＶＭクローン（インスタンス）による使用に供される追加リソースの割り当てを継続する（ブロック７５５）。このプロセスは、第一のＶＭクローンと第二のＶＭクローンのインスタンス化のために使用されるものと同じソフトウェアプロファイルに基づく別のＶＭクローンに対して継続しうる。
【００７６】
これまでの記載においては、特定の実施形態例を参照しつつ本発明が説明されている。しかしながら、請求の範囲に記載された発明の趣旨から逸脱しない限りにおいて、様々な変更がなされうることは明らかである。例えば、図１におけるＭＣＤシステム１１０１〜１１０３に加えてあるいは代えて、上記のマルウェア分析は、複数のＶＭの最適利用を通じて動的なマルウェア分析を行うように構成された通信ネットワーク内のファイアウォールなどのコンポーネント内において行なわれうる。
【００７７】
また、本発明の一実施形態は、コンピュータ制御された方法でありうる。当該方法は、（１）リソースが割り当てられている第一仮想マシンインスタンスをコントローラによってインスタンス化して、第一仮想マシンインスタンスに第一仮想動作環境を提供させること、および（２）前記第一仮想マシンインスタンスと同時に実行中の第二仮想マシンインスタンスを前記コントローラによってインスタンス化して、当該第二仮想マシンインスタンスに前記第一仮想マシンインスタンスに割り当てられた前記リソースを共有させるとともに、コピーオンライト動作を行なうに際して当該第二仮想マシンインスタンスに追加リソースを割り当てること、を含んでいる。第一仮想マシンインスタンスは、第一ソフトウェアプロファイルに基づきうる。第一ソフトウェアプロファイルは、第一仮想実行環境を仮想化するために用いられる情報を含む（第一仮想マシンインスタンスにより実行されている特定バージョンのオペレーティングシステムに関連付けられた情報、第一仮想マシンインスタンスにより実行されている特定バージョンのアプリケーションに関連付けられた情報など）。第二仮想マシンインスタンスは、第一ソフトウェアプロファイルに基づきうる。第二仮想マシンインスタンスは、第一仮想マシンインスタンスの動作中にインスタンス化されうる。
【００７８】
この実施形態によれば、第一仮想マシンインスタンスは、第一ソフトウェアプロファイルを有するクライアント装置上で動作するように仕向けられた第一データフローからのデータがマルウェアを含むかを分析するように構成されうる。第二仮想マシンインスタンスは、当該クライアント装置上で動作するように仕向けられて第一データフローとは異なる第二データフローからのデータがマルウェアを含むかを分析するように構成されうる。
【００７９】
第一仮想マシンインスタンスと第二仮想マシンインスタンスを含む複数の仮想マシンインスタンスがインスタンス化された後、上記コンピュータ制御された方法は、（１）第三仮想マシンインスタンスのインスタンス化が、同時に動作する仮想マシンインスタンスの所定数を表す閾値を上回るかを判断すること、および（２）仮想マシンインスタンス数の合計が前記閾値以下である場合に第三仮想マシンインスタンスを仮想化し、当該合計が当該閾値を上回る場合に第三仮想マシンインスタンスの仮想化を行なわないこと、をさらに含む。当該閾値は、第一所定数の仮想マシンインスタンスが仮想マシンクローンである場合に、第一の値をとりうる。仮想マシンクローンとは、生成時の初期動作状態で動作している仮想マシンインスタンスである。あるいは、当該閾値は、第二所定数の仮想マシンインスタンスが仮想マシンクローンである場合に、第一の値よりも小さい第二の値をとりうる。第二所定数は、第一所定数よりも小さい。
【００８０】
別の実施形態は、非一時的かつコンピュータ読取り可能な媒体を含みうる。当該媒体は、少なくとも一つのハードウェアプロセッサによる実行されて動作するソフトウェアを含んでいる。当該動作は、（１）リソースが割り当てられている第一仮想マシンインスタンスをコントローラによってインスタンス化して、第一仮想マシンインスタンスに第一仮想動作環境を提供させること、および（２）前記第一仮想マシンインスタンスと同時に実行中の第二仮想マシンインスタンスを前記コントローラによってインスタンス化して、当該第二仮想マシンインスタンスに前記第一仮想マシンインスタンスに割り当てられた前記リソースを共有させるとともに、コピーオンライト動作を行なうに際して当該第二仮想マシンインスタンスに追加リソースを割り当てること、を含んでいる。
【００８１】
さらに別の実施形態は、マルウェアコンテンツ検出（ＭＣＤ）システムを含みうる。当該システムは、（１）到来するコンテンツを受信するように構成されているネットワークポート、（２）各々がソフトウェアプロファイルと関連付けられるとともにプロセッサ上で前記到来するコンテンツの処理を実行するように構成されている少なくとも一つの仮想マシン（ＶＭ）インスタンスを含む仮想環境において、前記到来するコンテンツを分析するように構成されている分析エンジン、（３）少なくとも一つのＶＭクローンを生成するとともに同時に使用されるＶＭインスタンス（当該ＶＭクローンを含む）の数が閾値を上回らないよう監視するように構成されているＶＭプロビジョニングロジック、および（４）リソース要求に応答して各ＶＭインスタンスにリソースを割り当てるように構成されているＶＭリソースロジックを備えている。
【００８２】
このＭＣＤシステムの場合、ＶＭリソースロジックは、各ＶＭインスタンスへのリソースの割り当てを管理するように構成されている割り当てテーブルを備えている。また、ＶＭリソースロジックは、ＶＭプロビジョニングロジックによるＶＭクローンの生成に際して、対応する各ＶＭクローンにリソースを割り当てるように構成されている。その結果、同じファミリ内の各ＶＭクローンは、割り当てられた同じリソースを共有する。共有は、ＶＭクローンが当該リソースに対する変更を見つけるまで継続する。その後、ＶＭクローンが割り当てられたリソースのいずれかに変更を見つけると、当該ＶＭクローンは固有のＶＭインスタンスとみなされるが、当該ＶＭファミリ内の他のＶＭクローンやＶＭインスタンスとともに当該割り当てられたリソースの少なくとも一部の共有を継続することにより、当該ＶＭファミリ内に残る。ＶＭリソースロジックは、変更されたとみなされたリソースを置き換えるために、当該固有のＶＭインスタンスに追加リソースを割り当てる。これにより、当該固有のＶＭインスタンスによる当該追加リソースに対する変更の継続を可能にする。
【図１】
0006419787.tif 000002
【図２】
0006419787.tif 000003
【図３】
0006419787.tif 000004
【図４】
0006419787.tif 000005
【図５】
0006419787.tif 000006
【図６】
0006419787.tif 000007
【図７Ａ】
0006419787.tif 000008
【図７Ｂ】
0006419787.tif 000009