(57)【特許請求の範囲】
【請求項１】
第１実行環境とサンドボックス実行環境とを含む複数の実行環境を有するシステムにおいて、実行環境を動的に決定するための方法であって、
プロセッサによって、ネットワーク接続から実行可能アプリケーションを受信する手順と、
前記プロセッサによって、前記実行可能アプリケーションの実行に先立って、該実行可能アプリケーションに対して、挙動分析を行う手順と、
前記プロセッサによって、前記挙動分析に基づき、１番目の実行環境を決定する手順と、
前記挙動分析が前記１番目の実行環境としてサンドボックスされた実行を指示している場合、前記プロセッサによって、前記サンドボックス実行環境内で前記実行可能アプリケーションの実行を開始する手順と、
前記挙動分析が前記１番目の実行環境としてサンドボックスされた実行以外を指示している場合、前記プロセッサによって、前記第１実行環境内で前記実行可能アプリケーションの実行を開始する手順と、
前記実行可能アプリケーションが実行されているとき、前記プロセッサによって、該実行可能アプリケーションの挙動特徴を収集する手順と、
前記プロセッサによって、前記収集された挙動特徴に対して挙動分析を行い、前記１番目の実行環境内で前記実行可能アプリケーションがまだ実行されている最中に該実行可能アプリケーションの実行環境を前記１番目の実行環境から２番目の実行環境へ移動すべきかどうかを決定する手順であって、前記１番目の実行環境と前記２番目の実行環境のいずれか一方が前記サンドボックス実行環境である前記手順と
を実行することからなる方法。
【請求項２】
前記実行可能アプリケーションの実行に先立って挙動分析を行う手順は、該実行可能アプリケーションの起源について指標を提供する、当該実行可能アプリケーションに関連付けられた１以上の特徴を評価する手順からなることを特徴とする請求項１に記載の方法。
【請求項３】
前記実行可能アプリケーションの実行に先立って挙動分析を行う手順は、更に、該実行可能アプリケーションが作用するリソースの分析を含むことを特徴とする請求項１又は２に記載の方法。
【請求項４】
前記１以上の特徴は、以下の、
前記実行可能アプリケーションを受信したネットワークアドレス、
前記実行可能アプリケーションに要求されたプロセスの信頼レベル、
信頼されたソースからの署名された証明書、
及び、疑わしい又はポリシー外の活動の事前実行
のうちの１つ以上を含むことを特徴とする請求項２に記載の方法。
【請求項５】
前記サンドボックス実行環境内で前記実行可能アプリケーションの実行を開始する手順は、該実行可能アプリケーションの実行に先立って、該サンドボックス実行環境に適用する制限の範囲を決定する手順からなることを特徴とする請求項１又は２に記載の方法。
【請求項６】
前記制限の範囲を決定する手順は、前記サンドボックス実行環境内において、どの種類の活動が抑制されるべきかを決定する手順からなることを特徴とする請求項５に記載の方法。
【請求項７】
前記制限の範囲を決定する手順は、前記サンドボックス実行環境内において、前記実行可能アプリケーションにより行われる動作に対する処置を決定する手順からなることを特徴とする請求項５に記載の方法。
【請求項８】
前記収集された挙動特徴に対して挙動分析を行う手順は、
リソースファイルを開くこと、
プラグインをロードすること、
別のプロセスによる操作、
別のプロセスを操作すること、
及び、インターネットにアクセスすること
を含む潜在的に悪意のある活動を検出する手順からなることを特徴とする請求項１に記載の方法。
【請求項９】
前記１番目の実行環境を決定する手順は、セキュリティポリシーを適用する手順からなることを特徴とする請求項１、２、８のいずれかに記載の方法。
【請求項１０】
前記１番目の実行環境を決定する手順は、前記サンドボックス実行環境内で実行されるべき前記実行可能アプリケーションの第１部分、及び、前記第１実行環境内で実行されるべき該実行可能アプリケーションの第２部分を決定する手順からなることを特徴とする請求項１、２、８のいずれかに記載の方法。
【請求項１１】
前記実行可能アプリケーションの第１部分は、
ファイバー、
スレッド、
プロセス、
ダイナミックリンクライブラリ、
スクリプト、
又は、プラグインコンポーネント
を含むことを特徴とする請求項１０に記載の方法。
【請求項１２】
ネットワークと通信可能に接続されたコンピュータからなるシステムであって、該ネットワークが実行可能アプリケーションのソースを備え、該コンピュータは、
前記ネットワークからダウンロードされた実行可能アプリケーションに対して挙動分析を実行するように構成された挙動分析モジュールと、
標準実行環境、及び、前記実行可能アプリケーションによって実行される悪意ある動作から前記コンピュータを保護する自己完結型の実行環境を提供するように構成された保護された実行環境を含む複数の実行環境を具備し、
前記挙動分析モジュールは、前記実行可能アプリケーションの実行に先立って、該実行可能アプリケーションの複数の挙動特徴を評価し、この評価は、当該実行可能アプリケーションが前記保護された実行環境内で実行されるべきかどうかを決定するためのものであり、且つ、
前記挙動分析モジュールは、前記実行可能アプリケーションの実行が、前記標準実行環境から前記保護された実行環境に、若しくは、該保護された実行環境から該標準実行環境に移動されるべきかどうか決定するために、前記実行可能アプリケーションの実行をモニタすることであって、ここで、前記移動は前記実行可能アプリケーションがまだ実行されている最中に行われる
ことを特徴とするシステム。
【請求項１３】
前記挙動分析モジュールは、前記実行可能アプリケーションに関連付けられた特徴を評価するように構成されており、前記特徴は、前記実行可能アプリケーションの前記ソースが信頼できるかどうかについての指標を提供するものであることを特徴とする請求項１２に記載のシステム。
【請求項１４】
前記挙動分析モジュールは、以下の、
前記実行可能アプリケーションを受信したネットワークアドレス、
前記実行可能アプリケーションに要求されたプロセスの信頼レベル、
信頼されたソースからの署名された証明書、
及び、疑わしい又はポリシー外の活動の事前実行
のうちの２つ以上を含む
するように構成されることを特徴とする請求項１２又は１３に記載のシステム。
【請求項１５】
前記挙動分析モジュールは、前記実行可能アプリケーションの実行に先立って、該実行可能アプリケーションが作用するリソースを分析するように構成されることを特徴とする請求項１２に記載のシステム。
【請求項１６】
前記挙動分析モジュールは、前記保護された実行環境が前記実行可能アプリケーションの実行を制御するために使用するだろう制限の範囲を決定するように構成されることを特徴とする請求項１２、１３及び１５のいずれかに記載のシステム。
【請求項１７】
前記挙動分析モジュールは、前記保護された実行環境内において、どの種類の活動が抑制されるべきかを決定するように構成されることを特徴とする請求項１６に記載のシステム。
【請求項１８】
前記挙動分析モジュールは、前記保護された実行環境による使用のために前記制限の範囲が決定したときに、セキュリティポリシーを適用するように構成されることを特徴とする請求項１６に記載のシステム。
【請求項１９】
前記挙動分析モジュールは、前記保護された実行環境内において、前記実行可能アプリケーションにより行われた動作に対する処置を決定するように構成されることを特徴とする請求項１２、１３及び１５のいずれかに記載のシステム。
【請求項２０】
前記挙動分析モジュールは、
リソースファイルを開くこと、
プラグインをロードすること、
別のプロセスによる操作、
別のプロセスを操作すること、
及び、インターネットにアクセスすること
を含む潜在的に悪意のある活動を検出するように構成されることを特徴とする請求項１２、１３及び１５のいずれかに記載のシステム。
【請求項２１】
前記挙動分析モジュールは、前記実行可能アプリケーションが前記保護された実行環境内で実行されるべきかどうかを決定するために該実行可能アプリケー ションの複数の挙動特徴を評価するときに、セキュリティポリシーを適用するように構成されることを特徴とする請求項１２、１３及び１５のいずれかに記載のシステム。
【請求項２２】
前記挙動分析モジュールは、前記保護された実行環境内で実行されるべき前記実行可能アプリケーションの第１部分、及び、前記標準実行環境内で実行されるべき前記実行可能アプリケーションの第２部分を決定するように構成されることを特徴とする請求項１２、１３及び１５のいずれかに記載のシステム。
【請求項２３】
前記実行可能アプリケーションの部分は、
ファイバー、
スレッド、
プロセス、
ダイナミックリンクライブラリ、
スクリプト、
又は、プラグインコンポーネント
を含むことを特徴とする請求項２２に記載のシステム。
【請求項２４】
命令群を記憶したコンピュータ読み取り可能な記憶媒体であって、前記命令群は、該命令群がコンピュータによって実行されるとき、
ネットワーク接続を通じて実行可能アプリケーションを受信する手順と、
前記実行可能アプリケーションの実行に先立って、該実行可能アプリケーションに対して挙動分析を実行する手順と、
前記挙動分析の実行に基づいて、サンドボックス環境内で、前記実行可能アプリケーションの実行を開始するかどうかを決定する手順と、
前記サンドボックス環境内で前記実行可能アプリケーションの実行を開始する手順と、
前記サンドボックス環境内での前記実行可能アプリケーションの実行中に、該実行可能アプリケーションの挙動特徴を動的にモニタする手順と、
前記サンドボックス環境から前記実行可能アプリケーションを移動できるかどうか決定するために、前記モニタされた挙動特徴に対する挙動分析を行う手順と、
前記モニタされた挙動特徴の前記挙動分析に基づいて、前記実行可能アプリケーションの実行終了より前に、前記実行可能アプリケーションを前記サンドボックス環境から標準環境に移動する手順と
からなる方法を前記コンピュータに実行させることを特徴とするコンピュータ読み取り可能な記憶媒体。
【請求項２５】
前記実行可能アプリケーションが前記サンドボックス環境から前記標準環境に移動した後、該標準環境内での実行中に該実行可能アプリケーションの第２挙動特徴を動的にモニタする手順と、
前記実行可能アプリケーションが前記標準環境から前記サンドボックス環境に戻されるべきかどうか決定するために、前記モニタされた第２挙動特徴に対する挙動分析を行う手順と、
前記モニタされた第２挙動特徴の前記挙動分析に基づいて、前記実行可能アプリケーションの実行終了より前に、前記実行可能アプリケーションを前記標準環境から前記サンドボックス環境に移動する手順と
を更に備える方法を前記コンピュータに実行させることを特徴とする請求項２４に記載のコンピュータ読み取り可能な記憶媒体。
【請求項２６】
前記挙動分析が、前記２番目の実行環境としてサンドボックスされた実行を指示している場合、前記プロセッサによって、前記一番目の実行環境内での前記実行可能アプリケーションの実行中に、前記サンドボックス実行環境に前記実行可能アプリケーションの実行を移動する手順と、
前記挙動分析が、前記２番目の実行環境としてサンドボックスされた実行以外を指示している場合、前記１番目の実行環境内での前記実行可能アプリケーションの実行中に、前記第１実行環境に前記実行可能アプリケーションの実行を移動する手順と
を更に備える請求項１乃至１１のいずれかに記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明の種々の実施形態は、大略、コンピュータセキュリティの分野に関し、限定はされないが、特に、実行可能アプリケーションの挙動サンドボックス（behavioral sandboxing）のためのシステム及び方法に関する。
関連する出願
【０００２】
この特許出願は、「挙動サンドボックスのためのシステム及び方法」と題され、２００９年１１月１５日に出願された米国特許出願番号第１２／６３８６６０号に基づく優先的利益を主張し、当該出願に記載された全ての記載内容を援用するものである。
著作権表示
【０００３】
この特許出願書類の開示の一部は、著作権保護の対象となる素材を含んでいる。著作権者は、特許商標庁の特許ファイル又は記録に現れるならば、特許出願書類又は特許開示の何人による複製にも異論がないが、どんな著作権の権利でも全て所有する。以下の注意書きは、以下に説明され、且つ、この文献の一部をなす図面にも示されるソフトウェア及びデータに適用される：Copyrights 2009,McAfee,Inc.All rights Reserved（不許複製・禁無断転載）
【背景技術】
【０００４】
インターネットへのアクセス増加は、告知に基づく同意無しにユーザの個人情報を略取するソフトウェアプログラム（“スパイウェア”）、又は、ユーザの認識及び告知に基づく同意無しにコンピュータを破損するソフトウェアプログラム（“マルウェア”）の到達を増加させるという、予期せぬ効果があった。また、自動的にダウンロードされ、アプリケーションが使用されている間に広告を表示するソフトウェア（“アドウェア”）において、小規模産業が生じている。
【０００５】
かかるプログラムは、ユーザのコンピュータにインストールされたとき、当該ユーザを傍受でき、機密的情報を集め、いくつかの場合では、ユーザのコンピュータの制御をしてしまう。いくつかの場合、これらソフトウェアプログラムは他のコンピュータ又はサービスに、潜在的機密情報を伝送するためのコンジット（conduit）を提供するメッセージを送信する。
【０００６】
ソフトウェアアプリケーションは、ウェブブラウザなどアプリケーションに対するプラグインコンポーネント、又は、その他のアドオンタイプの拡張を使用することにより、ますますセグメント化されている。インターネットは、これらアドオンコンポーネントにとって、素晴らしい配給メカニズムを提供する。しかし、これらアドオンコンポーネントの信頼されていないソース（source：情報源）から信頼されたものを選ぶのは、不可能でないにしても、困難である。加えて、平均的ユーザは、それを行っているとは知らないうちに、アドオンコンポーネントを要求し、ダウンロードし、そして、インストールしている。
【発明の概要】
【０００７】
本発明者らは、わけても、ダウンロードされたアプリケーション及びコンポーネントを分析し、動作中に前記アプリケーション及び前記コンポーネントをモニタし、且つ、ホストシステムを害するどのような疑わしい動作も予防するシステム及び方法の必要性を認識した。
【０００８】
実施例１は、システムで構成される発明を記載する。前記システムは、実行可能アプリケーションのソース（source：情報源）と通信可能に接続されたネットワークを具備する。コンピュータが組み込まれ、前記ネットワークを通じて通信するように構成される。挙動分析モジュールは、前記ネットワークを通じてダウンロードされた実行可能アプリケーションに対して挙動分析を実行するように構成される。複数の実行環境は、標準実行環境と保護された実行環境とを含み得る。前記保護された実行環境は、前記実行可能アプリケーションによって実行される悪意ある動作から前記コンピュータを保護する自己完結型の実行環境を提供するように構成される。前記挙動分析モジュールは、前記実行可能アプリケーションの実行に先立って、当該実行可能アプリケーションが前記保護された実行環境内で実行されるべきかどうかを決定するために、該実行可能アプリケーションの複数の挙動特徴を評価できる。また、前記挙動分析モジュールは、前記実行環境を変更できるかどうか決定するために、前記実行可能アプリケーションの実行をモニタできる。
【０００９】
実施例２において、前記実施例１の発明は、前記実行可能アプリケーションに関連付けられた特徴を評価するように構成された前記挙動分析モジュールを具備してもよい。前記特徴は、前記実行可能アプリケーションの前記ソースが信頼できるかどうかについての指標を供給できる。
【００１０】
実施例３において、前記実施例１又は実施例２のいずれかの発明は、前記実行可能アプリケーションに関連付けられた複数の特徴を評価するように構成された前記挙動分析モジュールを具備してもよい。前記複数の特徴は、以下の２以上を含む：前記実行可能アプリケーションを受信したネットワークアドレス、前記実行可能アプリケーションに要求されたプロセスの信頼レベル、信頼されたソースからの署名された証明書、及び、疑わしい又はポリシー外の活動の事前実行。
【００１１】
実施例４において、前記実施例１乃至実施例３のいずれかの発明は、前記実行可能アプリケーションの実行に先立って、前記実行可能アプリケーションが作用するリソースを分析するように構成された前記挙動分析モジュールを具備してもよい。
【００１２】
実施例５において、前記実施例１乃至実施例４のいずれかの発明は、前記保護された実行環境が前記実行可能アプリケーションの実行の制御に使用するだろう制限の範囲を決定するように構成された前記挙動分析モジュールを具備してもよい。
【００１３】
実施例６において、前記実施例１乃至実施例５のいずれかの発明は、前記保護された実行環境内において、どの種類の活動が抑制されるべきかを決定するように構成された前記挙動分析モジュールを具備してもよい。
【００１４】
実施例７において、前記実施例１乃至実施例６のいずれかの発明は、サンドボックス（sandbox）環境（前記保護された実行環境）による使用のために前記制限の範囲を決定するときに、セキュリティポリシーを適用するように構成された前記挙動分析モジュールを具備してもよい。
【００１５】
実施例８において、前記実施例１乃至実施例７のいずれかの発明は、前記保護された実行環境内において前記実行可能アプリケーションにより行われる動作に対する処置を決定するように構成された前記挙動分析モジュールを具備してもよい。
【００１６】
実施例９において、前記実施例１乃至実施例８のいずれかの発明は、リソースファイルを開くこと、プラグインをロードすること、別のプロセスによる操作、別のプロセスを操作すること、及び、インターネットにアクセスすることを含む、潜在的に悪意のある活動を検出するように構成された前記挙動分析モジュールを具備してもよい。
【００１７】
実施例１０において、前記実施例１乃至実施例９のいずれかの発明は、前記実行可能アプリケーションが前記保護された実行環境内で実行されるべきかどうかを決定するために該実行可能アプリケーションの複数の挙動特徴を評価するときに、セキュリティポリシーを適用するように構成された前記挙動分析モジュールを具備してもよい。
【００１８】
実施例１１において、前記実施例１乃至実施例１０のいずれかの発明は、前記保護された実行環境内で実行されるべき前記実行可能アプリケーションの部分を決定するように構成された前記挙動分析モジュールを具備してもよい。
【００１９】
実施例１２において、前記実施例１乃至実施例１１のいずれかの発明は、前記実行可能アプリケーションの部分を決定するように構成され、前記部分が、特に、ファイバー、スレッド、プロセス、ダイナミックリンクライブラリ、スクリプト、又は、プラグインコンポーネントを含むものである、前記挙動分析モジュールを具備してもよい。
【００２０】
実施例１３において、前記実施例１乃至実施例１２のいずれかの発明は、前記実行可能アプリケーションが前記ネットワークの接続を通じて受信されるように、構成又は実行されてもよい。前記挙動分析は、前記実行可能アプリケーションの実行に先立って、該実行可能アプリケーションに対して実行される。挙動分析の機能として、前記実行環境が決定される。前記挙動分析によってそのように指示された場合には、前記実行可能アプリケーションは前記サンドボックス（保護された）実行環境内で開始される。或いは、前記保護された環境外で実行しても当該実行可能アプリケーションが安全であると前記挙動分析が示す場合には、前記実行可能アプリケーションは第１実行環境内で開始（実行）される。前記実行可能アプリケーションの前記挙動特徴は、該実行可能アプリケーションの実行中に収集され、リアルタイムで、実行中に前記実行位置（環境）を変えるかどうかを決定するために、挙動分析が実行される。
【００２１】
実施例１４において、前記実施例１乃至実施例１３のいずれかの発明は、前記挙動分析が、前記実行可能アプリケーションの実行に先立って実行され、且つ、該実行可能アプリケーションに関連付けられ、当該実行可能アプリケーションの起源について指標を提供する１以上の特徴を評価することを含み得るように、構成又は実行されてもよい。
【００２２】
実施例１５において、前記実施例１乃至実施例１４のいずれかの発明は、前記挙動分析が、前記実行可能アプリケーションの実行に先立って実行され、且つ、前記実行可能アプリケーションの実行に先立って、前記実行可能アプリケーションが作用するリソースを分析するように、構成又は実行されてもよい。
【００２３】
実施例１６において、前記実施例１乃至実施例１５のいずれかの発明は、前記挙動分析が、次に述べる１以上の特徴を評価するように、構成又は実行されてもよい。前記特徴は、以下を含む：前記実行可能アプリケーションを受信したネットワークアドレス、前記実行可能アプリケーションに要求されたプロセスの信頼レベル、信頼されたソースからの署名入り証明書（前記実行可能アプリケーションに関連付けられたもの）、及び、疑わしい又はポリシー外の活動の事前実行。
【００２４】
実施例１７において、前記実施例１乃至実施例１６のいずれかの発明は、サンドボックス（保護された）実行環境内で前記実行可能アプリケーションの実行開始が、前記実行可能アプリケーションの実行に先立ち、前記サンドボックス（保護された）実行環境に適用する制限の範囲を決定することを含むように、構成又は実行されてもよい。
【００２５】
実施例１８において、前記実施例１乃至実施例１７のいずれかの発明は、或る実行環境のための制限の範囲を決定することが、サンドボックス（保護された）実行環境内において、どの種類の活動が抑制されるべきかを決定することを含むように、構成又は実行されてもよい。
【００２６】
実施例１９において、前記実施例１乃至実施例１８のいずれかの発明は、或る実行環境のための制限の範囲決定することが、サンドボックス（保護された）実行環境内において前記実行可能アプリケーションにより行われる動作に対する処置を決定することを含むように、構成又は実行されてもよい。
【００２７】
実施例２０において、前記実施例１乃至実施例１９のいずれかの発明は、挙動特徴を収集することが、リソースファイルを開くこと、プラグインをロードすること、別のプロセスによる操作、別のプロセスを操作すること、及び、インターネットにアクセスすることを含む潜在的に悪意のある活動を検出することを含むように、構成又は実行されてもよい。
【００２８】
実施例２１において、前記実施例１乃至実施例２０のいずれかの発明は、実行可能アプリケーションを動作させる実行環境を決定することがセキュリティポリシーを適用することを含むように、構成又は実行されてもよい。
【００２９】
実施例２２において、前記実施例１乃至実施例２１のいずれかの発明は、実行可能アプリケーションを動作させる実行環境を決定することが、前記サンドボックス実行環境内で実行されるべき前記実行可能アプリケーションの部分を決定することを含むように、構成又は実行されてもよい。
【００３０】
実行可能アプリケーションを動作させる実行環境を決定することが、前記サンドボックス実行環境内で実行されるべき前記実行可能アプリケーションの部分を決定することを含み、前記部分が、特に、ファイバー、プロセス、ダイナミックリンクライブラリ、スクリプト又はプラグインコンポーネントを含むように、構成又は実行されてもよい。
【００３１】
実施例２４は、前記実施例１乃至実施例２３のいずれかを含むか、又は、前記実施例１乃至実施例２３のいずれかの任意の組み合わせであり、機械可読（コンピュータ読み取り可能）媒体を具備する。機械可読媒体は、コンピュータにより実行されたときに、該コンピュータに以下の動作を実行させる命令群を含む。前記動作は、ネットワーク接続を通じて実行可能アプリケーションを受信する手順；前記実行可能アプリケーションの実行に先立って、該実行可能アプリケーションに対する挙動分析を行う手順；前記挙動分析の実行に基づいて、サンドボックス環境内で、前記実行可能アプリケーションの実行を開始するかどうかを決定する手順；前記サンドボックス環境内で、前記実行可能アプリケーションの実行を開始する手順；前記サンドボックス環境内で前記実行可能アプリケーションが実行されているとき、前記実行可能アプリケーションの挙動特徴を動的にモニタする手順；前記サンドボックス環境から前記実行可能アプリケーションを移動できるかどうかを決定するために、前記モニタされた挙動特徴に対する挙動分析を行う手順；及び、前記モニタされた挙動特徴の前記挙動分析に基づいて、前記実行可能アプリケーションを前記サンドボックス環境から移動する手順を含む。
【００３２】
これらの実施例は、どのような順列又は組み合わせで、組み合わされても良い。この概要は、この特許出願の発明の概要を提供することを目的としており、独占的又は網羅的な発明の説明を提供することは意図していない。本特許出願に関する更なる情報を提供するために、詳細な説明が具備されている。
【図面の簡単な説明】
【００３３】
【図１】セキュリティを向上させるために実行可能アプリケーションの挙動サンドボックスを適用できるシステム１００の一例を描くブロック図。
【図２】挙動分析に基づいて実行可能アプリケーションをサンドボックスするように構成されたシステムの一例を描くブロック図。
【図３】実行可能アプリケーションの挙動分析を提供するためのシステムの一例を描くブロック図。
【図４】実行可能アプリケーションの挙動サンドボックスのための方法の一例を描くスイムレーンを持つフローチャート。
【図５】挙動分析を用いて実行可能アプリケーションのための実行環境を形成するための方法の一例を描くスイムレーンを持つフローチャート。
【図６】一実施例に従う、前記実行可能アプリケーションの挙動分析におけるオプションの動作を描くフローチャート。
【図７】一実施例に従う、実行可能アプリケーションのための実行環境決定におけるオプションの動作を描くフローチャート。
【図８】挙動分析を用いて実行可能アプリケーションを分析する方法の一例を描くフローチャート。
【図９】開示されたいずれか１以上の方法を機械に実行させるための命令が実行されるコンピュータシステムの構成例における機械のブロック図。
【発明を実施するための形態】
【００３４】
上記の添付の図面の各図においては、いくつかの実施形態が限定的にでなく例示的に示されている。
【００３５】
本明細書においては、この発明に係る挙動サンドボックスのための方法及びシステムを提供するための種々の実施形態（実施例）が開示される。挙動サンドボックスは、種々のソース（source：情報源）からのアプリケーション及びコンポーネントを実行するユーザの柔軟性を許容しつつ、既知及び未知両方の悪意あるソフトウェアアプリケーション及びコンポーネントから、エンドユーザのシステムを保護するための動的メカニズムを提供できる。
【００３６】
ソフトウェアの配布がより簡単になり、又は、アプリケーションがより一層細分化されるにつれて、ターゲットとなるプラットフォーム上でのソフトウェアの実行に先立って、正当なソフトウェアとマルウェア（不完全な、悪いソフトウェア）とを区別することが、ますます難しくなっている。プラグインコンポーネント、ランタイム解釈コード（run-time interpreted code）、及び、その他の種々のダウンロードされたソフトウェアの広範な利用により、正当なソフトウェアが、より簡単にセキュリティ破壊され、また、悪意ある目的で利用されてしまう。潜在的に悪意あるソフトウェアを阻止するための１つの技術は、未知の、又は、危険に晒されているソフトウェアを、“サンドボックス（sandbox）”として知られる封じ込めエリア内で作動することである。前記サンドボックス内で作動するソフトウェア（実行可能アプリケーション）により行われる動作は、前記サンドボックスのみに作用することに限定されており、より広いシステム又は現在システム上で作動中の他のアプリケーションには作用しない。
【００３７】
従来のサンドボックスによる解決法は、適用と実施において柔軟性がなく、大抵は、或るアプリケーションの能力を適切に機能させることを厳しく制限するものである。サンドボックスによる従来のアプローチは、また、実行可能アプリケーションのうちのどの部分が、サンドボックスされる必要があるのか、及び、どの拡張に対して、サンドボックス環境が、他のシステムリソース及び他のアプケーション（又は、主たる実行可能アプリケーションの部分）から遮蔽されるべきかを、動的に決定する能力に欠ける。以下の詳細な説明は、とりわけ、これらの問題に対する解決を記載する。
【００３８】
挙動サンドボックスは、サンドボックス実行環境内でプロセスが行われるべき時を決定するために、挙動分析を使用できる。挙動サンドボックスは、また、アプリケーション又はアプリケーションの部分（例えば、プラグインコンポーネント）をサンドボックス実行環境から移動して、標準実行環境で実行を続けることができるかどうか決定するために、サンドボックス実行環境内で実行されているアプリケーションをモニタできる。
【００３９】
一例において、サンドボックス環境は、単にサンドボックスされたアプリケーションが実行中に行おうとする全ての動作を阻止するのではなく、ホストシステムを個別の動作から選択的に遮蔽するように構成できる。例えば、前記サンドボックス実行環境は、オペレーティングシステムの設定ファイルを更新しようとする企て（例えばWindows（登録商標）レジストリデータベースへの書き込み）だけを遮蔽するように構成できる。前記サンドボックス環境は、また、一定の入力がサンドボックスされたアプリケーションに入力され、一定の出力がサンドボックスされたアプリケーションから他のローカル又はリモートのアプリケーションに通信されるように構成される。例えば、前記サンドボックス環境は、サンドボックスされたアプリケーションがデータベースからデータを読み出して、且つ、データベースのデータを更新できるように構成される一方、当該サンドボックス環境は、同じアプリケーションがデータベースに全く新しい記録を追加することは防ぐように構成される。
【００４０】
一実施形態において、挙動分析は、通常使用中（例えばインターネットのウェブページを閲覧中）のウェブブラウザに適用されるサンドボックスの範囲を決定するために使用される。ユーザがブラウザアプリケーションを起動するとき、その起動はシステムモニタコンポーネントによって検出される。挙動分析プログラムが、サンドボックス環境内でブラウザが実行されるべきか、及び、サンドボックス環境で実行される場合に、どのレベルの制限をブラウザにかけるかを、決定する間、システムは、そのブラウザアプリケーションの実行を保留できる。いくつかの実施形態では、セキュリティポリシーは、サンドボックス内でアプリケーションを実行するかどうかを決定すること、及び、使用される制限の範囲を決定することを補助するためにも使用される。この例において、セキュリティポリシーが照合され、ブラウザの動作履歴に対して挙動分析が実行される。挙動分析は、どのプラグインがブラウザ起動に対して自動ロードされるように構成されているか、及び、そのプラグインが信頼できるかを検査することを含む。この例において、セキュリティポリシー及び挙動分析の両方が、起動に際してブラウザが標準実行環境内で実行され得ることを決定する。
【００４１】
当該実施例を続けると、システムはブラウザアプリケーションの起動を続行する。ブラウザが起動している間、システムモニタコンポーネントは、ブラウザアプリケーションからの全ての入力及び出力を傍受（インターセプト）できる。ブラウザの入力及び出力は、ブラウザの実行環境（又はブラウザのいずれかのコンポーネント）が変更される（例えばホストシステムの他のプロセス又はリソースを保護するためにサンドボックス実行環境に移動させる）べきかどうかを、動的に評価するために、挙動分析モジュールに与えられる。
【００４２】
この例において、ユーザは、ブラウザにプラグインコンポーネントをダウンロードするよう通告するウェブサイトに進む。システムモニタは、プラグインダウンロードを傍受（インターセプト）して、挙動分析モジュールのためにプラグインコンポーネントの情報を収集する。挙動分析モジュールは、プラグインコンポーネント実行のために、このプラグインコンポーネントをサンドボックス環境内に移動するべきかどうかを決定するために、前記収集されたプラグインコンポーネントに関する情報を評価する。一実施形態において、挙動分析モジュールは、プラグインが潜在的に悪意のあるものかどうかを決定するために、プラグインコンポーネントの署名を、中央の信頼されたソースのデータベースに照合する。例えば、挙動分析モジュールは、プラグインコンポーネントに関連付けられたユニフォームリソースロケータ（Uniform Resource Locator、ＵＲＬ）を、例えば、TrustedSource（登録商標）インターネット評判システム（Internet reputation system）（McAfee（登録商標）、Santa Clara California）などのオンライン評判システムに照合できる。
【００４３】
この例において、挙動分析モジュールは、ブラウザによってダウンロードされたプラグインが、本質的に信頼できないソースから来たものである、と決定する。そうすると、プラグインは、更なる分析のために、サンドボックス実行環境にリダイレクトされる。プラグインがダウンロードされると、挙動分析モジュールは、サンドボックス環境内で適用する制限の範囲を決定するために、追加的分析を実行できる。例えば、挙動分析モジュールは、プラグインが有効な且つ署名されたセキュリティ証明書を持っているかどうか、を調査する。この例において、プラグインはセキュリティ証明書を持っておらず正式に署名もされていない。そうすると、このプラグインは完全にサンドボックス環境内で実行されるので、システムは、分析のために、その全ての動作をモニタする。その動作の間、プラグインがディスク入力および出力を試みた場合、それはシステムモニタにより傍受され、そして保留される。プラグインの実行中に、別のプロセスがディスクに対する入力又は出力（Ｉ／Ｏ）を試みると、追加的Ｉ／Ｏのソースが決定され、そのＩ／Ｏが許可される（それはサンドボックス実行環境の外側のアプリケーションからのものだからである）。
【００４４】
プラグインの実行が完了するとき、システムモニタは、実行の終了を記録して、ブラウザアプリケーションに関連付けられたモニタレベルを下げる。実行中にプラグインコンポーネントにより行われる動作は、システムから消去されるか、或いは、他のプロセス若しくはリソースを更新することを選択的に許可される。例えば、プラグインコンポーネントがＵＲＬをブックマークすることを試みた場合、システムはブラウザのブックマークを、プラグインコンポーネントによって生成された情報で更新することを許可するだろう。システムモニタは、また、プラグインによって実行された動作を、将来的利用のために、記録できる。例えば、プラグインコンポーネントが潜在的に悪意のある動作を何ら企てなかった場合には、このことが、ローカルスレッドデータベースに記録されるか、或いは、将来的利用のために中央オンライン評価システムに伝送される。
【００４５】
いくつかの実施例では、ゲートウェイシステムが、入ってくる実行可能アプリケーションを傍受及び評価するために使用される。ゲートウェイシステムの例では、ゲートウェイシステムは、複数のシステムで再使用されるプラグインコンポーネント又はその他のアプレットに関する知識ベースを構築する補助のために、各クライアント（エンドユーザシステム）により収集された挙動分析情報を使用できる。
定義
【００４６】
以下の定義は例示として与えられており、制限として解釈されることを意図していない。当業者は、この明細書の文脈を読んだときに、以下に定義されるいくつかの用語が追加的意味を含むものと理解するだろう。
【００４７】
実行可能アプリケーション以下の明細書において、実行可能アプリケーションは、任意の、コンパイルされたバイナリアプリケーション（例えば、.executableアプリケーション又はMicrosoft windows（登録商標）環境におけるダイナミックリンクライブラリ）、ブラウザプラグインアプリケーション、ブラウザ又はアプリケーションスクリプト（例えば、Javascript（登録商標）、又は、Visual Basic（登録商標）スクリプト）、オペレーティングシステムスクリプト（例えば、Microsoft windows（登録商標）環境におけるバッチファイル（.bat file）、又は、Unix（登録商標）環境におけるC shell（シーシェル、csh）スクリプト）、及び、ランタイム解釈コード（run-time interpreted code）、又はアプレット（例えば、Java（登録商標）アプレット、又は、Visual Basic（登録商標）コントロール、.Netコード）を含んでよい。実行可能アプリケーションは、例えばプロセス、スレッド及びファイバーなど、複数の個々の処理ユニットを包含できる。加えて、いくつかの大きい実行可能アプリケーションは、基本的な機能性を拡張又は向上させるために、ダイナミックリンクライブラリ（DLL）、スクリプト、又は、プラグインコンポーネントを使用してよい。以下の明細書において、実行可能アプリケーションは、プロセス、アプリケーション、実行可能、或いは、単にソフトウェア、などと、様々に称呼されるだろう。
【００４８】
サンドボックス実行環境（サンドボックス環境）‐以下の明細書において、サンドボックス実行環境とは、標準実行環境において可能であろう何らかのリソース又は装置への直接アクセスから、実行可能アプリケーションを遮蔽する、ホストコンピューティング装置のセグメント化された部分である。サンドボックス実行環境は、実行可能アプリケーションによって企てられた動作の、種々のレベルの制限を提供するように構成される。この明細書を通じて、サンドボックス実行環境は、サンドボックス環境又はサンドボックスされた環境とも称呼されるが、いずれの使用法の変化も、用語の趣旨の変化を意図していない。
システムの実施例
【００４９】
図１は、セキュリティを向上させるために実行可能アプリケーションの挙動サンドボックスを適用できるシステム１００の一例を描くブロック図である。システム１００は、ネットワーク１０５、クライアントシステム１１０Ａ、１１０Ｂ・・・１１０Ｎ（集合的にクライアント１１０とも表記する）。ゲートウェイ装置１２０、広域ネットワーク（ワイドエリアネットワーク）接続１２５及び広域ネットワーク１３０からなる。いくつかの実施形態では、システム１００は更にローカルサーバ１４０、データベース１５０、リモートシステム１６０及びリモートデータベース１７０を備える。一例において、ネットワーク１０５は、クライアントシステム１１０を互いに通信可能に接続し、且つ、広域ネットワーク１３０に通信可能に接続されるローカルエリアネットワーク（有線又は無線）である。
【００５０】
一実施形態において、データベース１５０は、将来的利用のために、クライアントシステム１１０又はゲートウェイ装置１２０において実行された挙動分析の結果を記憶するために使用される。この例において、データベース１５０に記憶された情報は、ネットワーク１０５に接続されたシステムにより以前に使用された実行可能アプリケーションについての挙動分析を行うときに、システム（クライアントシステム１１０又はゲートウェイ装置１２０）により再利用される。いくつかの実施形態では、データベース１５０は、任意の既知の実行可能アプリケーションについての挙動情報を交換するために、リモートデータベース１７０と通信できる。リモートデータベース１７０は、例えば、TrustedSource（登録商標）、又は、その他の挙動特徴リソースなど、インターネット評価サービスの１つを表す。
【００５１】
いくつかの実施形態では、ローカルサーバ１４０は、クライアントシステム１１０により実行される実行可能アプリケーションのソースになり得る。別の例では、リモートサーバが、クライアントシステム１１０により実行される実行可能アプリケーションのソースになり得る。更に別の例では、実行可能アプリケーションは、インターネット又はプライベート広域ネットワークを通じて利用可能な任意のシステム又はデータベースからダウンロードされる。
【００５２】
図２は、挙動分析に基づいて実行可能アプリケーションをサンドボックスするように構成されたシステム２００の一例を描くブロック図である。システム２００は、標準実行環境２１０、サンドボックス実行環境２２０、挙動分析モジュール２３０、システムモニタリングエンジン２４０、及び、リソース制御インフラストラクチャー２５０からなる。一例において、標準実行環境は、信頼された実行可能アプリケーション（例えば、悪意ある活動の何れのスレッドにも示されていないか、又は、既知の且つ信頼されたソースから来たアプリケーション）の実行に使用される。標準実行環境２１０は、アプリケーションの実行をセグメント化する複数の仮想機構、又は、それと同様な方法であり得る。標準実行環境２１０において、リソース又はメモリ空間のセグメント化は、主としてパフォーマンスの理由から行われるものであり、ホストシステム（例えば、クライアントシステム１１０、ローカルサーバ１４０、又は、ゲートウェイ装置１２０）のセキュリティを向上させるために必要なのではない。
【００５３】
サンドボックス実行環境２２０は、リソース及びメモリ空間に関して、システム２００の残りの部分から完全に切り離されるように構成される。サンドボックス実行環境２２０は、例えば制限されたディスク及びメモリ空間など、動作するためのリソースのセットが堅固に制御された実行可能アプリケーションを提供できる。サンドボックス実行環境２２０は、構成によっては、ローカル及びリモートネットワークアクセスの両方を制御できる。例えば、サンドボックス実行環境２２０は、ローカルデータベースからの読み出し及びローカルデータベースへの書き込みのための、一定のローカルネットワークへのアクセスを許可するが、潜在的に悪意のある挙動を制限するために一切のインターネットアクセスを許可しない。一例において、サンドボックス実行環境２２０は、エミュレーションにより実装できる。エミュレーションを用いると、サンドボックスされたプロセスは、通常の実行プラットフォームに反してネイティブに動作するよりむしろ、解釈された領域内で動作する。別の例では、サンドボックス実行環境２２０は、システム仮想化の使用により実装できる。仮想化は、リソース操作の傍受及びプロセス間の通信のリダイレクトを許可する。あるいは、仮想化は、非サンドボックス環境をミラー化するために、プロセスが実行される動作環境全体を複製することに使用できる。
【００５４】
挙動分析モジュール２３０は、実行可能アプリケーションの特徴を分析するように構成され、また、悪意ある挙動の見込みを予報するために、実行可能アプリケーションにより実行された過去又は現在の実際の動作を分析するように構成される。挙動分析モジュール２３０は、例えば、ソース、インストールプロセス、最後の変更、署名及び暗号による証明書の有効性など、実行可能アプリケーションについての情報を分析できる。挙動分析モジュール２３０は、また、例えば、リソースを開くこと、プラグインコンポーネントをロードすること、インターネットにアクセスすること、及び、設定ファイル又はデータベースの読み出し／書き込みの企てなど、実行可能アプリケーションにより行われ且つ記録された過去の動作、並びに、現在モニタ中の動作を分析できる。挙動分析システムの例についての更なる詳細は、図３に関する後述の説明を参照されたい。
【００５５】
システムモニタリングエンジン２４０は、標準実行環境２１０内、及び、サンドボックス実行環境２２０内で行われた動作をモニタするために使用される。システムモニタリングエンジン２４０は、実行可能アプリケーションが潜在的に悪意ある挙動を企てている（又は企てる可能性がある）かどうかの判断用として、挙動分析モジュール２３０に対して、有意義な情報を供給できる。システムモニタリングエンジン２４０は、ディスクＩ／Ｏ、ネットワーク装置Ｉ／Ｏ、メモリアクセス、及び、プロセッサの使用さえも含む、任意のシステムリソースへのアクセスの企てを傍受するように構成される。いくつかの実施形態では、システムモニタリングエンジン２４０は、サンドボックス環境に必要な又はサンドボックス環境から依頼された全てのリソースをルーティングすることにより、サンドボックス環境を作成することを援助する。システムモニタリングエンジン２４０は、動作の継続を許可する前に、リソースに対するアクセス要求を傍受し、且つ、ソース又は宛先パラメータを変更する。リソースの例は、一例を挙げると、ファイル、設定データベース（主な例としては、Windows（登録商標）におけるレジストリ）、メモリ（通常はオペレーティングシステムによるプロセスにより分離されているが、より細かい細分性の分離を提供するために手動でリダイレクトされ得る）などが含まれる。
【００５６】
リソース制御インフラストラクチャー２５０は、例えば、設定ファイルやディスクアクセスなど、システムリソースの一定の部分へのアクセスを制御するための、標準実行環境２１０及びサンドボックス実行環境２２０のための機構を具備する。リソース制御インフラストラクチャー２５０は、システムリソースへのアクセスのブロッキング、及び、ミラー化されたリソースに対するアクセス要求の透明なリダイレクトを提供する。例えば、リソース制御インフラストラクチャー２５０は、サンドボックス内で動作している実行可能アプリケーションがデータベースへアクセスできるようにするために、例えばデータベースなどのリソースをミラー化（コピー）できる。この例において、リソース制御インフラストラクチャーは、メインデータベースにアクセスするためのいずれの企ても、ミラー化されたデータベースに、透明にリダイレクトできる。そして、サンドボックス環境２２０は、サンドボックスされたアプリケーションの実行後に、メインデータベースをミラー化されたデータベースで更新するかどうかを決定できる。いくつかの例では、リソース制御インフラストラクチャーは仮想化の方法により構成され得る。仮想化は、それぞれ分離したハードウェアプラットフォームであるかのように動作する複数の完全にセグメント化された環境を、１つのハードウェア装置内に、作成できる。
挙動分析システムの例
【００５７】
図３は、実行可能アプリケーションの挙動分析を提供するためのシステム３００の一例を描くブロック図である。システム３００は、複数のイベントソース３０２Ａ〜３０２Ｄ、挙動検出フレームワーク３０４、イベント収集３０６、フィルタプラグイン３１０、ルール呼び出しモジュール３１２、ルールプラグイン３１４、反応取り扱いモジュール３１６、反応プラグイン３１８、及び、イベントデータストア３２０からなる。
【００５８】
図示の通り、複数のイベントソース３０２Ａ〜３０２Ｄが具備される。図３において、イベントソースは、イベントを識別すること、供給すること、及び／又は、収集することができる、任意のソースである。いくつかの例では、イベントソース３０２Ａ〜３０２Ｄは、システムモニタリングエンジン２４０によって供給される。ユーザモードイベントソース３０２Ａは、ユーザインタフェースをモニタし、且つ、ユーザインタフェースに対応するイベントを収集するために使用される。この場合、モニタすることは、或るインタフェースの実行をモニタすることを含む。種々の実施例において、これは、基礎的インフラストラクチャー又はオペレーティングシステムにより提供されるインラインフック、インタフェースポインタリダイレクト、及び／又は、コールバックを用いて実行される。
【００５９】
また、ファイルシステムフィルタ３０２Ｂは、ファイルシステムに対応するイベントを収集するために使用される。更に、ネットワークフィルタ３０２Ｃは、ネットワークに関連するイベントを収集するために使用される。なお、どのようなイベントソースがユーザの要望により使用されてもよいし、或いは、構造化したセキュリティポリシーに従い構成されてもよいことに留意されたい。例えば、ログプレーバックインタフェース３０２Ｄは、プレーバック機構、又は、ユーザがモニタ対象に選択したその他拡張型ソースに関するイベントをモニタするために使用される。これにより、ユーザは、任意のイベントソースを選択し、プラグインできる。
【００６０】
更に、図に示す通り、イベントソース３０２Ａ〜３０２Ｄは、複数の処理モジュールからなる挙動検出フレームワーク３０４及びイベントデータストア３２０と通信している。更に。挙動コアコンテンツモジュール３０８は、挙動検出フレームワーク３０４の機能で作動できる複数のプラグイン３１０，３１４及び３１８を含んで構成される。
【００６１】
図３において、プラグインは、特定種類の活動への参加の登録をする実行可能なコンポーネントを指す。例えば、プラグインは、ファイル生成イベントが発行されたときの呼び出しのために、挙動検出フレームワーク３０４に登録する。プラグイン３１０，３１４及び３１８は、種々のモジュールにおける処理に積極的に参加するために使用される。種々の実施形態において、プラグインは、データを有用な形式に処理する、データを遮る及びフィルタする、ノイズをフィルタする、及び、イベントフォーマットを標準化されたフォーマット又はユーザ定義されたフォーマットに変更することなどに使用されてよい。
【００６２】
動作において、イベントは、イベントソース３０２Ａ〜３０２Ｄにより供給され、イベント収集処理３０６の一環として収集される。上述の通り、イベントソースは、どのようなイベントソースからなっていてもよく、且つ、ユーザ（例えば消費者）によって供給されてよい。一例において、イベントの処理は、消費者プラグインであるイベントハンドラにより実行されてよい。この場合、イベント処理は、任意の特定イベントをデータストア３２０と照合することを含む。
【００６３】
オプションとして、イベント標準化は、収集されたイベントについて実行されてもよい。図３において、イベント標準化は、イベントソースに密接に結び付けられた未加工の形式から、汎用又は標準化されたフォーマットに変換することを指す。言い換えれば、イベント標準化は、イベントソースを感知しない形式の傍受された未加工のイベントを再発行することからなる。いくつかの場合、未加工のイベントは、システムモニタ（例えばイベントソースなど）により発行されてよい。例えば、ファイルシステムフィルタは、傍受されたファイル操作に応じて未加工のイベントを発行する。
【００６４】
一例において、プラグイン（未加工のイベントハンドラ）は、イベントを標準化して、標準化された結果を再発行する。例えば、イベントハンドラプラグインは、データストア３２０内の、且つ、或るアクター及び或るイベントのターゲットのための、エントリを検索する。それらアイテムのためのデータストアエントリが存在しない場合、そのエントリが作成される。
【００６５】
例えばフラグ及びパス名などのイベントの詳細は、イベントソースに関わらず、カテゴリ内の全てのイベントのために使われる標準化された形式に変換される。この変換は、特定のカテゴリのための複数のイベントソースに対して実装されてよい。例えば、ファイル操作は、カーネルモードファイルシステムフィルタ３０２Ｂ及びユーザモードインタフェースモニタ３０２Ａによって傍受される。
【００６６】
それらイベントソースからの未加工のイベントは、必ずしも同じ構造を持たないだろう。イベント標準化は、それらイベントソースの詳細について感知しないことをユーザに許容する標準化されたイベントが発行されるよう、これら違いを解決するために実装される。こうして、挙動コアコンテンツモジュール３０８内に含まれるプラグインは、イベント標準化を実行するために使用される。
【００６７】
オプションとして、イベント標準化は、例えば、アクターと或るイベントのターゲットとの間など、データストアアイテム（data store items）の間の関係の関連付け（association）を含む。一例として、この関連付けは、累積的であってよく、共通の履歴を共有する複数のデータストアアイテムの間で関連付けを形成する。共通の履歴を共有する複数のデータストアアイテムの間で関連付けに関する更なる情報は、「不所望な活動を検出するためにイベントの関係を含むデータ構造を利用するためのシステム、方法、及びコンピュータプログラム製品」と題され、２００８年７月２２日に出願された米国特許出願番号第１２／１７７６０１号に記載されており、当該出願の全ての記載内容を援用する。
【００６８】
照合されたイベントを分析するルールは、ルール呼び出しモジュール３１２の一環として、標準化されたイベントデータを検査する。ルール呼び出しモジュール３１２は、受信されたイベントにより発動されてよい。オプションとして、ルールの評価は、不所望な、又は、その他の予め決められた活動の検出を駆動してよい。
【００６９】
一例において、これらルールは、ユーザに選択されたルールプラグイン３１４であってよく、前記ルール評価は、イベントハンドラにより初期化される。別の例では、ルールは、また、その他の関連付けられており且つ従属するルールを、呼び出す。また、ルールは、照合されたイベント情報のデータストア３２０にアクセスできる。
【００７０】
ルールは、照合されたデータを評価するために、及び、検出が行われたかどうかを決定するために使用される、任意のルールからなる。これらの検出は、マルウェア活動、不適切なデータの伝送（例えばデータ漏洩防止のようなものなど）、或いは、その他の着目された活動を含んでよい。オプションとして、ルールは、ユーザ（例えば消費者など）により生成されてよい。更に、ルールは、イベントの識別に使用される１以上のイベントソースとは独立していてよい。
【００７１】
述べた通り、ルール評価は、プラグインとして登録されるハンドラによって実行される。ルールは、挙動検出フレームワーク３０４を通じて呼び出される。オプションとして、最上位のルールは、イベントハンドラ内から呼び出される。今度は、それら最上位のルールが、照合されたデータの分析により決定される下位ルールを、呼び出す。これら下位ルールは、順番に、別の下位ルールなどを呼び出す。
【００７２】
種々の実施形態において、ルール評価プラグイン３１４は、分析を直接実行するか、又は、解釈された言語で記述された下位ロジックを呼び出してよい。この使用法は、ルール著述者によってより簡単に使用される専用の解釈された言語スクリプトで記述されるルールロジックの大きさを考慮にいれて、登録されたプラグインをシムとして機能させる。そのプラグインのタスクは、適宜の下位ルールスクリプトの言語インタプリタを読み出し、且つ、結果を挙動検出フレームワーク３０４と通信することがタスクである。これにより、ルールセット間でのルールロジックの再利用を容易にする柔軟且つ動的なルールロジックを、生成できる。
【００７３】
また、図３には示されていないが、検出ハンドラも、特定種類の検出が発行されたときに呼び出すためのプラグインとして登録さてよい。検出ハンドラの登録をサポートすることにより、機能横断的に情報を共有することが可能となる。
【００７４】
例えば、例えば精査されていないウェブサイトからのブラウザプラグインのダウンロードなど、高危険度の活動の検出は、ブラウザスクリプトスキャナの対象となり得る。スクリプトスキャナは、これらプラグインを、より高いレベルのスキャニングに従属させてよい。また、ホスト侵入防止製品は、また、ダウンロードに関心を示し、且つ、スクリプトを隔離（検査）に従属させる。更に、スクリプトがダウンロードされたウェブサイトが精査されていないと決定することは、ウェブサイト分析ツールによる検出の発行経由でアナウンスされてよい。
【００７５】
ルールに基づく予め決められた活動の検出に応じて、反応取り扱いモジュール３１６の一環として反応が行われる。一例として、これら反応の取り扱いは、反応プラグイン３１８により供給される。種々の実施形態において、反応は、プロセスを終了すること、動作をブロックすること、及び／又は、選択的スキャン動作を実行することなどを含む。選択的スキャン動作に関する更なる情報は、「システムに適用されるセキュリティレベルを動的に調整するためのシステム、方法、及びコンピュータプログラム製品」と題され、２００８年４月２９日に出願された米国特許出願番号第１２／１１１８５１号に記載されており、当該出願の全ての記載内容を援用する。
【００７６】
反応ハンドラは、特定種類の反応が要求されたときに呼び出されるためのプラグインとして登録されてよい。そして、これら反応ハンドラは反応を実行する。このことは、挙動検出フレームワーク３０４のユーザ間での反応種類の再利用を可能とし、例えば検出に応じたシステムモニタレベルの変更など機能横断的アプリケーションをサポートする。
【００７７】
このことは、また、端末ノードへのポリシーのアプリケーションが、反応が行われたかどうかを管理することを可能にする。例えば、プロセスを終了するために要求された反応は、まず、反応ハンドラにより、ローカルで適用されたポリシーと査証される。ポリシーは、反応が記録されるべきであるが、その端末ノードに対して実際に行われるべきでないことを示すだろう。その反応は新たなアンチマルウェアコンテンツが最初に配置されたときに実行されるものである。
【００７８】
機能領域内での検出は、挙動検出フレームワーク３０４内のイベントとして発行される。このように、ユーザ（例えば消費者など）は、挙動検出フレームワーク３０４のどんなインパクトも制限及び動的に調整することができる。かかるシステムインパクトは、ＣＰＵ使用、メモリ消費、Ｉ／Ｏ帯域幅などを含む。更に、１つの機能領域内からの検出は、他の機能領域と共有されるか、又は、全体分析のためにセントラル領域内で評価される。
【００７９】
イベントの処理、照合されたデータの記憶、及び、データの分析は、全て、システムリソースを使用する。挙動検出フレームワーク３０４を使用して、ユーザは、かかるリソースの使用の上限を設定でき、且つ、照合されたデータの挙動分析に応じてリソースの使用を動的に制御できる。リソースの使用を制御するための技術の１つは、システムモニタの調整及び活動のスキャンによるものである。システムモニタの調整及び活動のスキャンによるリソースの使用を制御するための技術に関する更なる情報は、「システムに適用されるセキュリティレベルを動的に調整するためのシステム、方法、及びコンピュータプログラム製品」と題され、２００８年４月２９日に出願された米国特許出願番号第１２／１１１８５１号に記載されており、当該出願の全ての記載内容を援用する。
【００８０】
一実施形態において、活動は、システムリソース全体の使用を制御するために仮想機械内で調整される。この内部的仮想機械調整は、仮想機械内で動作する挙動検出フレームワーク３０４のインスタンスのリソース使用を制御するために適用される。
【００８１】
更に、ユーザは、分析プロセスの全てのポイントに参加するためにプラグインしてよい。また、ユーザ機能性は、インストールされ、移動され、アップグレードされ、そして、それらの使用は、インフラストラクチャーの変更なしに、変更される。ユーザは、また、今後の参照及び操作のために、イベントとデータストア３２０内の関連付けられたデータとを照合する。更に、ユーザは、イベントソースの詳細を感知しない挙動分析ルールを記述してよい。
【００８２】
このように、挙動検出フレームワーク３０４の使用は、完全に、ユーザによって駆動される。例えば、ユーザは、イベント生成部として、イベントフィルタ、イベントコンシューマ、ルール評価部、検出ハンドラ及び反応供給部をプラグインする。
【００８３】
このプラグインモデルは、下位コンポーネントとそれらの検出結果とを共有する挙動検出フレームワーク３０４のコンシューマの構築を容易にする。プラグインは、どんな実行可能コンポーネントを含んでいてもよく、また、それらの分析を直接実行するか、又は、解釈された言語で記述された下位ロジックを読み出してよい。例えば、解釈されたルール言語は、ルール評価プラグインによって呼び出される。
【００８４】
一例において、プラグインサポートは、全ての種類のプラグインに対して対照的である。この場合、全てのプラグインは、挙動検出インフラストラクチャー内の全てのクライアントに可視の活動がアクションを発行することにより駆動されることを可能とし、特定種類のアクションが発行されたときにクライアントが呼び出しのためのコールバックを登録することを可能とし、クライアントのコールバックが挙動検出フレームワーク３０４によって呼び出されることを可能とし、且つ、クライアントのコールバックがアクションを発行することを可能とする。
【００８５】
一例において、挙動検出フレームワーク３０４の配置は、ホスト環境（例えばクライアントシステム１１０）によってサポートされた全てのシステムモニタ技術を使うことにより、開始する。この場合、ホスト環境は、セキリュティソフトウェアのホストを参照する。例えば、ホストは、オペレーティングシステム又はウェブブラウザなどからなる。
【００８６】
ホスト環境は、挙動検出フレームワーク３０４に含まれるセキリュティソフトウェアをロードして、少なくとも基本的な能力を提供する。いくつかの基礎的な機能性は、ファイルシステムをモニタすること、ネットワークをモニタすること、データベース構成の更新をモニタすること（例えば、レジストリ操作をモニタすることなど）を含んでよい。
【００８７】
オプションとして、このシステムをモニタすることのイベントハンドラは、イベントフィルタ及びイベント生成部として機能してもよい。これらのハンドラは、システムモニタの通知を精査し、対象でない通知をフィルタするために使用される。ハンドラは、残された通知から、挙動検出フレームワーク３０４についてのイベントを発行する。
【００８８】
一例において、イベントは同期的に発行されてよく、最初の動作はイベントが発行され且つサービスされる間は保持される。別の例では、イベントは、非同期的に発行されてよく、最初の動作はイベントが発行され且つサービスされる間に進行させる。更に別の例では、イベントは、異なるコンテキストで、特に、種々のコンテキスト内で実行している動作をモニタするセントラルコンテキストで発行されてよい。例えば、システムモニタリングエンジン２４０は、システム２００などのホストシステム内に構成された各実行環境内で実行している動作をモニタするためのセントラルコンテキストモニタシステムとして構成されてよい。このコンセプトは、クライアントシステム１１０のそれぞれで実行している動作をモニタするためのセントラルコンテキストモニタシステムとして構成されるローカルサーバ１４０に対して、組織的レベルで適用される。
【００８９】
一例において、コンテキストは、或るイベントが挙動検出フレームワーク３０４内でサービスされる所を定義する。１つの例として、そのコンテキストに登録されたイベントユーザのみが、そのイベントを通知される。例えば、動作を作成するファイルは、特定プロセスのコンテキスト内（例えば、サンドボックス実行環境２２０内）で解釈される。そのコンテキストのためにイベントが発行された場合、そのプロセスのコンテキストに登録されたイベントユーザのみが、そのイベントを見るだろう。イベントが広範なシステム／全体にわたるコンテキストで発行された場合、その広範なシステム／広範なコンテキストに登録されたイベントハンドラがそのイベントを見るだろう。
【００９０】
挙動検出フレームワーク３０４は、種々のコンテキストを含む。例えば、一例としては、コンテキストは、ユーザモードの動作が特定のプロセスに特有であるローカルコンテキストを含む。この場合は、対象のプロセス毎に１つのローカルコンテキストがある。
【００９１】
別の例では、コンテキストは、カーネルモードコンテキストを含む。この場合は、カーネルモードの動作は全てのプロセスを扱う。更に別の例では、コンテキストは、システム全体にわたるコンテキストを含む。システム全体のコンテキストは、ローカル及びカーネルモードコンテキストから該システム全体のコンテキストに発行されたイベントのための集合体である。この場合は、システム毎に１つのシステム全体のコンテキストがある。更に別の例では、コンテキストは、ネットワーク全体のコンテキストを含む。ネットワーク全体のコンテキストは、システム全体のコンテキストからネットワーク全体のコンテキストに発行されたイベントのための集合体である。
【００９２】
オプションとして、発行の階層が使用されてよい。この場合、ローカル及びカーネルモードコンテキスト内で閲覧できるイベントの全てが、システム全体のコンテキストに発行されるわけではなく、十分に対象となるもののみが発行される。このように、たいていのイベントは、元々の動作のコンテキスト内でサービスされる。このことは、システム全体のコンテキストへの不要なイベントの発行に関する負荷を最小化する、より効果的な挙動検出モデルを可能とする。ネットワーク全体のコンテキストへの発行は、より一層少なくなり、不要な負荷を回避する。
【００９３】
一例において、この階層内のイベント伝達制御は、より多くの柔軟性を得るために、イベントハンドラによって、又は、ルールクエリ（問い合わせ）により、直接制御される。イベントハンドラが使用される場合、反応ハンドラが、異なるレベルのコンテキスト階層へのイベントの再発行を実行する。
【００９４】
上述の通り、イベントコンシューマは、当該コンシューマが登録されているコンテキストにおいて特定種類のイベントが発行されたときに通知を受信するために登録される。通知は、それらの抽出条件に合致しているイベントの発行に呼び出される。オプションとして、イベントコンシューマは、イベントに含まれるデータを精査してよい。コンシューマは、また、データストア３２０内のエントリを検索、生成及び変更してよい。コンシューマは、順次、それら自身のイベントを発行し、ルールを呼び出し、検出を発行し、且つ、反応を生成する。
【００９５】
一例として、起源動作の傍受のハンドラによって発行されたイベントのコンシューマは、ルール評価部によって抽出される消費を容易にするために、それらイベントを標準化されたイベントとして再発行する。この使用において、発行された初期イベントは、未加工のイベントとして参照され、イベントコンシューマによって閲覧されるのみである。イベントコンシューマの機能は、これらイベントを一般的な形式に抽出すること、及び、未加工のイベントを標準化されたイベントとして再発行することである。例えばアクター及びターゲットのためのエントリなど、データストア３２０内の関連するエントリの位置付けは、標準化プロセスに含まれる。関連するエントリは、また、傍受された動作の処理又はスレッドを発起することのためのデータストアエントリ、及び、例えばファイルのためなど、動作の対象のためのデータストアエントリを含む。
【００９６】
なお、データストア３２０は、イベントデータを照合するために使用される、どのようなリポジトリによって構成されてもよい。更に、アイテムは、データストア３２０内において、どのようなユーザの目的のために作成されてもよく、受信されたイベント用のアクター及びターゲットのためのアイテムを含む。例えば、ファイルの傍受に応じて、ファイルを開くプロセスのため、及び、現在のファイルのためにオープンエントリが生成される。
【００９７】
種々の実施形態において、データストア３２０は、アイテムを追加すること、検索すること、及び／又は、更新することをサポートしてよい。データストア３２０は、また、例えば、親子間、アクターとターゲット間、及び、共通の履歴を共有するオブジェクト間など、アイテム間の関連付けを形成することをサポートする。データストア３２０は、イベントハンドラ、イベント発行部、検出ハンドラ、ルール評価部、及び、反応ハンドラなどにより使用される。
【００９８】
上述した挙動分析システムの一例に関する更なる情報は、「複数の処理階層レベルにわたりイベントを伝播するための挙動分析システム、方法、及びコンピュータプログラム製品」と題され、２００８年９月２日に出願された米国特許出願番号第１２／２０２９５２号に記載されており、当該出願の全ての記載内容を援用する。
挙動サンドボックスの方法の例
【００９９】
以下の実施形態は、悪意ある実行可能アプリケーションからｍ個々のコンピューティング装置又はネットワーク全体を動的に保護するために、どのように挙動サンドボックスが使用されるかを説明する。
【０１００】
図４は、実行可能アプリケーションの挙動サンドボックスのための方法の一例を描くスイムレーンを持つフローチャートである。方法４００は、ステップ４０２における実行可能アプリケーションを受信する動作、ステップ４０４における挙動分析、ステップ４０６における実行環境を決定すること、ステップ４０８における実行可能アプリケーションをサンドボックスすることを決定すること、ステップ４１０における実行可能アプリケーションを実行すること、ステップ４１２における挙動分析、ステップ４１４における実行環境が変更されるべきか決定すること、ステップ４１６における実行可能アプリケーションのサンドボックスを決定すること、ステップ４２０における実行可能アプリケーションを実行すること、ステップ４２２における挙動分析、ステップ４２４における実行環境が変更されるべきか決定すること、ステップ４２６におけるサンドボックス環境から実行可能アプリケーションを移動するかどうかを決定することからなる。
【０１０１】
この例において、方法４００は、ステップ４０２において、システム２００が実行可能アプリケーションを受信又はロードすることにより開始する。方法４００はステップ４０４に進み、実行可能アプリケーションに対する挙動分析を挙動分析モジュール２３０が実行する。一例において、挙動分析モジュール２３０は、実行可能アプリケーションの起源に適宜のイベントを含むイベントの履歴を収集する。挙動分析モジュール２３０は、実行されるべき実行可能アプリケーションについての履歴を精査する。挙動分析モジュール２３０は、それらイベントのために、実行可能アプリケーション履歴を分析する。イベントは、例えば、インターネットからのダウンロード、信頼されたプロセスによるインストール、コードの変更、信頼されたソースからの暗号で署名された証明書、若しくは、以前に動作したときに疑わしいとみなされた又はポリシー外の活動の実行、などである。
【０１０２】
この例において、方法４００はステップ４０６に進み、実行可能アプリケーションを実行するための実行環境の種類がいずれであるかを、挙動分析モジュール２３０が決定する。例えば、挙実行可能アプリケーションが信頼できるものと、挙動分析モジュール２３０が判断した場合、方法４００は、その実行可能アプリケーションを標準実行環境内で起動する。実行可能アプリケーションが悪意ある活動を行う可能性をもっているものと、挙動分析モジュール２３０が判断した場合は、ステップ４０８において、方法４００は、その実行可能アプリケーションを、例えばサンドボックス実行環境２２０など、サンドボックス実行環境内にリダイレクトする。実行可能アプリケーションがサンドボックス実行環境で実行されるべきものである場合、方法４００はステップ４２０に進み、サンドボックス実行環境２２０が実行可能アプリケーションを実行する。
【０１０３】
実行可能アプリケーションがサンドボックス実行環境２２０内で実行される例において、方法４００はステップ４２２に進み、実行可能アプリケーションが動作している間、挙動分析モジュール２３０が挙動分析を実行する。この例において、実行可能アプリケーションがサンドボックス実行環境２２０内で実行されているので、挙動分析モジュール２３０は、継続的且つ動的に、当該実行可能アプリケーションについての情報を更新する。方法４００はステップ４２４に進み、実行環境を変更できるかどうかを、挙動分析モジュール２３０が決定する。例えば、実行可能アプリケーションの動的なモニタを鑑みて、実行可能アプリケーションがもはやシステム２００にスレッドを提出しないと、挙動分析モジュール２３０が判断した場合、実行可能アプリケーションをサンドボックス環境２２０から移動できる。実行可能アプリケーションがサンドボックス環境２２０から移動される場合、方法４００はステップ４２６に進み、実行可能アプリケーションをサンドボックス環境２２０から出して、標準実行環境２１０内に移動する。実行可能アプリケーションをサンドボックス環境２２０から移動できない場合、方法４００は、ステップ４２６において、前記ステップ４２０の動作に戻り、実行可能アプリケーションを完遂するか、又は、サンドボックス環境２２０から移動できるまで、処理を繰り返す。
【０１０４】
ステップ４０８の動作に戻り、実行可能アプリケーションが標準実行環境２１０内で実行され得ると、挙動分析モジュール２３０が決定した場合、方法４００はステップ４１０に進み、システム２００が標準実行環境２１０内で実行可能アプリケーションを実行する。続いて、ステップ４１２において、実行可能アプリケーションが標準実行環境２１０内で実行されているので、挙動分析モジュール２３０は、その実行可能アプリケーションに対して挙動分析を実行する。該ステップ４１２の動作において、システム２００は、どのような悪意ある（又は疑わしい）挙動の徴候についても、動的にモニタする。挙動分析モジュール２３０は、悪意ある動作に関するシステム２００の危急を増加させるイベントを監視している。挙動分析モジュール２３０により監視されるイベントは、いくつかを挙げると、リソースファイル又はデータベースを開くこと、プラグインをロードすること（例えばスクリプト、及び、ライブラリ又はＤＬＬなどのいくつかの実行可能アプリケーション）、他のプロセスによる操作、他のプロセスへの操作、ネットワークへのアクセス、インターネットへのアクセス、既知の良好サイトリスト外のインターネットサイト（例えばブラックリストに載っているサイト）へのアクセスなどである。
【０１０５】
ステップ４１４において、実行可能アプリケーションのモニタされた挙動の特徴に基づいて、実行環境が変更されるべきかどうかを挙動分析モジュール２３０が決定する。前記ステップ４１２において実行される動的挙動分析は、実行可能アプリケーション実行中に、システム２００がその実行可能アプリケーション（又は実行可能アプリケーションの一部）の実行環境を変更することを可能とする。このことにより、安全であるように見えたが結局悪意あるものだと判明したアプリケーションから、システム２００が自身を保護できるようになる。例えば、挙動分析モジュール２３０は、或るアプリケーションが既知で且つ信頼されたソースからのものであると決定し、そのアプリケーションに標準実行環境２１０で起動されることを許可する。しかし、その動作中に、ユーザが、そのアプリケーションに対して、未知のソースからの新たなプラグインをダウンロードするように命令するかもしれない。挙動分析モジュール２３０は、このようイベントを傍受するように構成されており、システム２００に、実行及びより一層のモニタのために、その新たなプラグインを、サンドボックス実行環境２２０にリダイレクトするように命令できる。別の例では、挙動分析モジュール２３０は、アプリケーションの挙動履歴の分析に基づいて、そのアプリケーションが標準実行環境２１０内で実行され得ることを決定するだろう。しかし、実行中に、そのアプリケーションが、容認できる挙動を決定するものであるセキュリティポリシーに違反して、クライアントシステム１００の構成データベースを更新しようと企てるかもしれない。この例において、挙動分析モジュール２３０は、いずれの更なる潜在的な危害からもシステム２００を保護するために、システム２００に対して、実行中のアプリケーションをサンドボックス環境２２０に移動するように命令できる。
【０１０６】
ステップ４１６において、挙動分析モジュール２３０は、実行可能アプリケーションがサンドボックス実行環境２２０内に移動されるべきかどうかを決定する。実行可能アプリケーションが移動されるべきである場合は、方法４００はステップ４２０に進み、システム２００はサンドボックス実行環境２２０内で実行可能アプリケーションの実行を続ける。実行可能アプリケーションがサンドボックス実行環境に移動されない場合は、方法４００はステップ４０８の動作に戻り、実行可能アプリケーションが終了するまで、処理を繰り返す。
【０１０７】
図５は、挙動分析を用いて実行可能アプリケーションのための実行環境を形成するための方法の一例を描くスイムレーンを持つフローチャートである。方法５００は、例えば、ステップ５０２におけるセキュリティポリシーを適用すること、ステップ５１０におけるサンドボックス制限の範囲を決定すること、並びに、ステップ５０４及び５１２における実行可能アプリケーションをモニタすることなど、いくつかの追加的オプションの動作を付け加えた方法４００の動作群からなる。
【０１０８】
方法５００はステップ５０２の動作を備えており、ここにおいて、挙動分析モジュール２３０は、セキュリティポリシーを適用する。一例において、セキュリティポリシーは、例えばローカルサーバ１４０などのセントラルサーバから受信できる。別の例では、セキュリティポリシーは、クライアントシステム１１０毎に局所的であり得る。いくつかの例では、セキュリティポリシーはユーザによって制御される。別の例では、セキュリティポリシーは、ネットワーク又はシステム管理者により組織的レベルで制御される。セキュリティポリシーは、制限された動作のリスト、ブラックリストに載ったサイト又はデフォルトでサンドボックス環境内で実行されるべきアプリケーションのリスト、サンドボックスすることへ特定の除外、ユーザ又はグループレベル制限、ユーザ又はグループレベル許可、並びに、ユーザ又はグループレベル例外、を含む。
【０１０９】
図５に示す通り、セキュリティポリシーは、前記ステップ４０４の動作における挙動分析モジュール２３０のいずれかの挙動分析の実行に先立って、適用される。セキュリティポリシーを適用することにより、信頼できるものとして既知の、又は、潜在的に悪意のあるものとして既知の、何れの実行可能アプリケーションをも識別し、それ以上の挙動分析が必要となることを防止できる。セキュリティポリシーは、また、挙動分析モジュール２３０を構成するために使用できる。別の例では、セキュリティポリシーは、方法５００の別の時点で適用さてよく、或いは、挙動分析の実行において挙動分析モジュール２３０によってのみ使用される。
【０１１０】
方法５００は、また、ステップ５１０の動作を備えており、ここにおいて、挙動分析モジュール２３０は、サンドボックス実行環境２２０に適用するための制限の範囲を決定する。一例において、挙動分析モジュール２３０は、実行可能アプリケーションがサンドボックス実行環境２２０内で実行されたときに、実行可能アプリケーションについてなされるべき制御を、どのように制限するかを決定するために、実行可能アプリケーションについての情報を使用できる。いくつかの実施例において、挙動分析モジュール２３０は、また、サンドボックス環境における制限を形成するために、セキュリティポリシーから得た情報を使用できる。制限の範囲は、システムリソースアクセス、ネットワークリソースへのアクセス、インターネットアクセス、信頼されたソースにより署名されたプラグイン、ネットワークアドレス幅、ブラックリストに掲載されたサイト、通信プロトコル（許可又は制限）、他のプロセスとの通信、又は、サンドボックス実行環境外のプロセスとの通信を含み得る。挙動分析モジュール２３０がサンドボックス環境を選択的に構成できることにより、セキュリティの最低限のレベルを維持しつつ、実行可能アプリケーションが行うことを許可される制御のレベルをより細かくでき、サンドボックスするプロセスの機能性を高めることができる。サンドボックス環境を選択的に構成することにより、また、実行可能アプリケーションが必要な動作を実行することを可能にしつつ、サンドボックス環境内でより綿密に実行可能アプリケーションがモニタされることを一層許容することにより、セキュリティを高めることができる。
【０１１１】
方法５００は、また、ステップ５０４及び５１０の動作を備えており、ここにおいて、挙動分析モジュール２３０は、実行可能アプリケーションにより行われる動作の変更可能な範囲をモニタする。ステップ５０４の動作において、方法５００は、標準実行環境２１０内で実行される実行可能アプリケーションをモニタする。一例において、ステップ５０４においてシステムモニタリングエンジン２４０によって収集された情報をモニタすることは、実行可能アプリケーションがサンドボックス環境２２０に移動されるべきかを決定するために、挙動分析モジュール２３０により使用される。上述の通り、実行可能アプリケーションは、当該アプリケーションが始動された後に検出された、予期していなかった潜在的に悪意のある挙動のために、サンドボックス環境に移動されることがある。ステップ５１２の動作では、サンドボックス実行環境２２０内で実行される実行可能アプリケーションをモニタする。一例において、ステップ５１２においてシステムモニタリングエンジン２４０によって収集された情報をモニタすることは、実行可能アプリケーションがサンドボックス環境２２０の外に移動されてもよいかどうかを決定するために、挙動分析モジュール２３０により使用される。サンドボックス環境２２０内での実行可能アプリケーションの実行をモニタすることは、また、アプリケーションによって生成された情報がサンドボックス環境２２０の外部に伝達され得るかどうかを決定するために使用できる。また、モニタされた情報は、サンドボックス環境２２０に適用される制限の範囲を、動的に増加又は減少するために使用される。
【０１１２】
図６は、一実施例に従う、前記実行可能アプリケーションの挙動分析におけるオプションの動作を描くフローチャートである。方法４０４は、ステップ６０２におけるセキュリティポリシーを適用すること、ステップ６０４における実行可能アプリケーションの特徴を分析すること、ステップ６０６における実行可能アプリケーションによってアクセスされるリソースを分析すること、からなる。この例において、挙動分析モジュール２３０は、例えば方法４００におけるステップ４２２の動作など、実行環境内での実行可能アプリケーションの実行に先立って、及び、実行可能アプリケーションの実行しているときのいずれにおいても、ステップ６０２、６０４及び６０６の動作を実行するように構成されている。
【０１１３】
図６に示す通り、方法４０４は、挙動分析モジュール２３０がセキュリティポリシーを適用することから開始する。一例において、セキュリティポリシーを適用することは、挙動分析モジュール２３０がどのように挙動分析を行うかを構成する。セキュリティポリシーは、挙動分析モジュール２３０が、例えば或るアプリケーションの起源或いは署名されていないセキュリティ証明書にどのように反応するかを制御できる。セキュリティポリシーは、また、ブラクリストに載ったＵＲＬ又はアプリケーションのソースなどとしても使用できる。
【０１１４】
方法４０４はステップ６０４に進み、挙動分析モジュール２３０が実行可能アプリケーションについての可能な特徴全てを分析する。特徴は、起源（例えばＵＲＬ又はホストシステムの情報）、リソース要件、過去動作、信頼レベル（例えばオンライン評価データベースにアクセスすることにより決定される）、又は、セキュリティ証明書などを含む。挙動分析モジュール２３０は、実行可能アプリケーションが悪意ある活動のスレッドを提起しそうかどうかを決定するために、これら特徴を使用できる。
【０１１５】
ステップ６０６において挙動分析モジュール２３０が実行可能アプリケーションによってアクセスされるリソースを分析し、方法４０４は終了する。一例において、挙動分析モジュール２３０は、どのリソースにアプリケーションがアクセスしようとしたかを決定するために、アプリケーションに解釈可能なランタイムのコードを分析する。別の例では、挙動分析モジュール２３０は、どのリソースにアプリケーションがアクセスしようとしたかを決定するために、アプリケーションによって実行された過去の動作を詳述する情報を信頼するだろう。
【０１１６】
図７は、一実施例に従う、実行可能アプリケーションのための実行環境決定におけるオプションの動作を描くフローチャートである。実行環境を決定する方法４０６は、ステップ７０２におけるセキュリティポリシーを適用すること、ステップ７０４におけるセキュリティ証明書を分析すること、ステップ７０６におけるセキュリティデータベースに反するアプリケーションの署名を調べること、ステップ７０８におけるサンドボックス環境において実行されるべき実行可能アプリケーションの部分を決定すること、ステップ７１０におけるサンドボックス環境のための制限の範囲を決定すること、及び、ステップ７１２におけるサンドボックス環境内で実行可能アプリケーションにより実行される動作のための処置を決定すること、といったオプションの動作からなる。上述の通り、セキュリティポリシーは、方法４００や方法５００など挙動サンドボックスのための方法内の種々の時点で適用できる。この例において、セキュリティポリシーは、実行可能アプリケーションのための実行環境を決定するとき、挙動分析モジュール２３０により、適用され得る。
【０１１７】
この例において、方法４０６はステップ７０４の動作に進み、挙動分析モジュール２３０が実行可能アプリケーションのセキュリティ証明書を分析する。一例において、ダウンロードされたアプリケーションは、例えば、セキュア・ソケット・レイヤー（Secure Sockets Layer、ＳＳＬ）、又は、トランスポート・レイヤー・セキュリティー（Transport Layer Security、ＴＬＳ）などセキュアな通信チャンネルから受信される。典型的には、ＳＳＬ又はＴＬＳは、承認機関によって発行された証明書を使用し、検証され得るデジタル署名を含む。実行可能アプリケーションのダウンロードに使用された接続が、有効なデジタル署名を持つ証明書で保証された場合、より一層、アプリケーションが信頼し得るソースからきたものと、見なし得るだろう。挙動分析モジュール２３０は、実行可能アプリケーションがサンドボックス環境内で実行されるべきかどうかを決定することにおいて、セキュリティの種類及びセキュリティ証明書の有効性を含み得る。
【０１１８】
方法４０６はステップ７０６に進み、挙動分析モジュール２３０がセキュリティデータベースに反するアプリケーションの署名（又は、その他の証明する特徴）を調べる。一例において、実行可能アプリケーション毎の署名は、ハッシングアルゴリズムを通じて生成され、データベース１４０などのデータベースに記憶される。或るアプリケーションの信憑性についての情報は、データベース内に固有の署名とともにカタログ化される。脅威データベースは、例えばリモートデータベース１７０など、ローカルに又は中心的に維持され得る。中央に配置された脅威データベースは、潜在的に悪意あるデータを収集でき、また、同様に、複数の場所から安全として知られるアプリケーションを収集でき、従って、潜在的な既知の脅威についてより広い視野を提供できる。
【０１１９】
方法４０６はステップ７０８に進み、挙動分析モジュール２３０がサンドボックス環境内で実行すべき実行可能アプリケーションの部分を決定する。上述した通り、実行可能アプリケーションは、専ら、多数のスレッドの実行として実行されるか、又は、いくぶん独立に実行される複数の異なるコンポーネントからなる。一例において、システム２００は、アプリケーションの残りが標準環境内で実行されることを可能にしつつ、サンドボックス環境内の実行可能アプリケーションの個別のスレッドを、或いは、個別のファイバーさえも、実行できる。例えば、挙動分析モジュール２３０が、或るアプリケーションの一定のスレッドがメモリ破損の履歴を持っていると決定した場合、潜在的に悪意の或るスレッドは、実行のために、サンドボックス環境２２０内に移動され得る。サンドボックス環境２２０は、何らかのメモリ破損がメモリシステムの残りに不利に影響を与えないように、保護されたメモリ空間を使用できる。
【０１２０】
方法４０６はステップ７１０に進み、挙動分析モジュール２３０がサンドボックス環境のための制限の範囲を決定する。上述の通り、サンドボックス環境２２０のための制限の範囲は、どのレベルのＩ／Ｏをサンドボックス内に許可するか、サンドボックスされたアプリケーションにサンドボックス環境２２０の外部と通信することを許可するかどうか、サンドボックス外部のプロセスにサンドボックス環境２２０内部で実行しているプロセスを操作することを許可するかどうか、及び、インターネットアクセスにサンドボックス環境２２０内部で処理することを許可するかどうか、などを含む。
【０１２１】
ステップ７１２において、挙動分析モジュール２３０がサンドボックス環境２２０内で実行される動作のための処置を決定して、方法４０６は終わる。一例において、サンドボックス実行環境２２０内のプロセスにより実行される動作は、例えばシステムモニタリングエンジン２４０によって傍受され得る。傍受されると、動作は完全にブロック（報知無しで、又は、ユーザにエラーを送信するとともに、又は、アプリケーションを呼び出して）されるか、予定されたリソースへのアクセスを許可される（例えば、データベース内のデータ、メモリ位置、ネットワークデバイス）か、或いは、サンドボックス環境によって制御されたプライベート位置にリダイレクトされる。この例において、挙動分析モジュール２３０は、実行可能アプリケーションの挙動特徴に基づいて、サンドボックス環境２２０がどのように構成されるかを決定できる。例えば、サンドボックス環境２２０が全ての動作を制限されたプライベート空間にリダイレクトするように構成されている場合、実行可能アプリケーションは、メインシステムからのミラー化されたデータと相互作用することを許可されるのみである。サンドボックスされたアプリケーションの終了にあたり、プライベートの（ミラー化された）データは、システムから消去することか、又は、サンドボックスされたアプリケーションにより実行された動作でメインシステムを更新することのどちらによっても、処置される。なお、メインシステムを更新することは、実行可能アプリケーションがいずれのセキュリティポリシーを破らない、又は、サンドボックス環境２２０内での動作中に何ら悪意のある動作を実行しない場合に、許容されるだけかもしれない。いくつかの例では、サンドボックス環境の外部で実行されるプロセスは、三度ボックされた実行可能アプリケーションによって生成された情報を得るために、プライベートリソースにアクセスできてもよい。
【０１２２】
図８は、挙動分析を用いて実行可能アプリケーションを分析する方法８００の一例を描くフローチャートである。方法８００は、以下の動作からなる；ステップ８０２における実行可能アプリケーションの起動を検出すること、ステップ８０４における実行可能アプリケーションの挙動分析を実行すること、ステップ８０６における実行可能アプリケーションをサンドボックス実行環境内で動作させるかどうかを決定すること、ステップ８０８における標準実行環境内で実行可能アプリケーションを開始すること、ステップ８１０における動作中の実行可能アプリケーションに対して挙動分析を実行すること、ステップ８１２における実行可能アプリケーションがサンドボックス実行環境内に移動されるべきかどうかを決定すること、ステップ８１４における実行可能アプリケーションがまだ動作中かどうかを決定すること、ステップ８２２におけるサンドボックス実行環境を構成すること、ステップ８２４におけるサンドボックス実行環境内で実行可能アプリケーションを開始すること、ステップ８２６における動作中の実行可能アプリケーションに対して挙動分析を実行すること、及び、ステップ８３０におけサンドボックス実行環境内での実行可能アプリケーションの動作を続行するかどうかを決定すること。いくつかの実施例では、方法８００は、また、ステップ８２０におけるサンドボックスする範囲を決定すること、及び、ステップ８３２におけるサンドボックスされたデータ及び動作を処置することを含み得る。
【０１２３】
一例において、ステップ８０２においてシステムモニタリングエンジン２４０が実行可能アプリケーションの起動を検出して、方法８００は開始する。この例において、システムモニタリングエンジン２４０は、システム２００に、実行可能アプリケーションが悪意あるものかどうかを決定するために分析されるまで、その実行可能アプリケーションの実行を差し控えるように指示できる。方法８００はステップ８０４に進み、挙動分析モジュール２３０が実行可能アプリケーションに対する挙動分析を実行する。挙動分析モジュール２３０は、悪意ある又はセキュリティポリシーを破るどのような兆候も分析する。次に、方法８００はステップ８０６に進み、挙動分析モジュール２３０が実行可能アプリケーションをサンドボックス実行環境２２０内に移動するかどうかを決定する。
【０１２４】
実行可能アプリケーションが、例えば標準実行環境２１０など標準実行環境内で実行することを許可されているならば、方法８００はステップ８０８に続く。一例において、ステップ８０８では、方法８００は、実行可能アプリケーションを標準実行環境２１０内で開始する。方法８００はステップ８１０に進み、挙動分析モジュール２３０が動作中の実行可能アプリケーションに対して挙動分析を実行する。いくつかの実施例では、システムモニタリングエンジン２４０は、実行可能アプリケーションによって実行された動作のモニタに使用される。ステップ８１２において、挙動分析モジュール２３０は、動作中の実行可能アプリケーションがサンドボックス実行環境内に移動されるべきかどうかを動的に決定する。前記ステップ８１２において実行可能アプリケーションがサンドボックス実行環境内に移動されていない場合、方法８００はステップ８１４の動作に続く。ステップ８１４において、システム２００は、実行可能アプリケーションが終了したかどうか決定する。実行可能アプリケーションが動作中の場合、方法８００はステップ８０８の動作に戻り、処理を繰り返す。
【０１２５】
ステップ８１２の動作に戻ると、挙動分析モジュール２３０が、実行可能アプリケーションが潜在的に悪意ある挙動を示しているものと決定する場合には、方法８００は続いて、実行可能アプリケーションをサンドボックス実行環境２２０内に移動する。
【０１２６】
方法８００は、動作中の実行可能アプリケーション又は起動されるプロセスにある実行可能アプリケーションをサンドボックスするかどうかという、同様なタスクを実行する、いくつかの例では、方法８００はステップ８２０におけるサンドボックスするプロセスを開始し、挙動分析モジュール２３０がサンドボックスする範囲を決定する。サンドボックスする範囲は、サンドボックス環境が、ディスクＩ／Ｏ又はネットワークのような物に対してどのように制限的であるかを含み、また、同様に、サンドボックス環境２２０内で現在動作している実行可能アプリケーションのどの対して制限的であるかを含み得る。一例において、サンドボックスするプロセスはステップ８２２で開始し、挙動分析モジュール２３０が、例えばサンドボックスする範囲やセキュリティポリシーなどの入力に基づいて、サンドボックス環境２２０を構成する。
【０１２７】
一例において、サンドボックス実行環境２２０が構成されたら、方法８００はステップ８２４に進み、サンドボックス実行環境２２０内で実行可能アプリケーションを開始又は実行する。次に、方法８００はステップ８２６に進み、挙動分析モジュール２３０が動作中の実行可能アプリケーションに対して挙動分析を実行する。この例において、挙動分析は、実行可能アプリケーション内又は周囲の環境の変化によって当該実行可能アプリケーションをサンドボックス実行環境２２０から移動させることが可能になるかどうかを動的に決定するために、サンドボックス実行環境２２０内で動作中の実行可能アプリケーションに対して実行される。方法８００はステップ８２８に進み、実行可能アプリケーションをサンドボックスしつづけるかどうかを挙動分析モジュール２３０が決定する。実行可能アプリケーションがサンドボックス実行環境内に残る場合、方法８００はステップ８３０の動作に進む。ステップ８３０の動作において、システム２００は、その実行可能アプリケーションの実行を続行するかどうかを決定する。実行可能アプリケーションが終了された場合、方法８００はステップ８３２において終了する。ステップ８３２において、システム２００は、サンドボックスされたデータ及び動作を処置する。サンドボックスされたデータ及び動作を処置することには、システムから情報を消去すること、又は、影響を受けたリソースの更新をシステム２００に許可することを含み得る。いくつかの実施形態では、サンドボックスされたデータ及び動作は、セグメント化されたリソース内にデータ及び動作を保持している間は、標準実行環境２１０内での処理に利用可能である。
【０１２８】
ステップ８２８の動作に戻ると、実行可能アプリケーションがサンドボックス実行環境２２０から移動され得ることが決定する場合、方法８００はステップ８１４の動作に進む。
【０１２９】
上述の方法は、第一にクライアントシステム１１０内の動作に関して説明した。しかし、上述と同様な方法又はその方法の一部は、ゲートウェイ装置１２０にも実装され得る。たとえば、ゲートウェイ装置１２０は、広域ネットワーク１３０からダウンロードされている実行可能アプリケーションを検出するように構成できる。ゲートウェイ装置１２０は、また、入ってくる実行可能アプリケーションに対して挙動分析を実行するようにも構成できる。最初の挙動分析の結果は、クライアントシステム１１０と共有され、クライアントシステム１１０は入ってくる実行可能アプリケーションを必要に応じてサンドボックスする。
モジュール、コンポーネントおよびロジック
【０１３０】
いくつかの実施形態は、ロジック、又は、多数のコンポーネント、モジュールエンジン若しくはメカニズムとして、ここに記載されている。モジュールは、ソフトウェアモジュール（例えば、機械可読媒体に記録されたコード、又は、伝送信号に具現化されたコード）又はハードウェアモジュールを構成する。ハードウェアモジュールは、一定の動作を実行できる実体的ユニットであり、特定の方法で構成又は配置されてよい。具体例において、１以上のコンピュータシステム（例えば、スタンドアローン、クライアント、又は、サーバコンピュータシステム）、又は、コンピュータシステムの１以上のハードウェアモジュール（例えばプロセッサ又はプロセッサグループ）は、ソフトウェア（アプリケーション又はアプリケーションの部分）により、ここに記載された特定の動作群を実行するハードウェアモジュールとして、構成されてよい。
【０１３１】
種々の実施形態において、ハードウェアモジュールは、機械的に又は電子的に実装されてよい。例えば、ハードウェアモジュールは、永続的に特定の動作を実行するように構成された専用回路又はロジック（例えば、ＦＰＧＡ（フィールドプログラマブルゲートアレイ）やＡＳＩＣ（特定用途向け集積回路）などの専用プロセッサ）からなる。ハードウェアモジュールは、また、ソフトウェアにより一時的に特定の動作を実行するよう構成されたプログラム可能なロジック又は回路（例えば汎用プロセッサ又はその他プログラム可能なプロセッサ内に含まれるもの）を具備していてもよい。なお、専用且つ永続的に構成された回路又は、一時的に構成された回路（例えばソフトウェアにより構成される）において、機械的ハードウェアモジュールを実装する決定は、コスト及び時間を考慮してなされることは、理解されるだろう。
【０１３２】
従って、“ハードウェアモジュール”という用語は、有形の実体に包含されるものと理解されるべきであり、実体とは、物理的に形成され、特定の方法で動作するように、及び／又は、ここに記載した特定の動作群を実行するように、永続的に構成（例えばハードウェアに組み込み（配線で接続されたもの））又は一時的に構成されたもの（例えばプログラムされたもの）である。ハードウェアモジュールが一時的に構成（プログラム）された実施形態において、ハードウェアモジュールのそれぞれは、時間内で何か１つのインスタンスに構成又はインスタンス化される必要はない。例えば、ハードウェアモジュールがソフトウェアを使用するよう構成された汎用プロセッサを具備する場合、その汎用プロセッサは、異なる時間において、それぞれ異なるハードウェアモジュールとして構成される。ソフトウェアは、従って、例えば、或る時間インスタンスに特定のハードウェアモジュールを構成し、別の時間インスタンスに別のハードウェアモジュールを構成するプロセッサを構成してよい。
【０１３３】
ハードウェアモジュールは、他のハードウェアに情報を供給でき、且つ、他のハードウェアから情報を受信できる。従って、上述したハードウェアモジュールは、通信可能に接続されているものとみなされてよい。複数のかかるハードウェアモジュールが同時に存在している場合、通信はハードウェアモジュールを接続する信号伝送を通じて（例えば適宜の回路及びバスを通じて）遂行される。複数のハードウェアモジュールが異なる時間に構成又はインスタンス化される実施形態において、それらハードウェアモジュール間の通信は、例えば、それら複数のハードウェアモジュールがアクセスを持つメモリ機構内の情報の記憶及び検索を通じて遂行される。例えば、１つのハードウェアモジュールは、或る動作を実行し、通信可能に接続されたメモリ装置に、その動作の出力を記憶するだろう。さらなるハードウェアモジュールは、そして、後に、前記動作の出力を検索し且つ処理するために前記メモリ装置にアクセスするだろう。ハードウェアモジュールは、また、入力又は出力装置との通信を開始して、或るリソース（例えば情報の集積）に作用できる。
【０１３４】
個々に記載された方法の例の種々の動作は、少なくとも部分的には、関連する動作を実行するように一時的に構成された（例えばソフトウェアによる）又は永続的に構成された１以上のプロセッサによって実行される。一時的に構成されるか又は永続的に構成されるかのいずれにしても、かかるプロセッサは、１以上の動作又は機能を実行するように動作するプロセッサ実装モジュールを構成してよい。ここで言及したモジュールは、いくつかの実施形態では、プロセッサ実装モジュールを含む。
【０１３５】
同様に、ここに記載された方法は、少なくとも部分的にプロセッサ実装されてよい。例えば、少なくとも方法の動作のいくつかは、１以上のプロセッサ又はプロセッサ実装モジュールにより実行される。いくつかの動作の実行は、単一の機械内に存在しているだけでなく、複数の機械にわたり配備されている、１以上のモジュールに分配されてよい。いくつかの実施形態では、１つのプロセッサ又は複数のプロセッサは、単一の場所（例えば家庭環境内、オフィス環境内、又は、サーバファームとして）に配置され、別の実施形態では、複数のプロセッサは複数の場所に分配されている。
【０１３６】
１以上のプロセッサは、また、“クラウンドコンピューティング”環境において又はＳａａＳとして、関連する動作の実行を支援するように動作してもよい。例えば、少なくともいくつかの動作は、コンピュータのグループ（機械の一例としてプロセッサを含む）により実行され、それら動作は、ネットワーク（例えばインターネット）経由で、且つ、１以上の適宜のインタフェース（例えばＡＰＩ）経由でアクセス可能である。
電子機器及びシステム
【０１３７】
具体的な実施形態は、デジタル電子回路、又は、コンピュータハードウェア、ファームウェア、ソフトウェア、又は、それらの組み合わせに実装されてよい。実施形態は、コンピュータプログラム製品（例えば、実行のための又はその動作を制御するための機械可読媒体内の、情報キャリア内に実体的に具現化されたコンピュータプログラム、データ処理機器、プログラム可能なプロセッサ、１つのコンピュータ、若しくは、複数のコンピュータ）を用いて実装されてよい。
【０１３８】
コンピュータプログラムは、コンパイルされた又は解釈された言語を含む、どのような形式のプログラミング言語で記述されてもよく、それは、例えばスタンドアローンプログラム又はモジュール、サブルーチン、若しくは、コンピューティング環境での使用に適切なその他ユニットなどを含むどのような形式に配備されていてもよい。コンピュータプログラムは、１つのコンピュータ又は複数のコンピュータ上で実行されるように、１つのサイトに配備されるか、又は、複数のサイトに分配され、通信ネットワークにより相互に接続される。
【０１３９】
実施形態において、動作は、入力データを処理すること及び出力を生成することにより機能を実行するコンピュータプログラムを実行する１以上のプログラム可能なプロセッサにより実行されてよい。方法動作は、また、例えばＦＰＧＡ（フィールドプログラマブルゲートアレイ）又はＡＳＩＣ（特定用途向け集積回路）など専用論理回路により実行され、且つ、実施形態の機器は、例えばＦＰＧＡ（フィールドプログラマブルゲートアレイ）又はＡＳＩＣ（特定用途向け集積回路）など専用論理回路により実装されてもよい。
【０１４０】
コンピューティングシステムは、クライアント及びサーバで構成できる。クライアント及びサーバは、一般に、互いに離れており、典型的には、通信ネットワークを通じて相互作用する。クライアント及びサーバの関係は、各コンピュータ上で動作し、且つ、互いにクライアント‐サーバ関係を持つコンピュータプログラムの効果により生じる。プログラム可能なコンピューティングシステムを配備する実施例において、ハードウェア及びソフトウェア構造の両方が考慮を要求することがわかる。具体的には、特定の機能を、永続的に構成されたハードウェア（例えばＡＳＩＣ）に実装するか、又は、一時的に構成されたハードウェア（例えばソフトウェアとプログラム可能なプロセッサの組み合わせ）に実装するか、又は、永続的に構成されたハードウェアと一時的に構成されたハードウェアとの組み合わせに実装するかという選択は、設計選択事項であることがわかる。以下は、種々の実施形態において配備されるハードウェア（機械）及びソフトウェア構造を提示する。
機械構造及び機械可読媒体の例
【０１４１】
図９は、開示されたいずれか１以上の方法を機械に実施させるための命令が実行されるコンピュータシステム９００の構成例における機械のブロック図である。コンピュータシステム９００は、一実施形態において、システム９００を具備する。別の実施形態では、機械は、スタンドアローン装置として動作するか又は別の機械に接続（ネットワーク接続）される。ネットワーク接続された配置において、機械は、サーバとして、又は、サーバ‐クライアントネットワーク環境におけるクライアント機械として動作するか、また、Peer to Peer（ピアトゥピア）ネットワーク（又は分散型ネットワーク）環境においては、ピア機械として動作する。機械は、パーソナルコンピュータ（ＰＣ）、タブレットＰＣ、セットトップボックス（ＳＴＢ）、携帯情報端末（ＰＤＡ）、携帯電話、Ｗｅｂアプライアンス、ネットワークルータ、スイッチ又はブリッジ、或いは、機械によって行われるアクションを特定する命令（シーケンシャルな又はその他の命令）を実行できるその他任意の機械であってよい。更に、１つの機械だけが描かれているが、“機械”という用語は、また、ここに開示された方法の１以上を実行するための命令のセット（又は複数のセット）を、個別に又は共同で実行する機械のどんな集積をも含むだろう。
【０１４２】
コンピュータシステム９００の一例は、プロセッサ９０２（例えば、中央演算処理装置（ＣＰＵ）、グラフィック・プロフィッシング・ユニット（ＧＰＵ）、又は、その両方）、メインメモリ９０４およびスタティックメモリ９０６からなり、これらは互いにバス９０８経由で通信できる。コンピュータシステム９００は、更に、表示装置９１０（例えば液晶ディスプレイ（ＬＣＤ）、又は、陰極線管（ＣＲＴ））を備える。コンピュータシステム９００は、また、英数字入力装置９１２（例えばキーボード）、ユーザインタフェース（ＵＩ）ナビゲーション装置９１４（例えばマウス）、ディスク駆動装置９１６、信号生成装置９１８（例えばスピーカ）及びネットワークインターフェース装置９２０を備える。
機械可読媒体
【０１４３】
ディスク駆動装置９１６は、機械可読媒体９２２を含み、この機械可読媒体９２２には、ここに開示した方法又は機能のいずれか１つ以上を具現化する、若しくは、該方法又は機能のいずれか１つ以上により使用される１つ以上のデータ構造及び命令９２４のセットが記憶される。命令９２４は、また、完全に又は少なくとも一部、それをコンピュータ９００により実行する間、メインメモリ９２４及び／又はプロセッサ９０２内に存在し、メインメモリ９２４及びプロセッサ９０２もまた機械可読媒体の構成要素となる。
【０１４４】
実施形態において、機械可読媒体９２２は単一の媒体であるように示されているが、用語“機械可読媒体”は、１つ以上のデータ構造及び命令９２４を記憶する１つの媒体又は複数の媒体（例えば中央化された又は分散化されたデータベース、及び／又は、連携されたキャッシュ及びサーバ）を含む。用語“機械可読媒体”は、また、機械によって実行され、本発明の実施形態の方法いずれか１つ以上を機械に実行させるための命令を、記憶すること、エンコードすること、又は。運搬することができる、若しくは、かかる命令に関連付けられるか又は使用されるデータ構造を記憶すること、エンコードすること、又は、運搬することができる、どんな実体的媒体をも含むとみなされるだろう。用語“機械可読媒体”は、従って、限定はされないが、ソリッド・ステート・メモリ（半導体素子メモリ）、光学媒体、及び、磁気媒体を含むとみされるだろう。機械可読媒体の具体例としては、不揮発メモリからなり、例として、ＥＰＲＯＭ（Erasable Programmable Read Only Memory）、ＥＥＰＲＯＭ（Electrically Erasable and Programmable Read Only Memory）、及び、フラッシュメモリ装置などの半導体メモリ装置；内蔵ハードディスク及びリムーバブルディスクなどの磁気ディスク；光磁気ディスク；並びに、ＣＤ−ＲＯＭ及びＤＶＤ−ＲＯＭディスクなどが含まれる。
伝送媒体
【０１４５】
命令９２４は、更に、伝送媒体を用いて、通信ネットワーク９２６を通じて伝送又は受信されてよい。命令９２４は、ネットワークインターフェース装置９２０、及び、多数の周知の通信プロトコル（例えばＨＴＴＰ）のいずれか１つを用いて、伝送される。通信ネットワークの例としては、ローカルエリアネットワーク（ＬＡＮ）、広域ネットワーク（ＷＡＮ）、インターネット、携帯電話ネットワーク、ＰＯＴＳ（Plain Old Telephone Service；アナログ電話サービス）ネットワーク、無線データ通信ネットワーク（例えば、ＷｉＦｉ及びＷｉＭａｘネットワーク）を含む。用語“伝送媒体”は、機械により実行するための命令を、記憶すること、エンコードすること及び運搬することのでき、且つ、デジタル又はアナログ通信信号、若しくは、かかるソフトウェアの通信を容易にするその他の無形媒体を含む、どんな無形の媒体をも含むと見なされる。
【０１４６】
このように、ネットワークベースの市場についてユーザに文脈上の推薦するための方法及びシステムが説明された。具体的実施例を参照して、この発明の本実施形態が説明されたが、本発明の実施形態のより広い趣旨及び範囲から逸脱することなく、種々の改変及び変更がこれら実施形態になされてよいことは明白であろう。従って、明細書及び図面は、制限的趣旨よりもむしろ、例示的なものとみなされるべきである。
【０１４７】
具体的実施例を参照して、或る実施形態が説明されてきたが、本発明の実施形態のより広い趣旨及び範囲から逸脱することなく、種々の改変及び変更がこれら実施形態になされてよいことは明白であろう。従って、明細書及び図面は、制限的趣旨よりもむしろ、例示的なものとみなされるべきである。本明細書の一部を形成する添付図面は、本発明が実施される具体的実施形態の説明のために示されており限定を目的としたものではない。図示の実施形態は、当業者が本明細書に開示された教示を実施できる程度十分に詳細に説明されている。他の実施形態は、そこから利用及び派生可能であり、この開示の範囲から逸脱することなしに、構造上及び論理上の代用及び変更がなれる。詳細な説明は、従って、限定的趣旨とみなされず、種々の実施形態の範囲は、添付の特許請求の範囲のみによって定義され、特許請求の範囲が請求する特徴の均等物の最大範囲に従う。
【０１４８】
かかる実施形態の発明主題は、本明細書において、個別に及び／又は一体的に、用語“発明”によって、単に便宜のため、１以上が実際に開示されているならば、本願発明の範囲をいずれの１つの発明又は発明概念に自発的に制限することを意図することなく、言及された。従って、具体例がここに図示及び説明されているが、同じ目的を達成すると予測されるどのような取り合わせであっても、示された特定の実施形態に置き換わることが理解されるべきである。この開示は、種々の実施形態のいずれの改作又は変化も包含することを意図している。前述した実施形態の組み合わせ、及び、個々に具体的には示されなかったその他の実施形態は、上記の説明を検討すれば当業者には明らかとなるであろう。
【０１４９】
この文献において言及された出版物、特許及び特許文献の全ては、個別に援用されたかのように、全ての記載内容を本明細書内に援用される。この文献と、援用された文献群との間で一致しない取り扱いがある場合には、援用記載における取り扱いは、この文章のその追加とみなされる；調停不可能な不一致については、この文献の取り扱いが支配する。
【０１５０】
この文献において、用語“或る”（a又はan）は、特許文献において通例であるように、“少なくとも１つ”又は“１以上”の他のいずれの事例又は取り扱いとも別に、１又は１以上を含むように使用される。この文献において、用語“又は”（or）は、非排他的に、又は、“Ａ又はＢ”が、特に指摘のない限り、“ＡであるがＢではない”、“ＡであるがＢではない”、“ＢであるがＡではない”、及び、“Ａ及びＢ”を含むように、言及されている。添付の特許請求の範囲において、“からなる”（including）及び“であって”（in which）は、それぞれ、用語“具備する”（comprise）及び“において”（wherein）の平易な相当語として使用されている。また、以下の特許請求の範囲おいて、“からなる”及び“構成する”は、オープンエンド（拡張可能）であり、特許請求の範囲おいてそのような用語に関して一覧記載されたものに加えて、更に要素を含むシステム、装置、物品（article）
又は処理は、当該請求範囲の範囲内に入るものとみなされる。さらに、以下の特許請求の範囲において、“第１”、“第２”、“第３”などの用語は、それが使用される場合は、単なるラベルとして使用されており、それらの対象物に数的要求を課することを意図しているのではない。
【０１５１】
この開示の要約は、技術的開示の特徴を、読者が迅速に確認することを可能とする要約を要求する、３７Ｃ．Ｆ．Ｒ §１．７２（ｂ）に従って、提供される。それは、特許請求の範囲の範囲又は意味を解釈又は制限するために使用されないことを理解されたい。さらに、上述の発明の詳細な説明では、開示を効率化する目的で、１つの実施形態において様々な機能が互いにグループ化されていることがわかる。このような開示の方法は、特許請求された実施形態が、各請求項において明示的に引用されるよりも多くの特徴を要求する、という意図を表すことと解釈されるべきではない。むしろ、以下の特許請求の範囲が表す通り、本発明の主題は、開示された１つの実施形態の全ての機能よりも少ない。したがって、以下の特許請求の範囲は、本発明の詳細な説明に組み込まれ、各請求項は、個別の実施形態として自立している。
【図１】
0005592956.tif 000002
【図２】
0005592956.tif 000003
【図３】
0005592956.tif 000004
【図４】
0005592956.tif 000005
【図５】
0005592956.tif 000006
【図６】
0005592956.tif 000007
【図７】
0005592956.tif 000008
【図８】
0005592956.tif 000009
【図９】
0005592956.tif 000010