JP2010205186A - 情報処理装置と方法とプログラム - Google Patents

情報処理装置と方法とプログラム Download PDF

Info

Publication number
JP2010205186A
JP2010205186A JP2009052712A JP2009052712A JP2010205186A JP 2010205186 A JP2010205186 A JP 2010205186A JP 2009052712 A JP2009052712 A JP 2009052712A JP 2009052712 A JP2009052712 A JP 2009052712A JP 2010205186 A JP2010205186 A JP 2010205186A
Authority
JP
Japan
Prior art keywords
virtual space
resource
sandbox
child
virtual
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2009052712A
Other languages
English (en)
Other versions
JP5423063B2 (ja
Inventor
Eiji Muramoto
栄治 村本
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Corp
Original Assignee
NEC Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NEC Corp filed Critical NEC Corp
Priority to JP2009052712A priority Critical patent/JP5423063B2/ja
Publication of JP2010205186A publication Critical patent/JP2010205186A/ja
Application granted granted Critical
Publication of JP5423063B2 publication Critical patent/JP5423063B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

【課題】プログラムの危険度に応じて、サンドボックスと仮想空間を多段化することを可能とした装置、方法、プログラムを提供する。
【解決手段】子プロセスの起動時に、プロセス起動ポリシーデータ(107)を参照し、前記プロセス起動ポリシーデータの設定情報にしたがって、子プロセス用に、仮想空間とサンドボックスを新たに作るか、又は、親プロセスと同じ仮想空間とサンドボックスを用いるか、を決定する子プロセス起動手段(103)を備える。
【選択図】図1

Description

本発明は、情報処理技術に関し、特に、サンドボックスおよび計算機リソースの仮想化に好適な情報処理装置、方法、プログラムに関する。
サンドボックスおよび計算機リソースの仮想化の技術は、悪意を持ったプログラムを安全な環境に閉じ込めて実行させたり、機密情報を外部に漏洩させることの無いようにプログラムで処理させたりするなどのことがらを実現する技術として、従来から用いられている。例えば、インターネットブラウザ上で動作するJavaScript(登録商標)やActiveX(登録商標)コントロール、インターネットブラウザからダウンロード、電子メール閲覧ソフトに添付、インスタントメッセージで授受されるなどし、クリック等の動作で実行される、EXE実行ファイル、マクロ等を含んだMicrosoft Office(登録商標)の文書ファイル等が悪意を持ったプログラムだったり新型のウィルスを有していたりして、ユーザの計算機を破壊したり重要な情報を外部に漏洩させたりすることをサンドボックスおよび仮想空間の技術は効果的に防ぐことができる。また、ユーザが計算機システム上の機密データをうっかり外部に漏洩させてしまうことに対しても、機密データを扱うプログラム群をサンドボックスおよび仮想空間の中で動かすことで効果的にこれを防止することができる。
従来のサンドボックス/仮想空間システムの一例が特許文献1に記載されている。このような構成を有する従来のサンドボックス/仮想空間システムは、疑わしいファイルを実行するプログラムまたは疑わしいファイルをダウンロードするプログラムのいずれかをサンドボックス仮想マシン上で実行することで、システムのセキュリティを向上させることができるとしている。
特許文献2には、機密モードで実行させるプログラムがアクセスするファイルのパスを書き換えることで、任意のプログラムを通常モード/機密モードで同時に実行させることができるような機密情報の漏洩を防ぐ仮想空間のシステムが記載されている。
特許文献3には、リソースへの書き込み要求のあったリソースをオンデマンドで多重化することで、あらかじめ多重化する部分をアプリケーションに特化して特定すること無くリソースを仮想化して情報漏えいを防ぐシステムが記載されている。
特表2008−500653号公報 特開2006−127127号公報 特開2007−280255号公報
以下に本発明による関連技術の分析を与える。
ブラウザ上でクリックによってダウンロード/実行される子プログラムは、親プログラムであるインターネットブラウザが動作するのと同じサンドボックスおよび仮想空間内で実行される。しかしながら、危険度がより高いと思われるダウンロードプログラムについては、独立のサンドボックスおよび仮想空間で実行させたいという要求がある。
従来は、多段的なサンドボックスおよび仮想空間を自動的に構成することができなかった。
このため、サンドボックスや仮想空間を別途生成してから、いったんダウンロードしたプログラムを、別途生成したサンドボックスや仮想空間の中で手動で起動し直すといった手順をとるか、あるいは、インターネットブラウザを別のサンドボックス/仮想空間で起動し直し、別のサンドボックス/仮想空間で起動されたインターネットブラウザの中から該当サイトを訪れてプログラムを、ダウンロード/実行するといった手順をとる必要がある。
すなわち、上記した技術においては、サンドボックスや仮想空間を2個以上多段的に作成するということはなんら考慮されていない。2個以上多段的にサンドボックスや仮想空間を作成した時に、リソースをオンデマンドでコピー(多重化)したり継承したりすることについてもなんら考慮されていない。
したがって、本発明の目的は、プログラムの危険度に応じて、サンドボックスと仮想空間を多段化することを可能とした情報処理装置、方法、プログラムを提供することにある。
本発明によれば、子プロセスの起動時に、プロセス起動ポリシーデータを参照し、前記プロセス起動ポリシーデータの設定情報にしたがって、
子プロセス用に、
仮想空間を新たに作るか、
親プロセスと同じ仮想空間を用いるか、又は、
通常空間で実行させるか、
を決定する、情報処理方法が提供される。
本発明によれば、子プロセスの起動時に、プロセス起動ポリシーデータを参照し、前記プロセス起動ポリシーデータの設定情報にしたがって、
子プロセス用に、
サンドボックスを新たに作るか、
親プロセスと同じサンドボックスを用いるか、又は、
サンドボックス外で実行させるか、
を決定する、情報処理方法が提供される。
本発明によれば、プロセス起動のポリシーを設定するプロセス起動ポリシーデータと、
子プロセスの起動時に、前記プロセス起動ポリシーデータを参照し、前記プロセス起動ポリシーデータの設定情報にしたがって、
子プロセス用に、
仮想空間とサンドボックスを新たに作るか、又は
親プロセスと同じ仮想空間とサンドボックスを用いるか、
を決定する子プロセス起動手段と、
を備えた、情報処理装置が提供される。
本発明によれば、子プロセスの起動時に、プロセス起動ポリシーデータを参照し、前記プロセス起動ポリシーデータの設定情報にしたがって、
子プロセス用に、
仮想空間とサンドボックスを新たに作るか、又は
親プロセスと同じ仮想空間とサンドボックスを用いるか、
を決定する子プロセス起動処理をコンピュータに実行させるプログラムが提供される。
本発明によれば、プログラムの危険度に応じて、サンドボックスと仮想空間を多段化することを可能としている。
本発明の一実施例の構成を示す図である。 本発明の一実施例のプロセス起動ポリシーデータの一例を示す図である。 本発明の一実施例の仮想空間構成記憶部の一例を示す図である。 本発明の一実施例の動作を説明する図である。 本発明の一実施例の全体動作を説明する流れ図である。 本発明の一実施例の子プロセス駆動手段の動作を説明する流れ図である。 本発明の一実施例の動作を説明する図である。 本発明の一実施例の動作を説明する図である。 本発明の一実施例のアクセス制御手段と仮想Open手段の動作を説明する流れ図である。 本発明の一実施例の仮想Enum手段の動作を説明する流れ図である。 本発明の一実施例の動作を説明する図である。 本発明の一実施例の動作を説明する図である。
本発明は、プログラムの危険度に応じて、サンドボックスと仮想空間を多段化することを可能とした装置を提供するものである。
プログラムの危険度に関して、例えば、
・危険性が無いと考えられる安全な一般のプログラム、
・インターネットブラウザや電子メールソフト、インスタントメッセージ等の一般的な危険にさらされると考えられるプログラム、
・インターネットブラウザからダウンロード、電子メールソフトで受信した電子メールに添付、インスタントメッセージで授受する等して得、インターネットブラウザ、電子メールソフト、インスタントメッセージ等からクリック等の動作をもって起動される危険度の非常に高いプログラム、
というように、プログラムの種類や出所により、その潜在的なセキュリティ上の危険度合いは、一般に、さまざまである。
本発明においては、プログラムが別のプログラムを呼び出したときに、それを捕捉し、呼び出された子プログラムに適用するファイルアクセス権やネットワークアクセス権の指定等を含むサンドボックスセキュリティポリシーや子プログラムを実行させるファイルシステム、レジストリ等が仮想化された一個以上の仮想空間を動的に作成し、プログラムの危険度に応じて、新たな仮想化された空間に隔離した状態で、より厳しいセキュリティポリシーを適用して、プログラムを実行させることを可能としている。
子プログラムの呼び出し階層に対して、複数個のサンドボックスおよび仮想空間を動的に多段に構成することを可能としている。
本発明においては、あるサンドボックスおよび仮想空間で動作するプログラムが、別のプログラムを呼び出したとき、
その呼び出しを捕捉し、一個以上の新たなサンドボックスおよび仮想空間を多段的に作って、子プログラムをそのサンドボックスおよび仮想空間で実行させるか否か、
どのようなセキュリティポリシーからなるサンドボックスで子プログラムを実行させるかを、プロセス起動ポリシーデータおよびユーザからの指示等に基づき、動的に判断/選択し、その結果に応じて、新たなサンドボックおよび仮想空間を動的に生成して、子プログラムをスタートさせるような仕組みをサンドボックス自身が有する。
ファイルやレジストリ等のリソースは、仮想空間の多段的な親子関係にしたがって継承する。すなわち、通常空間直下に作られる最初の世代の仮想空間では、通常空間のファイルシステムやレジストリを参照の形で継承する。
また、初回の書き込み時には、自己の仮想空間へとコピーを行い、以後、自己の仮想空間にコピーされたリソースにのみアクセスすることで、通常空間のオリジナルのファイルやレジストリの破壊から、システムを守る。
さらに、子プロセスのために作られる子仮想空間では、通常のファイルシステムやレジストリを同様にして継承したりコピーしたりすることに加え、親仮想空間で作成されたりコピーされたファイル、レジストリを同様にして継承したりコピーしたりする。
このように、多段的に構成された通常空間と、親・先祖仮想空間のリソースが合成されることによって、子仮想空間が形成されることになる。
本発明においては、そのような一個以上の何段階もの合成によって形成される仮想空間のリソースにアクセスするための手段を有する。
本発明においては、プロセス起動のポリシーを設定したプロセス起動ポリシーデータ(107)を備え、子プロセスの起動時に、前記プロセス起動ポリシーデータを参照し、前記プロセス起動ポリシーデータ(107)の設定情報にしたがって、子プロセス用に、
仮想空間とサンドボックスを新たに作るか、又は親プロセスと同じ仮想空間とサンドボックスを用いるかを決定する子プロセス起動手段(103)を備える。本発明において、前記子プロセス起動手段(103)は、新たにサンドボックスと仮想空間を作成する場合、仮想空間を動的に作成し、親子関係と、使用するサンドボックスポリシーデータを仮想空間構成記憶部(108)に記録するようにしてもよい。本発明において、前記子プロセス起動手段(103)は、起動中の子プロセスにAPIフックを仕掛け、前記子プロセスのサンドボックス識別子記憶部(102)にサンドボックス識別子を記録し、子プロセスを開始させるようにしてもよい。
本発明において、APIフックで捕捉されたリソースへのアクセス要求に対し、サンドボックス識別子記憶部で識別されるサンドボックスポリシーデータを検索し、アクセス要求のあったリソースが、アクセスが許可されているか否かをサンドボックスポリシーデータの設定情報にしたがって判定するアクセス制御手段(104)を備える。
本発明において、APIフックで捕捉されたリソースオープン要求に対し、前記アクセス制御手段(104)によってオープン要求が許可されたものに関して、仮想化の対象であるか否かを判定した後、前記サンドボックス識別子記憶部(102)で識別される仮想空間構成記憶部(108)の項目を検索し、対応する仮想空間上に実体が作成されたリソースを求め、前記リソース実体、又は、該実体をコピーしたリソースをオープンする、仮想Open(オープン)手段(105)を備える。
本発明において、APIフックで捕捉されたリソース列挙の要求に対し、前記アクセス制御手段によって列挙の要求が許可されたものに関し、仮想化の対象であるか否かを判断した後、前記サンドボックス識別子記憶部で識別される仮想空間構成記憶部の項目を検索し、前記仮想空間構成記憶部の親サンドボックス識別子で形成される仮想空間の親子関係を遡りながら、仮想空間上に実体が作られたリソースを列挙する仮想列挙手段(106)を備える。本発明において、前記仮想列挙手段(106)は、仮想空間上に実体が作られたリソースRで列挙された項目xが仮想空間Vとしての項目として有効なものであるか否か判定するために、Rの要素が仮想空間V(kはjからNの整数)にコピーした状態となっているか否かを判定し、コピーした状態の場合、仮想空間VのRにコピーされた要素xに対応する実体を、仮想空間Vで有効な項目であるものとして、リソース列挙要求の結果として返すようにしてもよい。
次に、本発明の実施例について説明する。図1は、本発明の一実施例の構成を示す図である。図2は、図1のプロセス起動ポリシーデータ107のデータ構造の一例を示す図である。図3は、図1の仮想空間構成記憶部108の記憶形式と内容の一例を示す図である。
図1を参照すると、本発明の第1の実施例の装置は、
制御対象プログラム(EXE)117と、
APIフック101と、
プロセス起動ポリシーデータ107と、
仮想空間構成記憶部108と、
サンドボックスポリシーデータ109と、
システム共有ライブラリ(DLL)118と、
OSカーネル119と、
キーボード120とマウス121とディスプレイ122とネットワークアダプタ123等の入出力装置と、
通常空間113と、
仮想空間110と
を備えている。
APIフック101は、
サンドボックス識別子記憶部102と、
子プロセス起動手段103と、
アクセス制御手段104と、
仮想Open手段105(仮想オープン手段)と、
仮想Enum手段106(仮想列挙手段)と、を含む。
これらの手段は、それぞれ概略つぎのように動作する。
子プロセス起動手段103は、APIフック101で捕捉された子プロセス起動の要求に対して、親子プログラム名にマッチするプロセス起動ポリシーデータ107を検索し、これに基づき、
・サンドボックスと仮想空間を新しく作るか、
・親プロセスと同じサンドボックスと仮想空間を使用するか、
を動的に決定する。
子プロセス起動手段103は、新しいサンドボックスと仮想空間を作成する場合、仮想空間110を動的に作成し、その親子関係と、使用するサンドボックスポリシーデータ109を仮想空間構成記憶部108に記録する。
子プロセス起動手段103は、起動中の子プロセスにAPIフックを仕掛け、子プロセスのサンドボックス識別子記憶部102にサンドボックス識別子を記録し、子プロセスを開始させる。
アクセス制御手段104は、APIフックで事前に捕捉されたリソースへのアクセス要求に対し、サンドボックス識別子記憶部102で識別されるサンドボックスポリシーデータ109を検索し、アクセス要求のあったリソースが、アクセスが許可されているか否かをサンドボックスポリシーデータ109の設定情報に照らし判定する。アクセスが許可されていない場合はそのアクセス要求を拒否する。
仮想Open手段105は、APIフック101で捕捉されたリソースOpenの要求に対し、アクセス制御手段104によってOpen要求が許可されたものに関し、仮想化の対象であるか否かを判定した後、サンドボックス識別子記憶部102で識別される仮想空間構成記憶部108の項目を検索する。
対応する仮想空間Vとしてのリソースの実体を求めるために、仮想空間構成記憶部108の親サンドボックス識別子(図3の親サンドボックス識別子108c参照)を遡りながら、仮想空間上に実体が作られたリソースR、RN−1…R、Rの順にその実体を検索する。
その際、仮想空間上に実体が存在したことのあるリソースM、MN−1…M、Mの順に、一度でも、仮想空間Vに実体が作成されたことがあるか否かをもチェックする。
もし一度でもMに実体が作られたことがあるという記録が存在し、かつRに実体が存在しなければ、そのリソースは存在しないというエラーを結果として返す。
もしRに実体が存在すれば、iがNに等しい場合か、もしくは、書き込みの起きないアクセスの場合であれば、そのR上の実体をOpenする。
もし書き込みのアクセスであった場合、そのR上の実体を、Rにコピーした後、R上のコピーしたリソースをOpenする。
仮想Enum手段106は、APIフック101で捕捉されたリソースEnum(列挙)の要求に対し、アクセス制御手段104によってEnumの要求が許可されたものに関し、仮想化の対象であるか否かを判断した後、サンドボックス識別子記憶部102で識別される仮想空間構成記憶部108の項目を検索する。
対応する仮想空間Vとしての要素列挙(ファイルシステムならディレクトリの子ファイルたちの列挙、レジストリならサブキーたちの列挙)を行うために、仮想空間構成記憶部108の親サンドボックス識別子108cで形成される仮想空間の親子関係を逆順に遡りながら、R、R、R…RN−1、Rの順にその要素を列挙する。
で列挙された項目xが仮想空間Vとしての項目として有効なものであるか否か判定するために、Rの要素が仮想空間V(k=j,j+1,…N−1, N) にコピーした状態となっているか否かを、図10のステップ706で示す判定式
Figure 2010205186
でkをjからNまで順に増やしつつ判定する。
ステップ706の判定でYesの場合、仮想空間VのRにコピーされた要素xに対応する実体を、仮想空間Vで有効な項目であるものとして、リソースEnum要求の結果として返す。
続くリソースEnum要求に対してはコルーチン的に要素列挙の途中の状態から再開して次の列挙値を同様にして求め、返す。
仮想空間110は、仮想ファイルシステム111と、仮想レジストリ112を含む。
通常空間113は、ファイルシステム114と、レジストリ115を含む。
図2を参照すると、プロセス起動ポリシーデータ107は、親プログラム名107a、子プログラム名107b、新規フラグ107c、ポリシー名107dを含む。
図3を参照すると、仮想空間構成記憶部108は、サンドボックス識別子108a、ポリシー名108b、親サンドボックス識別子108cを含む。仮想空間名V108d、仮想空間上に実体が作られたリソースの集合名R108e、仮想空間上に実体が存在したことのあるリソースの集合名M108fを一エントリとして含む。サンドボックス識別子を基に、機械的な方法で決定しても構わない。
図5は、本発明の一実施例の全体の動作手順を説明する流れ図である。図1及び図5を参照して、本実施例の動作を説明する。制御対象プログラム117は要求を発行する(ステップ301)。要求種別が制御対象の場合(ステップ302のYes分岐)、APIフックで要求を補足し(ステップ302)、要求の種別が子プロセスの起動、リソースのオープン、リソースEnumであるかによって、ステップ305(子プロセス起動手段)、ステップ307、308(アクセス制御手段と仮想Open手段)、ステップ310、311(アクセス制御手段と仮想Enum手段)の処理に分岐する。要求種別が制御対でない場合(ステップ302のNo分岐)、終了する。
具体例を用いて本実施例の動作を説明する。例えば、プロセス起動ポリシーデータ107には、図2のような情報が登録されているものとする。今、図4のように、通常空間N113上で動作するデスクトップシェル201からプロセスXXX205とプロセスAAA207が起動され、
サンドボックス識別子がSandbox1、
ポリシー名がpolicy1、
仮想空間名がV
であるようなサンドボックス203/仮想空間V110aで、プロセスXXX205とプロセスAAA207が動作しているものとする。
この状態で、プロセスXXX205が子プログラムZZZを起動しようとすると、プロセスXXX205はサンドボックス上で動作中の制御対象プログラムであるため、図5のステップ301の処理の流れが開始され、APIフック101で、子プロセス起動要求が捉えられ(ステップ303)、子プロセス起動手段103が呼び出される(ステップ305)。
ここでAPIフック101は、オペレーティングシステムが備える機能をアプリケーションが呼び出そうとした時、その呼び出しを横取り(Hook)するような仕掛けのことで、例えばMicrosoft(登録商標)のWindows(登録商標)のDLL(Dynamic Link Library)注入を使ったAPIフックやフィルタドライバ、Unix(登録商標)やLinux(登録商標)におけるプロセストレースやカーネルモジュールによるシステムコールフック等さまざまな方法と技術が知られている。本実施例では、Windows(登録商標)のDLL注入によるAPIフックを例として説明しているがこれに限定されない。
図6は、子プロセス起動手段103の処理手順を示す流れ図である。親子プログラム名にマッチするプロセス起動ポリシーデータを探し(ステップ401)、プロセス起動ポリシーデータが見つかった場合、新規フラグがNewの場合、ステップ408に分岐して新しい仮想空間とサンドボックスを作る。新規フラグがCurrentの場合、親プロセスと同じ仮想空間とサンドボックスを使用する。新規フラグがUserの場合、サンドボックスを新たに作るか否かをユーザが選択し、ユーザの好みをプロセス起動ポリシーデータに反映させる。新たにサンドボックスを作る場合、ステップ408に分岐し、作らない場合、ステップ410に分岐する。ステップ409、410のあと、子プロセスを生成し(ステップ411)、生成した子プロセスのメモリ空間にAPIフックとサンドボックス識別子を埋め込み(ステップ412)、子プロセスを開始する(ステップ413)。
この具体例においては、子プロセス起動手段103は、
親プログラム名が“XXX”、
子プログラム名が“ZZZ”
にマッチするような項目をプロセス起動ポリシーデータ107から探し(ステップ400)、
親プログラム名107aが“*”(ワイルドカード)、
子プログラム名107bが“ZZZ”
となっている項目が見つかる(ステップ401)。
新規フラグ107cは“Current”であるため(ステップ403のYes)、親プロセスと同じ仮想空間とサンドボックスを使用するものと決定し(ステップ410)、子プロセスZZZ206を生成し(ステップ411)、生成した子プロセスZZZ206のメモリ空間にAPIフックを埋め込むとともに、親プロセスと同じサンドボックス識別子“Sandbox1”を、サンドボックス識別子記憶部102に埋め込む(ステップ412)。しかる後、子プロセスZZZ206を開始させる(ステップ413)。
以上の処理により、子プロセスZZZ206は、親プロセスXXX205と同じサンドボックス203/仮想空間V110aで動作することとなる(図4参照)。
また、この状態で、プロセスXXX205が子プログラムYYYを起動しようとすると(図4参照)、同様にして子プロセス起動手段103が呼び出され(図5のステップ305)、
子プロセス起動手段103において、
親プログラム名が“XXX”、
子プログラム名が“YYY”
にマッチするような項目をプロセス起動ポリシーデータ107から探す(図6のステップ400)。最初の項目がそれに一致し、新規フラグ107cは“New”であると判定して(ステップ402)、新しい仮想空間V21110bを作り、ポリシー名107dで“policy1”と、指定されたサンドボックスポリシーデータ109を用いてサンドボックス209を作る(図6のステップ408)。
そして、仮想空間構成記憶部108(図3参照)に、項目を一行追加し(2行目のエントリ)、子サンドボックス識別子108aとして新たに採番したサンドボックス識別子“Sandbox2”を登録し、
ポリシー名108bには、ポリシー名107dで指定された値“policy1”を、
親サンドボックス識別子108cには、親プロセスのサンドボックス識別子である“Sandbox1”を登録する(図3参照)。
仮想空間構成記憶部108の2行目のエントリに示すように、
新たに作成した仮想空間V21110bを仮想空間名V108dに、
21を仮想空間上に実体が作られたリソースの集合名R108eに、
21を仮想空間上に実体が存在したことのあるリソースの集合名M108fに登録する(図6のステップ409)。
次に子プロセスYYY211を生成し(図6のステップ411)、生成した子プロセスYYY211のメモリ空間に、APIフックを注入するとともに、図6のステップ409で採番したサンドボックス識別子“Sandbox2”を、サンドボックス識別子記憶部102に埋め込み(図6のステップ412)、子プロセスYYY211を開始させる。
以上の処理により、子プロセスYYY211は、新たに生成されたサンドボックス209/仮想空間V21110bで動作することとなる(図4参照)。
また、この状態で、プロセスAAA207が子プログラムBBB208を起動しようとすると(図4参照)、同様にして、子プロセス起動手段103において、プロセス起動ポリシーデータ107を検索し(図6のステップ400)、
親プログラム名107aが“AAA”、
子プログラム名が“*”(ワイルドカード)
である項目が見つかり(図6のステップ401)、新規フラグ107cが“User”であると判定され(ステップ404)、サンドボックス/仮想空間を新たに作るか否かのユーザによる選択を求める画面が表示される(図6のステップ405)。
ユーザによる指示画面では、サンドボックス/仮想空間を新たに作成するか否かの選択、今後もその選択を選ぶか否かの選択をユーザは行うことができる。今後も同じ選択を選ぶとユーザが答えた場合は、そのユーザの好みをプロセス起動ポリシーデータ107に反映させる(図6のステップ406)。
具体的には、新規フラグ107cをNewまたはCurrentとし、子プログラム名107bや親プログラム名107aがワイルドカードである場合、特定のプログラム名に限定するような項目をプロセス起動ポリシーデータ107に追加登録する。
そして、ユーザからの指示に応じて、親と同じ仮想空間とサンドボックスを使用する(図6のステップ410)、又は、新しい仮想空間とサンドボックスを作る(図6のステップ408)の処理に分岐する(図6のステップ407)。
また、子プロセス起動手段103は、新規フラグ107cにてNoneと指定した時は、仮想空間/サンドボックスの外、すなわち、通常空間で子プロセスを実行することができるようにしてもよい(図6では不図示)。
次に、図7に示すように、仮想空間の親子関係が、通常空間N113、仮想空間V110a、仮想空間V110b、・・・、仮想空間V110dと形成されたときの、リソースR、R/M、R/M、…、R/Mによって合成される仮想空間Vにおけるリソースについて、例を用いて説明する。
仮想空間V110aは、通常空間N113に存在するリソースRから、仮想空間V110a上に実体が存在したことがあるリソースMを除いた集合R−Mと、
仮想空間V110aに現在実体のあるリソースの集合Rと、
の和集合となる。リソースMは仮想空間V110a上に新規に作られるか、通常空間N(親空間)からコピーされるか、により、仮想空間V110a上に実体が存在したことがあるリソースである(現在も存在するとは限らない)。
すなわち、仮想空間V110aにおいて、親空間である通常空間N113のリソースを継承しつつ、かつて一度でも仮想空間V110aに同名のリソースが作られたものの現在は削除され存在しないようなリソースについては、親空間から継承しない。
同様に、仮想空間V110bは、親の親である通常空間N113からのリソース継承、親の仮想空間V110aからのリソース継承を、リソースの削除を考慮にいれることで、
=(R−M−M)∪(R−M)∪R
という集合演算によって求まる。
一般に仮想空間V110dは、
=(R−M−M−・・・−M)∪(R−M−・・・−M)∪(R−M−・・・−M)∪・・・∪(R−Mk+1−Mk+2−・・・−M)∪・・・∪(RN−1−M)∪R
という集合演算によって求まる。
図8は、N=2の場合をベン図で表したもので、斜線を施した箇所が仮想空間V(=(R−M−M)∪(R−M)∪R)となる。
図9は、アクセス制御手段104、仮想Open手段105の動作手順を示す流れ図である。アクセス制御手段104はサンドボックス識別子からサンドボックスポリシーデータを探し(ステップ701)、アクセス対象リソースxはアクセスが許可されているか否かを判断し(ステップ702)、アクセス不許可の場合、アクセスを拒否する(ステップ714)。
仮想Open手段105は、アクセス対象リソースxは仮想化の対象か調べ(ステップ703)、仮想化の対象でない場合、R上のxへのアクセスを実行し(ステップ715)、仮想化の対象の場合、サンドボックス識別子に対する仮想空間Vを得る(ステップ704)。x∈Rの場合、R上のxへのアクセスを実行する(ステップ716)。
x∈Mの場合、エラーとなる(ステップ721)。i=N−1から1まで−1ステップで以下のループ処理を行う。ループ処理において、x∈Rの場合(ステップ708のYes分岐)、書き込みアクセスでは(ステップ717のYes分岐)、RからRにxをコピーし、R上のxへのアクセスを実行し(ステップ719)、書き込みアクセスでない場合、R上のxへのアクセスを実行する(ステップ718)。ループ処理において、x∈Mの場合、エラーとなる(ステップ721)。ループ処理終了後、x∈Rの場合(ステップ711のYes分岐)、書き込みアクセスでは、RからRにxをコピーし、R上のxへのアクセスを実行し(ステップ720)、書き込みアクセスでない場合、R上のxへのアクセスを実行する(ステップ713)。
例えば図8における(R−M−M)に属するようなリソースa606に対して、仮想空間V上で動作する制御対象プログラム117が書き込み権限ありのリソースOpenの要求を行うと、図9の仮想Open手段105の動作手順から、対象リソースa606は、仮想化の対象であり(ステップ703)、サンドボックス識別子に対する仮想空間Vを得たら(ステップ704)、
a∈Rでは無く(ステップ705)、
a∈Mでも無く(ステップ706)、
i=N−1からi=1までの−1つずつデクリメントするループを開始する(ステップ707〜ステップ710)。
a∈Rでは無く(ステップ708)、
a∈Mでも無く(ステップ709)、
iのループを終了する(ステップ710)。
次に、a∈Rと判定し(ステップ711)、
書き込み権限ありのアクセスであると判定される(ステップ712のYes分岐)。
そして、RからRにリソースa606(x=リソースa606)をコピーして、R上にコピーしたリソースa607(x)に対して、書き込み権限ありのリソースOpen要求を実行する(ステップ720)。
この一連の処理の副作用として、(R−M−M)に属していたリソースa606は、R∩(R−M)に属する形に状態が遷移し、図8のa607(コピーされたa)となる。
また、図8におけるリソースb608のように仮想空間V上に作成されたりコピーされたりするなどして、かつては存在していたが、現在削除されて存在しないリソースについてリソースOpen要求が行われると、図9に示した仮想Open手段105の手順から、
b∈Rでは無く(ステップ705)、
b∈Mと判断され(ステップ706)、
リソースbは仮想空間Vにおいて存在しないというエラーを返し終了する(ステップ721)。
また、図8におけるリソースc609のように、仮想空間Vに実体が存在するが、仮想空間Vには実体が存在しないリソースについて、書き込み権限なしのリソースOpen要求が行われると、図9の仮想Open手段105の手順から、
c∈Rでは無く(ステップ705)、
c∈Mでは無く(ステップ706)、
ループ変数i=N−1から1までのループを開始する(ステップ707)。
c∈Rであると判定し(ステップ708)、
書き込みの権限は無いため(ステップ717のNo分岐)、
リソースR上のリソースc609(x)へのリソースOpen要求を実行する(ステップ718)。書き込みは発生しないため、仮想空間Vに対してリソースc609のコピーは行わない。
図10は、仮想Enum手段106の処理手順を示す流れ図である。対象リソースxが仮想化の対象の場合(ステップ701のYes分岐)、サンドボックス識別子に対する仮想空間Vを得(ステップ702)、ステップ703〜710までのループ変数j=0〜Nまでのループ、ステップ704からステップ709までの各x(x∈R)に関するループ、ステップ705からステップ708までのk=jからNまでのループの3重ループを繰り返す。ステップ706では、
Figure 2010205186
の場合、xに対応するR上の(またはRにコピーされた)要素の実体を列挙値として返し(ステップ707)、kのループを抜ける。
上記具体例に即してみると、仮想空間Vのリソースに対して、仮想空間V上で動作する制御対象プログラム117がリソースEnumの要求を行うと、図10の仮想Enum手段106の処理手順を見ると、jの値を0、1、2、・・・Nと増加させるループを開始する(ステップ703)。
j=0の時、Rの全リソースを列挙するループを開始し、そのリソースをxとし(ステップ704)、kの値をjの値である0から1へと増加させるループを開始し(ステップ705)、j=0、k=0の時、
x∈R∩R−M−Mであるか否かを判定する(ステップ706)。
もし、真ならば(ステップ706のYes分岐)、R上のこのxを列挙値として返し(ステップ707)、kのループを抜けて、xのループの続きを行う。
ステップ706の判定結果が偽であれば(ステップ706のNo分岐)、j=0、k=1、j=0、k=2、・・・と、j=0に対してkをループさせて(ステップ705)、ステップ706の判定を繰り返す。
すべてのRの要素であるリソースを列挙し終えたら、xのループを終了し(ステップ709)、jをループさせて(ステップ710)、以上の処理を繰り返す。
以上の処理をまとめると、図11、図12のようになる。
すなわち、Rの全要素をまず列挙し(j=0)、それがR∩R−M−Mに含まれる時(k=0/図11の901のエリア)、R上のリソースを列挙値として返す。
∩R−Mに含まれる時(k=1/図11の902のエリア)、R上の対応するリソースを列挙値として返す。
∩Rに含まれる時(k=2/図11の903のエリア)、R上の対応するリソースを列挙値として返す。
次に、Rの全要素を列挙し(j=1)、それがR∩R−M−Rに含まれる時(k=1/図11の904のエリア)、R上のリソースを列挙値として返す。
∩R−Rに含まれる時(k=2/図11の905のエリア)はR上の対応するリソースを列挙値として返す。
最後に、Rの全要素を列挙し(j=2)、それがR∩R−R−Rに含まれる時(k=2/図11の906のエリア)は、R上のリソースを列挙値として返す。以上により仮想空間V2の全要素を列挙することができる。
別の列挙のやり方として、
(1)R
(2)(R−M)、
(3)(R−M−M
を列挙するという方法もある。ただし、この方法は、並行的に他のプロセスが書き込み権限ありのリソースOpen要求を行った結果、図11の719、720などの矢印で示される状態遷移が副作用として発生したとき、長いスパン複数回にわたって行われるリソースEnum要求において一貫性を持った列挙を行うことができなくなるという問題がある。
その理由は、例えば、ある仮想空間Vで動作するプロセスがリソースR上でRの全要素を列挙中に、仮想空間Vで動作する他のプロセスが図11の720のようなリソースの状態遷移を伴うリソースOpen要求を行うとR上の要素の数が列挙中に増えてしまうこととなり、一つ一つの要素の列挙操作がたとえそれぞれアトミックであったとしても、Rの複数の要素をすべて列挙するという操作は数え漏れ等が発生してしまう可能性があるため一般的には正確に動作しなくなってしまうからである。
一方、仮想Enum手段106の手順で要素を列挙した場合、たとえ並行的に他のプロセスが、図11の720のようなリソースの状態遷移を伴うリソースOpen要求を行ったとしても、この操作によって、Rの要素に増減は発生しないため、Rの全要素を列挙するステップ(j=0のケース)は影響を受けることが無い。
の全要素を列挙するステップ(j=1のケース)においても、並行して動作する仮想空間Vで動作する他のプロセスによる図11の720や710に示される操作によってRの要素に増減は発生しない。
また、仮想空間Vで動作する他のプロセスによって生じる907、908、909の矢印で示される状態遷移の副作用によっても、Rの要素に変動は無く、またMにも変化は生じないので、
∩R−M−Rや、
∩R−R
といった集合に変化は生じない。
同様に、Rの全要素を列挙するステップ(j=2のケース)においても、並行して動作する仮想空間Vや仮想空間Vで動作する他のプロセスによる720、710、907、908、909に示される状態遷移の副作用によって、R∪Rの集合に変化は生じないので、集合R−R−Rが影響を受けることは無い。
よって、もし並行的に動作する他のプロセスが存在していたとしても、正しく列挙を行うことが仮想Enum手段106の手順では可能である。
仮想Enum手段106の手順において問題となってくるのは、集合演算が複雑である点である。
例えば、R上のリソース(904および905)を列挙するステップにおいて、Rの先頭から順に要素を列挙している最中に、R∩Rの要素が増加するリソースOpen操作907、908、909によって、Rの途中のどこかに要素が追加されてしまう可能性がある。このため、R∩R−M−Rという集合に含まれる要素を正しくすべて数え上げるためには、“−M−R”の部分を除外するために、毎回Rの先頭の要素からスキャンし直すということが必要となる。これは、O(n)のオーダの計算量がかかってしまうアルゴリズムである。
しかしながら、仮想空間VやVで新規リソースの生成やリソース削除が多量に発生しないような状況においては、図11の904、905、906などのエリアに属するリソースの数はRに含まれるリソースの数に対して非常に小さいと考えられ、このような前提条件の下では、仮想Enum手段106におけるリソースの合成処理は全体としてO(n)のオーダで実施することができる。
以下に本実施例の作用効果を説明する。
(1)本実施例によれば、親プログラムがあるサンドボックスまたは仮想空間で実行されている時に、当該親プログラムが子プログラムを起動した時、設定またはユーザの選択に応じて、当該子プロセスを実行させるためのサンドボックスまたは仮想空間を動的に多段的につくることができる。
その理由は、APIフックが子プロセスの起動を捕捉して、子プロセス起動手段が設定情報またはユーザの選択の指示内容に応じてこれから起動する子プロセスを実行させるサンドボックスまたは仮想空間を動的に作るためである。
(2)本実施例によれば、リソースへのアクセス制御のポリシーを子プロセスにおいて親プロセスとは異なるものとすることができる。例えばブラウザやメールソフトを緩い制約のかかったサンドボックスポリシーを適用したサンドボックスで実行させる一方、ブラウザ経由でプログラムやファイルをダウンロード/実行したりメールの添付ファイルを実行したりするときには、より厳しいサンドボックスポリシーを適用したサンドボックスで実行させることができることにある。
その理由は、第1の効果により起動される子プロセスに対して親プロセスとは異なるサンドボックスを新たにつくることができるため、子プロセスに適用されるサンドボックスポリシーデータを、親プロセスとは異なるものにすることができるためである。
(3)本実施例によれば、子プロセスがリソースへの書き込みを行っても、親プロセスが所属する仮想空間に所属するプロセスではそのリソースへの書き込みは行われないように見せかけるリソースの仮想化を、プロセスの親子関係に応じて多段的に作ることができる。例えばブラウザやメールソフトをある仮想空間で実行させる一方、ブラウザ経由でダウンロード/実行したプログラムやファイル、クリックして実行したメールの添付ファイルプログラムが、ファイル等のリソースへの書き込みを行っても、ブラウザやメールソフトが所属する仮想空間に所属するプロセスや、その他の一般のプロセスにとっては、その書き込みは行われていないものとすることができる。
その理由は、効果(1)により、起動される子プロセスに対して、親プロセスとは異なる仮想空間を多段的につくることができ、子プロセスに適用される仮想空間においては、通常空間および1個以上の階層からなる仮想空間のリソースの実体をコピーオンライトでコピーまたは継承して子プロセスの仮想空間のリソースを構成することができるためである。
(4)本実施例によれば、多段的に構成された仮想空間において、仮想化されたリソースの要素の列挙(ファイルシステムにおけるディレクトリの子ファイルたちの列挙、レジストリにおけるサブキーたちの列挙等)を、効果(3)におけるリソースの実体のコピーオンライトが並列的に行われている時にあっても整合性を崩すことなく行うことができ、また複数の仮想空間に存在する全リソースの合成を、新規リソース生成やリソース削除が多量に発生しないような前提条件の下、O(n)のオーダの処理時間で行うことができることにある。
その理由は、リソース実体のコピーオンライトの処理の影響を考慮するとリソースの合成にO(n)のオーダの処理時間がかかってしまうような部分が発生することが、上記前提条件の下では極小となるようリソースを列挙していく順序を工夫しているためである。
(5)本実施例によれば、対象とするアプリケーションソフトウェアの種類によらず汎用的に効果(1)〜(4)が得られる。例えば、インターネットブラウザ、電子メールソフト、インスタントメッセージといったアプリケーションソフトウェアの種類や、そのアプリケーション製造元がどこであるによらずに、効果を得ることができる。
その理由は、子プロセス起動要求、リソースOpen要求、リソースEnum要求等のオペレーティングシステムが備える機能のレベルに介在し、アプリケーションの種類に依存しないアルゴリズムを使い、多段的なサンドボックスおよび仮想空間を実現しているためである。
本発明によれば、機密情報の漏洩を防いだり、悪意を持ったプログラムがコンピュータに害を及ぼしたりすることを防ぐために、プログラムを一定の囲いの中に閉じ込めて実行させるためのセキュリティシステムといった用途に適用できる。
なお、上記の特許文献の各開示を、本書に引用をもって繰り込むものとする。本発明の全開示(請求の範囲を含む)の枠内において、さらにその基本的技術思想に基づいて、実施形態ないし実施例の変更・調整が可能である。また、本発明の請求の範囲の枠内において種々の開示要素の多様な組み合わせないし選択が可能である。すなわち、本発明は、請求の範囲を含む全開示、技術的思想にしたがって当業者であればなし得るであろう各種変形、修正を含むことは勿論である。
101 APIフック
102 サンドボックス識別子記憶部
103 子プロセス起動手段
104 アクセス制御手段
105 仮想Open手段
106 仮想Enum手段
107 プロセス起動ポリシーデータ
107a 親プログラム名
107b 子プログラム名
107c 新規フラグ
107d ポリシー名
108 仮想空間構成記憶部
108a サンドボックス識別子
108b ポリシー名
108c 親サンドボックス識別子
110 仮想空間
111 仮想ファイルシステム
112 仮想レジストリ
113 通常空間
114 ファイルシステム
115 レジストリ
116 制御対象外プログラム(EXE)
117 制御対象プログラム(EXE)
118 システム共有ライブラリ(DLL)
119 OSカーネル
120 キーボード
121 マウス
122 ディスプレイ
123 ネットワークアダプタ
201 デスクトップシェル
203、209 サンドボックス

Claims (24)

  1. 子プロセスの起動時に、プロセス起動ポリシーデータを参照し、前記プロセス起動ポリシーデータの設定情報にしたがって、
    子プロセス用に、
    仮想空間を新たに作るか、
    親プロセスと同じ仮想空間を用いるか、又は、
    通常空間で実行させるか、
    を決定する、情報処理方法。
  2. 子プロセスの起動時に、プロセス起動ポリシーデータを参照し、前記プロセス起動ポリシーデータの設定情報にしたがって、
    子プロセス用に、
    サンドボックスを新たに作るか、
    親プロセスと同じサンドボックスを用いるか、又は、
    サンドボックス外で実行させるか、
    を決定する、情報処理方法。
  3. API(Application Program Interface)フックによって捕捉されたリソースアクセス要求に対して、親プロセスとは独立した仮想空間のリソースを返す、請求項1記載の情報処理方法。
  4. APIフックによって捕捉されたリソースアクセス要求に対して、親プロセスとは異なるサンドボックスポリシーデータを子プロセスに適用し、リソースへのアクセスを制御する請求項2記載の情報処理方法。
  5. リソースのオープン要求に対して、通常空間のリソースおよび親、先祖プロセスの仮想空間のリソースの実体をコピーオンライトでコピーまたは継承したものを、仮想空間のリソースとしてオープン結果として返す、請求項3記載の情報処理方法。
  6. リソースの列挙要求に対して、通常空間のリソースおよび親、先祖プロセスの仮想空間のリソースを合成したものを列挙結果として返す請求項3記載の情報処理方法。
  7. 並列的に他のプロセスがリソースのオープン要求を行ったことにより仮想空間間のリソースの実体のコピーオンライトが発生した場合でも、それに影響をうける仮想空間における列挙要求においてリソース列挙結果の整合性が崩れることがないようにする、請求項6記載の情報処理方法。
  8. 仮想リソース列挙において、仮想空間における新規リソース生成やリソース削除が多量に発生しないような前提条件の下、リソースの合成処理時間をO(n)のオーダで行う、
    請求項6又は7記載の情報処理方法。
  9. プロセス起動のポリシーを設定したプロセス起動ポリシーデータと、
    子プロセスの起動時に、前記プロセス起動ポリシーデータを参照し、前記プロセス起動ポリシーデータの設定情報にしたがって、
    子プロセス用に、
    仮想空間とサンドボックスを新たに作るか、又は
    親プロセスと同じ仮想空間とサンドボックスを用いるか、
    を決定する子プロセス起動手段と、
    を備えた、情報処理装置。
  10. 前記子プロセス起動手段は、新たにサンドボックスと仮想空間を作成する場合、仮想空間を動的に作成し、親子関係と、使用するサンドボックスポリシーデータを仮想空間構成記憶部に記録する、請求項9記載の情報処理装置。
  11. 前記子プロセス起動手段は、起動中の子プロセスにAPIフックを仕掛け、前記子プロセスのサンドボックス識別子記憶部にサンドボックス識別子を記録し、子プロセスを開始させる請求項9記載の情報処理装置。
  12. APIフックで捕捉されたリソースへのアクセス要求に対し、サンドボックス識別子記憶部で識別されるサンドボックスポリシーデータを検索し、アクセス要求のあったリソースが、アクセスが許可されているか否かをサンドボックスポリシーデータの設定情報にしたがって判定するアクセス制御手段を備えた請求項9乃至11のいずれか1項に記載の情報処理装置。
  13. APIフックで捕捉されたリソースオープン要求に対し、前記アクセス制御手段によってオープン要求が許可されたものに関して、仮想化の対象であるか否かを判定した後、前記サンドボックス識別子記憶部で識別される仮想空間構成記憶部の項目を検索し、対応する仮想空間上に実体が作成されたリソースを求め、前記リソース実体又は該実体をコピーしたリソースをオープンする、仮想オープン手段を備えた請求項9乃至12のいずれか1項に記載の情報処理装置。
  14. APIフックで捕捉されたリソース列挙の要求に対し、前記アクセス制御手段によって列挙の要求が許可されたものに関し、仮想化の対象であるか否かを判断した後、前記サンドボックス識別子記憶部で識別される仮想空間構成記憶部の項目を検索し、前記仮想空間構成記憶部の親サンドボックス識別子で形成される仮想空間の親子関係を遡りながら、仮想空間上に実体が作られたリソースを列挙する仮想列挙手段を備えた請求項9乃至13のいずれか1項に記載の情報処理装置。
  15. 前記仮想列挙手段は、仮想空間上に実体が作られたリソースR(jは0〜Nの整数)で列挙された項目xが仮想空間Vとしての項目として有効なものであるか否か判定するために、Rの要素が仮想空間V(kはjからNの整数)にコピーした状態となっているか否かを判定し、コピーした状態の場合、仮想空間VのRにコピーされた要素xに対応する実体を、仮想空間Vで有効な項目であるものとして、リソース列挙要求の結果として返す、請求項14記載の情報処理装置。
  16. 前記子プロセス起動手段は、子プロセスを通常空間においてサンドボックス外で実行させるか決定する請求項9記載の情報処理装置。
  17. 子プロセスの起動時に、プロセス起動のポリシーを設定したプロセス起動ポリシーデータを参照し、前記プロセス起動ポリシーデータの設定情報にしたがって、
    子プロセス用に、
    仮想空間とサンドボックスを新たに作るか、又は
    親プロセスと同じ仮想空間とサンドボックスを用いるか、
    を決定する子プロセス起動処理をコンピュータに実行させるプログラム。
  18. 前記子プロセス起動処理は、新たにサンドボックスと仮想空間を作成する場合、仮想空間を動的に作成し、親子関係と、使用するサンドボックスポリシーデータを仮想空間構成記憶部に記録する、請求項17記載のプログラム。
  19. 前記子プロセス起動処理は、起動中の子プロセスにAPIフックを仕掛け、前記子プロセスのサンドボックス識別子記憶部にサンドボックス識別子を記録し、子プロセスを開始させる請求項17記載のプログラム。
  20. APIフックで捕捉されたリソースへのアクセス要求に対し、サンドボックス識別子記憶部で識別されるサンドボックスポリシーデータを検索し、アクセス要求のあったリソースが、アクセスが許可されているか否かをサンドボックスポリシーデータの設定情報にしたがって判定するアクセス制御処理を前記コンピュータに実行させる請求項17乃至19のいずれか1項に記載のプログラム。
  21. APIフックで捕捉されたリソースオープン要求に対し、前記アクセス制御手段によってオープン要求が許可されたものに関して、仮想化の対象であるか否かを判定した後、前記サンドボックス識別子記憶部で識別される仮想空間構成記憶部の項目を検索し、対応する仮想空間上に実体が作成されたリソースを求め、前記リソース実体又は該実体をコピーしたリソースをオープンする、仮想オープン処理を前記コンピュータに実行させる請求項17乃至20のいずれか1項に記載のプログラム。
  22. APIフックで捕捉されたリソース列挙の要求に対し、前記アクセス制御手段によって列挙の要求が許可されたものに関し、仮想化の対象であるか否かを判断した後、前記サンドボックス識別子記憶部で識別される仮想空間構成記憶部の項目を検索し、前記仮想空間構成記憶部の親サンドボックス識別子で形成される仮想空間の親子関係を遡りながら、仮想空間上に実体が作られたリソースを列挙する仮想列挙処理を前記コンピュータに実行させる請求項17乃至20のいずれか1項に記載のプログラム。
  23. 前記仮想列挙処理は、仮想空間上に実体が作られたリソースR(jは0〜Nの整数)で列挙された項目xが仮想空間Vとしての項目として有効なものであるか否か判定するために、Rの要素が仮想空間V(kはjからNの整数)にコピーした状態となっているか否かを判定し、コピーした状態の場合、仮想空間VのRにコピーされた要素xに対応する実体を、仮想空間Vで有効な項目であるものとして、リソース列挙要求の結果として返す、請求項22記載のプログラム。
  24. 前記子プロセス起動処理は、子プロセスを通常空間においてサンドボックス外で実行させるか決定する請求項17記載のプログラム。
JP2009052712A 2009-03-05 2009-03-05 情報処理装置と方法とプログラム Active JP5423063B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2009052712A JP5423063B2 (ja) 2009-03-05 2009-03-05 情報処理装置と方法とプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009052712A JP5423063B2 (ja) 2009-03-05 2009-03-05 情報処理装置と方法とプログラム

Publications (2)

Publication Number Publication Date
JP2010205186A true JP2010205186A (ja) 2010-09-16
JP5423063B2 JP5423063B2 (ja) 2014-02-19

Family

ID=42966566

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009052712A Active JP5423063B2 (ja) 2009-03-05 2009-03-05 情報処理装置と方法とプログラム

Country Status (1)

Country Link
JP (1) JP5423063B2 (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014109999A (ja) * 2012-12-04 2014-06-12 Fujitsu Ltd 情報処理装置、方法及びプログラム
WO2018078902A1 (ja) 2016-10-31 2018-05-03 株式会社ソリトンシステムズ プログラム動作監視制御装置、分散オブジェクト生成管理装置、記録媒体、及びプログラム動作監視システム
JP2018169683A (ja) * 2017-03-29 2018-11-01 アドソル日進株式会社 コンピュータ装置
CN111857656A (zh) * 2020-06-12 2020-10-30 北京百度网讯科技有限公司 数据处理方法、装置、电子设备及存储介质

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7391802B2 (ja) 2020-09-11 2023-12-05 株式会社東芝 情報処理装置、情報処理方法及びコンピュータプログラム

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004518193A (ja) * 2001-01-13 2004-06-17 キネティック リミテッド コンピュータ・システム保護
JP2006065493A (ja) * 2004-08-25 2006-03-09 Ntt Docomo Inc 実行装置、実行方法及び実行プログラム
JP2008500653A (ja) * 2004-06-29 2008-01-10 インテル・コーポレーション サンドボックス法によるコンピュータセキュリティ向上方法
WO2008050512A1 (fr) * 2006-09-29 2008-05-02 Nec Corporation Dispositif, procédé et programme de commande de démarrage
JP2010044613A (ja) * 2008-08-13 2010-02-25 Fujitsu Ltd ウイルス対策方法、コンピュータ、及びプログラム

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004518193A (ja) * 2001-01-13 2004-06-17 キネティック リミテッド コンピュータ・システム保護
JP2008500653A (ja) * 2004-06-29 2008-01-10 インテル・コーポレーション サンドボックス法によるコンピュータセキュリティ向上方法
JP2006065493A (ja) * 2004-08-25 2006-03-09 Ntt Docomo Inc 実行装置、実行方法及び実行プログラム
WO2008050512A1 (fr) * 2006-09-29 2008-05-02 Nec Corporation Dispositif, procédé et programme de commande de démarrage
JP2010044613A (ja) * 2008-08-13 2010-02-25 Fujitsu Ltd ウイルス対策方法、コンピュータ、及びプログラム

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014109999A (ja) * 2012-12-04 2014-06-12 Fujitsu Ltd 情報処理装置、方法及びプログラム
WO2018078902A1 (ja) 2016-10-31 2018-05-03 株式会社ソリトンシステムズ プログラム動作監視制御装置、分散オブジェクト生成管理装置、記録媒体、及びプログラム動作監視システム
JP2018169683A (ja) * 2017-03-29 2018-11-01 アドソル日進株式会社 コンピュータ装置
CN111857656A (zh) * 2020-06-12 2020-10-30 北京百度网讯科技有限公司 数据处理方法、装置、电子设备及存储介质
CN111857656B (zh) * 2020-06-12 2023-08-18 北京百度网讯科技有限公司 数据处理方法、装置、电子设备及存储介质

Also Published As

Publication number Publication date
JP5423063B2 (ja) 2014-02-19

Similar Documents

Publication Publication Date Title
US10187417B2 (en) Methods and apparatus for application isolation
JP4676744B2 (ja) セキュリティ関連プログラミング・インターフェース
US10607007B2 (en) Micro-virtual machine forensics and detection
JP6248153B2 (ja) 信頼レベルのアクティブ化
US9208328B2 (en) Security system and method for operating systems
US10664592B2 (en) Method and system to securely run applications using containers
US9292328B2 (en) Management of supervisor mode execution protection (SMEP) by a hypervisor
US10528735B2 (en) Malicious code protection for computer systems based on process modification
CA2761563C (en) Annotating virtual application processes
US6907396B1 (en) Detecting computer viruses or malicious software by patching instructions into an emulator
US9922192B1 (en) Micro-virtual machine forensics and detection
Zhauniarovich et al. Moses: Supporting and enforcing security profiles on smartphones
CN110647754A (zh) 用于数据机密性和完整性的文件系统视图分离
US20150332043A1 (en) Application analysis system for electronic devices
US20060265756A1 (en) Disk protection using enhanced write filter
JP5423063B2 (ja) 情報処理装置と方法とプログラム
JP2010176660A (ja) 仮想ハードディスクへのファイル属性情報の安全な管理の拡張
JP7255681B2 (ja) 実行制御システム、実行制御方法、及びプログラム
JP2013125497A (ja) 情報処理装置、情報処理方法およびプログラム
US20230099057A1 (en) Techniques for managing software applications
US20240176874A1 (en) Preserving dll hooks
Willburn Remote Monitoring of Memory Data Structures for Malware Detection in a Talos II Architecture
Heinl et al. Android security
Griffiths et al. Fireguard-A secure browser with reduced forensic footprint
Cooper et al. Development and Mitigation of Android Malware

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20120208

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130327

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130514

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130716

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130806

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20131007

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20131029

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20131111

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

Ref document number: 5423063

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150