【文献】
鉄穎,他,多数のマルウェア検体を並列解析可能な動的解析システムの提案,コンピュータセキュリティシンポジウム2012論文集,日本,情報処理学会,2012年10月23日,Vol.2012,No.3,pp.728−735
(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0014】
1.用語
以降の説明においては、発明の特徴を記述するために特定の用語が使用される。例えば、特定の状況下において、「ロジック」と「エンジン」の両用語は、少なくとも一つの機能を実行するように構成されたハードウェア、ファームウェア、ソフトウェアの少なくとも一つを表す。ハードウェアの場合、ロジック(あるいはエンジン)は、データを処理あるいは記憶する機能を有する回路を含みうる。そのような回路の例としては、マイクロプロセッサ、少なくとも一つのプロセッサコア、プログラマブルゲートアレイ、マイクロコントローラ、特定用途向け集積回路、無線受信回路、無線送信回路、無線送受信回路、半導体メモリ、組合せロジックが挙げられるが、これらに限定あるいは制限されない。
【0015】
ロジック(あるいはエンジン)は、少なくとも一つのソフトウェアモジュールの形態でありうる。そのような例としては、実行可能なアプリケーションの形態である実行可能なコード、アプリケーションプログラミングインターフェース(API)、サブルーチン、関数、プロシージャ、アプレット、サーブレット、ソースコード、オブジェクトコード、共有ライブラリまたはダイナミックロードライブラリ、少なくとも一つの指令が挙げられる。これらのソフトウェアモジュールは、あらゆる適当な非一時的な記憶媒体または一時的な記憶媒体に記憶されうる。一時的な記憶媒体の例としては、電気的、光学的、音響的などの形態をとる伝達信号(搬送波、赤外信号、デジタル信号など)が挙げられる。非一時的な記憶媒体の例としては、プログラマブル回路、半導体メモリ、揮発性メモリ(例えば、あらゆるランダムアクセスメモリ;RAM)のような非永続性ストレージ、不揮発性メモリ(読出し専用メモリ;ROM、電源バックアップ型RAM、フラッシュメモリ、フェーズチェンジメモリなど)のような永続性ストレージ、半導体ドライブ、ハードディスクドライブ、光ディスクドライブ、携帯メモリ装置などが挙げられる。ファームウェアの例としては、永続性ストレージに記憶された実行可能なコードが挙げられる。
【0016】
「コンテンツ」という語は、少なくとも一つのメッセージとして転送される情報を主に指す。各メッセージは、パケット、フレーム、非同期転送モード(ATM)セルなど所定のフォーマットを有する一連のビットの形態でありうる。コンテンツは、入力データトラフィック内におけるデータフロー(すなわち関連メッセージ群)として受信されうる。
【0017】
なお、コンテンツは少なくとも一つの種別のデータ(テキスト、ソフトウェア、イメージ、音声、メタデータなどのデジタルデータ)を含みうる。コンテンツの例としては、ウェブコンテンツなどのデータトラフィックが挙げられる。当該データトラフィックは、ハイパーテキスト転送プロトコル(HTTP)ハイパーテキストマークアップ言語(HTML)プロトコルなどウェブブラウザソフトウェアアプリケーション上での表示に適した手法で送信されうる。
【0018】
コンテンツの別例としては、電子メールが挙げられる。電子メールは、シンプルメール転送プロトコル(SMTP)、ポストオフィスプロトコルのバージョン3(POP3)、インターネットメッセージアクセスプロトコル(IMAP4)などの電子メールプロトコルを用いて送信されうる。コンテンツのさらに別の例としては、インスタントメッセージが挙げられる。インスタントメッセージは、セッションイニシエーションプロトコル(SIP)やエクステンシブルメッセージングアンドプレゼンスプロトコル(XMPP)などを用いて転送されうる。コンテンツのさらに別の例としては、少なくとも一つのファイルが挙げられる。当該ファイルは、ファイル転送プロトコル(FTP)などのデータ転送プロトコルを用いてファイル共有上の別のストレージへ転送されうる。
【0019】
「マルウェア」という語は、実行時に望ましくない挙動を生ずるソフトウェアを指す。当該挙動は、世論や政府事業体または商業事業体によって定められた規則(顧客固有の規則、製造者ベースの規則など)、もしくは特定のソフトウェアプロファイルにおける潜在的な脆弱性に基づいて「望ましくない」とみなされる。この望ましくない挙動は、通信ベースの異常や実行ベースの異常を含みうる。当該異常は、(1)アプリケーションを実行する電子装置の機能を悪意ある手法で変更したり、(2)アプリケーションを実行する電子装置の機能を悪意なしに変更したり、(3)別の場面では普通に許容されうる不要な機能を提供したりする。
【0020】
「送信媒体」という語は、複数のシステム間の通信経路を意味する。システムの例としては、セキュリティアプライアンス、サーバ、メインフレーム、コンピュータ、ネットブック、タブレット、スマートフォン、ルータ、スイッチ、ブリッジ、ブルータなどのデータ処理機能を有する電子装置が挙げられる。当該通信経路は、有線セグメントと無線セグメントの少なくとも一方を含みうる。これらの例としては、電気配線、光ファイバ、ケーブル、バストレース、赤外線やラジオ周波数(RF)を用いた無線チャネルなどの信号伝達機構が挙げられる。
【0021】
一般に、「仮想マシン(VM)インスタンス」は、(仮想または現実の)電子装置によるシミュレーションを意味し、通常は当該シミュレーションを行なう電子装置とは異なる。VMインスタンスは、仮想コンピュータの仕様に基づきうる。あるいは、VMインスタンスは、コンピュータアーキテクチャと現実世界コンピュータの機能をエミュレートしうる。VMインスタンスは、ハードウェアエミュレーションVM、フル仮想化VM、パラ仮想化VM、OSレベル仮想化VMの少なくとも一つを含む様々な種別の一つでありうる。
【0022】
「コンピュータ化」という語は、ソフトウェアとファームウェアの少なくとも一方と協働するハードウェアにより行なわれる動作を主に表す。
【0023】
最後に、本明細書で用いられる「または」と「〜の少なくとも一つ」という語は、両立的(inclusive)であることを意味する。すなわち、「A、B、またはC」あるいは「A、B、Cの少なくとも一つ」は、A、B、C、AとB、AとC、BとC、AとBとCのいずれをも意味する。この定義における例外は、要素、機能、ステップ、動作などの組合せが排他的(exclusive)であることが明らかな場合のみである。
【0024】
多くの異なる形態の実施形態に対して本発明が適用可能となるように、本開示は、当該発明の原理の一例とみなされることを意図しており、本発明が図示および記載された特定の実施形態に限定されることを意図するものではない。
【0025】
2.一般的なアーキテクチャ
図1を参照しつつ、通信システム100のブロック図の一例を示す。通信システム100は、複数のマルウェア検出システム(MCD)システム1101〜110N(Nは1よりも大きく、例えば3である)を備えている。MCDシステム1101〜110Nは、ネットワーク125を通じて管理システム120と通信可能に結合されている。一般に、管理システム120は、MCDシステム1101〜110Nを管理するように構成されている。例えば、管理システム120は、MCDシステム1101〜110Nのいずれかによるマルウェア検出の結果として生成されたマルウェアサインを、少なくとも一つの他のMCDシステム1101〜110Nに共有させるように構成されている。例えば、当該共有は、サブスクリプションに基づいて行なわれる。
【0026】
発明の本実施形態によれば、第一MCDシステム1101は、電子装置である。当該電子装置は、(1)通信ネットワーク130を通じて送られたデータトラフィックを少なくとも一つのサーバ装置140と少なくとも一つのクライアント装置150の間で遮断し、(2)当該データトラフィック内のコンテンツをリアルタイムにモニタするように構成されている。より具体的には、第一MCDシステム1101は、通信ネットワーク130を通じて受信されたコンテンツを検査し、「疑わしい」コンテンツを特定するように構成されうる。入力されたコンテンツの検査中に特定された少なくとも一つの特性がある程度の確率でマルウェアの存在を示していると評価されると、当該コンテンツは「疑わしい」と特定される。
【0027】
その後、当該疑わしいコンテンツは、マルウェアを含んでいるかを検出するために、仮想マシン(VM)実行環境内でさらに分析される。VM実行環境は、同じソフトウェアプロファイルをサポートしている複数のVMインスタンスを備えうる。特に、当該疑わしいコンテンツは、同じ目的の動作環境志向である複数のデータフロー内で検出される。これらのVMインスタンスは、「VMクローン」として作成される。VMクローンとは、所定の仮想動作状態において特定のソフトウェアプロファイルをサポートするように割り当てられた共有リソースへの読出し専用アクセスを伴うVMインスタンスである。よって、全てのVMクローンは、同じソフトウェアプロファイルをサポートし、最初の実行時において同一の状態とされる。
【0028】
しかしながら、複数のVMクローンの一つは、リソースの変更(特定のメモリページへの書込みなど)を要求する。この場合、VMインスタンスは、そのVMに対してのみアクセス可能な追加のリソースを作成するためにコピーオンライト動作を行なう。よって、図示の例においては、複数のVMインスタンスをサポートするために必要とされる割り当てメモリの総量が、各VMインスタンスにより排他的に要求される追加のリソースとともにソフトウェアプロファイルに割り当てられた共有システムリソースの量と等しくなるように最小化される。
【0029】
本実施形態に係る通信システム100によれば、第一MCDシステム1101は、ウェブベースのセキュリティアプライアンスでありうる。当該セキュリティアプライアンスは、入力されたデータトラフィックを検査し、当該データトラフィックに関連付けられたコンテンツがマルウェアを含むかを特定し、含む場合に当該コンテンツのより詳細な分析を行なうように構成される。より詳細な分析は、VM実行環境内におけるVMインスタンスにおいて行なわれ、当該データトラフィックが電子装置によって実際に処理された場合に生じうる望ましくない挙動を検出する。当該分析の詳細は後述する。
【0030】
通信ネットワーク130は、インターネットなどのパブリックコンピュータネットワークを含みうる。この場合、破線で示される付加的なファイアウォール155が通信ネットワーク130とクライアント装置150の間に介挿されうる。あるいは、通信ネットワーク130は、無線電話通信ネットワーク、広域ネットワーク、構内ネットワーク、複数のネットワークの組合せなどのプライベートコンピュータネットワークでありうる。
【0031】
第一MCDシステム1101は、ネットワークインターフェース160を介して(ファイアウォール155の背後で)通信ネットワーク130と結合されている様子が図示されている。ネットワークインターフェース160は、データ捕捉装置(「タップ」や「ネットワークタップ」と称される)として動作する。データ捕捉装置は、クライアント装置150との間を行き来するデータトラフィックを受け付け、当該データトラフィックから第一MCDシステム1101へコンテンツを提供するように構成されている。
【0032】
一般に、ネットワークインターフェース160は、クライアント装置150とやり取りされるコンテンツを受け取ると、サーバ装置140、クライアント装置150、または通信ネットワーク130によるパフォーマンスの大幅な低下を伴うことなく、それをコピーする。ネットワークインターフェース160は、コンテンツの任意の部分(例えば任意の数のデータパケット)をコピーできる。
【0033】
幾つかの実施形態において、ネットワークインターフェース160は、クライアント装置150向けにデータトラフィックからメタデータを捕捉できる。当該メタデータは、悪意あるコンテンツだけでなくそのようなコンテンツのソフトウェアプロファイルを当該データトラフィックが含んでいないかを判断するために使用される。当該メタデータは、サーバ装置140とクライアント装置150の少なくとも一方と関連付けられうる。別の実施形態においては、ヒューリスティックモジュール170が、データトラフィックと関連付けられたコンテンツを分析することにより、ソフトウェアプロファイルを判断できる。
【0034】
第一MCDシステム1101が専用のアプライアンスやコンピュータシステムとして実現されるいずれの実施形態においても、ネットワークインターフェース160は、当該アプライアンスやコンピュータシステムに統合されたアセンブリを含みうる。当該アセンブリは、ネットワークポート、ネットワークインターフェースカード、および関連するロジック(不図示)を含む。当該ロジックは、ファイアウォール155を通過するデータトラフィックを中断なく「タップ」し、当該データトラフィックのコピーをヒューリスティックモジュール170に提供するために、通信ネットワーク130に接続するように構成されている。別の実施形態においては、ネットワークインターフェース160は、通信経路(例えば、ファイアウォール155、ルータ、スイッチなどのネットワーク装置)上の中間装置に統合されうる。あるいは、ネットワークインターフェース160は、スタンドアローンのコンポーネント(適当な市販のネットワークタップなど)でありうる。仮想環境においては、仮想ネットワークからトラフィックをコピーするために仮想タップ(vTAP)が使用されうる。
【0035】
図1にさらに示されるように、第一MCDシステム1101は、ヒューリスティックエンジン170、ヒューリスティックデータベース175、スケジューラ180、ストレージ装置185、分析エンジン190、および報告モジュール195を含みうる。幾つかの実施形態において、ネットワークインターフェース160は、第一MCDシステム1101内に含まれうる。また、ヒューリスティックエンジン170、スケジューラ180、分析エンジン190の少なくとも一つは、プロセッサにより実行されるソフトウェアモジュールでありうる。当該プロセッサは、疑わしいコンテンツを受信し、マルウェア分析を行ない、ヒューリスティックデータベース175、ストレージ装置185、および報告モジュール195の少なくとも一つとして動作する少なくとも一つの非一時的な記憶媒体にアクセスするように構成されている。幾つかの実施形態において、ヒューリスティックエンジン170は、プロセッサにより実行されるソフトウェアモジュールであり、スケジューラ180と分析エンジン190は、別のプロセッサにより実行されるソフトウェアモジュールでありうる。これら二つのプロセッサは、物理的に離れた場所に配置され、ネットワークなどを介して通信可能に結合されうる。
【0036】
一般に、ヒューリスティックエンジン170は、後続のマルウェア分析が到来コンテンツの一部に対してのみ行なわれるようにするフィルタとして機能する。これにより、システムリソースを節約し、分析されたコンテンツ内のマルウェアの存在を判断するための応答時間をより短くできる。付随する効果として、「脆弱性」(マルウェアにより攻撃されうるコンテンツの一部)を有しうる到来コンテンツの一部のみを分析することにより、より多くの数のVMが協働するようにサポートされうる。
【0037】
図1に示されるように、ヒューリスティックエンジン170は、到来コンテンツのコピーをネットワークインターフェース160から受信し、「疑わしい」コンテンツがあるかを判断するために経験則を適用する。ヒューリスティックエンジン170により適用される経験則は、ヒューリスティックデータベース175に記憶されているデータと規則の少なくとも一方に基づきうる。また、ヒューリスティックエンジン170は、捕捉されたコンテンツのイメージを、当該コンテンツを実行または開くことなく調べうる。
【0038】
例えば、ヒューリスティックエンジン170は、捕捉されたコンテンツのメタデータまたは属性とコードイメージ(実行ファイルのバイナリイメージなど)の少なくとも一方を調べうる。これにより、捕捉されたコンテンツの特定部分が、悪意ある攻撃に対応する所定の属性パターンと一致または高い相関を有しているかが判断される。本開示の一実施形態によれば、ヒューリスティックエンジン170は、このヒューリスティック分析の適用後、少なくとも一つのデータフローから得たコンテンツを疑わしいと判定する。
【0039】
その後、本発明の一実施形態によれば、ヒューリスティックモジュール170は、クライアント装置150の属性を特定する当該疑わしいコンテンツのメタデータまたは属性の少なくとも一部を、分析エンジン190へ送信するように構成されうる。そのようなメタデータまたは属性は、その後のマルウェア分析に必要とされるVMインスタンスを特定し、対応するVMクローンを要求するためのソフトウェアプロファイル情報を構成するために使用される。本開示の別実施形態においては、分析エンジン190は、少なくとも一つのメッセージ(データパケットなど)をヒューリスティックエンジン170から受信し、必要とされるVMインスタンスに関連付けられたソフトウェアプロファイル情報を特定するために当該メッセージを分析するように構成されうる。
【0040】
テストされる疑わしいコンテンツの例としては、ウインドウズ(登録商標)7オペレーティングシステムの制御下でウインドウズ(登録商標)アウトルックバージョン12を用いて生成された電子メールメッセージが挙げられる。当該電子メールメッセージは、アドビ(登録商標)アクロバット(登録商標)バージョン9.0に依拠するポータブルドキュメントフォーマット(PDF)添付物を含みうる。当該電子メールが疑わしいコンテンツを含むかを判断するに際し、ヒューリスティックエンジン170は、疑わしいコンテンツの動的な分析を行なうために必要とされる特定種のVMインスタンスを特定するためにソフトウェアプロファイル情報を提供する。本例の場合、ソフトウェアプロファイル情報は、(1)ウインドウズ(登録商標)7オペレーティングシステム(OS)、(2)ウインドウズ(登録商標)アウトルックバージョン12、および(3)アドビ(登録商標)アクロバット(登録商標)バージョン9.0によるPDFサポート、を含みうる。
【0041】
分析エンジン190は、ソフトウェアプロファイル情報をスケジューラ180に提供する。スケジューラ180は、ストレージ装置185内のVMディスクファイルに上記のOSや少なくとも一つのアプリケーションをサポートしているソフトウェアプロファイルを備えるものがあるかの調査を行なう。そのようなソフトウェアプロファイルを示すものがあり、当該ソフトウェアプロファイルに基づくVMインスタンスが既に動作している場合、スケジューラ180は、最初にVMインスタンスを作成するために使用されたものと同じイメージを、VMクローンを作成するために使用する。よって、当該VMインスタンスと当該VMクローンは、同じVMファミリのメンバーである。上記の例の場合、当該VMクローンは、電子メールの添付物を受信し、開封し、処理するように構成された仮想デバイスの実行をサポートしうる。当該VMクローンは、疑わしいコンテンツを分析するために、分析エンジン190にアップロードされる。
【0042】
しかしながら、ストレージ装置185が上記のOSや少なくとも一つのアプリケーションをサポートしているソフトウェアプロファイルを備えているものの、現在動作中の対応するVMインスタンスが存在しない場合、スケジュール180は、VMプロビジョニングロジック(後述)から当該ソフトウェアプロファイルに関連付けられたイメージを取得する。このイメージは、その後、VMクローンの生成に使用されうる。ストレージ装置185が上記のOSやアプリケーションをサポートしているソフトウェアプロファイルを備えておらず、現在動作中の対応するVMインスタンスも存在しない場合、スケジューラ180は、単にVM要求を無視するか、同様のソフトウェアプロファイルに基づくVMプロビジョニングロジックからVMイメージを受信しうる。例えば、スケジューラ180は、VMインスタンスを、同じOSであるが異なるバージョンの対象アプリケーションに基づいて受信しうる。あるいは、スケジューラ180は、同じOSの対象アプリケーションとは別のアプリケーションであるが同じ機能を有するもの(種別が異なるブラウザなど)を受信しうる。またあるいは、スケジューラ180は、同様のアーキテクチャを有する別のOSを受信しうる。
【0043】
スケジューラ180は、クライアント装置150の関連するパフォーマンス特性を模倣するために、VMクローンを取得および構成しうる。一例において、スケジューラ180は、クライアント装置150の特徴のうち、ネットワークインターフェース160によってコピーされたデータトラフィックにより影響を受けるもののみを模倣するために、VMクローンの特性を構成するように設定されうる。スケジューラ180は、ネットワークインターフェース160からデータトラフィックを受信して分析することによって、コンテンツにより影響を受けるクライアント装置150の特徴を判断できる。クライアント装置150のそのような特徴の例としては、当該コンテンツを受信するポート、当該コンテンツに応答する特定のデバイスドライバ、クライアント装置150と結合された、あるいはクライアント装置150内に設けられた当該コンテンツに応答可能なデバイスなどが挙げられる。
【0044】
本開示の別実施形態においては、ヒューリスティックエンジン170が、ネットワークインターフェース160からデータトラフィックを受信して分析することによって、コンテンツにより影響を受けるクライアント装置150の特徴を判断できる。この場合、ヒューリスティックエンジン170は、当該特徴をスケジューラ180と分析エンジン190の少なくとも一方に送信しうる。
【0045】
例えば、本開示の一実施形態によれば、ヒューリスティックエンジン170は、クライアント装置150を特定するメタデータを分析エンジン190へ送信するように構成されうる。当該メタデータは、所望のソフトウェアプロファイルを特定するために使用される。あるいは、分析エンジン190は、データフローにおける少なくとも一つのデータパケットをヒューリスティックエンジン170から受信し、ソフトウェアプロファイルを特定するために当該少なくとも一つのデータパケットを分析するように構成されうる。本開示のさらに別の実施形態においては、スケジューラ180は、ソフトウェアプロファイル情報を、メタデータやデータパケット群の形態でネットワークインターフェース160またはヒューリスティックエンジン170から直接受信するように構成されうる。
【0046】
ストレージ装置185は、VMプロファイルデータベースを形成する少なくとも一つのVMディスクファイルを保存するように構成されている。この場合、各VMディスクファイルは、VMインスタンスの異なるソフトウェアプロファイルと対応付けられている。一例において、VMプロファイルデータベースは、単一のVMインスタンスと関連付けられたVMディスクファイルを保存できる。当該VMインスタンスは、通信ネットワーク130上のクライアント装置150のパフォーマンスを模倣するように、スケジューラ180によって構成されうる。あるいは、
図1に示されるように、VMプロファイルデータベースは、複数のVMディスクファイルを保存できる。この場合、各VMディスクファイルは、動作中のVMの異なる「ファミリ」と関連付けられた情報を含む。よって、これらのVMディスクファイルは、多様なクライアント装置150のパフォーマンスをシミュレートするように提供される。
【0047】
分析エンジン190は、クライアント装置150による異なる「疑わしい」コンテンツのデータフローの受信と実行の少なくとも一方だけでなく、異なる動作環境をシミュレートするために、少なくとも一つのVMクローンを含む複数のVMインスタンスを実行するように構成される。さらに、分析エンジン190は、そのようなコンテンツがクライアント装置150に与える影響を分析する。分析エンジン190は、各VMインスタンスにより遂行されるマルウェアの影響を特定できる。そのような影響の例としては、異常なネットワーク送信、異常なパフォーマンスの変化などが挙げられる。この検出プロセスは、動的な悪意あるコンテンツの検出と称される。
【0048】
分析エンジン190は、観察されたVMインスタンスの挙動に応じて、疑わしいコンテンツをマルウェアと判定しうる。報告モジュール195は、マルウェアの存在を示す警告を発行しうる。当該警告は、「疑わしい」コンテンツにおけるどのメッセージ(パケットなど)がマルウェアを含みうるかを特定するポインタなどの参照情報を用いる。加えて、サーバ装置140が悪意あるネットワークコンテンツプロバイダのリストに加えられうる。そして、サーバ装置140から開始される以降のネットワーク送信は、ファイアウォール155などによって、目的の送信先に到達することを阻止されうる。
【0049】
図2には、第二実施形態例に係るMCDシステム1101が示されている。本例においては、VMインスタンス化のためのソフトウェアプロファイルは、ネットワークインターフェース160、ヒューリスティックエンジン170、あるいは分析エンジン190による疑わしいコンテンツ(メタデータ、データパケット、バイナリなど)の分析を通じては特定されない。代わりに、リソースを共有し、特定の動作状態で動作するVMクローンのインスタンス化を制御するために、ソフトウェアプロファイル200がユーザやネットワーク管理者によってアップロードされる。
【0050】
より具体的には、ユーザインターフェース210は、ユーザやネットワーク管理者(以降は、「ユーザや管理者」と表記する)が、少なくとも一つの所定のソフトウェアプロファイル200に基づいて疑わしいコンテンツのオブジェクト220を導入できるようにする。ソフトウェアプロファイル200は、上述したスケジューラ180とストレージ装置185の動作に基づいて少なくとも一つのVMインスタンスを生成するために、ユーザや管理者によりプリロードあるいは選択されうる。当該VMインスタンスは、オブジェクト220の動的な分析を行なうことにより、当該VMインスタンス内における当該オブジェクト220の仮想的な実行中における望ましくない挙動を見つける。
【0051】
3.MCDシステム構成の実施形態例
図3には、本発明の一実施形態に係るMCDシステム1101の詳細なブロック図が示されている。本例において、MCDシステム1101は、コントローラ(データ処理回路)300と送信媒体305を介して結合されたストレージ装置185を備えている。コントローラ300は、分析エンジン190内で動作している少なくとも一つの仮想マシン(VM)インスタンス3101〜310N(N>1)の管理と制御の少なくとも一方を行なうように構成されている。VMインスタンス3101〜310Nに関連付けられた情報は、VMディスクファイル3601〜360M(N>M>1)の形態でストレージ装置185に保存される。
【0052】
この場合、コントローラ300は、VMモニタあるいはマネージャ(VMM)の一部として実現されうる。VMMは、VMインスタンスを管理あるいは監視するハイパーバイザとも称され、ホストオペレーティングシステム(OS)によりホストされうる。VMインスタンス3101〜310Nは、ゲストOSによってホストされうる。ホストOSとゲストOSは、同種のオペレーティングシステムであってもよいし、異種のオペレーティングシステムであってもよい。オペレーティングシステムの例としては、ウインドウズ(登録商標)、リナックス(登録商標)、ユニックス(登録商標)、マックOS(登録商標)、iOS(登録商標)や、それらの別バージョンが挙げられる。
【0053】
複数のVMインスタンス3101〜310N(1<i<N)は、第一のコンテンツに対するマルウェア分析を同時に行ないうる。本開示の一実施形態によれば、これら複数のVMインスタンス3101〜310Nの各々は、ほぼ同様のソフトウェアプロファイル(同じOSのVMや、OSバージョン番号が異なる同じアプリケーション種のVM、OSは同じだがアプリケーション種のバージョン番号が異なるVMなど)に基づきうる。加えて、これら複数のVMインスタンスは、第二のコンテンツに対するマルウェア分析を同時に行ないうる。よって、コンテンツは、複数のVMファミリ用の一つのVMインスタンスにおいて分析されうる。このような分析は、異なるOSやアプリケーションバージョン(パッチパージョンを含む)におけるソフトウェアの脆弱性をチェックするメカニズムを提供する。複数のVMインスタンスを備える一つのVMファミリによってコンテンツが分析されうることも勿論である。
【0054】
図3に示されるように、各VMディスクファイル(VMディスクファイル3601など)は、読出し専用情報を備えている。当該情報は、プロファイル情報370と状態情報375を関連するイベントログ380とともに含んでいる。イベントログ380は、ソフトウェアプロファイル370に基づいて、VMクローン3101などのVMインスタンスの実行中における疑わしいコンテンツ320に係る望ましくない挙動に関連付けられた特定のイベントやアクティビティを、持続的に保存するように構成されている。
【0055】
この場合、図示のように、プロファイル情報370は、VMディスクファイル3601内でソフトウェアプロファイルを形成し、対応するVMクローンがインスタンス化されるものとして特定されたアイテムを示す情報を含む。ソフトウェアプロファイル内のアイテムの例としては、特定のOS種やバージョン、アプリケーションの種別やバージョン、当該VMディスクファイルに対応するVMインスタンスに必要なメモリの量、当該対応するVMインスタンスによりサポートされうる特定の仮想デバイスの情報などが挙げられるが、これらに限定あるいは制限されるものではない。
【0056】
状態情報375は、初期化後かつ特定の仮想動作状態に入った後におけるOS、アプリケーション、および仮想デバイスの少なくとも一つのスナップショットに基づく状態を含む。状態情報375は、各VMクローンが同一かつ所定の仮想動作状態とされることを可能にする。当該動作状態において、追加のリソースがVMクローントランジションとしてVMインスタンスに割り当てられる。
【0057】
発明の一実施形態によれば、疑わしいコンテンツ320が動的分析のために受信されると、ヒューリスティックエンジン170により行なわれる静的分析とは対照的に、コントローラ300のスケジューラ180は、疑わしいコンテンツ320が分析される対象動作環境を正確にシミュレートするために、少なくとも一つのVMインスタンス3101〜310Nを特定および選択するように構成される。当該対象動作環境は、ソフトウェアプロファイル情報により特定される。当該情報の例としては、仮想デバイス状態を示す情報を伴う特定バージョンのOSとアプリケーションのイメージが挙げられる。
【0058】
より具体的には、スケジューラ180は、VMプロビジョニングロジック340とVMリソースロジック345を備えている。VMプロビジョニングロジック340は、VMクローンを生成し、MCDシステム1101内で同時に利用されるVMインスタンスの数を管理する役割を担う。これにより、VMインスタンスの数は、所定のVM閾値を上回らない。当該所定のVM閾値は、同時に動作するVMに使用されるために割り当てられうる所定数のリソース(メモリ量)に基づいている。例えば、VMインスタンスが少数(M;例えば10未満)のソフトウェアプロファイルに基づく場合、より多数のVMインスタンスがMCDシステム1101によりサポートされうる(すなわち、VM閾値は第一の値をとりうる)。なぜなら、ある少数のソフトウェアプロファイルが必要とされると、これらのVMインスタンスの多くは、他のVMインスタンスに使用されるために割り当てられる同じリソースのかなりの部分を共有するVMクローンとしてインスタンス化される。同様に、VMインスタンスがより多数の異なるソフトウェアプロファイル(例えば、M>15)に基づく場合、サポートされうるVMインスタンスは少なくなる(すなわち、VM閾値は第一の値より小さな第二の値をとりうる)。VM閾値に達すると、マルウェア分析テストは遅延され、到来するコンテンツは、VMの数がVM閾値以下になるまで待ち行列に入れられる。このとき、VMプロビジョニングロジック340は、VMクローンのプロビジョニングの継続を許される。
【0059】
VMクローンを生成するために、疑わしいコンテンツが動的に分析される場合、VMプロビジョニングロジック340は、疑わしいコンテンツに係る対象動作環境に対応する特定のソフトウェアプロファイルを有するVMインスタンスが実行されているかを、まず判断する。VMインスタンスは、特定のソフトウェアプロファイルに基づいてVMクローンとして現在動作しているものでもよいし、過去にVMクローンとして動作したもの(すなわち、そのVMインスタンスに割り当てられた追加のリソース)であってもよい。特定のソフトウェアプロファイルを有する当該VMインスタンスが実行されている場合、VMプロビジョニングロジック340は、VMクローンをインスタンス化する。この場合、さらなるリソースの割り当ては必要ない。あるいは、VMプロビジョニングロジック340は、特定のソフトウェアプロファイルに関連付けられたVMディスクファイル360i(1<i<M)に基づいてリソースを割り当てる。
【0060】
VMリソースロジック345は、リソース要求に応答し、リソースと回復状態を割り当て、当該リソースの割り当てを監視するために、MCDシステム内で集中型ロジックとして動作する。より具体的には、VMリソースロジック345は、クローンを含む各VMインスタンス3101〜310Nにより行なわれるコピーオンライト動作のために割り当てられる追加リソース用のメモリ内のロケーションを維持するように構成されている。さらに具体的には、あるソフトウェアプロファイルに係る各VMクローンは、同一の割り当てられたリソースを共有する。VMクローンが追加のリソースを要求すると、VMリソースロジック345は、要求されたリソース(特定のメモリページなど)を当該VMクローンに割り当てる。リソースの割り当てに際し、VMリソースロジック345は、割り当てられたリソースと関連付けられたアドレス指定情報を、メモリ割り当てテーブル内の当該VMインスタンスに付与された識別子とともに保存する。
【0061】
特定のソフトウェアプロファイルに対応する少なくとも一つのVMイメージが分析エンジン190により受信されると、スケジューラ180は、監視モジュール330が実行されているVMクローン3101を起動する。監視モジュール330は、疑わしいコンテンツ320の活動と挙動を監視し、到来するコンテンツがマルウェアを含んでいるか、および特定のソフトウェアプロファイルが当該マルウェアに攻撃される脆弱性を備えているかを判断するように構成されている。加えて、監視モジュール330は、VMクローン3101の実行中における疑わしいコンテンツ320の特定のイベントや活動を連絡するために、コントローラ300のイベントログ350との持続的な通信チャネルを維持する。
【0062】
疑わしいコンテンツ320の処理中に特定の望ましくない挙動が検出されると、リプレイロジック325は、疑わしいコンテンツ320内にマルウェアの存在と特定のソフトウェアプロファイルにおける潜在的な脆弱性を特定する。監視モジュール330は、その後で通信チャネルを介してイベントログ350へメッセージを送信するように構成されている。当該メッセージは、イベントログ380の一部として持続的な記録に供されるべく、送信媒体305を介して送られうる。当該メッセージは、疑わしいコンテンツ320により引き起こされたイベントを特定する情報を含みうる。イベントログ350は、監視モジュール330によって選択的に監視および検出されたイベント(望ましくない挙動を含む)を記録する。イベントの記録は、特定の動作あるいは非動作(ファイル作成、レジストリアクセス、DLLローディング、プロセス実行、スリープのような電源管理など)に応じて開始されうる。記録されたイベントは、引き続いて分析エンジン190により分析されうる。当該分析は、疑わしいコンテンツ320がマルウェアを含むか、あるいはマルウェアを含む高い可能性を有しているかを判断するための規則や方針に基づく。
【0063】
4.コピーオンライト動作の実施形態例
図4と
図5は、VMクローンの各ファミリ、および特定ファミリ内のVMクローンに対して行なわれるコピーオンライト(COW)動作を示すブロック図である。
図4に示されるように、VMクローンの第一ファミリ400は、第一ソフトウェアプロファイルに基づいてインスタンス化され、VMクローンの第二ファミリ450は、第二ソフトウェアプロファイルに基づいてインスタンス化される。すなわち、VMクローンの第一ファミリ400は、システムリソース440内の共有リソース420にアクセスするように構成された少なくとも一つのVMクローン(VMクローン410、415など)のセットを含んでいる。共有リソース420は、システムリソース440内の所定の領域にデータを含んでおり、第一ソフトウェアプロファイルに係る特定のOS、所定のアプリケーション、ハードウェアデバイス(ポートなど)を仮想化するためのデータを提供する。共有リソース420は、マルウェアの疑いがあるコンテンツを動的に分析するために、VMクローン410、415によって少なくとも部分的に使用される。
【0064】
第一VMクローン410(VMインスタンス)が動作し、共有リソース420によって提供されるリソースに加えてあるいは代えて別のリソースを要求すると、リソース430が割り当てられる。リソース430は、システムリソース440における少なくとも一つのページ500に対する書き込み動作を行なうことにより獲得されうる。
図4と
図5に示されるように、ページ500は、共有リソース420に関連付けられたメモリページ510とは異なる。メモリページ500は、マルウェア分析の間、引き続き第一VMクローン410によってアクセスされうる。さらに、第iVMクローン415(VMインスタンス)が動作し、共有リソース420によって提供されるリソースに加えてあるいは代えて別のリソースを要求すると、
図4と
図5に示されるように、共有リソース420に関連付けられたメモリページ510とは異なる少なくとも一つのページ520に対する書き込み動作を行なうことにより、リソース435が割り当てられる。
【0065】
図4に示されるように、VMクローンの第二ファミリ450は、同様の構成を有している。VMクローンの第二ファミリ450は、各々がシステムリソース440内の共有リソース470へのアクセスを有する少なくとも二つのVMクローン460、465を含んでいる。共有リソース470は、共有リソース420とは異なる。共有リソース470は、システムリソース440内の所定の領域にデータを含んでおり、第一ソフトウェアプロファイルとは異なる第二ソフトウェアプロファイル(異なるOS種など)に係る特定のOS、所定のアプリケーション、ハードウェアデバイス(ポートなど)を仮想化するためのデータを提供する。
【0066】
5.VMインスタンスの最適化
図6は、VMクローンをインスタンス化する動作を具体的に示すフローチャートである。マルウェア検知分析を行なう前に、入力されたコンテンツがMCDシステムにより受信される(ブロック600)。当該コンテンツが「疑わしい」コンテンツを構成していると判断されると(ブロック605)、入力された疑わしいコンテンツが標的とする動作環境に関連付けられたソフトウェアプロファイル情報(OSの種別やバージョン、アプリケーションの種別やバージョン、仮想デバイスなど)が判断される(ブロック610)。本開示の一実施形態によれば、当該ソフトウェアプロファイル情報は、当該疑わしいコンテンツを形成するデータパケットのペイロードを分析することにより判断されうる。あるいは、当該ソフトウェアプロファイル情報は、ブラウザ署名などから取得されうる。
【0067】
その後、当該判断されたソフトウェアプロファイル情報に対応するソフトウェアプロファイルをサポートしている少なくとも一つのVMディスクが存在するかの判断がなされる(ブロック615)。存在する場合、VM閾値に達していないという条件の下(ブロック620)、当該ソフトウェアプロファイルに基づく少なくとも一つのVMクローンが、VMプロビジョニングロジックによってセットアップされうる(ブロック625)。VM閾値に達している場合、VMクローンはセットアップされず(ユーザや管理者の傍のディスプレイに警告やエラー報告のメッセージが生成されうる)、コンテンツは、セットアップされたVMクローンの数がVM閾値未満になるまで一時的にバッファされうる(ブロック630)。
【0068】
しかしながら、上記特定のソフトウェアプロファイルをサポートしているVMディスクが存在しない場合、上記のソフトウェアプロファイル情報が上記VMディスクファイルの少なくとも一つのソフトウェアプロファイルと相関を有する情報を含んでいるかについて第二の判断がなされる(ブロック635)。例えば、本開示の一実施形態によれば、ソフトウェアプロファイル情報内において特定される少なくともOSとバージョン番号が少なくとも一つのVMディスクファイル内のソフトウェアプロファイルと合致している場合、当該ソフトウェアプロファイル情報は、当該少なくとも一つのVMディスクのソフトウェアプロファイルと相関を有している。本開示の他の実施形態によれば、ソフトウェアプロファイル情報が、(1)少なくとも一つのVMディスクファイル内のソフトウェアプロファイルによってバージョン種とは独立して特定されるOS、(2)あるVMディスクファイル内のソフトウェアプロファイルによってバージョン種に依らず必須のアプリケーションとともに特定されるOS、(3)あるVMディスクファイル内のソフトウェアプロファイルによって必須のアプリケーションと同じ機能を有するアプリケーションとともに特定されるOSを含む場合、当該ソフトウェアプロファイル情報は、当該ソフトウェアプロファイルと対応する。必要とされる対応レベルは、管理者やユーザによって設定されうる。
【0069】
当該OSが提供されていない場合や当該特定されたOSのサポートがない場合、エラー報告がユーザや管理者に提供されうる(ブロック630)。しかしながら、上記第二の判断により、当該OSがMCDシステムなどによってサポートされていることが検出されると、VM閾値に達していないという条件の下、当該特定のOS種に係る全てのソフトウェアプロファイルについてVMクローンが生成されうる(ブロック640、645)。VM閾値は、様々な手法で演算されうる。VM閾値を上回ると、エラー報告が生成されうる(ブロック630)。そうでなければ、複数のVMクローンが生成されて分析エンジンに供給され、当該複数のVMクローンの一つが、リプレイロジックの一部として実行される。
【0070】
一例として、VM閾値は、VM動作に割り当てられたメモリ量(20GBなど)を分析することによって演算されうる。当該メモリ量は、(a)別々のソフトウェアプロファイルに関連付けられた各VMクローンに割り当てられた第一の所定メモリサイズ(1GBなど)の合計、および(b)(a)に係るソフトウェアプロファイルの一つに関連付けられた追加VMクローンの各々に割り当てられた第二の所定メモリサイズ(100MBなど)に内訳される。この数値例に沿ってMCDシステムが20個のVMクローン(各々が別のソフトウェアプロファイルに関連付けられている)をサポートできる場合、10個のVMクローンが別々のソフトウェアプロファイルに関連付けられ、これらのソフトウェアプロファイルに100個の追加VMクローンが関連付けられる。あるいは、5個のVMクローンが別々のソフトウェアプロファイルに関連付けられ、これらのソフトウェアプロファイルに150個の追加VMクローンが関連付けられる。
【0071】
図7Aと
図7Bは、複数のVMクローンによって同時に行なわれるコピーオンライト動作に係るフローチャートの例を示している。第一のVMクローンが分析エンジンによって受信されると、当該第一のVMクローンは、リプレイロジックにロードされ、第一のVMクローンのインスタンス化を引き起こした疑わしいコンテンツを分析するために実行される(ブロック700、705)。当該分析は、当該疑わしいコンテンツ内のマルウェアによって引き起こされる望ましくない挙動を検出するために行なわれる。
【0072】
第一のVMクローンの実行中、共有リソースにおける少なくとも一つのメモリページ内のデータを変更しうる書き込み動作に応じて、VMリソースロジックは、書き込み用データを受信するために追加リソースを割り当てる(ブロック710、715)。その後、第一のVMクローンは、コピーオンライト(COW)動作を行ない、当該書き込み用データを当該追加リソース内に保存する(ブロック720)。やや異なる機能(当該共有リソースにおける上記少なくとも一つのメモリページ以外へのアクセスなど)の場合、第一のVMクローンは、第一のVMインスタンスとみなされる。この第一のVMインスタンスは、書き込まれたデータを保存している当該追加リソースのみへのアクセスを有する。第一のVMクローン(インスタンス)の実行および疑わしいコンテンツの分析が未完である場合、VMリソースロジックは、必要に応じて第一のVMクローン(インスタンス)による使用に供される追加リソースの割り当てを継続する(ブロック725)。
【0073】
第一のVMクローンにより行なわれる動作(
図7Bにおいて符号Aが付されている)と同時に、分析エンジンは、第二のVMクローンを受信する。第二のVMクローンもまた、リプレイロジックにロードされ、疑わしいコンテンツを分析するために実行される(ブロック730、735)。第二のVMクローンは、第一のVMクローンと同じソフトウェアプロファイルに関連しており、疑わしいコンテンツは、第一のVMクローンによって分析された疑わしいコンテンツとは別のデータフローから抽出される。
【0074】
第二のVMクローンの実行中、やはり共有リソースにおける少なくとも一つのメモリページ内のデータを変更しうる書き込み動作に応じて、VMリソースロジックは、書き込み用データを受信するために別の追加リソースを割り当てる(ブロック740、745)。その後、第一のVMクローンは、コピーオンライト(COW)動作を行ない、当該書き込み用データを当該別の追加リソース内に保存する(ブロック750)。やや異なる機能(当該共有リソースにおける当該メモリページ以外へのアクセスなど)の場合、第二のVMクローンは、第二のVMインスタンスとみなされる。
【0075】
この後、第二のVMインスタンスは、書き込まれたデータを保存している当該他の追加リソースのみへのアクセスを有する。第二のVMクローン(インスタンス)の実行および疑わしいコンテンツの分析が未完である場合、VMリソースロジックは、必要に応じて第二のVMクローン(インスタンス)による使用に供される追加リソースの割り当てを継続する(ブロック755)。このプロセスは、第一のVMクローンと第二のVMクローンのインスタンス化のために使用されるものと同じソフトウェアプロファイルに基づく別のVMクローンに対して継続しうる。
【0076】
これまでの記載においては、特定の実施形態例を参照しつつ本発明が説明されている。しかしながら、請求の範囲に記載された発明の趣旨から逸脱しない限りにおいて、様々な変更がなされうることは明らかである。例えば、
図1におけるMCDシステム1101〜1103に加えてあるいは代えて、上記のマルウェア分析は、複数のVMの最適利用を通じて動的なマルウェア分析を行うように構成された通信ネットワーク内のファイアウォールなどのコンポーネント内において行なわれうる。
【0077】
また、本発明の一実施形態は、コンピュータ制御された方法でありうる。当該方法は、(1)リソースが割り当てられている第一仮想マシンインスタンスをコントローラによってインスタンス化して、第一仮想マシンインスタンスに第一仮想動作環境を提供させること、および(2)前記第一仮想マシンインスタンスと同時に実行中の第二仮想マシンインスタンスを前記コントローラによってインスタンス化して、当該第二仮想マシンインスタンスに前記第一仮想マシンインスタンスに割り当てられた前記リソースを共有させるとともに、コピーオンライト動作を行なうに際して当該第二仮想マシンインスタンスに追加リソースを割り当てること、を含んでいる。第一仮想マシンインスタンスは、第一ソフトウェアプロファイルに基づきうる。第一ソフトウェアプロファイルは、第一仮想実行環境を仮想化するために用いられる情報を含む(第一仮想マシンインスタンスにより実行されている特定バージョンのオペレーティングシステムに関連付けられた情報、第一仮想マシンインスタンスにより実行されている特定バージョンのアプリケーションに関連付けられた情報など)。第二仮想マシンインスタンスは、第一ソフトウェアプロファイルに基づきうる。第二仮想マシンインスタンスは、第一仮想マシンインスタンスの動作中にインスタンス化されうる。
【0078】
この実施形態によれば、第一仮想マシンインスタンスは、第一ソフトウェアプロファイルを有するクライアント装置上で動作するように仕向けられた第一データフローからのデータがマルウェアを含むかを分析するように構成されうる。第二仮想マシンインスタンスは、当該クライアント装置上で動作するように仕向けられて第一データフローとは異なる第二データフローからのデータがマルウェアを含むかを分析するように構成されうる。
【0079】
第一仮想マシンインスタンスと第二仮想マシンインスタンスを含む複数の仮想マシンインスタンスがインスタンス化された後、上記コンピュータ制御された方法は、(1)第三仮想マシンインスタンスのインスタンス化が、同時に動作する仮想マシンインスタンスの所定数を表す閾値を上回るかを判断すること、および(2)仮想マシンインスタンス数の合計が前記閾値以下である場合に第三仮想マシンインスタンスを仮想化し、当該合計が当該閾値を上回る場合に第三仮想マシンインスタンスの仮想化を行なわないこと、をさらに含む。当該閾値は、第一所定数の仮想マシンインスタンスが仮想マシンクローンである場合に、第一の値をとりうる。仮想マシンクローンとは、生成時の初期動作状態で動作している仮想マシンインスタンスである。あるいは、当該閾値は、第二所定数の仮想マシンインスタンスが仮想マシンクローンである場合に、第一の値よりも小さい第二の値をとりうる。第二所定数は、第一所定数よりも小さい。
【0080】
別の実施形態は、非一時的かつコンピュータ読取り可能な媒体を含みうる。当該媒体は、少なくとも一つのハードウェアプロセッサによる実行されて動作するソフトウェアを含んでいる。当該動作は、(1)リソースが割り当てられている第一仮想マシンインスタンスをコントローラによってインスタンス化して、第一仮想マシンインスタンスに第一仮想動作環境を提供させること、および(2)前記第一仮想マシンインスタンスと同時に実行中の第二仮想マシンインスタンスを前記コントローラによってインスタンス化して、当該第二仮想マシンインスタンスに前記第一仮想マシンインスタンスに割り当てられた前記リソースを共有させるとともに、コピーオンライト動作を行なうに際して当該第二仮想マシンインスタンスに追加リソースを割り当てること、を含んでいる。
【0081】
さらに別の実施形態は、マルウェアコンテンツ検出(MCD)システムを含みうる。当該システムは、(1)到来するコンテンツを受信するように構成されているネットワークポート、(2)各々がソフトウェアプロファイルと関連付けられるとともにプロセッサ上で前記到来するコンテンツの処理を実行するように構成されている少なくとも一つの仮想マシン(VM)インスタンスを含む仮想環境において、前記到来するコンテンツを分析するように構成されている分析エンジン、(3)少なくとも一つのVMクローンを生成するとともに同時に使用されるVMインスタンス(当該VMクローンを含む)の数が閾値を上回らないよう監視するように構成されているVMプロビジョニングロジック、および(4)リソース要求に応答して各VMインスタンスにリソースを割り当てるように構成されているVMリソースロジックを備えている。
【0082】
このMCDシステムの場合、VMリソースロジックは、各VMインスタンスへのリソースの割り当てを管理するように構成されている割り当てテーブルを備えている。また、VMリソースロジックは、VMプロビジョニングロジックによるVMクローンの生成に際して、対応する各VMクローンにリソースを割り当てるように構成されている。その結果、同じファミリ内の各VMクローンは、割り当てられた同じリソースを共有する。共有は、VMクローンが当該リソースに対する変更を見つけるまで継続する。その後、VMクローンが割り当てられたリソースのいずれかに変更を見つけると、当該VMクローンは固有のVMインスタンスとみなされるが、当該VMファミリ内の他のVMクローンやVMインスタンスとともに当該割り当てられたリソースの少なくとも一部の共有を継続することにより、当該VMファミリ内に残る。VMリソースロジックは、変更されたとみなされたリソースを置き換えるために、当該固有のVMインスタンスに追加リソースを割り当てる。これにより、当該固有のVMインスタンスによる当該追加リソースに対する変更の継続を可能にする。