JP5847839B2 - セキュリティサンドボックス - Google Patents

セキュリティサンドボックス Download PDF

Info

Publication number
JP5847839B2
JP5847839B2 JP2013544578A JP2013544578A JP5847839B2 JP 5847839 B2 JP5847839 B2 JP 5847839B2 JP 2013544578 A JP2013544578 A JP 2013544578A JP 2013544578 A JP2013544578 A JP 2013544578A JP 5847839 B2 JP5847839 B2 JP 5847839B2
Authority
JP
Japan
Prior art keywords
opcode
instruction
instruction set
processor
mode
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.)
Expired - Fee Related
Application number
JP2013544578A
Other languages
English (en)
Other versions
JP2013546100A (ja
Inventor
スプラドリン ジェレミア
スプラドリン ジェレミア
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.)
Microsoft Corp
Original Assignee
Microsoft 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 Microsoft Corp filed Critical Microsoft Corp
Publication of JP2013546100A publication Critical patent/JP2013546100A/ja
Application granted granted Critical
Publication of JP5847839B2 publication Critical patent/JP5847839B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/53Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Executing Machine-Instructions (AREA)
  • Storage Device Security (AREA)

Description

最近のオペレーティングシステムは、一般に、少なくとも2つの1次セキュリティ層から構成される。1つのセキュリティ層(たとえば、アプリケーション層)は、その他のより高い特権的層(たとえば、カーネル層)より少ない特権を有する。カーネル層は、直接に、または仮想化の場合にはハイパーバイザで、基盤となるハードウェアとインターフェースするので、より高い特権的レベルを有する。多くのプロセッサは、いくつかのオペレーティングシステムが利用することができる2つより多い特権的レベルを提供する。たとえば、いくつかのオペレーティングシステムは、アプリケーション層とカーネル層の間で実行されるデバイスドライバを有し得る。
従来のオペレーティングシステムおよびCPU(中央処理ユニット)により、同じプロセッサ命令セットがすべての層で使用可能になっている。すなわち、オペコード(オペレーションコード)の1つのグローバルセットが存在する。たとえば、アプリケーションレベルで実行されるプロセスは、カーネルなどのより高い特権的レベルで実行されるプロセスによって使用される同じ機械命令のうちのいくつかを使用することになる。層間の意味論的区別は、プロセッサで実行されるソフトウェア、および、ある程度ハードウェアにあり、現在の特権的レベルに基づいて特定の機能へのアクセスを制限または拒否することになる。
一方、この方法の問題は、不正アプリケーションまたは悪意のコードが、対応する現在の実行コンテキストの特権的レベルを上げ、それによって、オペレーティングシステムまたはコンピュータ内のより高い特権的リソースへのアクセス権を獲得することである。たとえば、バッファオーバフロー条件が悪意のあるコードによって不当に利用される場合を考える。オーバフローエリア内の影響を受けるまたは関連するコードを実行することが許可されるべきかどうかを低レベルで認識することは難しくなる。高レベルの抽象化では、いくつかのコードが無許可であることが明白であり得るが、CPUレベルなどの低レベルの抽象化では、コードが許可されているかを見分けることは不可能である。一般に、悪意のあるコードのスペース外のコード(たとえば、オーバーランスペース内の特権的コード)が非特権的プロセスの制御下にあることを確実に知る方法は存在していない。
従来の方法は、まず第1に悪意のあるコードがシステム上で実行されないように、アプリケーション層を強固にすることによってこの状態を防ぐことを試みる。高度なオペレーティングシステムセキュリティスキームは言うまでもなく、たとえば、信頼できるコードシステムおよびコード走査が使用されている。あるいは、システムの動作を見ること、およびその動作を何らかのヒューリスティックと比較することによって、悪意のあるコードがそのシステム上で実行されているかを非確定的に判定しようとするあいまいな解決法が存在する。たとえば、ある特定のコールシーケンスパターンが疑わしいことがある。しかし、それが有効であるかまたは悪意があるかを判定するために、カーネル内で実行される現在のコードを確定的に評価することができる解決法は存在していない。
互換性のない(incompatible)命令セットを使用して、実行可能コードを隔離または「サンドボックス」することに関連する技術を、以下で説明する。
以下の概要は、以下の「発明を実施するための形態」で説明するいくつかの概念を紹介するためにのみ含まれる。本概要は、包括的ではなく、添付の特許請求の範囲に記載される特許請求される主題の範囲を線引きするものでもない。
本明細書に記載の実施形態は、スレッド、プロセス、プロテクションドメインなどの異なる実行ユニットの異なる命令セットの使用に関する。実行ユニットは、命令セットと関連し得る。命令セットは、相互に排他的オペコードを有することができ、1つの命令セット内のオペコードが他の命令セット内に含まれない。所与の実行ユニットを実行するとき、プロセッサは、その現在の実行ユニットに対応する命令セット内の命令の実行のみを許す。その実行ユニットが、別の命令セット内の命令を直接実行しようとする場合、障害が発生する。
多数の付随する特徴が、添付の図面に関連して考慮される以下の詳細な説明を参照して説明される。
本明細書は、添付の図面を参照して以下の詳細な説明からよりよく理解されよう。同様の参照番号が添付の説明において同様の部分を指定するために使用される。
プロセッサを示す図である。 保護リングと関連して命令セットを示す図である。 例示的命令セットを示す図である。 命令を取り出し実行するためのプロセスを示す図である。 異なる保護リング内で実行される実行ユニットを示す図である。 メッセージングシステムを示す図である。 IPCメッセージングを示す図である。
「背景技術」で述べたように、コンピュータセキュリティの分野では、悪意のあるコードを実行するのを防ぐ問題を解決するための多数の試みが存在している。従来の解決法は、一般に2つに分類される:静的保護(static protection)および動的検出(dynamic detection)。静的保護解決法は、有効なコードのみが実行されるようにすることをを目標としている。静的保護の一例は、暗号で署名されたバイナリのみをロードする、Media Foundation Protected Media Path(PMP)である。動的保護解決法は、システムの動的動作を見て、セキュリティ違反を識別することを目標としている。動的検出の一例は、機械の動作を観測し、ウェブページ要求の後に新しいポートが開かれるなどの任意の不規則な動作パターンの出現を識別しようと試みるマルウェア検出コードである。動的および静的手法を組み合わせることも行われている。しかし、いずれの方法も、単独でまたは他と組み合わせて、異なる特権的レベルを有する異なるコードベースの分離を保証することはできていない。従来の方法では、特権保護における違反は、無許可の特権コードの実行を可能にする。
本明細書に記載の技法は、同一のコンピュータ、オペレーティングシステム、および/またはアプリケーションプラットフォーム上で相違する(divergent)かつ互換性のない命令セットを提供することによって、コード分離が生じることを可能にする。これらの技法は、実行ユニットが1つの命令セットのみからの命令を直接に実行できるようにすることによって、外部のまたは信頼できない実体と対話するコードが効果的にサンドボックスされることを可能にする(本明細書では、実行ユニットは、スレッド、プロセス、階層的プロテクションドメイン(たとえば、保護リング)、または同等のものを示し、プロセスは、スレッドの仮想実行環境を提供する)。特定のプロセスまたはスレッドもしくはリング(すなわち、実行ユニット)が破られた(breach)場合、破られた実行ユニットと明示的に関連し、その結果として別の(恐らくより能力のある)命令セット内の命令をその機械上で実行することができない、サンドボックスされた命令セットで破られることになる。実際には、1つの命令セットと関連し、それを実行するコードは、その命令セットを介して使用可能な機能およびリソースのみにアクセス権を有する。その命令セットが、制限され、かつ、様々な感知可能なまたは特権的なリソースへのアクセス権を許さない場合、その命令セットで実行されるプロセスは、ある特定の特権的命令を実行する能力を有さない。概念的には、そのプロセッサは、2つの異なる言語を話すものとして考えることができ、1つの状態に関連する実行ユニット(およびそれらの実行ユニットのみ)は、その状態の言語を話すことしかできない。
ここで、汎用プロセッサの考察について説明を進め、命令セットがどのように実行ユニットと関連付けられるかの考察を続ける。次いで、例示的命令セットを説明する。命令がどのように復号されるかの説明を提供し、次いで、異なる命令セットを有するプロセスまたはコンテキストの間で渡されるメッセージの考察が続く。
図1は、汎用プロセッサ100を示す。本プロセッサは、任意のタイプ、たとえばRISC(縮小命令セットコンピュータ)またはCISC(複雑命令セットコンピュータ)プロセッサ、でもよい。さらに、プロセッサ100は、マイクロコードを使用して、直接的にまたは間接的に命令を実装することができる。プロセッサ100は、CPUキャッシュ102、算術論理ユニット(ALU)104、およびプログラムカウンタ106などの様々な知られている構成要素を有する。モードビット108は、プロセッサ100が動作している現在のモード、および、その結果として、どの命令セットがアクティブかを示す。一実施形態で、そのモードは、特権的レベル(たとえば、リング)と一致するが、プロセッサ100がモードと命令セットを関連付ける手段を有することで十分である。命令レジスタ110は、実行されている現在の命令を保持する。通常の命令処理サイクル112は、CPUキャッシュ102から命令を取り出すステップと、命令レジスタ110にそれを記憶させるステップを含み得る。命令デコーダ114は、次いで、恐らくまたレジスタおよびメモリを操作して命令レジスタ110内の命令によって指定されたアドレスをロードし、命令レジスタ110内の命令のオペコード(オペレーションコード)を復号する。その命令はALU104によって実行される。
一実施形態で、ALU104は、2つの異なる命令セット、命令セットX1 116および命令セットX2 118を実装する。プロセッサ100で実行するコードの観点からすると、ALU104は、透過的である。プロセッサ100は、所与の命令の呼出しが、プロセッサ100が何らかのタイプの対応する動作(たとえば、レジスタを追加すること、レジスタを無効にすることなど)を実行することによって応答する結果をもたらすことになる、実行するコードとの「契約」を有する。しかし、プロセッサ100の規定またはプロトコルは、現在のモード(モードビット108による)に対応する命令セット内の命令のみが実行されることになるというものである。
一実施形態で、命令セット分離は、命令を復号するプロセスで黙示的に提供される。命令デコーダ114は、モードビット108とリンクされる。すなわち、命令デコーダ114の論理は、モードビット108の内容によって知らされる。プロセッサが、命令セットX1 116内のまたは命令セットX1 118内の有効な命令として認識することになるかどうかは、モードビット108で指示される現在のモードに依存する。具体的には、命令デコーダ114が認識することになる命令は、モードビット108に依存する。たとえば、モードビット108がモードは「0」であると指示するとき、その場合、命令デコーダ114は、現在の命令を復号できず、「無効オペコード例外」または同様のものを発生させ得る。
別の実施形態では、命令セット分離は、ALU104内で提供される。ALU104は、モードビット108を見て、命令要求が許可されるべきかどうかを判定する。さらに別の実施形態で、命令ローダ120は、命令を命令レジスタ110にロードするとき、どの命令セットにその命令が属するかを示す命令内のビットを見ることができる。命令ローダ120は、モードビット108によって指示される現在のモードとその命令が属する命令セットの間のミスマッチが存在する場合、命令をロードすることを拒否することができる。命令の1つのセットが1つのモードで使用可能であり、命令の別の相互に排他的なセットが別のモードで使用可能であるという効果とともに、命令が現在のモードに基づいてフィルタをかけられ得るまたは限定され得る、命令をロードおよび実行するプロセス内の多数のポイントが存在することが理解されよう。
モードビットは、異なる命令セットを処理するための1つの方法であるが、任意のレジスタが使用可能である。さらに、命令セットまたは実行ユニットのモードは、単純に、管理技法である。命令セットは、概して、静的で、数が限られるので、オペレーティングシステムは、選択的に、または体系的に、異なる実行ユニットを異なる命令セットと関連付ける。たとえば、アクティブなプロセステーブルは、異なるプロセスの命令セットを指示するためのフラグを有する「命令セット」欄を有し得る。オペレーティングシステムが、テーブル内のプロセスを実行し始めるとき、そのオペレーティングシステムは、対応するプロセステーブル項目内のモードにしたがって、モードビットをセットする。
図2は、概念的サンドボックス120、122、124に関連して、命令セットX1 116、X2 118、およびX3 140を示す。図2に示す実施形態で、プロセッサは、実行ユニットがそれらの関連する命令セット内の命令のみを実行できるようにすることによって、実行分離を提供する。サンドボックス120(たとえば、モードビット108で識別されるモード)内の実行ユニット120A、120B、120Cについて、命令セットX1 116のみが有効である。サンドボックス122内で、実行ユニット122A、122B、122Cは、命令セットX2 118内の命令のみを実行することを許可され、サンドボックス124内の実行ユニット124A、124B、124Cは、命令セットX3 140内の命令を実行することのみを許可される。少なくとも2つのモードまたはサンドボックスおよび2つの対応する命令セットが必要とされるが、3つ以上が使用され得ることに留意されたい。
一実施形態で、サンドボックスは、階層的プロテクションドメインまたは保護リングに相当し得る。この場合、プロセッサは、2つの命令セットを有することができ、1つの命令セットは1つのプロテクションドメイン(たとえば、リング0)のみと関連し(かつそれについて有効であり)、その他の命令セットは、複数の他のプロテクションドメインと関連する(たとえば、命令セットX2 118は、リング1 144およびリング2 146と関連する)。
図3は、例示的命令セットを示す。当技術分野では知られているように、機械命令は、レジスタ、情報ビットなどの他のデータとともにオペコードで構成される。説明のために、図3は、それぞれ、命令セットX1 116、X2 118、ならびにX3 140のオペコード160、162、および164のみを示す。その命令セットにかかわらず、各オペコードは、グローバルに一意である。すなわち、オペコードまたは命令デコーダ114は、一意に各オペコードを復号することになる。さらに、オペコード160、162、および164は、相互に排他的である。一実施形態で、1つの命令セット内のオペコード(および、それが表す命令)は、他の命令セット内では見つからない。説明のために、それぞれの命令セットからの命令から成る、アプリケーション(1つまたは複数の実行ユニット)が示される。たとえば、アプリ1 166およびアプリ2 168は、命令セットX1 116からの命令のみを有する。アプリ3 170で示されるアプリケーションは、命令セットX2 118からの命令のみを有し(対応するオペコード172によって示すように)、アプリ4 174は、命令セットX3 140内のオペコード/命令のみを有する。オペレーティングシステムは、どのアプリケーションまたは実行ユニットがどのモードまたは命令セットと関連するかを追跡し、アプリケーションまたは実行ユニットに関連する命令セットは、その実行ユニットがオペレーティングシステムによってロードおよび実行されるときの実行時条件に依存することになる。
一実施形態では、命令セットおよびオペコードは、相互に排他的である必要はない。無害な命令は、同じ命令セット内で使用することができ、その命令セットは、セキュリティリスクを提示する命令に関してのみ総合的に排他的でもよい。さらに、命令セットは、相互に排他的である命令サブセット(命令セットでもある)とオーバーラップする命令のサブセットの両方から成り得る。
相互に排他的オペコードを実装する1つの方法は、各オペコード内の第1のビットシーケンス176を各命令セットについて固有に、かつある命令セット内の各命令について同じにすることである(必ずしもその命令内の第1のビットではなく、ビットシーケンスは1つのビットでもよい)。たとえば、命令セットX1 116のオペコード160の最初の2つのビットは、すべて、「01」を含む。同様に、オペコード162は第1のビットシーケンス内に「10」を有し、オペコード164は第1のビットシーケンス内に「00」を有する。この実施形態では、その命令セット内の命令を一意に識別する各命令内の第2のビットシーケンス178も有することが便利であり得る。この方法は、異なる命令セット内の2つの命令が、両方ともALU104内の同じ回路を使用して都合よく実装されるが、なお異なるオペコードを有する相異なる動作として存在することを可能にし得る。すなわち、第1のADD命令は、命令セットX1 116内にオペコード「01000001」を有することができ、命令セットX2 118内の別のADD命令はオペコード「10000001」を有することができる。両方は互いに異なるオペコードを有する技術的に異なる命令であるが、ADDは害のない動作であると見なされるので、その機能は複数の命令セット内で使用可能でもよい場合があり得る。一実施形態で、1つのアプリケーションまたはプロセスは、異なる命令セットのコードを有する異なるセクションを有することができ、オペレーティングシステムは、以下に説明するように、互換性のない命令の異なるセットを使用する実行ユニット間で切り替えてコンテキストを処理することになる。
図4は、命令を取り出し、実行するためのプロセスを示す。本プロセスは、実行されることになる次の命令を取り出すことによって、ステップ200で開始する。その命令は、次いで、ステップ202で復号される。前述のように、プロセッサは、現在アクティブな命令セットに対応するオペコードを有する命令のみを実装または認識する。したがって、ステップ204で命令を復号するエラーが存在する場合、次いで、何らかの障害措置が、ステップ206で生じる。たとえば、中断が生成される、現在の実行コンテキストが停止されるなど。命令が上手く復号された場合、次いでステップ208で、その命令は、プロセッサのALUまたは同等のものによって実行される。
前述のように、特定の命令セットの命令のみを所与のCPUモードで実行できるようにする他の方法が存在する。たとえば、命令ローディングプロセス中に、スクリーニングステップが追加されて、命令セット(または、命令セットに対応する動作モード)にオペコードを関連付けるテーブルに対する入力オペコードをチェックすることができる。別の例として、命令制限が、命令を実行するときに、実行され得る。命令が正しく復号された場合でも、ALU内の実行論理は、現在のモードが現在の命令について正しいものであるかどうかをテストすることができる。
図5は、異なる保護リング内で実行する実行ユニットを示す。この実施形態では、前述のように、実行ユニットは、スレッド、プロセスなどの実行の任意のユニット、または、階層的プロテクションドメイン、プロテクションドメインなどのその封じ込めのユニットである。実行ユニット230は、リング3 232(たとえば、X2)のみについて有効な第1の命令セットからの様々な命令231から各々構成される。実行ユニット230は、リング3 232で実行する。実行ユニット234は、実行ユニット234があるリング0 236についてのみ有効な別の命令セット(たとえば、X1)内の命令235のみから各々構成される。オペレーティングシステムが、実行ユニット230、234の間でプロセッサ実行時間を割り当てるとき、そのオペレーティングシステムは、リング0 236から、現在のプロテクションドメインを管理する。そのプロセッサが命令231および命令235を実行するとき、現在のリングの命令セット内の命令のみが実際に実行可能である。不正実行ユニット230がその特権的レベルをリング0 236に上げる方法を見つけた場合でも、リング0がアクティブなプロテクションドメインであるとき、不正実行ユニット230の命令231は実行することさえできないことになるので、不正実行ユニット230は、特権における対応する利得を利用することはできないことになる。実際には、各実行ユニット230は、リング3 232でロックされ、リング0の命令セット内に固有の機能のうちの少なくともいくつかを実行することはできない。
図6は、メッセージングシステムを示す。1つの命令セットを実行するプロセス(またはスレッド)が別の命令セットを実行する別のプロセスの機能を呼び出せるようにすることは、有用であり得る。たとえば、プロセス2 280が第1の命令セットを有するコンテキスト2 282内で実行する場合、そのとき、プロセス2 280は、IPCメッセージングサービス288を使用し、何らかの外部コード、たとえば、コンテキストl 286内で実行する(および、別個の命令セットを実行する)カーネルプロセス284を間接的に呼び出すことができ得る。
図7は、IPCメッセージングサービス288がいかにしてプロセス2 280とカーネル284の間の実行に介在するかを示す。ステップ290で、プロセス2 280が、OS(オペレーティングシステム)コールを引き起こす。ステップ292で、プロセス2 280が、IPCメッセージングサービス288内のメッセージ待ち行列内の対応するメッセージを通知する。ステップ294で、カーネル284は、IPCメッセージングサービス288にそれが次のメッセージのために利用可能であることを知らせる。IPCメッセージングサービス288は、ステップ296で、その待ち行列からそのメッセージをポップし、カーネル284にそのOSコールに関するメッセージを渡すことによって、応答する。カーネル284は、ステップ298で、正しい命令セットを使用し、そのOSコールを実行する。結果は、ステップ300でIPCメッセージングサービス288に通知される。ステップ302で、IPCメッセージングサービスが、その結果を取得し、ステップ304で、その結果をプロセス2 280に渡して返す。もちろん、そのメッセージの受け渡し、ステップ298での実行は、プロセス2 280が適切な許可を有する場合にのみ許される。別の実施形態では、IPCメッセージングは、別個の実行ユニットが実行コンテキスト間で情報をやりとりすることを可能にするロックを有する共用メモリを使用し、実装される。この実施形態では、カーネルまたはオペレーティングシステムが、共用メモリを監視し、メッセージがその共用メモリ内にあるときに、実行ユニットに知らせる。
前述の実施形態で、HTTP(ハイパテキスト転送プロトコル)要求をパーズするものなどの危険な実行コンテキストまたはプロセスは、それらのプロセスを破るために、そのHTTPパーサの命令セット内の命令のみが使用可能であり、かつ適切に制限される場合、その命令セットは、様々なシステムリソースのアクセスまたは操作を可能にすることができないので、実際にサンドボックスすることが可能である。さらに、オペレーティングシステムは、異なる命令セットを有するセクションで構成された2値のローディングを処理すること、その異なる命令セットの間でコンテキスト切替えを処理すること、および、その異なる実行コンテキストのプロテクションドメインを管理することによって、前述のように、命令セットを有するプロセッサを処理することができる。
(結論)
前述の実施形態および特徴は、揮発性または非揮発性コンピュータまたはデバイス可読媒体に記憶された情報の形で実現することができる。これは、光記憶装置(たとえば、コンパクトディスク読取り専用メモリ(CD−ROM))、磁気媒体、フラッシュ読取り専用メモリ(ROM)、または、デジタル情報を記憶する任意の現在のまたは未来の手段などの媒体を少なくとも含むと考えられる。記憶される情報は、機械実行可能命令(たとえば、コンパイル済みの実行可能2進コード)、ソースコード、バイトコード、または、コンピュータデバイスが前述の様々な実施形態を実行することを可能にするまたはそのように構成するために使用することができる任意の他の情報の形態でもよい。これはまた、実施形態を遂行するプログラムの実行中の中央処理ユニット(CPU)命令などの情報を記憶するランダムアクセスメモリ(RAM)および/または仮想メモリなどの揮発性メモリ、ならびにプログラムまたは実行可能ファイルをロードおよび実行できるようにする情報を記憶する非揮発性媒体を少なくとも含むと考えられる。それらの実施形態および特徴は、携帯デバイス、ワークステーション、サーバ、モバイルワイヤレスデバイスなどを含む、任意のタイプのコンピュータデバイス上で実行することができる。

Claims (6)

  1. プロセッサ上で実行するための実行可能命令をサンドボックスする方法であって、
    前記プロセッサに命令セットを実装するステップであって、前記プロセッサは第1の命令セットおよび第2の命令セットの両方同時に実装するようには制御されないものであり、前記第1の命令セットは第1のオペコードを有する第1の命令で構成され、前記第2の命令セットは第2のオペコードを有する第2の命令で構成され、前記第1の命令セットは、前記プロセッサが第1のモードにあるときにのみ、関連付けられかつ実装され、前記第2の命令セットは、前記プロセッサが第2のモードにあるときにのみ、関連付けられかつ実装される、ステップと、
    前記プロセッサ上で第1の実行ユニットおよび第2の実行ユニットを実行するステップであって、前記第1の実行ユニットはそれぞれ、複数の前記第1の命令のみから構成され、前記第2の実行ユニットはそれぞれ、複数の前記第2の命令のみから構成される、ステップと、
    前記第1の実行ユニットおよび前記第2の実行ユニットを実行している間の任意の所与の時間に、命令を復号しているとき、前記プロセッサが前記第1のモードで動作している間に有効な命令として第1のオペコードのみを認識し、前記プロセッサが前記第2のモードで動作している間に有効な命令として第2のオペコードのみを認識するステップと
    を含み、
    前記第1のオペコードの各々および前記第2のオペコードの各々は所定のビットシーケンスを含み、前記第1のオペコードの各々の前記所定のビットシーケンスは、前記第1のオペコードの各々が前記第1の命令セットからのものであることを示す第1の値を有し、前記第2のオペコードの各々の前記所定のビットシーケンスは、前記第2のオペコードの各々が前記第2の命令セットからのものであることを示す、前記第1の値とは異なる第2の値を有し、前記第1のオペコードは前記第2のオペコードと相互に排他的である、方法。
  2. 前記プロセッサによって現在実装されている前記命令セットは、現在の実行コンテキストを変更する実行コンテキスト切替え中に変わる請求項に記載の方法。
  3. 前記第1のオペコードまたは前記第2のオペコードのいずれか一方のみが、任意の所与の時間に有効なオペコードとして前記プロセッサによって認識される請求項1に記載の方法。
  4. 前記第1のオペコードが前記プロセッサによって現在認識されているとき、かつ第2のオペコードが実行を試みられるとき、前記プロセッサのデコーダは前記第2のオペコードを復号できない請求項に記載の方法。
  5. プロセッサであって、
    命令セットを実装しここで、前記プロセッサは第1の命令セットおよび第2の命令セットの両方を同時に実装するようには制御されないものであり、前記第1の命令セットは第1のオペコードを有する第1の命令で構成され、前記第2の命令セットは第2のオペコードを有する第2の命令で構成され、前記第1の命令セットは、前記プロセッサが第1のモードにあるときにのみ、関連付けられかつ実装され、前記第2の命令セットは、前記プロセッサが第2のモードにあるときにのみ、関連付けられかつ実装され、
    第1の実行ユニットおよび第2の実行ユニットを実行し、ここで、前記第1の実行ユニットはそれぞれ、複数の前記第1の命令のみから構成され、前記第2の実行ユニットはそれぞれ、複数の前記第2の命令のみから構成され、
    前記第1の実行ユニットおよび前記第2の実行ユニットを実行している間の任意の所与の時間に、命令を復号しているとき、前記プロセッサが前記第1のモードで動作している間に有効な命令として第1のオペコードのみを認識し、前記プロセッサが前記第2のモードで動作している間に有効な命令として第2のオペコードのみを認識する、
    よう構成され、
    前記第1のオペコードの各々および前記第2のオペコードの各々は所定のビットシーケンスを含み、前記第1のオペコードの各々の前記所定のビットシーケンスは、前記第1のオペコードの各々が前記第1の命令セットからのものであることを示す第1の値を有し、前記第2のオペコードの各々の前記所定のビットシーケンスは、前記第2のオペコードの各々が前記第2の命令セットからのものであることを示す、前記第1の値とは異なる第2の値を有し、前記第1のオペコードは前記第2のオペコードと相互に排他的である、プロセッサ。
  6. 少なくとも第1のモードおよび第2のモードを提供するプロセッサによって実行される方法であって、
    前記第1のモードと関連する第1の実行ユニットを実行するステップと、
    前記第2のモードと関連する第2の実行ユニットを実行するステップと、
    前記プロセッサが前記第1のモードに設定されている間に任意の実行ユニットが現在実行されている間、第1の命令セット内の第1の命令のみを実行できるようにするステップであって、前記第1の命令セットは第1のオペコードを有する前記第1の命令で構成され、前記第1の実行ユニットはそれぞれ、複数の前記第1の命令のみから構成される、ステップと、
    前記プロセッサが前記第2のモードに設定されている間に任意の実行ユニットが実行されている間、第2の命令セット内の第2の命令のみを実行できるようにするステップであって、前記第2の命令セットは第2のオペコードを有する前記第2の命令で構成され、前記第2の実行ユニットはそれぞれ、複数の前記第2の命令のみから構成される、ステップ
    を含み、
    前記第1のオペコードの各々および前記第2のオペコードの各々は所定のビットシーケンスを含み、前記第1のオペコードの各々の前記所定のビットシーケンスは、前記第1のオペコードの各々が前記第1の命令セットからのものであることを示す第1の値を有し、前記第2のオペコードの各々の前記所定のビットシーケンスは、前記第2のオペコードの各々が前記第2の命令セットからのものであることを示す、前記第1の値とは異なる第2の値を有し、前記第1のオペコードは前記第2のオペコードと相互に排他的である、方法。
JP2013544578A 2010-12-16 2011-12-08 セキュリティサンドボックス Expired - Fee Related JP5847839B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/970,927 2010-12-16
US12/970,927 US20120159127A1 (en) 2010-12-16 2010-12-16 Security sandbox
PCT/US2011/064008 WO2012082524A1 (en) 2010-12-16 2011-12-08 Security sandbox

Publications (2)

Publication Number Publication Date
JP2013546100A JP2013546100A (ja) 2013-12-26
JP5847839B2 true JP5847839B2 (ja) 2016-01-27

Family

ID=46236000

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013544578A Expired - Fee Related JP5847839B2 (ja) 2010-12-16 2011-12-08 セキュリティサンドボックス

Country Status (8)

Country Link
US (1) US20120159127A1 (ja)
EP (1) EP2652667A4 (ja)
JP (1) JP5847839B2 (ja)
KR (1) KR20130132859A (ja)
CN (1) CN102542208B (ja)
AR (1) AR084350A1 (ja)
TW (1) TW201229894A (ja)
WO (1) WO2012082524A1 (ja)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8627451B2 (en) * 2009-08-21 2014-01-07 Red Hat, Inc. Systems and methods for providing an isolated execution environment for accessing untrusted content
US9684785B2 (en) 2009-12-17 2017-06-20 Red Hat, Inc. Providing multiple isolated execution environments for securely accessing untrusted content
US9027151B2 (en) * 2011-02-17 2015-05-05 Red Hat, Inc. Inhibiting denial-of-service attacks using group controls
US10410003B2 (en) 2013-06-07 2019-09-10 Apple Inc. Multiple containers assigned to an application
US10019567B1 (en) * 2014-03-24 2018-07-10 Amazon Technologies, Inc. Encoding of security codes
US20150278512A1 (en) * 2014-03-28 2015-10-01 Intel Corporation Virtualization based intra-block workload isolation
US9910721B2 (en) * 2014-12-09 2018-03-06 Intel Corporation System and method for execution of application code compiled according to two instruction set architectures
JP6678185B2 (ja) * 2015-04-10 2020-04-08 グーグル エルエルシー ネイティブ・クライアントへのバイナリ変換
TWI575401B (zh) 2015-11-12 2017-03-21 財團法人資訊工業策進會 行動裝置及一種適用於行動裝置的監控方法
GB2563580B (en) * 2017-06-15 2019-09-25 Advanced Risc Mach Ltd An apparatus and method for controlling a change in instruction set
JP6531927B1 (ja) * 2018-08-17 2019-06-19 株式会社エルアミーナ 高位合成マルチプロセッサシステム等
CN109446096B (zh) * 2018-11-06 2021-08-24 北京知道创宇信息技术股份有限公司 一种智能合约调试方法、装置及其存储介质
US11436187B2 (en) * 2020-10-20 2022-09-06 Micron Technology, Inc. Method of notifying a process or programmable atomic operation traps
US11586439B2 (en) 2020-10-20 2023-02-21 Micron Technology, Inc. Detecting infinite loops in a programmable atomic transaction
US12020062B2 (en) 2020-10-20 2024-06-25 Micron Technology, Inc. Method of executing programmable atomic unit resources within a multi-process system

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5781750A (en) * 1994-01-11 1998-07-14 Exponential Technology, Inc. Dual-instruction-set architecture CPU with hidden software emulation mode
US6496922B1 (en) * 1994-10-31 2002-12-17 Sun Microsystems, Inc. Method and apparatus for multiplatform stateless instruction set architecture (ISA) using ISA tags on-the-fly instruction translation
US5638525A (en) * 1995-02-10 1997-06-10 Intel Corporation Processor capable of executing programs that contain RISC and CISC instructions
WO1997027537A2 (en) * 1996-01-24 1997-07-31 Sun Microsystems, Inc. A processor for executing instruction sets received from a network or from a local memory
JP3861452B2 (ja) * 1998-04-28 2006-12-20 松下電器産業株式会社 プロセッサおよびプログラム生成装置
US6760441B1 (en) * 2000-03-31 2004-07-06 Intel Corporation Generating a key hieararchy for use in an isolated execution environment
US7149878B1 (en) * 2000-10-30 2006-12-12 Mips Technologies, Inc. Changing instruction set architecture mode by comparison of current instruction execution address with boundary address register values
WO2002071211A2 (en) * 2000-11-20 2002-09-12 Zucotto Wireless, Inc. Data processor having multiple operating modes
EP1324191A1 (en) * 2001-12-27 2003-07-02 STMicroelectronics S.r.l. Processor architecture, related system and method of operation
JP2003233496A (ja) * 2002-02-08 2003-08-22 Mitsubishi Electric Corp マイクロプロセッサ
WO2004049152A1 (en) * 2002-11-26 2004-06-10 Mplicity Ltd. A processor capable of multi-threaded execution of a plurality of instruction-sets
US7603704B2 (en) * 2002-12-19 2009-10-13 Massachusetts Institute Of Technology Secure execution of a computer program using a code cache
GB2402764B (en) * 2003-06-13 2006-02-22 Advanced Risc Mach Ltd Instruction encoding within a data processing apparatus having multiple instruction sets
US7415618B2 (en) * 2003-09-25 2008-08-19 Sun Microsystems, Inc. Permutation of opcode values for application program obfuscation
JP2005209105A (ja) * 2004-01-26 2005-08-04 Matsushita Electric Ind Co Ltd マルチスレッドプロセッサ
US7493483B2 (en) * 2004-02-19 2009-02-17 International Business Machines Corporation Method to prevent vulnerability to virus and worm attacks through instruction remapping
US7562209B2 (en) * 2004-04-07 2009-07-14 Marvell International, Ltd. Supporting different instruction set architectures during run time
US7908653B2 (en) * 2004-06-29 2011-03-15 Intel Corporation Method of improving computer security through sandboxing
US20060047959A1 (en) * 2004-08-25 2006-03-02 Microsoft Corporation System and method for secure computing
US7793078B2 (en) * 2005-04-01 2010-09-07 Arm Limited Multiple instruction set data processing system with conditional branch instructions of a first instruction set and a second instruction set sharing a same instruction encoding
US7725922B2 (en) * 2006-03-21 2010-05-25 Novell, Inc. System and method for using sandboxes in a managed shell
US9658849B2 (en) * 2006-07-06 2017-05-23 Imperas Software Ltd. Processor simulation environment
US8250656B2 (en) * 2007-11-21 2012-08-21 Mikhail Y. Vlasov Processor with excludable instructions and registers and changeable instruction coding for antivirus protection
US8347067B2 (en) * 2008-01-23 2013-01-01 Arm Limited Instruction pre-decoding of multiple instruction sets
US20100153693A1 (en) * 2008-12-17 2010-06-17 Microsoft Corporation Code execution with automated domain switching
CN101847184A (zh) * 2009-12-16 2010-09-29 深圳市虹安信息技术有限公司 采用加密沙箱的文件加密方法
US8782380B2 (en) * 2010-12-14 2014-07-15 International Business Machines Corporation Fine-grained privilege escalation

Also Published As

Publication number Publication date
CN102542208B (zh) 2016-03-16
CN102542208A (zh) 2012-07-04
AR084350A1 (es) 2013-05-08
JP2013546100A (ja) 2013-12-26
TW201229894A (en) 2012-07-16
KR20130132859A (ko) 2013-12-05
EP2652667A4 (en) 2017-11-29
EP2652667A1 (en) 2013-10-23
WO2012082524A1 (en) 2012-06-21
US20120159127A1 (en) 2012-06-21

Similar Documents

Publication Publication Date Title
JP5847839B2 (ja) セキュリティサンドボックス
Shanbhogue et al. Security analysis of processor instruction set architecture for enforcing control-flow integrity
Shi et al. Deconstructing Xen.
EP2973194B1 (en) Linear address mapping protection
Lee et al. Enlisting hardware architecture to thwart malicious code injection
US9129106B2 (en) Systems and methods for secure in-VM monitoring
AU2013297064B2 (en) Methods, systems, and computer readable medium for active monitoring, memory protection and integrity verification of target devices
JP2021511571A (ja) 投機的実行のエクスプロイトに対する防御
US20120216281A1 (en) Systems and Methods for Providing a Computing Device Having a Secure Operating System Kernel
US20120159193A1 (en) Security through opcode randomization
Qiang et al. PrivGuard: Protecting sensitive kernel data from privilege escalation attacks
KR20160019454A (ko) 데이터 처리장치에서의 소프트웨어 라이브러리들의 보안 보호
US20220366037A1 (en) Domain transition disable configuration parameter
Bresch et al. A red team blue team approach towards a secure processor design with hardware shadow stack
JP2015166952A (ja) 情報処理装置、情報処理監視方法、プログラム、及び記録媒体
Jia et al. Defending return‐oriented programming based on virtualization techniques
EP4073635B1 (en) Intermodal calling branch instruction
Eng HARDWARE AND HYPERVISOR TECHNOLOGIES FOR OPERATING SYSTEM AND APPLICATIONS SECURITY
Xu et al. KPDP: Kernel Permission Data Protection Against Data-Oriented Attacks
Kuzuno et al. Protection Mechanism of Kernel Data Using Memory Protection Key
Medley Hardware Virtualization Applied to Rootkit Defense

Legal Events

Date Code Title Description
RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20130905

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20130909

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20141118

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20150523

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20150526

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150630

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150928

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: 20151027

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20151125

R150 Certificate of patent or registration of utility model

Ref document number: 5847839

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees