特許第5957492号(P5957492)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ マカフィー, インコーポレイテッドの特許一覧

特許5957492挙動サンドボックスのためのシステム及び方法
<>
  • 特許5957492-挙動サンドボックスのためのシステム及び方法 図000002
  • 特許5957492-挙動サンドボックスのためのシステム及び方法 図000003
  • 特許5957492-挙動サンドボックスのためのシステム及び方法 図000004
  • 特許5957492-挙動サンドボックスのためのシステム及び方法 図000005
  • 特許5957492-挙動サンドボックスのためのシステム及び方法 図000006
  • 特許5957492-挙動サンドボックスのためのシステム及び方法 図000007
  • 特許5957492-挙動サンドボックスのためのシステム及び方法 図000008
  • 特許5957492-挙動サンドボックスのためのシステム及び方法 図000009
  • 特許5957492-挙動サンドボックスのためのシステム及び方法 図000010
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】5957492
(24)【登録日】2016年6月24日
(45)【発行日】2016年7月27日
(54)【発明の名称】挙動サンドボックスのためのシステム及び方法
(51)【国際特許分類】
   G06F 21/56 20130101AFI20160714BHJP
   G06F 21/53 20130101ALI20160714BHJP
【FI】
   G06F21/56 360
   G06F21/53
【請求項の数】23
【全頁数】35
(21)【出願番号】特願2014-157789(P2014-157789)
(22)【出願日】2014年8月1日
(62)【分割の表示】特願2012-544720(P2012-544720)の分割
【原出願日】2010年12月14日
(65)【公開番号】特開2014-238870(P2014-238870A)
(43)【公開日】2014年12月18日
【審査請求日】2014年8月26日
(31)【優先権主張番号】12/638,660
(32)【優先日】2009年12月15日
(33)【優先権主張国】US
(73)【特許権者】
【識別番号】505418238
【氏名又は名称】マカフィー, インコーポレイテッド
(74)【代理人】
【識別番号】100077539
【弁理士】
【氏名又は名称】飯塚 義仁
(74)【代理人】
【識別番号】100125265
【弁理士】
【氏名又は名称】貝塚 亮平
(72)【発明者】
【氏名】ダルチャー,グレゴリー,ウィリアム
(72)【発明者】
【氏名】テディ,ジョン ディー.
【審査官】 岸野 徹
(56)【参考文献】
【文献】 特表2008−500653(JP,A)
【文献】 特開2007−334536(JP,A)
【文献】 米国特許出願公開第2006/0021054(US,A1)
【文献】 特開2008−234248(JP,A)
【文献】 米国特許出願公開第2006/0021029(US,A1)
【文献】 米国特許出願公開第2004/0139334(US,A1)
【文献】 米国特許出願公開第2002/0188649(US,A1)
【文献】 特表2004−518193(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 21/56
G06F 21/53
(57)【特許請求の範囲】
【請求項1】
第1実行環境と第2実行環境とを含む複数の実行環境を有するシステムにおいて、実行環境を動的に決定するための方法であって、ここで前記第2実行環境は保護された実行環境であり、
プロセッサによって、実行可能アプリケーションの実行に先立って、該実行可能アプリケーションに対して、挙動分析を行う手順であって、
前記実行可能アプリケーションの各実行に先立って、遠隔のセキュリティデータベースに、疑わしい又はポリシー外の活動の事前実行に関する挙動情報を要求することと、
該要求に応じて取得した前記挙動情報を評価すること
を行う前記手順と、
前記プロセッサによって、前記実行可能アプリケーションの各実行に先立って、前記挙動分析に基づき、1番目の実行環境を決定する手順であって、
前記第1実行環境内での実行のための前記実行可能アプリケーションの単一の実行の第1部分と前記第2実行環境内での実行のための前記実行可能アプリケーションの前記単一の実行の第2部分とを決定することと、
前記1番目の実行環境を、前記第1実行環境及び第2実行環境の一方として、決定すること
を行う前記手順と、
記プロセッサによって、前記1番目の実行環境内での実行のために前記実行可能アプリケーションをロードする手順と
前記1番目の実行環境内で前記実行可能アプリケーションが実行されているとき、前記プロセッサによって、該実行可能アプリケーションの挙動特徴を収集する手順と、
前記プロセッサによって、前記収集された挙動特徴から、前記1番目の実行環境内で前記実行可能アプリケーションがまだ実行されている最中に該実行可能アプリケーションが前記1番目の実行環境から2番目の実行環境へ移動されるべきかどうかを決定する手順であって、前記1番目の実行環境と前記2番目の実行環境のいずれか一方が保護された実行環境である前記手順と
を実行することからなる方法。
【請求項2】
前記実行可能アプリケーションの実行に先立って挙動分析を行う手順は、該実行可能アプリケーションの起源を示す、当該実行可能アプリケーションに関連付けられた1以上の特徴を評価する手順からなることを特徴とする請求項1に記載の方法。
【請求項3】
前記実行可能アプリケーションの実行に先立って挙動分析を行う手順は、該実行可能アプリケーションが利用するリソースの分析を含むことを特徴とする請求項1又は2に記載の方法。
【請求項4】
前記1以上の特徴は、以下の、
前記実行可能アプリケーションを受信したネットワークアドレス、
前記実行可能アプリケーションに要求されたプロセスの信頼レベル、及び、
信頼されたソースからの署名された証明書
のうちの1つ以上を含むことを特徴とする請求項2に記載の方法。
【請求項5】
前記第2実行環境内での実行のために前記実行可能アプリケーションをロードする手順は、該実行可能アプリケーションの実行に先立って、該第2実行環境に適用する制限の範囲を決定する手順からなることを特徴とする請求項1乃至4のいずれかに記載の方法。
【請求項6】
前記制限の範囲を決定する手順は、前記第2実行環境内において、どの種類の活動が抑制されるべきかを決定する手順からなることを特徴とする請求項5に記載の方法。
【請求項7】
前記制限の範囲を決定する手順は、前記第2実行環境内において、前記実行可能アプリケーションにより行われた動作に対する処置を決定する手順からなることを特徴とする請求項5に記載の方法。
【請求項8】
前記収集された挙動特徴から決定する手順は
リソースファイルを開くこと、
プラグインをロードすること、
別のプロセスによる操作、
別のプロセスを操作すること、
及び、インターネットにアクセスすること
を含む潜在的に悪意のある活動を検出する手順からなることを特徴とする請求項1乃至7のいずれかに記載の方法。
【請求項9】
前記1番目の実行環境を決定する手順は、セキュリティポリシーを適用する手順からなることを特徴とする請求項1乃至8のいずれかに記載の方法
【請求項10】
前記実行可能アプリケーションの第1部分は、
ファイバー、
スレッド、
プロセス、
ダイナミックリンクライブラリ、
スクリプト、
又は、プラグインコンポーネント
の実行を含むことを特徴とする請求項1乃至9のいずれかに記載の方法。
【請求項11】
1又は複数のプロセッサを備えるコンピュータからなるシステムであって、
前記1又は複数のプロセッサは、
実行可能アプリケーションの実行に先立って、該実行可能アプリケーションに対して、挙動分析を行い、ここで、前記挙動分析を行うことは、
前記実行可能アプリケーションの各実行に先立って、遠隔のセキュリティデータベースに、疑わしい又はポリシー外の活動の事前実行に関する挙動情報を要求することと、
該要求に応じて取得した前記挙動情報を評価すること、からなり、
前記実行可能アプリケーションの各実行に先立って、前記挙動分析に基づき、1番目の実行環境を決定し、ここで、前記1番目の実行環境を決定することは、
前記第1実行環境内での実行のための前記実行可能アプリケーションの単一の実行の第1部分と前記第2実行環境内での実行のための前記実行可能アプリケーションの前記単一の実行の第2部分とを決定することと、
前記1番目の実行環境を、前記第1実行環境及び第2実行環境の一方として、決定すること、からなり、
前記1番目の第2実行環境内での実行のために前記実行可能アプリケーションをロードし
前記1番目の実行環境内で前記実行可能アプリケーションが実行されているとき該実行可能アプリケーションの挙動特徴を収集し、そして、
前記収集された挙動特徴から、前記1番目の実行環境内で前記実行可能アプリケーションがまだ実行されている最中に該実行可能アプリケーションが前記1番目の実行環境から2番目の実行環境へ移動されるべきかどうかを決定する、
ように構成されており、ここで前記1番目の実行環境又は前記2番目の実行環境のいずれか一方のみが保護された実行環境であることを特徴とするシステム。
【請求項12】
前記挙動分析を行うように構成された1又は複数のプロセッサは、更に、前記実行可能アプリケーションに関連付けられた1つの特徴を評価するように構成されており、前記特徴は、前記実行可能アプリケーションの供給者が信頼できるかどうかを示すものであることを特徴とする請求項11に記載のシステム
【請求項13】
前記挙動分析を行うように構成された1又は複数のプロセッサは、更に、以下の、
前記実行可能アプリケーションを受信したネットワークアドレス、
前記実行可能アプリケーションに要求されたプロセスの信頼レベル、及び、
信頼されたソースからの署名された証明書
のうちの2つ以上を含む複数の特徴を評価するように構成されることを特徴とする請求項12に記載のシステム。
【請求項14】
前記挙動分析を行うように構成された1又は複数のプロセッサは、更に、前記実行可能アプリケーションの実行に先立って、該実行可能アプリケーションの実行時に該実行可能アプリケーションが利用するリソースを分析するように構成されることを特徴とする請求項11乃至13のいずれかに記載のシステム。
【請求項15】
前記挙動分析を行うように構成された1又は複数のプロセッサは、更に、前記保護された実行環境が前記実行可能アプリケーションの実行を制御するために使用するだろう制限の範囲を決定するように構成されることを特徴とする請求項11乃至14のいずれかに記載のシステム。
【請求項16】
前記挙動分析を行うように構成された1又は複数のプロセッサは、更に、前記保護された実行環境内において、どの種類の活動が抑制されるべきかを決定するように構成されることを特徴とする請求項15に記載のシステム。
【請求項17】
前記挙動分析を行うように構成された1又は複数のプロセッサは、更に、前記保護された実行環境による使用のために前記制限の範囲が決定したときに、セキュリティポリシーを適用するように構成されることを特徴とする請求項15に記載のシステム。
【請求項18】
前記挙動分析を行うように構成された1又は複数のプロセッサは、更に、前記保護された実行環境内において、前記実行可能アプリケーションにより行われた動作に対する処置を決定するように構成されることを特徴とする請求項11乃至17のいずれかに記載のシステム。
【請求項19】
前記挙動分析を行うように構成された1又は複数のプロセッサは、
リソースファイルを開くこと、
プラグインをロードすること、
別のプロセスによる操作、
別のプロセスを操作すること、
及び、インターネットにアクセスすること
を含む潜在的に悪意のある活動を検出するように構成されることを特徴とする請求項11乃至18のいずれかに記載のシステム。
【請求項20】
前記挙動分析を行うように構成された1又は複数のプロセッサは、更に、前記1番目の実行環境が前記保護された環境であるべきかどうかを決定するために前記実行可能アプリケーションの複数の挙動特徴を評価するときに、セキュリティポリシーを適用するように構成されることを特徴とする請求項11乃至19のいずれかに記載のシステム。
【請求項21】
前記実行可能アプリケーションの部分とは、
ファイバー、
スレッド、
プロセス、
ダイナミックリンクライブラリ、
スクリプト、
又は、プラグインコンポーネント
の実行を含むことを特徴とする請求項11乃至20のいずれかに記載のシステム。
【請求項22】
命令群を記憶したコンピュータ読み取り可能な記憶媒体であって、前記命令群は、
実行可能アプリケーションの実行に先立って、該実行可能アプリケーションに対して、挙動分析を行う手順であって、
前記実行可能アプリケーションの各実行に先立って、遠隔のセキュリティデータベースに、疑わしい又はポリシー外の活動の事前実行に関する挙動情報を要求することと、
該要求に応じて取得した前記挙動情報を評価すること
を行う前記手順と、
前記実行可能アプリケーションの各実行に先立って、前記挙動分析に基づき、1番目の実行環境を決定する手順であって、
前記第1実行環境内での実行のための前記実行可能アプリケーションの単一の実行の第1部分と前記第2実行環境内での実行のための前記実行可能アプリケーションの前記単一の実行の第2部分とを決定することと、
前記1番目の実行環境を、前記第1実行環境及び第2実行環境の一方として、決定すること
を行う前記手順と、
前記1番目の第2実行環境内での実行のために前記実行可能アプリケーションをロードする手順と
前記1番目の実行環境内で前記実行可能アプリケーションが実行されているとき該実行可能アプリケーションの挙動特徴を収集する手順と、
前記収集された挙動特徴から、前記1番目の実行環境内で前記実行可能アプリケーションがまだ実行されている最中に該実行可能アプリケーションが前記1番目の実行環境から2番目の実行環境へ移動されるべきかどうかを決定する手順
からなる方法を前記コンピュータに実行させるものであことを特徴とするコンピュータ読み取り可能な記憶媒体
【請求項23】
前記実行可能アプリケーションが前記1番目の実行環境から移動された後、前記2番目の実行環境内で実行されている最中における該実行可能アプリケーションの第2挙動特徴を動的にモニタする手順と、
前記実行可能アプリケーションが前記2番目の実行環境から前記1番目の実行環境に戻されるべきかどうか決定するために、前記モニタされた第2挙動特徴に対する挙動分析を行う手順と、
前記モニタされた第2挙動特徴の前記挙動分析に基づいて、前記2番目の実行環境内での前記実行可能アプリケーションの実行を終了する前に、該実行可能アプリケーションを該2番目の実行環境から前記1番目の実行環境に移動する手順と
を前記コンピュータに実行させる1又は複数の命令群を更に備えることを特徴とする請求項22に記載のコンピュータ読み取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【0001】
この発明の種々の実施形態は、大略、コンピュータセキュリティの分野に関し、限定はされないが、特に、実行可能アプリケーションの挙動サンドボックス(behavioral sandboxing)のためのシステム及び方法に関する。
関連する出願
【0002】
この特許出願は、「挙動サンドボックスのためのシステム及び方法」と題され、2009年11月15日に出願された米国特許出願番号第12/638660号に基づく優先的利益を主張するものである。
著作権表示
【0003】
この特許出願書類の開示の一部は、著作権保護の対象となる素材を含んでいる。著作権者は、特許商標庁の特許ファイル又は記録に現れるならば、特許出願書類又は特許開示の何人による複製にも異論がないが、どんな著作権の権利でも全て所有する。以下の注意書きは、以下に説明され、且つ、この文献の一部をなす図面にも示されるソフトウェア及びデータに適用される:Copyrights 2009, McAfee, Inc. All rights Reserved(不許複製・禁無断転載)
【背景技術】
【0004】
インターネットへのアクセス増加は、告知に基づく同意無しにユーザの個人情報を略取するソフトウェアプログラム(“スパイウェア”)、又は、ユーザの認識及び告知に基づく同意無しにコンピュータを破損するソフトウェアプログラム(“マルウェア”)の到達を増加させるという、予期せぬ効果があった。また、自動的にダウンロードされ、アプリケーションが使用されている間に広告を表示するソフトウェア(“アドウェア”)において、小規模産業が生じている。
【0005】
かかるプログラムは、ユーザのコンピュータにインストールされたとき、当該ユーザを傍受でき、機密的情報を集め、いくつかの場合では、ユーザのコンピュータの制御をしてしまう。いくつかの場合、これらソフトウェアプログラムは他のコンピュータ又はサービスに、潜在的機密情報を伝送するためのコンジット(conduit)を提供するメッセージを送信する。
【0006】
ソフトウェアアプリケーションは、ウェブブラウザなどアプリケーションに対するプラグインコンポーネント、又は、その他のアドオンタイプの拡張を使用することにより、ますますセグメント化されている。インターネットは、これらアドオンコンポーネントにとって、素晴らしい配給メカニズムを提供する。しかし、これらアドオンコンポーネントの信頼されていないソース(source:情報源)から信頼されたものを選ぶのは、不可能でないにしても、困難である。加えて、平均的ユーザは、それを行っているとは知らないうちに、アドオンコンポーネントを要求し、ダウンロードし、そして、インストールしている。
【発明の概要】
【0007】
本発明者らは、わけても、ダウンロードされたアプリケーション及びコンポーネントを分析し、動作中に前記アプリケーション及び前記コンポーネントをモニタし、且つ、ホストシステムを害するどのような疑わしい動作も予防するシステム及び方法の必要性を認識した。
【0008】
実施例1は、システムで構成される発明を記載する。前記システムは、実行可能アプリケーションのソース(source:情報源)と通信可能に接続されたネットワークを具備する。コンピュータが組み込まれ、前記ネットワークを通じて通信するように構成される。挙動分析モジュールは、前記ネットワークを通じてダウンロードされた実行可能アプリケーションに対して挙動分析を実行するように構成される。複数の実行環境は、標準実行環境と保護された実行環境とを含み得る。前記保護された実行環境は、前記実行可能アプリケーションによって実行される悪意ある動作から前記コンピュータを保護する自己完結型の実行環境を提供するように構成される。前記挙動分析モジュールは、前記実行可能アプリケーションの実行に先立って、当該実行可能アプリケーションが前記保護された実行環境内で実行されるべきかどうかを決定するために、該実行可能アプリケーションの複数の挙動特徴を評価できる。また、前記挙動分析モジュールは、前記実行環境を変更できるかどうか決定するために、前記実行可能アプリケーションの実行をモニタできる。
【0009】
実施例2において、前記実施例1の発明は、前記実行可能アプリケーションに関連付けられた特徴を評価するように構成された前記挙動分析モジュールを具備してもよい。前記特徴は、前記実行可能アプリケーションの前記ソースが信頼できるかどうかについての指標を供給できる。
【0010】
実施例3において、前記実施例1又は実施例2のいずれかの発明は、前記実行可能アプリケーションに関連付けられた複数の特徴を評価するように構成された前記挙動分析モジュールを具備してもよい。前記複数の特徴は、以下の2以上を含む:前記実行可能アプリケーションを受信したネットワークアドレス、前記実行可能アプリケーションに要求されたプロセスの信頼レベル、信頼されたソースからの署名された証明書、及び、疑わしい又はポリシー外の活動の事前実行。
【0011】
実施例4において、前記実施例1乃至実施例3のいずれかの発明は、前記実行可能アプリケーションの実行に先立って、前記実行可能アプリケーションが作用するリソースを分析するように構成された前記挙動分析モジュールを具備してもよい。
【0012】
実施例5において、前記実施例1乃至実施例4のいずれかの発明は、前記保護された実行環境が前記実行可能アプリケーションの実行の制御に使用するだろう制限の範囲を決定するように構成された前記挙動分析モジュールを具備してもよい。
【0013】
実施例6において、前記実施例1乃至実施例5のいずれかの発明は、前記保護された実行環境内において、どの種類の活動が抑制されるべきかを決定するように構成された前記挙動分析モジュールを具備してもよい。
【0014】
実施例7において、前記実施例1乃至実施例6のいずれかの発明は、サンドボックス(sandbox)環境(前記保護された実行環境)による使用のために前記制限の範囲を決定するときに、セキュリティポリシーを適用するように構成された前記挙動分析モジュールを具備してもよい。
【0015】
実施例8において、前記実施例1乃至実施例7のいずれかの発明は、前記保護された実行環境内において前記実行可能アプリケーションにより行われる動作に対する処置を決定するように構成された前記挙動分析モジュールを具備してもよい。
【0016】
実施例9において、前記実施例1乃至実施例8のいずれかの発明は、リソースファイルを開くこと、プラグインをロードすること、別のプロセスによる操作、別のプロセスを操作すること、及び、インターネットにアクセスすることを含む、潜在的に悪意のある活動を検出するように構成された前記挙動分析モジュールを具備してもよい。
【0017】
実施例10において、前記実施例1乃至実施例9のいずれかの発明は、前記実行可能アプリケーションが前記保護された実行環境内で実行されるべきかどうかを決定するために該実行可能アプリケーションの複数の挙動特徴を評価するときに、セキュリティポリシーを適用するように構成された前記挙動分析モジュールを具備してもよい。
【0018】
実施例11において、前記実施例1乃至実施例10のいずれかの発明は、前記保護された実行環境内で実行されるべき前記実行可能アプリケーションの部分を決定するように構成された前記挙動分析モジュールを具備してもよい。
【0019】
実施例12において、前記実施例1乃至実施例11のいずれかの発明は、前記実行可能アプリケーションの部分を決定するように構成され、前記部分が、特に、ファイバー、スレッド、プロセス、ダイナミックリンクライブラリ、スクリプト、又は、プラグインコンポーネントを含むものである、前記挙動分析モジュールを具備してもよい。
【0020】
実施例13において、前記実施例1乃至実施例12のいずれかの発明は、前記実行可能アプリケーションが前記ネットワークの接続を通じて受信されるように、構成又は実行されてもよい。前記挙動分析は、前記実行可能アプリケーションの実行に先立って、該実行可能アプリケーションに対して実行される。挙動分析の機能として、前記実行環境が決定される。前記挙動分析によってそのように指示された場合には、前記実行可能アプリケーションは前記サンドボックス(保護された)実行環境内で開始される。或いは、前記保護された環境外で実行しても当該実行可能アプリケーションが安全であると前記挙動分析が示す場合には、前記実行可能アプリケーションは第1実行環境内で開始(実行)される。前記実行可能アプリケーションの前記挙動特徴は、該実行可能アプリケーションの実行中に収集され、リアルタイムで、実行中に前記実行位置(環境)を変えるかどうかを決定するために、挙動分析が実行される。
【0021】
実施例14において、前記実施例1乃至実施例13のいずれかの発明は、前記挙動分析が、前記実行可能アプリケーションの実行に先立って実行され、且つ、該実行可能アプリケーションに関連付けられ、当該実行可能アプリケーションの起源について指標を提供する1以上の特徴を評価することを含み得るように、構成又は実行されてもよい。
【0022】
実施例15において、前記実施例1乃至実施例14のいずれかの発明は、前記挙動分析が、前記実行可能アプリケーションの実行に先立って実行され、且つ、前記実行可能アプリケーションの実行に先立って、前記実行可能アプリケーションが作用するリソースを分析するように、構成又は実行されてもよい。
【0023】
実施例16において、前記実施例1乃至実施例15のいずれかの発明は、前記挙動分析が、次に述べる1以上の特徴を評価するように、構成又は実行されてもよい。前記特徴は、以下を含む:前記実行可能アプリケーションを受信したネットワークアドレス、前記実行可能アプリケーションに要求されたプロセスの信頼レベル、信頼されたソースからの署名入り証明書(前記実行可能アプリケーションに関連付けられたもの)、及び、疑わしい又はポリシー外の活動の事前実行。
【0024】
実施例17において、前記実施例1乃至実施例16のいずれかの発明は、サンドボックス(保護された)実行環境内で前記実行可能アプリケーションの実行開始が、前記実行可能アプリケーションの実行に先立ち、前記サンドボックス(保護された)実行環境に適用する制限の範囲を決定することを含むように、構成又は実行されてもよい。
【0025】
実施例18において、前記実施例1乃至実施例17のいずれかの発明は、或る実行環境のための制限の範囲を決定することが、サンドボックス(保護された)実行環境内において、どの種類の活動が抑制されるべきかを決定することを含むように、構成又は実行されてもよい。
【0026】
実施例19において、前記実施例1乃至実施例18のいずれかの発明は、或る実行環境のための制限の範囲決定することが、サンドボックス(保護された)実行環境内において前記実行可能アプリケーションにより行われる動作に対する処置を決定することを含むように、構成又は実行されてもよい。
【0027】
実施例20において、前記実施例1乃至実施例19のいずれかの発明は、挙動特徴を収集することが、リソースファイルを開くこと、プラグインをロードすること、別のプロセスによる操作、別のプロセスを操作すること、及び、インターネットにアクセスすることを含む潜在的に悪意のある活動を検出することを含むように、構成又は実行されてもよい。
【0028】
実施例21において、前記実施例1乃至実施例20のいずれかの発明は、実行可能アプリケーションを動作させる実行環境を決定することがセキュリティポリシーを適用することを含むように、構成又は実行されてもよい。
【0029】
実施例22において、前記実施例1乃至実施例21のいずれかの発明は、実行可能アプリケーションを動作させる実行環境を決定することが、前記サンドボックス実行環境内で実行されるべき前記実行可能アプリケーションの部分を決定することを含むように、構成又は実行されてもよい。
【0030】
実行可能アプリケーションを動作させる実行環境を決定することが、前記サンドボックス実行環境内で実行されるべき前記実行可能アプリケーションの部分を決定することを含み、前記部分が、特に、ファイバー、プロセス、ダイナミックリンクライブラリ、スクリプト又はプラグインコンポーネントを含むように、構成又は実行されてもよい。
【0031】
実施例24は、前記実施例1乃至実施例23のいずれかを含むか、又は、前記実施例1乃至実施例23のいずれかの任意の組み合わせであり、機械可読(コンピュータ読み取り可能)媒体を具備する。機械可読媒体は、コンピュータにより実行されたときに、該コンピュータに以下の動作を実行させる命令群を含む。前記動作は、ネットワーク接続を通じて実行可能アプリケーションを受信する手順;前記実行可能アプリケーションの実行に先立って、該実行可能アプリケーションに対する挙動分析を行う手順;前記挙動分析の実行に基づいて、サンドボックス環境内で、前記実行可能アプリケーションの実行を開始するかどうかを決定する手順;前記サンドボックス環境内で、前記実行可能アプリケーションの実行を開始する手順;前記サンドボックス環境内で前記実行可能アプリケーションが実行されているとき、前記実行可能アプリケーションの挙動特徴を動的にモニタする手順;前記サンドボックス環境から前記実行可能アプリケーションを移動できるかどうかを決定するために、前記モニタされた挙動特徴に対する挙動分析を行う手順;及び、前記モニタされた挙動特徴の前記挙動分析に基づいて、前記実行可能アプリケーションを前記サンドボックス環境から移動する手順を含む。
【0032】
これらの実施例は、どのような順列又は組み合わせで、組み合わされても良い。この概要は、この特許出願の発明の概要を提供することを目的としており、独占的又は網羅的な発明の説明を提供することは意図していない。本特許出願に関する更なる情報を提供するために、詳細な説明が具備されている。
【図面の簡単な説明】
【0033】
図1】セキュリティを向上させるために実行可能アプリケーションの挙動サンドボックスを適用できるシステム100の一例を描くブロック図。
図2】挙動分析に基づいて実行可能アプリケーションをサンドボックスするように構成されたシステムの一例を描くブロック図。
図3】実行可能アプリケーションの挙動分析を提供するためのシステムの一例を描くブロック図。
図4】実行可能アプリケーションの挙動サンドボックスのための方法の一例を描くスイムレーンを持つフローチャート。
図5】挙動分析を用いて実行可能アプリケーションのための実行環境を形成するための方法の一例を描くスイムレーンを持つフローチャート。
図6】一実施例に従う、前記実行可能アプリケーションの挙動分析におけるオプションの動作を描くフローチャート。
図7】一実施例に従う、実行可能アプリケーションのための実行環境決定におけるオプションの動作を描くフローチャート。
図8】挙動分析を用いて実行可能アプリケーションを分析する方法の一例を描くフローチャート。
図9】開示されたいずれか1以上の方法を機械に実行させるための命令が実行されるコンピュータシステムの構成例における機械のブロック図。
【発明を実施するための形態】
【0034】
上記の添付の図面の各図においては、いくつかの実施形態が限定的にでなく例示的に示されている。
【0035】
本明細書においては、この発明に係る挙動サンドボックスのための方法及びシステムを提供するための種々の実施形態(実施例)が開示される。挙動サンドボックスは、種々のソース(source:情報源)からのアプリケーション及びコンポーネントを実行するユーザの柔軟性を許容しつつ、既知及び未知両方の悪意あるソフトウェアアプリケーション及びコンポーネントから、エンドユーザのシステムを保護するための動的メカニズムを提供できる。
【0036】
ソフトウェアの配布がより簡単になり、又は、アプリケーションがより一層細分化されるにつれて、ターゲットとなるプラットフォーム上でのソフトウェアの実行に先立って、正当なソフトウェアとマルウェア(不完全な、悪いソフトウェア)とを区別することが、ますます難しくなっている。プラグインコンポーネント、ランタイム解釈コード(run-time interpreted code)、及び、その他の種々のダウンロードされたソフトウェアの広範な利用により、正当なソフトウェアが、より簡単にセキュリティ破壊され、また、悪意ある目的で利用されてしまう。潜在的に悪意あるソフトウェアを阻止するための1つの技術は、未知の、又は、危険に晒されているソフトウェアを、“サンドボックス(sandbox)”として知られる封じ込めエリア内で作動することである。前記サンドボックス内で作動するソフトウェア(実行可能アプリケーション)により行われる動作は、前記サンドボックスのみに作用することに限定されており、より広いシステム又は現在システム上で作動中の他のアプリケーションには作用しない。
【0037】
従来のサンドボックスによる解決法は、適用と実施において柔軟性がなく、大抵は、或るアプリケーションの能力を適切に機能させることを厳しく制限するものである。サンドボックスによる従来のアプローチは、また、実行可能アプリケーションのうちのどの部分が、サンドボックスされる必要があるのか、及び、どの拡張に対して、サンドボックス環境が、他のシステムリソース及び他のアプケーション(又は、主たる実行可能アプリケーションの部分)から遮蔽されるべきかを、動的に決定する能力に欠ける。以下の詳細な説明は、とりわけ、これらの問題に対する解決を記載する。
【0038】
挙動サンドボックスは、サンドボックス実行環境内でプロセスが行われるべき時を決定するために、挙動分析を使用できる。挙動サンドボックスは、また、アプリケーション又はアプリケーションの部分(例えば、プラグインコンポーネント)をサンドボックス実行環境から移動して、標準実行環境で実行を続けることができるかどうか決定するために、サンドボックス実行環境内で実行されているアプリケーションをモニタできる。
【0039】
一例において、サンドボックス環境は、単にサンドボックスされたアプリケーションが実行中に行おうとする全ての動作を阻止するのではなく、ホストシステムを個別の動作から選択的に遮蔽するように構成できる。例えば、前記サンドボックス実行環境は、オペレーティングシステムの設定ファイルを更新しようとする企て(例えばWindows(登録商標)レジストリデータベースへの書き込み)だけを遮蔽するように構成できる。前記サンドボックス環境は、また、一定の入力がサンドボックスされたアプリケーションに入力され、一定の出力がサンドボックスされたアプリケーションから他のローカル又はリモートのアプリケーションに通信されるように構成される。例えば、前記サンドボックス環境は、サンドボックスされたアプリケーションがデータベースからデータを読み出して、且つ、データベースのデータを更新できるように構成される一方、当該サンドボックス環境は、同じアプリケーションがデータベースに全く新しい記録を追加することは防ぐように構成される。
【0040】
一実施形態において、挙動分析は、通常使用中(例えばインターネットのウェブページを閲覧中)のウェブブラウザに適用されるサンドボックスの範囲を決定するために使用される。ユーザがブラウザアプリケーションを起動するとき、その起動はシステムモニタコンポーネントによって検出される。挙動分析プログラムが、サンドボックス環境内でブラウザが実行されるべきか、及び、サンドボックス環境で実行される場合に、どのレベルの制限をブラウザにかけるかを、決定する間、システムは、そのブラウザアプリケーションの実行を保留できる。いくつかの実施形態では、セキュリティポリシーは、サンドボックス内でアプリケーションを実行するかどうかを決定すること、及び、使用される制限の範囲を決定することを補助するためにも使用される。この例において、セキュリティポリシーが照合され、ブラウザの動作履歴に対して挙動分析が実行される。挙動分析は、どのプラグインがブラウザ起動に対して自動ロードされるように構成されているか、及び、そのプラグインが信頼できるかを検査することを含む。この例において、セキュリティポリシー及び挙動分析の両方が、起動に際してブラウザが標準実行環境内で実行され得ることを決定する。
【0041】
当該実施例を続けると、システムはブラウザアプリケーションの起動を続行する。ブラウザが起動している間、システムモニタコンポーネントは、ブラウザアプリケーションからの全ての入力及び出力を傍受(インターセプト)できる。ブラウザの入力及び出力は、ブラウザの実行環境(又はブラウザのいずれかのコンポーネント)が変更される(例えばホストシステムの他のプロセス又はリソースを保護するためにサンドボックス実行環境に移動させる)べきかどうかを、動的に評価するために、挙動分析モジュールに与えられる。
【0042】
この例において、ユーザは、ブラウザにプラグインコンポーネントをダウンロードするよう通告するウェブサイトに進む。システムモニタは、プラグインダウンロードを傍受(インターセプト)して、挙動分析モジュールのためにプラグインコンポーネントの情報を収集する。挙動分析モジュールは、プラグインコンポーネント実行のために、このプラグインコンポーネントをサンドボックス環境内に移動するべきかどうかを決定するために、前記収集されたプラグインコンポーネントに関する情報を評価する。一実施形態において、挙動分析モジュールは、プラグインが潜在的に悪意のあるものかどうかを決定するために、プラグインコンポーネントの署名を、中央の信頼されたソースのデータベースに照合する。例えば、挙動分析モジュールは、プラグインコンポーネントに関連付けられたユニフォームリソースロケータ(Uniform Resource Locator、URL)を、例えば、TrustedSource(登録商標)インターネット評判システム(Internet reputation system)(McAfee(登録商標)、Santa Clara California)などのオンライン評判システムに照合できる。
【0043】
この例において、挙動分析モジュールは、ブラウザによってダウンロードされたプラグインが、本質的に信頼できないソースから来たものである、と決定する。そうすると、プラグインは、更なる分析のために、サンドボックス実行環境にリダイレクトされる。プラグインがダウンロードされると、挙動分析モジュールは、サンドボックス環境内で適用する制限の範囲を決定するために、追加的分析を実行できる。例えば、挙動分析モジュールは、プラグインが有効な且つ署名されたセキュリティ証明書を持っているかどうか、を調査する。この例において、プラグインはセキュリティ証明書を持っておらず正式に署名もされていない。そうすると、このプラグインは完全にサンドボックス環境内で実行されるので、システムは、分析のために、その全ての動作をモニタする。その動作の間、プラグインがディスク入力および出力を試みた場合、それはシステムモニタにより傍受され、そして保留される。プラグインの実行中に、別のプロセスがディスクに対する入力又は出力(I/O)を試みると、追加的I/Oのソースが決定され、そのI/Oが許可される(それはサンドボックス実行環境の外側のアプリケーションからのものだからである)。
【0044】
プラグインの実行が完了するとき、システムモニタは、実行の終了を記録して、ブラウザアプリケーションに関連付けられたモニタレベルを下げる。実行中にプラグインコンポーネントにより行われる動作は、システムから消去されるか、或いは、他のプロセス若しくはリソースを更新することを選択的に許可される。例えば、プラグインコンポーネントがURLをブックマークすることを試みた場合、システムはブラウザのブックマークを、プラグインコンポーネントによって生成された情報で更新することを許可するだろう。システムモニタは、また、プラグインによって実行された動作を、将来的利用のために、記録できる。例えば、プラグインコンポーネントが潜在的に悪意のある動作を何ら企てなかった場合には、このことが、ローカルスレッドデータベースに記録されるか、或いは、将来的利用のために中央オンライン評価システムに伝送される。
【0045】
いくつかの実施例では、ゲートウェイシステムが、入ってくる実行可能アプリケーションを傍受及び評価するために使用される。ゲートウェイシステムの例では、ゲートウェイシステムは、複数のシステムで再使用されるプラグインコンポーネント又はその他のアプレットに関する知識ベースを構築する補助のために、各クライアント(エンドユーザシステム)により収集された挙動分析情報を使用できる。
定義
【0046】
以下の定義は例示として与えられており、制限として解釈されることを意図していない。当業者は、この明細書の文脈を読んだときに、以下に定義されるいくつかの用語が追加的意味を含むものと理解するだろう。
【0047】
実行可能アプリケーション以下の明細書において、実行可能アプリケーションは、任意の、コンパイルされたバイナリアプリケーション(例えば、.executableアプリケーション又はMicrosoft windows(登録商標)環境におけるダイナミックリンクライブラリ)、ブラウザプラグインアプリケーション、ブラウザ又はアプリケーションスクリプト(例えば、Javascript(登録商標)、又は、Visual Basic(登録商標)スクリプト)、オペレーティングシステムスクリプト(例えば、Microsoft windows(登録商標)環境におけるバッチファイル(.bat file)、又は、Unix(登録商標)環境におけるC shell(シーシェル、csh)スクリプト)、及び、ランタイム解釈コード(run-time interpreted code)、又はアプレット(例えば、Java(登録商標)アプレット、又は、Visual Basic(登録商標)コントロール、.Netコード)を含んでよい。実行可能アプリケーションは、例えばプロセス、スレッド及びファイバーなど、複数の個々の処理ユニットを包含できる。加えて、いくつかの大きい実行可能アプリケーションは、基本的な機能性を拡張又は向上させるために、ダイナミックリンクライブラリ(DLL)、スクリプト、又は、プラグインコンポーネントを使用してよい。以下の明細書において、実行可能アプリケーションは、プロセス、アプリケーション、実行可能、或いは、単にソフトウェア、などと、様々に称呼されるだろう。
【0048】
サンドボックス実行環境(サンドボックス環境)‐以下の明細書において、サンドボックス実行環境とは、標準実行環境において可能であろう何らかのリソース又は装置への直接アクセスから、実行可能アプリケーションを遮蔽する、ホストコンピューティング装置のセグメント化された部分である。サンドボックス実行環境は、実行可能アプリケーションによって企てられた動作の、種々のレベルの制限を提供するように構成される。この明細書を通じて、サンドボックス実行環境は、サンドボックス環境又はサンドボックスされた環境とも称呼されるが、いずれの使用法の変化も、用語の趣旨の変化を意図していない。
システムの実施例
【0049】
図1は、セキュリティを向上させるために実行可能アプリケーションの挙動サンドボックスを適用できるシステム100の一例を描くブロック図である。システム100は、ネットワーク105、クライアントシステム110A、110B・・・110N(集合的にクライアント110とも表記する)。ゲートウェイ装置120、広域ネットワーク(ワイドエリアネットワーク)接続125及び広域ネットワーク130からなる。いくつかの実施形態では、システム100は更にローカルサーバ140、データベース150、リモートシステム160及びリモートデータベース170を備える。一例において、ネットワーク105は、クライアントシステム110を互いに通信可能に接続し、且つ、広域ネットワーク130に通信可能に接続されるローカルエリアネットワーク(有線又は無線)である。
【0050】
一実施形態において、データベース150は、将来的利用のために、クライアントシステム110又はゲートウェイ装置120において実行された挙動分析の結果を記憶するために使用される。この例において、データベース150に記憶された情報は、ネットワーク105に接続されたシステムにより以前に使用された実行可能アプリケーションについての挙動分析を行うときに、システム(クライアントシステム110又はゲートウェイ装置120)により再利用される。いくつかの実施形態では、データベース150は、任意の既知の実行可能アプリケーションについての挙動情報を交換するために、リモートデータベース170と通信できる。リモートデータベース170は、例えば、TrustedSource(登録商標)、又は、その他の挙動特徴リソースなど、インターネット評価サービスの1つを表す。
【0051】
いくつかの実施形態では、ローカルサーバ140は、クライアントシステム110により実行される実行可能アプリケーションのソースになり得る。別の例では、リモートサーバが、クライアントシステム110により実行される実行可能アプリケーションのソースになり得る。更に別の例では、実行可能アプリケーションは、インターネット又はプライベート広域ネットワークを通じて利用可能な任意のシステム又はデータベースからダウンロードされる。
【0052】
図2は、挙動分析に基づいて実行可能アプリケーションをサンドボックスするように構成されたシステム200の一例を描くブロック図である。システム200は、標準実行環境210、サンドボックス実行環境220、挙動分析モジュール230、システムモニタリングエンジン240、及び、リソース制御インフラストラクチャー250からなる。一例において、標準実行環境は、信頼された実行可能アプリケーション(例えば、悪意ある活動の何れのスレッドにも示されていないか、又は、既知の且つ信頼されたソースから来たアプリケーション)の実行に使用される。標準実行環境210は、アプリケーションの実行をセグメント化する複数の仮想機構、又は、それと同様な方法であり得る。標準実行環境210において、リソース又はメモリ空間のセグメント化は、主としてパフォーマンスの理由から行われるものであり、ホストシステム(例えば、クライアントシステム110、ローカルサーバ140、又は、ゲートウェイ装置120)のセキュリティを向上させるために必要なのではない。
【0053】
サンドボックス実行環境220は、リソース及びメモリ空間に関して、システム200の残りの部分から完全に切り離されるように構成される。サンドボックス実行環境220は、例えば制限されたディスク及びメモリ空間など、動作するためのリソースのセットが堅固に制御された実行可能アプリケーションを提供できる。サンドボックス実行環境220は、構成によっては、ローカル及びリモートネットワークアクセスの両方を制御できる。例えば、サンドボックス実行環境220は、ローカルデータベースからの読み出し及びローカルデータベースへの書き込みのための、一定のローカルネットワークへのアクセスを許可するが、潜在的に悪意のある挙動を制限するために一切のインターネットアクセスを許可しない。一例において、サンドボックス実行環境220は、エミュレーションにより実装できる。エミュレーションを用いると、サンドボックスされたプロセスは、通常の実行プラットフォームに反してネイティブに動作するよりむしろ、解釈された領域内で動作する。別の例では、サンドボックス実行環境220は、システム仮想化の使用により実装できる。仮想化は、リソース操作の傍受及びプロセス間の通信のリダイレクトを許可する。あるいは、仮想化は、非サンドボックス環境をミラー化するために、プロセスが実行される動作環境全体を複製することに使用できる。
【0054】
挙動分析モジュール230は、実行可能アプリケーションの特徴を分析するように構成され、また、悪意ある挙動の見込みを予報するために、実行可能アプリケーションにより実行された過去又は現在の実際の動作を分析するように構成される。挙動分析モジュール230は、例えば、ソース、インストールプロセス、最後の変更、署名及び暗号による証明書の有効性など、実行可能アプリケーションについての情報を分析できる。挙動分析モジュール230は、また、例えば、リソースを開くこと、プラグインコンポーネントをロードすること、インターネットにアクセスすること、及び、設定ファイル又はデータベースの読み出し/書き込みの企てなど、実行可能アプリケーションにより行われ且つ記録された過去の動作、並びに、現在モニタ中の動作を分析できる。挙動分析システムの例についての更なる詳細は、図3に関する後述の説明を参照されたい。
【0055】
システムモニタリングエンジン240は、標準実行環境210内、及び、サンドボックス実行環境220内で行われた動作をモニタするために使用される。システムモニタリングエンジン240は、実行可能アプリケーションが潜在的に悪意ある挙動を企てている(又は企てる可能性がある)かどうかの判断用として、挙動分析モジュール230に対して、有意義な情報を供給できる。システムモニタリングエンジン240は、ディスクI/O、ネットワーク装置I/O、メモリアクセス、及び、プロセッサの使用さえも含む、任意のシステムリソースへのアクセスの企てを傍受するように構成される。いくつかの実施形態では、システムモニタリングエンジン240は、サンドボックス環境に必要な又はサンドボックス環境から依頼された全てのリソースをルーティングすることにより、サンドボックス環境を作成することを援助する。システムモニタリングエンジン240は、動作の継続を許可する前に、リソースに対するアクセス要求を傍受し、且つ、ソース又は宛先パラメータを変更する。リソースの例は、一例を挙げると、ファイル、設定データベース(主な例としては、Windows(登録商標)におけるレジストリ)、メモリ(通常はオペレーティングシステムによるプロセスにより分離されているが、より細かい細分性の分離を提供するために手動でリダイレクトされ得る)などが含まれる。
【0056】
リソース制御インフラストラクチャー250は、例えば、設定ファイルやディスクアクセスなど、システムリソースの一定の部分へのアクセスを制御するための、標準実行環境210及びサンドボックス実行環境220のための機構を具備する。リソース制御インフラストラクチャー250は、システムリソースへのアクセスのブロッキング、及び、ミラー化されたリソースに対するアクセス要求の透明なリダイレクトを提供する。例えば、リソース制御インフラストラクチャー250は、サンドボックス内で動作している実行可能アプリケーションがデータベースへアクセスできるようにするために、例えばデータベースなどのリソースをミラー化(コピー)できる。この例において、リソース制御インフラストラクチャーは、メインデータベースにアクセスするためのいずれの企ても、ミラー化されたデータベースに、透明にリダイレクトできる。そして、サンドボックス環境220は、サンドボックスされたアプリケーションの実行後に、メインデータベースをミラー化されたデータベースで更新するかどうかを決定できる。いくつかの例では、リソース制御インフラストラクチャーは仮想化の方法により構成され得る。仮想化は、それぞれ分離したハードウェアプラットフォームであるかのように動作する複数の完全にセグメント化された環境を、1つのハードウェア装置内に、作成できる。
挙動分析システムの例
【0057】
図3は、実行可能アプリケーションの挙動分析を提供するためのシステム300の一例を描くブロック図である。システム300は、複数のイベントソース302A〜302D、挙動検出フレームワーク304、イベント収集306、フィルタプラグイン310、ルール呼び出しモジュール312、ルールプラグイン314、反応取り扱いモジュール316、反応プラグイン318、及び、イベントデータストア320からなる。
【0058】
図示の通り、複数のイベントソース302A〜302Dが具備される。図3において、イベントソースは、イベントを識別すること、供給すること、及び/又は、収集することができる、任意のソースである。いくつかの例では、イベントソース302A〜302Dは、システムモニタリングエンジン240によって供給される。ユーザモードイベントソース302Aは、ユーザインタフェースをモニタし、且つ、ユーザインタフェースに対応するイベントを収集するために使用される。この場合、モニタすることは、或るインタフェースの実行をモニタすることを含む。種々の実施例において、これは、基礎的インフラストラクチャー又はオペレーティングシステムにより提供されるインラインフック、インタフェースポインタリダイレクト、及び/又は、コールバックを用いて実行される。
【0059】
また、ファイルシステムフィルタ302Bは、ファイルシステムに対応するイベントを収集するために使用される。更に、ネットワークフィルタ302Cは、ネットワークに関連するイベントを収集するために使用される。なお、どのようなイベントソースがユーザの要望により使用されてもよいし、或いは、構造化したセキュリティポリシーに従い構成されてもよいことに留意されたい。例えば、ログプレーバックインタフェース302Dは、プレーバック機構、又は、ユーザがモニタ対象に選択したその他拡張型ソースに関するイベントをモニタするために使用される。これにより、ユーザは、任意のイベントソースを選択し、プラグインできる。
【0060】
更に、図に示す通り、イベントソース302A〜302Dは、複数の処理モジュールからなる挙動検出フレームワーク304及びイベントデータストア320と通信している。更に。挙動コアコンテンツモジュール308は、挙動検出フレームワーク304の機能で作動できる複数のプラグイン310,314及び318を含んで構成される。
【0061】
図3において、プラグインは、特定種類の活動への参加の登録をする実行可能なコンポーネントを指す。例えば、プラグインは、ファイル生成イベントが発行されたときの呼び出しのために、挙動検出フレームワーク304に登録する。プラグイン310,314及び318は、種々のモジュールにおける処理に積極的に参加するために使用される。種々の実施形態において、プラグインは、データを有用な形式に処理する、データを遮る及びフィルタする、ノイズをフィルタする、及び、イベントフォーマットを標準化されたフォーマット又はユーザ定義されたフォーマットに変更することなどに使用されてよい。
【0062】
動作において、イベントは、イベントソース302A〜302Dにより供給され、イベント収集処理306の一環として収集される。上述の通り、イベントソースは、どのようなイベントソースからなっていてもよく、且つ、ユーザ(例えば消費者)によって供給されてよい。一例において、イベントの処理は、消費者プラグインであるイベントハンドラにより実行されてよい。この場合、イベント処理は、任意の特定イベントをデータストア320と照合することを含む。
【0063】
オプションとして、イベント標準化は、収集されたイベントについて実行されてもよい。図3において、イベント標準化は、イベントソースに密接に結び付けられた未加工の形式から、汎用又は標準化されたフォーマットに変換することを指す。言い換えれば、イベント標準化は、イベントソースを感知しない形式の傍受された未加工のイベントを再発行することからなる。いくつかの場合、未加工のイベントは、システムモニタ(例えばイベントソースなど)により発行されてよい。例えば、ファイルシステムフィルタは、傍受されたファイル操作に応じて未加工のイベントを発行する。
【0064】
一例において、プラグイン(未加工のイベントハンドラ)は、イベントを標準化して、標準化された結果を再発行する。例えば、イベントハンドラプラグインは、データストア320内の、且つ、或るアクター及び或るイベントのターゲットのための、エントリを検索する。それらアイテムのためのデータストアエントリが存在しない場合、そのエントリが作成される。
【0065】
例えばフラグ及びパス名などのイベントの詳細は、イベントソースに関わらず、カテゴリ内の全てのイベントのために使われる標準化された形式に変換される。この変換は、特定のカテゴリのための複数のイベントソースに対して実装されてよい。例えば、ファイル操作は、カーネルモードファイルシステムフィルタ302B及びユーザモードインタフェースモニタ302Aによって傍受される。
【0066】
それらイベントソースからの未加工のイベントは、必ずしも同じ構造を持たないだろう。イベント標準化は、それらイベントソースの詳細について感知しないことをユーザに許容する標準化されたイベントが発行されるよう、これら違いを解決するために実装される。こうして、挙動コアコンテンツモジュール308内に含まれるプラグインは、イベント標準化を実行するために使用される。
【0067】
オプションとして、イベント標準化は、例えば、アクターと或るイベントのターゲットとの間など、データストアアイテム(data store items)の間の関係の関連付け(association)を含む。一例として、この関連付けは、累積的であってよく、共通の履歴を共有する複数のデータストアアイテムの間で関連付けを形成する。共通の履歴を共有する複数のデータストアアイテムの間で関連付けに関する更なる情報は、「不所望な活動を検出するためにイベントの関係を含むデータ構造を利用するためのシステム、方法、及びコンピュータプログラム製品」と題され、2008年7月22日に出願された米国特許出願番号第12/177601号に記載されており、当該出願の全ての記載内容を援用する。
【0068】
照合されたイベントを分析するルールは、ルール呼び出しモジュール312の一環として、標準化されたイベントデータを検査する。ルール呼び出しモジュール312は、受信されたイベントにより発動されてよい。オプションとして、ルールの評価は、不所望な、又は、その他の予め決められた活動の検出を駆動してよい。
【0069】
一例において、これらルールは、ユーザに選択されたルールプラグイン314であってよく、前記ルール評価は、イベントハンドラにより初期化される。別の例では、ルールは、また、その他の関連付けられており且つ従属するルールを、呼び出す。また、ルールは、照合されたイベント情報のデータストア320にアクセスできる。
【0070】
ルールは、照合されたデータを評価するために、及び、検出が行われたかどうかを決定するために使用される、任意のルールからなる。これらの検出は、マルウェア活動、不適切なデータの伝送(例えばデータ漏洩防止のようなものなど)、或いは、その他の着目された活動を含んでよい。オプションとして、ルールは、ユーザ(例えば消費者など)により生成されてよい。更に、ルールは、イベントの識別に使用される1以上のイベントソースとは独立していてよい。
【0071】
述べた通り、ルール評価は、プラグインとして登録されるハンドラによって実行される。ルールは、挙動検出フレームワーク304を通じて呼び出される。オプションとして、最上位のルールは、イベントハンドラ内から呼び出される。今度は、それら最上位のルールが、照合されたデータの分析により決定される下位ルールを、呼び出す。これら下位ルールは、順番に、別の下位ルールなどを呼び出す。
【0072】
種々の実施形態において、ルール評価プラグイン314は、分析を直接実行するか、又は、解釈された言語で記述された下位ロジックを呼び出してよい。この使用法は、ルール著述者によってより簡単に使用される専用の解釈された言語スクリプトで記述されるルールロジックの大きさを考慮にいれて、登録されたプラグインをシムとして機能させる。そのプラグインのタスクは、適宜の下位ルールスクリプトの言語インタプリタを読み出し、且つ、結果を挙動検出フレームワーク304と通信することがタスクである。これにより、ルールセット間でのルールロジックの再利用を容易にする柔軟且つ動的なルールロジックを、生成できる。
【0073】
また、図3には示されていないが、検出ハンドラも、特定種類の検出が発行されたときに呼び出すためのプラグインとして登録さてよい。検出ハンドラの登録をサポートすることにより、機能横断的に情報を共有することが可能となる。
【0074】
例えば、例えば精査されていないウェブサイトからのブラウザプラグインのダウンロードなど、高危険度の活動の検出は、ブラウザスクリプトスキャナの対象となり得る。スクリプトスキャナは、これらプラグインを、より高いレベルのスキャニングに従属させてよい。また、ホスト侵入防止製品は、また、ダウンロードに関心を示し、且つ、スクリプトを隔離(検査)に従属させる。更に、スクリプトがダウンロードされたウェブサイトが精査されていないと決定することは、ウェブサイト分析ツールによる検出の発行経由でアナウンスされてよい。
【0075】
ルールに基づく予め決められた活動の検出に応じて、反応取り扱いモジュール316の一環として反応が行われる。一例として、これら反応の取り扱いは、反応プラグイン318により供給される。種々の実施形態において、反応は、プロセスを終了すること、動作をブロックすること、及び/又は、選択的スキャン動作を実行することなどを含む。選択的スキャン動作に関する更なる情報は、「システムに適用されるセキュリティレベルを動的に調整するためのシステム、方法、及びコンピュータプログラム製品」と題され、2008年4月29日に出願された米国特許出願番号第12/111851号に記載されており、当該出願の全ての記載内容を援用する。
【0076】
反応ハンドラは、特定種類の反応が要求されたときに呼び出されるためのプラグインとして登録されてよい。そして、これら反応ハンドラは反応を実行する。このことは、挙動検出フレームワーク304のユーザ間での反応種類の再利用を可能とし、例えば検出に応じたシステムモニタレベルの変更など機能横断的アプリケーションをサポートする。
【0077】
このことは、また、端末ノードへのポリシーのアプリケーションが、反応が行われたかどうかを管理することを可能にする。例えば、プロセスを終了するために要求された反応は、まず、反応ハンドラにより、ローカルで適用されたポリシーと査証される。ポリシーは、反応が記録されるべきであるが、その端末ノードに対して実際に行われるべきでないことを示すだろう。その反応は新たなアンチマルウェアコンテンツが最初に配置されたときに実行されるものである。
【0078】
機能領域内での検出は、挙動検出フレームワーク304内のイベントとして発行される。このように、ユーザ(例えば消費者など)は、挙動検出フレームワーク304のどんなインパクトも制限及び動的に調整することができる。かかるシステムインパクトは、CPU使用、メモリ消費、I/O帯域幅などを含む。更に、1つの機能領域内からの検出は、他の機能領域と共有されるか、又は、全体分析のためにセントラル領域内で評価される。
【0079】
イベントの処理、照合されたデータの記憶、及び、データの分析は、全て、システムリソースを使用する。挙動検出フレームワーク304を使用して、ユーザは、かかるリソースの使用の上限を設定でき、且つ、照合されたデータの挙動分析に応じてリソースの使用を動的に制御できる。リソースの使用を制御するための技術の1つは、システムモニタの調整及び活動のスキャンによるものである。システムモニタの調整及び活動のスキャンによるリソースの使用を制御するための技術に関する更なる情報は、「システムに適用されるセキュリティレベルを動的に調整するためのシステム、方法、及びコンピュータプログラム製品」と題され、2008年4月29日に出願された米国特許出願番号第12/111851号に記載されており、当該出願の全ての記載内容を援用する。
【0080】
一実施形態において、活動は、システムリソース全体の使用を制御するために仮想機械内で調整される。この内部的仮想機械調整は、仮想機械内で動作する挙動検出フレームワーク304のインスタンスのリソース使用を制御するために適用される。
【0081】
更に、ユーザは、分析プロセスの全てのポイントに参加するためにプラグインしてよい。また、ユーザ機能性は、インストールされ、移動され、アップグレードされ、そして、それらの使用は、インフラストラクチャーの変更なしに、変更される。ユーザは、また、今後の参照及び操作のために、イベントとデータストア320内の関連付けられたデータとを照合する。更に、ユーザは、イベントソースの詳細を感知しない挙動分析ルールを記述してよい。
【0082】
このように、挙動検出フレームワーク304の使用は、完全に、ユーザによって駆動される。例えば、ユーザは、イベント生成部として、イベントフィルタ、イベントコンシューマ、ルール評価部、検出ハンドラ及び反応供給部をプラグインする。
【0083】
このプラグインモデルは、下位コンポーネントとそれらの検出結果とを共有する挙動検出フレームワーク304のコンシューマの構築を容易にする。プラグインは、どんな実行可能コンポーネントを含んでいてもよく、また、それらの分析を直接実行するか、又は、解釈された言語で記述された下位ロジックを読み出してよい。例えば、解釈されたルール言語は、ルール評価プラグインによって呼び出される。
【0084】
一例において、プラグインサポートは、全ての種類のプラグインに対して対照的である。この場合、全てのプラグインは、挙動検出インフラストラクチャー内の全てのクライアントに可視の活動がアクションを発行することにより駆動されることを可能とし、特定種類のアクションが発行されたときにクライアントが呼び出しのためのコールバックを登録することを可能とし、クライアントのコールバックが挙動検出フレームワーク304によって呼び出されることを可能とし、且つ、クライアントのコールバックがアクションを発行することを可能とする。
【0085】
一例において、挙動検出フレームワーク304の配置は、ホスト環境(例えばクライアントシステム110)によってサポートされた全てのシステムモニタ技術を使うことにより、開始する。この場合、ホスト環境は、セキリュティソフトウェアのホストを参照する。例えば、ホストは、オペレーティングシステム又はウェブブラウザなどからなる。
【0086】
ホスト環境は、挙動検出フレームワーク304に含まれるセキリュティソフトウェアをロードして、少なくとも基本的な能力を提供する。いくつかの基礎的な機能性は、ファイルシステムをモニタすること、ネットワークをモニタすること、データベース構成の更新をモニタすること(例えば、レジストリ操作をモニタすることなど)を含んでよい。
【0087】
オプションとして、このシステムをモニタすることのイベントハンドラは、イベントフィルタ及びイベント生成部として機能してもよい。これらのハンドラは、システムモニタの通知を精査し、対象でない通知をフィルタするために使用される。ハンドラは、残された通知から、挙動検出フレームワーク304についてのイベントを発行する。
【0088】
一例において、イベントは同期的に発行されてよく、最初の動作はイベントが発行され且つサービスされる間は保持される。別の例では、イベントは、非同期的に発行されてよく、最初の動作はイベントが発行され且つサービスされる間に進行させる。更に別の例では、イベントは、異なるコンテキストで、特に、種々のコンテキスト内で実行している動作をモニタするセントラルコンテキストで発行されてよい。例えば、システムモニタリングエンジン240は、システム200などのホストシステム内に構成された各実行環境内で実行している動作をモニタするためのセントラルコンテキストモニタシステムとして構成されてよい。このコンセプトは、クライアントシステム110のそれぞれで実行している動作をモニタするためのセントラルコンテキストモニタシステムとして構成されるローカルサーバ140に対して、組織的レベルで適用される。
【0089】
一例において、コンテキストは、或るイベントが挙動検出フレームワーク304内でサービスされる所を定義する。1つの例として、そのコンテキストに登録されたイベントユーザのみが、そのイベントを通知される。例えば、動作を作成するファイルは、特定プロセスのコンテキスト内(例えば、サンドボックス実行環境220内)で解釈される。そのコンテキストのためにイベントが発行された場合、そのプロセスのコンテキストに登録されたイベントユーザのみが、そのイベントを見るだろう。イベントが広範なシステム/全体にわたるコンテキストで発行された場合、その広範なシステム/広範なコンテキストに登録されたイベントハンドラがそのイベントを見るだろう。
【0090】
挙動検出フレームワーク304は、種々のコンテキストを含む。例えば、一例としては、コンテキストは、ユーザモードの動作が特定のプロセスに特有であるローカルコンテキストを含む。この場合は、対象のプロセス毎に1つのローカルコンテキストがある。
【0091】
別の例では、コンテキストは、カーネルモードコンテキストを含む。この場合は、カーネルモードの動作は全てのプロセスを扱う。更に別の例では、コンテキストは、システム全体にわたるコンテキストを含む。システム全体のコンテキストは、ローカル及びカーネルモードコンテキストから該システム全体のコンテキストに発行されたイベントのための集合体である。この場合は、システム毎に1つのシステム全体のコンテキストがある。更に別の例では、コンテキストは、ネットワーク全体のコンテキストを含む。ネットワーク全体のコンテキストは、システム全体のコンテキストからネットワーク全体のコンテキストに発行されたイベントのための集合体である。
【0092】
オプションとして、発行の階層が使用されてよい。この場合、ローカル及びカーネルモードコンテキスト内で閲覧できるイベントの全てが、システム全体のコンテキストに発行されるわけではなく、十分に対象となるもののみが発行される。このように、たいていのイベントは、元々の動作のコンテキスト内でサービスされる。このことは、システム全体のコンテキストへの不要なイベントの発行に関する負荷を最小化する、より効果的な挙動検出モデルを可能とする。ネットワーク全体のコンテキストへの発行は、より一層少なくなり、不要な負荷を回避する。
【0093】
一例において、この階層内のイベント伝達制御は、より多くの柔軟性を得るために、イベントハンドラによって、又は、ルールクエリ(問い合わせ)により、直接制御される。イベントハンドラが使用される場合、反応ハンドラが、異なるレベルのコンテキスト階層へのイベントの再発行を実行する。
【0094】
上述の通り、イベントコンシューマは、当該コンシューマが登録されているコンテキストにおいて特定種類のイベントが発行されたときに通知を受信するために登録される。通知は、それらの抽出条件に合致しているイベントの発行に呼び出される。オプションとして、イベントコンシューマは、イベントに含まれるデータを精査してよい。コンシューマは、また、データストア320内のエントリを検索、生成及び変更してよい。コンシューマは、順次、それら自身のイベントを発行し、ルールを呼び出し、検出を発行し、且つ、反応を生成する。
【0095】
一例として、起源動作の傍受のハンドラによって発行されたイベントのコンシューマは、ルール評価部によって抽出される消費を容易にするために、それらイベントを標準化されたイベントとして再発行する。この使用において、発行された初期イベントは、未加工のイベントとして参照され、イベントコンシューマによって閲覧されるのみである。イベントコンシューマの機能は、これらイベントを一般的な形式に抽出すること、及び、未加工のイベントを標準化されたイベントとして再発行することである。例えばアクター及びターゲットのためのエントリなど、データストア320内の関連するエントリの位置付けは、標準化プロセスに含まれる。関連するエントリは、また、傍受された動作の処理又はスレッドを発起することのためのデータストアエントリ、及び、例えばファイルのためなど、動作の対象のためのデータストアエントリを含む。
【0096】
なお、データストア320は、イベントデータを照合するために使用される、どのようなリポジトリによって構成されてもよい。更に、アイテムは、データストア320内において、どのようなユーザの目的のために作成されてもよく、受信されたイベント用のアクター及びターゲットのためのアイテムを含む。例えば、ファイルの傍受に応じて、ファイルを開くプロセスのため、及び、現在のファイルのためにオープンエントリが生成される。
【0097】
種々の実施形態において、データストア320は、アイテムを追加すること、検索すること、及び/又は、更新することをサポートしてよい。データストア320は、また、例えば、親子間、アクターとターゲット間、及び、共通の履歴を共有するオブジェクト間など、アイテム間の関連付けを形成することをサポートする。データストア320は、イベントハンドラ、イベント発行部、検出ハンドラ、ルール評価部、及び、反応ハンドラなどにより使用される。
【0098】
上述した挙動分析システムの一例に関する更なる情報は、「複数の処理階層レベルにわたりイベントを伝播するための挙動分析システム、方法、及びコンピュータプログラム製品」と題され、2008年9月2日に出願された米国特許出願番号第12/202952号に記載されており、当該出願の全ての記載内容を援用する。
挙動サンドボックスの方法の例
【0099】
以下の実施形態は、悪意ある実行可能アプリケーションからm個々のコンピューティング装置又はネットワーク全体を動的に保護するために、どのように挙動サンドボックスが使用されるかを説明する。
【0100】
図4は、実行可能アプリケーションの挙動サンドボックスのための方法の一例を描くスイムレーンを持つフローチャートである。方法400は、ステップ402における実行可能アプリケーションを受信する動作、ステップ404における挙動分析、ステップ406における実行環境を決定すること、ステップ408における実行可能アプリケーションをサンドボックスすることを決定すること、ステップ410における実行可能アプリケーションを実行すること、ステップ412における挙動分析、ステップ414における実行環境が変更されるべきか決定すること、ステップ416における実行可能アプリケーションのサンドボックスを決定すること、ステップ420における実行可能アプリケーションを実行すること、ステップ422における挙動分析、ステップ424における実行環境が変更されるべきか決定すること、ステップ426におけるサンドボックス環境から実行可能アプリケーションを移動するかどうかを決定することからなる。
【0101】
この例において、方法400は、ステップ402において、システム200が実行可能アプリケーションを受信又はロードすることにより開始する。方法400はステップ404に進み、実行可能アプリケーションに対する挙動分析を挙動分析モジュール230が実行する。一例において、挙動分析モジュール230は、実行可能アプリケーションの起源に適宜のイベントを含むイベントの履歴を収集する。挙動分析モジュール230は、実行されるべき実行可能アプリケーションについての履歴を精査する。挙動分析モジュール230は、それらイベントのために、実行可能アプリケーション履歴を分析する。イベントは、例えば、インターネットからのダウンロード、信頼されたプロセスによるインストール、コードの変更、信頼されたソースからの暗号で署名された証明書、若しくは、以前に動作したときに疑わしいとみなされた又はポリシー外の活動の実行、などである。
【0102】
この例において、方法400はステップ406に進み、実行可能アプリケーションを実行するための実行環境の種類がいずれであるかを、挙動分析モジュール230が決定する。例えば、挙実行可能アプリケーションが信頼できるものと、挙動分析モジュール230が判断した場合、方法400は、その実行可能アプリケーションを標準実行環境内で起動する。実行可能アプリケーションが悪意ある活動を行う可能性をもっているものと、挙動分析モジュール230が判断した場合は、ステップ408において、方法400は、その実行可能アプリケーションを、例えばサンドボックス実行環境220など、サンドボックス実行環境内にリダイレクトする。実行可能アプリケーションがサンドボックス実行環境で実行されるべきものである場合、方法400はステップ420に進み、サンドボックス実行環境220が実行可能アプリケーションを実行する。
【0103】
実行可能アプリケーションがサンドボックス実行環境220内で実行される例において、方法400はステップ422に進み、実行可能アプリケーションが動作している間、挙動分析モジュール230が挙動分析を実行する。この例において、実行可能アプリケーションがサンドボックス実行環境220内で実行されているので、挙動分析モジュール230は、継続的且つ動的に、当該実行可能アプリケーションについての情報を更新する。方法400はステップ424に進み、実行環境を変更できるかどうかを、挙動分析モジュール230が決定する。例えば、実行可能アプリケーションの動的なモニタを鑑みて、実行可能アプリケーションがもはやシステム200にスレッドを提出しないと、挙動分析モジュール230が判断した場合、実行可能アプリケーションをサンドボックス環境220から移動できる。実行可能アプリケーションがサンドボックス環境220から移動される場合、方法400はステップ426に進み、実行可能アプリケーションをサンドボックス環境220から出して、標準実行環境210内に移動する。実行可能アプリケーションをサンドボックス環境220から移動できない場合、方法400は、ステップ426において、前記ステップ420の動作に戻り、実行可能アプリケーションを完遂するか、又は、サンドボックス環境220から移動できるまで、処理を繰り返す。
【0104】
ステップ408の動作に戻り、実行可能アプリケーションが標準実行環境210内で実行され得ると、挙動分析モジュール230が決定した場合、方法400はステップ410に進み、システム200が標準実行環境210内で実行可能アプリケーションを実行する。続いて、ステップ412において、実行可能アプリケーションが標準実行環境210内で実行されているので、挙動分析モジュール230は、その実行可能アプリケーションに対して挙動分析を実行する。該ステップ412の動作において、システム200は、どのような悪意ある(又は疑わしい)挙動の徴候についても、動的にモニタする。挙動分析モジュール230は、悪意ある動作に関するシステム200の危急を増加させるイベントを監視している。挙動分析モジュール230により監視されるイベントは、いくつかを挙げると、リソースファイル又はデータベースを開くこと、プラグインをロードすること(例えばスクリプト、及び、ライブラリ又はDLLなどのいくつかの実行可能アプリケーション)、他のプロセスによる操作、他のプロセスへの操作、ネットワークへのアクセス、インターネットへのアクセス、既知の良好サイトリスト外のインターネットサイト(例えばブラックリストに載っているサイト)へのアクセスなどである。
【0105】
ステップ414において、実行可能アプリケーションのモニタされた挙動の特徴に基づいて、実行環境が変更されるべきかどうかを挙動分析モジュール230が決定する。前記ステップ412において実行される動的挙動分析は、実行可能アプリケーション実行中に、システム200がその実行可能アプリケーション(又は実行可能アプリケーションの一部)の実行環境を変更することを可能とする。このことにより、安全であるように見えたが結局悪意あるものだと判明したアプリケーションから、システム200が自身を保護できるようになる。例えば、挙動分析モジュール230は、或るアプリケーションが既知で且つ信頼されたソースからのものであると決定し、そのアプリケーションに標準実行環境210で起動されることを許可する。しかし、その動作中に、ユーザが、そのアプリケーションに対して、未知のソースからの新たなプラグインをダウンロードするように命令するかもしれない。挙動分析モジュール230は、このようイベントを傍受するように構成されており、システム200に、実行及びより一層のモニタのために、その新たなプラグインを、サンドボックス実行環境220にリダイレクトするように命令できる。別の例では、挙動分析モジュール230は、アプリケーションの挙動履歴の分析に基づいて、そのアプリケーションが標準実行環境210内で実行され得ることを決定するだろう。しかし、実行中に、そのアプリケーションが、容認できる挙動を決定するものであるセキュリティポリシーに違反して、クライアントシステム100の構成データベースを更新しようと企てるかもしれない。この例において、挙動分析モジュール230は、いずれの更なる潜在的な危害からもシステム200を保護するために、システム200に対して、実行中のアプリケーションをサンドボックス環境220に移動するように命令できる。
【0106】
ステップ416において、挙動分析モジュール230は、実行可能アプリケーションがサンドボックス実行環境220内に移動されるべきかどうかを決定する。実行可能アプリケーションが移動されるべきである場合は、方法400はステップ420に進み、システム200はサンドボックス実行環境220内で実行可能アプリケーションの実行を続ける。実行可能アプリケーションがサンドボックス実行環境に移動されない場合は、方法400はステップ408の動作に戻り、実行可能アプリケーションが終了するまで、処理を繰り返す。
【0107】
図5は、挙動分析を用いて実行可能アプリケーションのための実行環境を形成するための方法の一例を描くスイムレーンを持つフローチャートである。方法500は、例えば、ステップ502におけるセキュリティポリシーを適用すること、ステップ510におけるサンドボックス制限の範囲を決定すること、並びに、ステップ504及び512における実行可能アプリケーションをモニタすることなど、いくつかの追加的オプションの動作を付け加えた方法400の動作群からなる。
【0108】
方法500はステップ502の動作を備えており、ここにおいて、挙動分析モジュール230は、セキュリティポリシーを適用する。一例において、セキュリティポリシーは、例えばローカルサーバ140などのセントラルサーバから受信できる。別の例では、セキュリティポリシーは、クライアントシステム110毎に局所的であり得る。いくつかの例では、セキュリティポリシーはユーザによって制御される。別の例では、セキュリティポリシーは、ネットワーク又はシステム管理者により組織的レベルで制御される。セキュリティポリシーは、制限された動作のリスト、ブラックリストに載ったサイト又はデフォルトでサンドボックス環境内で実行されるべきアプリケーションのリスト、サンドボックスすることへ特定の除外、ユーザ又はグループレベル制限、ユーザ又はグループレベル許可、並びに、ユーザ又はグループレベル例外、を含む。
【0109】
図5に示す通り、セキュリティポリシーは、前記ステップ404の動作における挙動分析モジュール230のいずれかの挙動分析の実行に先立って、適用される。セキュリティポリシーを適用することにより、信頼できるものとして既知の、又は、潜在的に悪意のあるものとして既知の、何れの実行可能アプリケーションをも識別し、それ以上の挙動分析が必要となることを防止できる。セキュリティポリシーは、また、挙動分析モジュール230を構成するために使用できる。別の例では、セキュリティポリシーは、方法500の別の時点で適用さてよく、或いは、挙動分析の実行において挙動分析モジュール230によってのみ使用される。
【0110】
方法500は、また、ステップ510の動作を備えており、ここにおいて、挙動分析モジュール230は、サンドボックス実行環境220に適用するための制限の範囲を決定する。一例において、挙動分析モジュール230は、実行可能アプリケーションがサンドボックス実行環境220内で実行されたときに、実行可能アプリケーションについてなされるべき制御を、どのように制限するかを決定するために、実行可能アプリケーションについての情報を使用できる。いくつかの実施例において、挙動分析モジュール230は、また、サンドボックス環境における制限を形成するために、セキュリティポリシーから得た情報を使用できる。制限の範囲は、システムリソースアクセス、ネットワークリソースへのアクセス、インターネットアクセス、信頼されたソースにより署名されたプラグイン、ネットワークアドレス幅、ブラックリストに掲載されたサイト、通信プロトコル(許可又は制限)、他のプロセスとの通信、又は、サンドボックス実行環境外のプロセスとの通信を含み得る。挙動分析モジュール230がサンドボックス環境を選択的に構成できることにより、セキュリティの最低限のレベルを維持しつつ、実行可能アプリケーションが行うことを許可される制御のレベルをより細かくでき、サンドボックスするプロセスの機能性を高めることができる。サンドボックス環境を選択的に構成することにより、また、実行可能アプリケーションが必要な動作を実行することを可能にしつつ、サンドボックス環境内でより綿密に実行可能アプリケーションがモニタされることを一層許容することにより、セキュリティを高めることができる。
【0111】
方法500は、また、ステップ504及び510の動作を備えており、ここにおいて、挙動分析モジュール230は、実行可能アプリケーションにより行われる動作の変更可能な範囲をモニタする。ステップ504の動作において、方法500は、標準実行環境210内で実行される実行可能アプリケーションをモニタする。一例において、ステップ504においてシステムモニタリングエンジン240によって収集された情報をモニタすることは、実行可能アプリケーションがサンドボックス環境220に移動されるべきかを決定するために、挙動分析モジュール230により使用される。上述の通り、実行可能アプリケーションは、当該アプリケーションが始動された後に検出された、予期していなかった潜在的に悪意のある挙動のために、サンドボックス環境に移動されることがある。ステップ512の動作では、サンドボックス実行環境220内で実行される実行可能アプリケーションをモニタする。一例において、ステップ512においてシステムモニタリングエンジン240によって収集された情報をモニタすることは、実行可能アプリケーションがサンドボックス環境220の外に移動されてもよいかどうかを決定するために、挙動分析モジュール230により使用される。サンドボックス環境220内での実行可能アプリケーションの実行をモニタすることは、また、アプリケーションによって生成された情報がサンドボックス環境220の外部に伝達され得るかどうかを決定するために使用できる。また、モニタされた情報は、サンドボックス環境220に適用される制限の範囲を、動的に増加又は減少するために使用される。
【0112】
図6は、一実施例に従う、前記実行可能アプリケーションの挙動分析におけるオプションの動作を描くフローチャートである。方法404は、ステップ602におけるセキュリティポリシーを適用すること、ステップ604における実行可能アプリケーションの特徴を分析すること、ステップ606における実行可能アプリケーションによってアクセスされるリソースを分析すること、からなる。この例において、挙動分析モジュール230は、例えば方法400におけるステップ422の動作など、実行環境内での実行可能アプリケーションの実行に先立って、及び、実行可能アプリケーションの実行しているときのいずれにおいても、ステップ602、604及び606の動作を実行するように構成されている。
【0113】
図6に示す通り、方法404は、挙動分析モジュール230がセキュリティポリシーを適用することから開始する。一例において、セキュリティポリシーを適用することは、挙動分析モジュール230がどのように挙動分析を行うかを構成する。セキュリティポリシーは、挙動分析モジュール230が、例えば或るアプリケーションの起源或いは署名されていないセキュリティ証明書にどのように反応するかを制御できる。セキュリティポリシーは、また、ブラクリストに載ったURL又はアプリケーションのソースなどとしても使用できる。
【0114】
方法404はステップ604に進み、挙動分析モジュール230が実行可能アプリケーションについての可能な特徴全てを分析する。特徴は、起源(例えばURL又はホストシステムの情報)、リソース要件、過去動作、信頼レベル(例えばオンライン評価データベースにアクセスすることにより決定される)、又は、セキュリティ証明書などを含む。挙動分析モジュール230は、実行可能アプリケーションが悪意ある活動のスレッドを提起しそうかどうかを決定するために、これら特徴を使用できる。
【0115】
ステップ606において挙動分析モジュール230が実行可能アプリケーションによってアクセスされるリソースを分析し、方法404は終了する。一例において、挙動分析モジュール230は、どのリソースにアプリケーションがアクセスしようとしたかを決定するために、アプリケーションに解釈可能なランタイムのコードを分析する。別の例では、挙動分析モジュール230は、どのリソースにアプリケーションがアクセスしようとしたかを決定するために、アプリケーションによって実行された過去の動作を詳述する情報を信頼するだろう。
【0116】
図7は、一実施例に従う、実行可能アプリケーションのための実行環境決定におけるオプションの動作を描くフローチャートである。実行環境を決定する方法406は、ステップ702におけるセキュリティポリシーを適用すること、ステップ704におけるセキュリティ証明書を分析すること、ステップ706におけるセキュリティデータベースに反するアプリケーションの署名を調べること、ステップ708におけるサンドボックス環境において実行されるべき実行可能アプリケーションの部分を決定すること、ステップ710におけるサンドボックス環境のための制限の範囲を決定すること、及び、ステップ712におけるサンドボックス環境内で実行可能アプリケーションにより実行される動作のための処置を決定すること、といったオプションの動作からなる。上述の通り、セキュリティポリシーは、方法400や方法500など挙動サンドボックスのための方法内の種々の時点で適用できる。この例において、セキュリティポリシーは、実行可能アプリケーションのための実行環境を決定するとき、挙動分析モジュール230により、適用され得る。
【0117】
この例において、方法406はステップ704の動作に進み、挙動分析モジュール230が実行可能アプリケーションのセキュリティ証明書を分析する。一例において、ダウンロードされたアプリケーションは、例えば、セキュア・ソケット・レイヤー(Secure Sockets Layer、SSL)、又は、トランスポート・レイヤー・セキュリティー(Transport Layer Security、TLS)などセキュアな通信チャンネルから受信される。典型的には、SSL又はTLSは、承認機関によって発行された証明書を使用し、検証され得るデジタル署名を含む。実行可能アプリケーションのダウンロードに使用された接続が、有効なデジタル署名を持つ証明書で保証された場合、より一層、アプリケーションが信頼し得るソースからきたものと、見なし得るだろう。挙動分析モジュール230は、実行可能アプリケーションがサンドボックス環境内で実行されるべきかどうかを決定することにおいて、セキュリティの種類及びセキュリティ証明書の有効性を含み得る。
【0118】
方法406はステップ706に進み、挙動分析モジュール230がセキュリティデータベースに反するアプリケーションの署名(又は、その他の証明する特徴)を調べる。一例において、実行可能アプリケーション毎の署名は、ハッシングアルゴリズムを通じて生成され、データベース140などのデータベースに記憶される。或るアプリケーションの信憑性についての情報は、データベース内に固有の署名とともにカタログ化される。脅威データベースは、例えばリモートデータベース170など、ローカルに又は中心的に維持され得る。中央に配置された脅威データベースは、潜在的に悪意あるデータを収集でき、また、同様に、複数の場所から安全として知られるアプリケーションを収集でき、従って、潜在的な既知の脅威についてより広い視野を提供できる。
【0119】
方法406はステップ708に進み、挙動分析モジュール230がサンドボックス環境内で実行すべき実行可能アプリケーションの部分を決定する。上述した通り、実行可能アプリケーションは、専ら、多数のスレッドの実行として実行されるか、又は、いくぶん独立に実行される複数の異なるコンポーネントからなる。一例において、システム200は、アプリケーションの残りが標準環境内で実行されることを可能にしつつ、サンドボックス環境内の実行可能アプリケーションの個別のスレッドを、或いは、個別のファイバーさえも、実行できる。例えば、挙動分析モジュール230が、或るアプリケーションの一定のスレッドがメモリ破損の履歴を持っていると決定した場合、潜在的に悪意の或るスレッドは、実行のために、サンドボックス環境220内に移動され得る。サンドボックス環境220は、何らかのメモリ破損がメモリシステムの残りに不利に影響を与えないように、保護されたメモリ空間を使用できる。
【0120】
方法406はステップ710に進み、挙動分析モジュール230がサンドボックス環境のための制限の範囲を決定する。上述の通り、サンドボックス環境220のための制限の範囲は、どのレベルのI/Oをサンドボックス内に許可するか、サンドボックスされたアプリケーションにサンドボックス環境220の外部と通信することを許可するかどうか、サンドボックス外部のプロセスにサンドボックス環境220内部で実行しているプロセスを操作することを許可するかどうか、及び、インターネットアクセスにサンドボックス環境220内部で処理することを許可するかどうか、などを含む。
【0121】
ステップ712において、挙動分析モジュール230がサンドボックス環境220内で実行される動作のための処置を決定して、方法406は終わる。一例において、サンドボックス実行環境220内のプロセスにより実行される動作は、例えばシステムモニタリングエンジン240によって傍受され得る。傍受されると、動作は完全にブロック(報知無しで、又は、ユーザにエラーを送信するとともに、又は、アプリケーションを呼び出して)されるか、予定されたリソースへのアクセスを許可される(例えば、データベース内のデータ、メモリ位置、ネットワークデバイス)か、或いは、サンドボックス環境によって制御されたプライベート位置にリダイレクトされる。この例において、挙動分析モジュール230は、実行可能アプリケーションの挙動特徴に基づいて、サンドボックス環境220がどのように構成されるかを決定できる。例えば、サンドボックス環境220が全ての動作を制限されたプライベート空間にリダイレクトするように構成されている場合、実行可能アプリケーションは、メインシステムからのミラー化されたデータと相互作用することを許可されるのみである。サンドボックスされたアプリケーションの終了にあたり、プライベートの(ミラー化された)データは、システムから消去することか、又は、サンドボックスされたアプリケーションにより実行された動作でメインシステムを更新することのどちらによっても、処置される。なお、メインシステムを更新することは、実行可能アプリケーションがいずれのセキュリティポリシーを破らない、又は、サンドボックス環境220内での動作中に何ら悪意のある動作を実行しない場合に、許容されるだけかもしれない。いくつかの例では、サンドボックス環境の外部で実行されるプロセスは、三度ボックされた実行可能アプリケーションによって生成された情報を得るために、プライベートリソースにアクセスできてもよい。
【0122】
図8は、挙動分析を用いて実行可能アプリケーションを分析する方法800の一例を描くフローチャートである。方法800は、以下の動作からなる;ステップ802における実行可能アプリケーションの起動を検出すること、ステップ804における実行可能アプリケーションの挙動分析を実行すること、ステップ806における実行可能アプリケーションをサンドボックス実行環境内で動作させるかどうかを決定すること、ステップ808における標準実行環境内で実行可能アプリケーションを開始すること、ステップ810における動作中の実行可能アプリケーションに対して挙動分析を実行すること、ステップ812における実行可能アプリケーションがサンドボックス実行環境内に移動されるべきかどうかを決定すること、ステップ814における実行可能アプリケーションがまだ動作中かどうかを決定すること、ステップ822におけるサンドボックス実行環境を構成すること、ステップ824におけるサンドボックス実行環境内で実行可能アプリケーションを開始すること、ステップ826における動作中の実行可能アプリケーションに対して挙動分析を実行すること、及び、ステップ830におけサンドボックス実行環境内での実行可能アプリケーションの動作を続行するかどうかを決定すること。いくつかの実施例では、方法800は、また、ステップ820におけるサンドボックスする範囲を決定すること、及び、ステップ832におけるサンドボックスされたデータ及び動作を処置することを含み得る。
【0123】
一例において、ステップ802においてシステムモニタリングエンジン240が実行可能アプリケーションの起動を検出して、方法800は開始する。この例において、システムモニタリングエンジン240は、システム200に、実行可能アプリケーションが悪意あるものかどうかを決定するために分析されるまで、その実行可能アプリケーションの実行を差し控えるように指示できる。方法800はステップ804に進み、挙動分析モジュール230が実行可能アプリケーションに対する挙動分析を実行する。挙動分析モジュール230は、悪意ある又はセキュリティポリシーを破るどのような兆候も分析する。次に、方法800はステップ806に進み、挙動分析モジュール230が実行可能アプリケーションをサンドボックス実行環境220内に移動するかどうかを決定する。
【0124】
実行可能アプリケーションが、例えば標準実行環境210など標準実行環境内で実行することを許可されているならば、方法800はステップ808に続く。一例において、ステップ808では、方法800は、実行可能アプリケーションを標準実行環境210内で開始する。方法800はステップ810に進み、挙動分析モジュール230が動作中の実行可能アプリケーションに対して挙動分析を実行する。いくつかの実施例では、システムモニタリングエンジン240は、実行可能アプリケーションによって実行された動作のモニタに使用される。ステップ812において、挙動分析モジュール230は、動作中の実行可能アプリケーションがサンドボックス実行環境内に移動されるべきかどうかを動的に決定する。前記ステップ812において実行可能アプリケーションがサンドボックス実行環境内に移動されていない場合、方法800はステップ814の動作に続く。ステップ814において、システム200は、実行可能アプリケーションが終了したかどうか決定する。実行可能アプリケーションが動作中の場合、方法800はステップ808の動作に戻り、処理を繰り返す。
【0125】
ステップ812の動作に戻ると、挙動分析モジュール230が、実行可能アプリケーションが潜在的に悪意ある挙動を示しているものと決定する場合には、方法800は続いて、実行可能アプリケーションをサンドボックス実行環境220内に移動する。
【0126】
方法800は、動作中の実行可能アプリケーション又は起動されるプロセスにある実行可能アプリケーションをサンドボックスするかどうかという、同様なタスクを実行する、いくつかの例では、方法800はステップ820におけるサンドボックスするプロセスを開始し、挙動分析モジュール230がサンドボックスする範囲を決定する。サンドボックスする範囲は、サンドボックス環境が、ディスクI/O又はネットワークのような物に対してどのように制限的であるかを含み、また、同様に、サンドボックス環境220内で現在動作している実行可能アプリケーションのどの対して制限的であるかを含み得る。一例において、サンドボックスするプロセスはステップ822で開始し、挙動分析モジュール230が、例えばサンドボックスする範囲やセキュリティポリシーなどの入力に基づいて、サンドボックス環境220を構成する。
【0127】
一例において、サンドボックス実行環境220が構成されたら、方法800はステップ824に進み、サンドボックス実行環境220内で実行可能アプリケーションを開始又は実行する。次に、方法800はステップ826に進み、挙動分析モジュール230が動作中の実行可能アプリケーションに対して挙動分析を実行する。この例において、挙動分析は、実行可能アプリケーション内又は周囲の環境の変化によって当該実行可能アプリケーションをサンドボックス実行環境220から移動させることが可能になるかどうかを動的に決定するために、サンドボックス実行環境220内で動作中の実行可能アプリケーションに対して実行される。方法800はステップ828に進み、実行可能アプリケーションをサンドボックスしつづけるかどうかを挙動分析モジュール230が決定する。実行可能アプリケーションがサンドボックス実行環境内に残る場合、方法800はステップ830の動作に進む。ステップ830の動作において、システム200は、その実行可能アプリケーションの実行を続行するかどうかを決定する。実行可能アプリケーションが終了された場合、方法800はステップ832において終了する。ステップ832において、システム200は、サンドボックスされたデータ及び動作を処置する。サンドボックスされたデータ及び動作を処置することには、システムから情報を消去すること、又は、影響を受けたリソースの更新をシステム200に許可することを含み得る。いくつかの実施形態では、サンドボックスされたデータ及び動作は、セグメント化されたリソース内にデータ及び動作を保持している間は、標準実行環境210内での処理に利用可能である。
【0128】
ステップ828の動作に戻ると、実行可能アプリケーションがサンドボックス実行環境220から移動され得ることが決定する場合、方法800はステップ814の動作に進む。
【0129】
上述の方法は、第一にクライアントシステム110内の動作に関して説明した。しかし、上述と同様な方法又はその方法の一部は、ゲートウェイ装置120にも実装され得る。たとえば、ゲートウェイ装置120は、広域ネットワーク130からダウンロードされている実行可能アプリケーションを検出するように構成できる。ゲートウェイ装置120は、また、入ってくる実行可能アプリケーションに対して挙動分析を実行するようにも構成できる。最初の挙動分析の結果は、クライアントシステム110と共有され、クライアントシステム110は入ってくる実行可能アプリケーションを必要に応じてサンドボックスする。
モジュール、コンポーネントおよびロジック
【0130】
いくつかの実施形態は、ロジック、又は、多数のコンポーネント、モジュールエンジン若しくはメカニズムとして、ここに記載されている。モジュールは、ソフトウェアモジュール(例えば、機械可読媒体に記録されたコード、又は、伝送信号に具現化されたコード)又はハードウェアモジュールを構成する。ハードウェアモジュールは、一定の動作を実行できる実体的ユニットであり、特定の方法で構成又は配置されてよい。具体例において、1以上のコンピュータシステム(例えば、スタンドアローン、クライアント、又は、サーバコンピュータシステム)、又は、コンピュータシステムの1以上のハードウェアモジュール(例えばプロセッサ又はプロセッサグループ)は、ソフトウェア(アプリケーション又はアプリケーションの部分)により、ここに記載された特定の動作群を実行するハードウェアモジュールとして、構成されてよい。
【0131】
種々の実施形態において、ハードウェアモジュールは、機械的に又は電子的に実装されてよい。例えば、ハードウェアモジュールは、永続的に特定の動作を実行するように構成された専用回路又はロジック(例えば、FPGA(フィールドプログラマブルゲートアレイ)やASIC(特定用途向け集積回路)などの専用プロセッサ)からなる。ハードウェアモジュールは、また、ソフトウェアにより一時的に特定の動作を実行するよう構成されたプログラム可能なロジック又は回路(例えば汎用プロセッサ又はその他プログラム可能なプロセッサ内に含まれるもの)を具備していてもよい。なお、専用且つ永続的に構成された回路又は、一時的に構成された回路(例えばソフトウェアにより構成される)において、機械的ハードウェアモジュールを実装する決定は、コスト及び時間を考慮してなされることは、理解されるだろう。
【0132】
従って、“ハードウェアモジュール”という用語は、有形の実体に包含されるものと理解されるべきであり、実体とは、物理的に形成され、特定の方法で動作するように、及び/又は、ここに記載した特定の動作群を実行するように、永続的に構成(例えばハードウェアに組み込み(配線で接続されたもの))又は一時的に構成されたもの(例えばプログラムされたもの)である。ハードウェアモジュールが一時的に構成(プログラム)された実施形態において、ハードウェアモジュールのそれぞれは、時間内で何か1つのインスタンスに構成又はインスタンス化される必要はない。例えば、ハードウェアモジュールがソフトウェアを使用するよう構成された汎用プロセッサを具備する場合、その汎用プロセッサは、異なる時間において、それぞれ異なるハードウェアモジュールとして構成される。ソフトウェアは、従って、例えば、或る時間インスタンスに特定のハードウェアモジュールを構成し、別の時間インスタンスに別のハードウェアモジュールを構成するプロセッサを構成してよい。
【0133】
ハードウェアモジュールは、他のハードウェアに情報を供給でき、且つ、他のハードウェアから情報を受信できる。従って、上述したハードウェアモジュールは、通信可能に接続されているものとみなされてよい。複数のかかるハードウェアモジュールが同時に存在している場合、通信はハードウェアモジュールを接続する信号伝送を通じて(例えば適宜の回路及びバスを通じて)遂行される。複数のハードウェアモジュールが異なる時間に構成又はインスタンス化される実施形態において、それらハードウェアモジュール間の通信は、例えば、それら複数のハードウェアモジュールがアクセスを持つメモリ機構内の情報の記憶及び検索を通じて遂行される。例えば、1つのハードウェアモジュールは、或る動作を実行し、通信可能に接続されたメモリ装置に、その動作の出力を記憶するだろう。さらなるハードウェアモジュールは、そして、後に、前記動作の出力を検索し且つ処理するために前記メモリ装置にアクセスするだろう。ハードウェアモジュールは、また、入力又は出力装置との通信を開始して、或るリソース(例えば情報の集積)に作用できる。
【0134】
個々に記載された方法の例の種々の動作は、少なくとも部分的には、関連する動作を実行するように一時的に構成された(例えばソフトウェアによる)又は永続的に構成された1以上のプロセッサによって実行される。一時的に構成されるか又は永続的に構成されるかのいずれにしても、かかるプロセッサは、1以上の動作又は機能を実行するように動作するプロセッサ実装モジュールを構成してよい。ここで言及したモジュールは、いくつかの実施形態では、プロセッサ実装モジュールを含む。
【0135】
同様に、ここに記載された方法は、少なくとも部分的にプロセッサ実装されてよい。例えば、少なくとも方法の動作のいくつかは、1以上のプロセッサ又はプロセッサ実装モジュールにより実行される。いくつかの動作の実行は、単一の機械内に存在しているだけでなく、複数の機械にわたり配備されている、1以上のモジュールに分配されてよい。いくつかの実施形態では、1つのプロセッサ又は複数のプロセッサは、単一の場所(例えば家庭環境内、オフィス環境内、又は、サーバファームとして)に配置され、別の実施形態では、複数のプロセッサは複数の場所に分配されている。
【0136】
1以上のプロセッサは、また、“クラウンドコンピューティング”環境において又はSaaSとして、関連する動作の実行を支援するように動作してもよい。例えば、少なくともいくつかの動作は、コンピュータのグループ(機械の一例としてプロセッサを含む)により実行され、それら動作は、ネットワーク(例えばインターネット)経由で、且つ、1以上の適宜のインタフェース(例えばAPI)経由でアクセス可能である。
電子機器及びシステム
【0137】
具体的な実施形態は、デジタル電子回路、又は、コンピュータハードウェア、ファームウェア、ソフトウェア、又は、それらの組み合わせに実装されてよい。実施形態は、コンピュータプログラム製品(例えば、実行のための又はその動作を制御するための機械可読媒体内の、情報キャリア内に実体的に具現化されたコンピュータプログラム、データ処理機器、プログラム可能なプロセッサ、1つのコンピュータ、若しくは、複数のコンピュータ)を用いて実装されてよい。
【0138】
コンピュータプログラムは、コンパイルされた又は解釈された言語を含む、どのような形式のプログラミング言語で記述されてもよく、それは、例えばスタンドアローンプログラム又はモジュール、サブルーチン、若しくは、コンピューティング環境での使用に適切なその他ユニットなどを含むどのような形式に配備されていてもよい。コンピュータプログラムは、1つのコンピュータ又は複数のコンピュータ上で実行されるように、1つのサイトに配備されるか、又は、複数のサイトに分配され、通信ネットワークにより相互に接続される。
【0139】
実施形態において、動作は、入力データを処理すること及び出力を生成することにより機能を実行するコンピュータプログラムを実行する1以上のプログラム可能なプロセッサにより実行されてよい。方法動作は、また、例えばFPGA(フィールドプログラマブルゲートアレイ)又はASIC(特定用途向け集積回路)など専用論理回路により実行され、且つ、実施形態の機器は、例えばFPGA(フィールドプログラマブルゲートアレイ)又はASIC(特定用途向け集積回路)など専用論理回路により実装されてもよい。
【0140】
コンピューティングシステムは、クライアント及びサーバで構成できる。クライアント及びサーバは、一般に、互いに離れており、典型的には、通信ネットワークを通じて相互作用する。クライアント及びサーバの関係は、各コンピュータ上で動作し、且つ、互いにクライアント‐サーバ関係を持つコンピュータプログラムの効果により生じる。プログラム可能なコンピューティングシステムを配備する実施例において、ハードウェア及びソフトウェア構造の両方が考慮を要求することがわかる。具体的には、特定の機能を、永続的に構成されたハードウェア(例えばASIC)に実装するか、又は、一時的に構成されたハードウェア(例えばソフトウェアとプログラム可能なプロセッサの組み合わせ)に実装するか、又は、永続的に構成されたハードウェアと一時的に構成されたハードウェアとの組み合わせに実装するかという選択は、設計選択事項であることがわかる。以下は、種々の実施形態において配備されるハードウェア(機械)及びソフトウェア構造を提示する。
機械構造及び機械可読媒体の例
【0141】
図9は、開示されたいずれか1以上の方法を機械に実施させるための命令が実行されるコンピュータシステム900の構成例における機械のブロック図である。コンピュータシステム900は、一実施形態において、システム900を具備する。別の実施形態では、機械は、スタンドアローン装置として動作するか又は別の機械に接続(ネットワーク接続)される。ネットワーク接続された配置において、機械は、サーバとして、又は、サーバ‐クライアントネットワーク環境におけるクライアント機械として動作するか、また、Peer to Peer(ピアトゥピア)ネットワーク(又は分散型ネットワーク)環境においては、ピア機械として動作する。機械は、パーソナルコンピュータ(PC)、タブレットPC、セットトップボックス(STB)、携帯情報端末(PDA)、携帯電話、Webアプライアンス、ネットワークルータ、スイッチ又はブリッジ、或いは、機械によって行われるアクションを特定する命令(シーケンシャルな又はその他の命令)を実行できるその他任意の機械であってよい。更に、1つの機械だけが描かれているが、“機械”という用語は、また、ここに開示された方法の1以上を実行するための命令のセット(又は複数のセット)を、個別に又は共同で実行する機械のどんな集積をも含むだろう。
【0142】
コンピュータシステム900の一例は、プロセッサ902(例えば、中央演算処理装置(CPU)、グラフィック・プロフィッシング・ユニット(GPU)、又は、その両方)、メインメモリ904およびスタティックメモリ906からなり、これらは互いにバス908経由で通信できる。コンピュータシステム900は、更に、表示装置910(例えば液晶ディスプレイ(LCD)、又は、陰極線管(CRT))を備える。コンピュータシステム900は、また、英数字入力装置912(例えばキーボード)、ユーザインタフェース(UI)ナビゲーション装置914(例えばマウス)、ディスク駆動装置916、信号生成装置918(例えばスピーカ)及びネットワークインターフェース装置920を備える。
機械可読媒体
【0143】
ディスク駆動装置916は、機械可読媒体922を含み、この機械可読媒体922には、ここに開示した方法又は機能のいずれか1つ以上を具現化する、若しくは、該方法又は機能のいずれか1つ以上により使用される1つ以上のデータ構造及び命令924のセットが記憶される。命令924は、また、完全に又は少なくとも一部、それをコンピュータ900により実行する間、メインメモリ924及び/又はプロセッサ902内に存在し、メインメモリ924及びプロセッサ902もまた機械可読媒体の構成要素となる。
【0144】
実施形態において、機械可読媒体922は単一の媒体であるように示されているが、用語“機械可読媒体”は、1つ以上のデータ構造及び命令924を記憶する1つの媒体又は複数の媒体(例えば中央化された又は分散化されたデータベース、及び/又は、連携されたキャッシュ及びサーバ)を含む。用語“機械可読媒体”は、また、機械によって実行され、本発明の実施形態の方法いずれか1つ以上を機械に実行させるための命令を、記憶すること、エンコードすること、又は。運搬することができる、若しくは、かかる命令に関連付けられるか又は使用されるデータ構造を記憶すること、エンコードすること、又は、運搬することができる、どんな実体的媒体をも含むとみなされるだろう。用語“機械可読媒体”は、従って、限定はされないが、ソリッド・ステート・メモリ(半導体素子メモリ)、光学媒体、及び、磁気媒体を含むとみされるだろう。機械可読媒体の具体例としては、不揮発メモリからなり、例として、EPROM(Erasable Programmable Read Only Memory)、EEPROM(Electrically Erasable and Programmable Read Only Memory)、及び、フラッシュメモリ装置などの半導体メモリ装置;内蔵ハードディスク及びリムーバブルディスクなどの磁気ディスク;光磁気ディスク;並びに、CD−ROM及びDVD−ROMディスクなどが含まれる。
伝送媒体
【0145】
命令924は、更に、伝送媒体を用いて、通信ネットワーク926を通じて伝送又は受信されてよい。命令924は、ネットワークインターフェース装置920、及び、多数の周知の通信プロトコル(例えばHTTP)のいずれか1つを用いて、伝送される。通信ネットワークの例としては、ローカルエリアネットワーク(LAN)、広域ネットワーク(WAN)、インターネット、携帯電話ネットワーク、POTS(Plain Old Telephone Service;アナログ電話サービス)ネットワーク、無線データ通信ネットワーク(例えば、WiFi及びWiMaxネットワーク)を含む。用語“伝送媒体”は、機械により実行するための命令を、記憶すること、エンコードすること及び運搬することのでき、且つ、デジタル又はアナログ通信信号、若しくは、かかるソフトウェアの通信を容易にするその他の無形媒体を含む、どんな無形の媒体をも含むと見なされる。
【0146】
このように、ネットワークベースの市場についてユーザに文脈上の推薦するための方法及びシステムが説明された。具体的実施例を参照して、この発明の本実施形態が説明されたが、本発明の実施形態のより広い趣旨及び範囲から逸脱することなく、種々の改変及び変更がこれら実施形態になされてよいことは明白であろう。従って、明細書及び図面は、制限的趣旨よりもむしろ、例示的なものとみなされるべきである。
【0147】
具体的実施例を参照して、或る実施形態が説明されてきたが、本発明の実施形態のより広い趣旨及び範囲から逸脱することなく、種々の改変及び変更がこれら実施形態になされてよいことは明白であろう。従って、明細書及び図面は、制限的趣旨よりもむしろ、例示的なものとみなされるべきである。本明細書の一部を形成する添付図面は、本発明が実施される具体的実施形態の説明のために示されており限定を目的としたものではない。図示の実施形態は、当業者が本明細書に開示された教示を実施できる程度十分に詳細に説明されている。他の実施形態は、そこから利用及び派生可能であり、この開示の範囲から逸脱することなしに、構造上及び論理上の代用及び変更がなれる。詳細な説明は、従って、限定的趣旨とみなされず、種々の実施形態の範囲は、添付の特許請求の範囲のみによって定義され、特許請求の範囲が請求する特徴の均等物の最大範囲に従う。
【0148】
かかる実施形態の発明主題は、本明細書において、個別に及び/又は一体的に、用語“発明”によって、単に便宜のため、1以上が実際に開示されているならば、本願発明の範囲をいずれの1つの発明又は発明概念に自発的に制限することを意図することなく、言及された。従って、具体例がここに図示及び説明されているが、同じ目的を達成すると予測されるどのような取り合わせであっても、示された特定の実施形態に置き換わることが理解されるべきである。この開示は、種々の実施形態のいずれの改作又は変化も包含することを意図している。前述した実施形態の組み合わせ、及び、個々に具体的には示されなかったその他の実施形態は、上記の説明を検討すれば当業者には明らかとなるであろう。
【0149】
この文献において言及された出版物、特許及び特許文献の全ては、個別に援用されたかのように、全ての記載内容を本明細書内に援用される。この文献と、援用された文献群との間で一致しない取り扱いがある場合には、援用記載における取り扱いは、この文章のその追加とみなされる;調停不可能な不一致については、この文献の取り扱いが支配する。
【0150】
この文献において、用語“或る”(a又はan)は、特許文献において通例であるように、“少なくとも1つ”又は“1以上”の他のいずれの事例又は取り扱いとも別に、1又は1以上を含むように使用される。この文献において、用語“又は”(or)は、非排他的に、又は、“A又はB”が、特に指摘のない限り、“AであるがBではない”、“AであるがBではない”、“BであるがAではない”、及び、“A及びB”を含むように、言及されている。添付の特許請求の範囲において、“からなる”(including)及び“であって”(in which)は、それぞれ、用語“具備する”(comprise)及び“において”(wherein)の平易な相当語として使用されている。また、以下の特許請求の範囲おいて、“からなる”及び“構成する”は、オープンエンド(拡張可能)であり、特許請求の範囲おいてそのような用語に関して一覧記載されたものに加えて、更に要素を含むシステム、装置、物品(article)又は処理は、当該請求範囲の範囲内に入るものとみなされる。さらに、以下の特許請求の範囲において、“第1”、“第2”、“第3”などの用語は、それが使用される場合は、単なるラベルとして使用されており、それらの対象物に数的要求を課することを意図しているのではない。
【0151】
この開示の要約は、技術的開示の特徴を、読者が迅速に確認することを可能とする要約を要求する、37C.F.R §1.72(b)に従って、提供される。それは、特許請求の範囲の範囲又は意味を解釈又は制限するために使用されないことを理解されたい。さらに、上述の発明の詳細な説明では、開示を効率化する目的で、1つの実施形態において様々な機能が互いにグループ化されていることがわかる。このような開示の方法は、特許請求された実施形態が、各請求項において明示的に引用されるよりも多くの特徴を要求する、という意図を表すことと解釈されるべきではない。むしろ、以下の特許請求の範囲が表す通り、本発明の主題は、開示された1つの実施形態の全ての機能よりも少ない。したがって、以下の特許請求の範囲は、本発明の詳細な説明に組み込まれ、各請求項は、個別の実施形態として自立している。
図1
図2
図3
図4
図5
図6
図7
図8
図9