JP5647360B2 - メモリ範囲を無作為に割り当てたセキュアシステムにおいてjitをサポートするためのシステム及び方法 - Google Patents

メモリ範囲を無作為に割り当てたセキュアシステムにおいてjitをサポートするためのシステム及び方法 Download PDF

Info

Publication number
JP5647360B2
JP5647360B2 JP2013550558A JP2013550558A JP5647360B2 JP 5647360 B2 JP5647360 B2 JP 5647360B2 JP 2013550558 A JP2013550558 A JP 2013550558A JP 2013550558 A JP2013550558 A JP 2013550558A JP 5647360 B2 JP5647360 B2 JP 5647360B2
Authority
JP
Japan
Prior art keywords
code
unsigned
computer
randomly selected
selected memory
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
JP2013550558A
Other languages
English (en)
Other versions
JP2014504764A (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.)
Apple Inc
Original Assignee
Apple Inc
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 Apple Inc filed Critical Apple Inc
Publication of JP2014504764A publication Critical patent/JP2014504764A/ja
Application granted granted Critical
Publication of JP5647360B2 publication Critical patent/JP5647360B2/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
    • 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
    • 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
    • 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
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • 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/51Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems at application loading time, e.g. accepting, rejecting, starting or inhibiting executable software based on integrity or source reliability
    • 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/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Storage Device Security (AREA)
  • Stored Programmes (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Devices For Executing Special Programs (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

〔関連出願との相互参照〕
本出願は、2011年1月18日に出願された「メモリ範囲を無作為に割り当てたセキュアシステムにおいてJITをサポートするためのシステム及び方法(SYSTEM AND METHOD FOR SUPPORTING JIT IN A SECURE SYSTEM WITH RANDOMLY ALLOCATED MEMROY RANGES)」という名称の米国特許出願第13/008,880号に対する優先権を主張するものであり、この特許出願は、その全体が引用により本明細書に組み入れられる。
本開示は、一般にjust−in−timeコードに関し、具体的には、コード署名要件を強制する装置において無署名のjust−in−timeコードを処理することに関する。
技術において最も望まれる特徴のいくつかに、セキュリティ及びパフォーマンスがある。多くの様々な環境において、コンピュータ装置におけるセキュリティ及びパフォーマンスを高める必要性が定期的に見られる。ソフトウェアの複雑性が増せばより高いパフォーマンスが求められ、セキュリティ上の脅威が広まればセキュリティの向上が求められるが、開発者は、セキュリティとパフォーマンスを向上させたシステムを設計するというますます困難な問題に直面する。いずれか一方のみを向上させるのではなく、両方を総合的に向上させることが困難なのである。通常、セキュリティを強化するとパフォーマンスの妨げになり、その逆も同様であるため、多くの場合、開発者は、パフォーマンス又はセキュリティは向上させるが、両方をともに向上させることはめったにない。
セキュリティを向上させるための1つの手法にコード署名がある。コード署名は、システムが(作成者又は発行者などの)コードの出所を特定し、及び/又はコードが変化又は破損していないことを保証できるように、コンピュータコードにデジタルに署名を行う処理である。通常、(作成者又は発行者などの)署名者は、コードのメッセージダイジェストを生成し、秘密鍵を使用してこのダイジェストを暗号化する。次に、署名者は、コードに署名するために、この暗号化したダイジェスト及びデジタル証明書を、秘密鍵に対応する公開鍵を含めてコードに挿入する。ユーザのコンピュータは、コードのダイジェストを作成し、暗号化された署名者のダイジェストをデジタル証明書からの公開鍵を使用して解読し、これらの結果を比較することにより、署名を検証する。この2つのダイジェストが一致した場合、その署名は正当なものである。コード署名を使用すれば、詐称者及び悪質な攻撃者が装置のリソースを奪って無許可のコードを実行する能力は著しく制限される。一般的に、コード署名は、正規のアプリケーションの識別を容易にし、より優れた信頼性の高いユーザ体験を生み出す。しかしながら、残念なことに、just−in−timeコンパイルされたコードには、コード署名を利用することができない。
just−in−time(JIT)コンパイルとは、コンピュータコードを機械語命令にオンデマンド変換、すなわち「just−in−time」変換することである。JITでは、連続的に変換を行い、変換済みのコードをキャッシュして、パフォーマンスを高めるとともに高速なコード実行を行うことができる。驚くほどのことではなく、JITは、プログラムの実行時パフォーマンスを高めるための一般的な手法である。
そうは言うものの、JITにはいくつかの制限がある。第1に、開発者は、オンザフライでコンパイルされたコードにデジタル署名することができない。この結果、JITは、システムがJITコードに対してコード署名を行う能力を奪うことになる。実際に、コード署名要件を強制するセキュアシステムでは、JITコードを実行することができない。第2に、JITコンパイラは、攻撃者がJITを使用して予測可能なアドレスにメモリ領域を作成し、このメモリ領域内に攻撃者のペイロードをコピーして攻撃者のコードを実行するというメモリ操作攻撃を受けることが多い。従って、JITにはいくつかの利点があるものの、セキュリティ上の制約によって重大なリスクが生じる可能性があり、これらは全て、コード署名技術が存在しないことによって悪化する。
以下の説明では、本開示のさらなる特徴及び利点を示すが、この説明からこれらの特徴及び利点が部分的に明らかになり、又は本明細書に開示する原理を実施することにより習得できるようになるであろう。本開示の特徴及び利点は、添付の特許請求の範囲に具体的に指摘する手段及び組み合わせを通じて実現及び取得することができる。本開示のこれらの及びその他の特徴は、以下の説明及び添付の特許請求の範囲からより完全に明らかになり、又は本明細書に示す原理を実施することにより習得できるようになるであろう。
コード署名要件を強制する装置においてjust−in−timeコードを処理するためのシステム、方法及び非一時的コンピュータ可読記憶媒体を開示する。本開示は、コード署名技術を実行するセキュアシステム内にJITを実装しながら、JITに見られるメモリ操作に対する脆弱性を、アドレス空間レイアウトの無作為化(ASLR)によって有意に最小化する方法を提供するものである。コード署名及びASLRは、相補的なセキュリティ手法である。これらの手法を、JIT能力をサポートするように合わせて実装した場合、セキュリティ保護が強化されてセキュリティ及びパフォーマンスが向上する。
本開示のシステムは、装置のコード署名要件に従ってjust−in−timeコードを処理する。システム上のアプリケーションが、HTMLドキュメントなどのコンピュータコードを受け取り、このコンピュータコード内の、例えばJavaScript(R)スクリプトなどの無署名のjust−in−time実行可能なコード部分を識別する。次に、このアプリケーションは、無署名のjust−in−time実行可能なコード部分の少なくとも一部に、装置上の無作為に選択したメモリ領域を割り当てる。1つの態様では、1回の処理につき、無署名のjust−in−time実行可能なコード部分に、無作為に選択したメモリ領域を1つしか割り当てることができない。別の態様では、1回の処理につき、無署名のjust−in−time実行可能なコード部分に、複数の無作為に選択したメモリ領域を割り当てることができる。さらに別の態様では、1回の処理につき、無署名のjust−in−time実行可能なコード部分に、1又はそれ以上の無作為に選択したメモリ領域、及び1又はそれ以上の作為的に選択したメモリ領域を割り当てることができる。
1つの実施形態では、その後システムが、この無作為に選択したメモリ領域をコード署名要件の対象外とし、アプリケーションが、この対象外のメモリ領域に記憶された無署名のjust−in−time実行可能なコード部分を実行する。従って、アプリケーションは、無作為に選択したメモリ領域をコード署名要件の対象外とする余分なステップを伴わずに、無署名のjust−in−time実行可能なコード部分を実行することができる。
この方法は本開示の一例であり、この方法に関連する原理は、システム及びコンピュータ可読媒体に適用可能である。この方法について、方法を実施するように構成されたシステムの観点から説明する。このシステムは、コード署名要件を強制するあらゆる物理的及び/又は仮想的な装置(例えば、コード署名技術を実行するセキュアシステム)とすることができる。まず、システムは、一部に無署名の実行可能just−in−timeコードを含むコンピュータコードを受け取る。次に、システムは、無署名のjust−in−time実行可能なコード部分を識別し、この無署名のjust−in−time実行可能な部分の少なくとも一部に、装置上の無作為に選択したメモリ領域を割り当てる。識別は、コード内のjust−in−timeフラグ、just−in−time実行可能な部分を抽出する構文解析プログラム又はその他の識別要素、just−in−time実行可能な部分の場所についてのテーブル、コードの特定の特徴、特性、属性、パターン又は構造、或いはコード解析を通じた識別などの他のいずれかの識別に基づくことができる。
次に、システムは、無作為に選択したメモリ領域内の無署名のjust−in−time実行可能な部分を、署名済みのコンピュータコードであるかのように実行する。1つの態様では、無署名のjust−in−time実行可能なコンピュータコード部分が、例えばウェブブラウザなどの、特定の資格を有するアプリケーションによって処理される。この特定の資格は、アプリケーションが無署名のコードを処理する許可を有することを保証するものである。特定の資格は、許可フラグ、属性、参照記号、記述子、又はオペレーティングシステムにより強制される他のいずれかの特徴とすることができる。アプリケーションの特定の資格は、証明書及びプロビジョニングプロファイルに基づいて与えることができ、また公開鍵インフラストラクチャ(例えば、信頼できる機関を通じて取得され共有される公開暗号鍵と秘密暗号鍵の対)、及び1又はそれ以上のオペレーティングシステムレベルのメカニズム(例えば、認証、セキュリティポリシー、アクセス制御、セキュリティプロトコル、暗号ソフトウェア及びプロトコルなど)を通じて行使することができる。
本開示の方法の他のバージョンは、コード署名要件を強制する装置内でjust−in−timeコードを実行するステップを含み、このステップは、まず、無署名のjust−in−time実行可能なコード部分を記憶する装置上の無作為に選択したメモリ領域にアクセスし、その後、この無署名のjust−in−time実行可能なコード部分を署名済みのコンピュータコードであるかのように実行することによって開始する。無作為に選択したメモリ領域に対するメモリアクセス許可は、読み取り可能、書き込み可能、かつ実行可能とすることができる。従って、アプリケーションは、この領域に記憶されたデータを読み取ること、このデータを修正すること、及びデータ内の命令を実行することを含むことができる動作を、このメモリ領域内で行うことができる。
従って、本開示は、コード署名技術を実行するセキュアシステム内にJITを実装しながら、JITにおけるメモリ操作に対する脆弱性をASLRによって有意に最小化する方法を効果的に提供する。これにより、セキュリティ及び/又はパフォーマンスを向上させることができる。この結果、本開示によるjust−in−timeコードを処理するためのシステム、方法及び非一時的コンピュータ可読記憶媒体によって強化されるセキュリティ及び改善されるパフォーマンスから、あらゆる装置が恩恵を受けることができる。
本開示の上述の及びその他の利点及び特徴をいかにして得ることができるかを説明するために、上記で概説した原理について、添付図面に示すその特定の実施形態を参照しながらより詳細に説明する。これらの図面は本開示の例示的な実施形態を示すものにすぎず、従って本開示の範囲を限定すると見なすべきではないという理解の下、添付図面を使用して本明細書における原理をさらなる特異性及び詳細とともに記述し説明する。
システムの実施形態例を示す図である。 just−in−timeコードを処理するための例示的なシステムを示す図である。 コンピュータコードの例を示す図である。 アプリケーションの無作為化したメモリレイアウトの例を示す図である。 例示的な方法の実施形態を示す図である。 例示的な方法の実施形態を示す図である。
以下、本開示の様々な実施形態について詳細に説明する。特定の実装について説明するが、この説明は例示目的で行うものにすぎないと理解されたい。当業者であれば、本開示の思想及び範囲から逸脱することなく、他の要素及び構成を使用できると認識するであろう。
本開示は、コード署名技術を実行するセキュアシステム内にJITを実装するという、当業における少なくとも1つのニーズに対処するものである。本明細書で説明する方法を使用して、コード署名要件を強制するシステムにおいて無署名のjust−in−timeコンピュータコード部分を実行することができる。システムは、アドレス空間レイアウトの無作為化を使用して、JITにおけるメモリ操作に対する脆弱性を低下させることができる。システムは、無署名のjust−in−timeコード部分に装置上の無作為に選択したメモリ領域を割り当てることにより、メモリレイアウトの予測可能性を低下させて、セキュリティ攻撃が成功する確率を低減する。システムは、装置に対してコード署名要件を強制するものの、JITに割り当てられた無作為に選択したメモリ領域をこれらのコード署名要件の対象外とすることができる。従って、装置において強制されるコード署名要件にもかかわらず、この対象外の領域から無署名のjust−in−time実行可能なコード部分を実行することができる。この結果、システムは、ASLR技術及びコード署名技術によるさらなるセキュリティ保護が加わったJITのパフォーマンス利点をもたらす。
本開示では、まず、本明細書に開示する概念を実施するために使用できる図1の基本的な汎用システム又はコンピュータ装置の簡単な前置き説明を示す。次に、図2のjust−in−timeコードを処理するための例示的なシステム、図3のコンピュータコードの例示的な説明図、及び図4のアプリケーションの無作為化したメモリレイアウトの例について詳細に説明する。最後に、図5及び図6の2つの例示的な方法の実施形態に進む。本明細書では、様々な実施形態を示しながらこれらの変化例についても説明する。まず、図1を参照する。
図1を参照すると、例示的なシステム100が、処理装置(CPU又はプロセッサ)120と、リードオンリメモリ(ROM)140及びランダムアクセスメモリ(RAM)150などのシステムメモリ130を含む様々なシステム要素をプロセッサ120に結合するシステムバス110とを含む汎用コンピュータ装置100を含む。システム100は、プロセッサ120に直接接続された、プロセッサ120の直近に存在する、又はプロセッサ120の一部として統合された高速メモリであるキャッシュ122を含むことができる。システム100は、プロセッサ120が素早くアクセスできるように、メモリ130及び/又は記憶装置160からキャッシュにデータをコピーする。このようにして、キャッシュは、プロセッサ120がデータを待っている間に遅延することを避けるパフォーマンスブーストを提供する。これらの及びその他のモジュールは、様々な動作を行うようにプロセッサ120を制御し、又は制御するように構成することができる。同様に、他のシステムメモリ130を使用することもできる。メモリ130は、RAM、ROM、ハードディスクドライブ、光学記憶装置、フラッシュメモリ及びその他のいずれか記憶装置を含む、パフォーマンス特性の異なる複数の異なるタイプのメモリを含むことができる。システム100は、システムメモリ130を、1又はそれ以上のメモリブロックを含むメモリ領域に分割し、処理で使用するメモリアドレスを実際の物理アドレスから分離することができる。処理装置120は、これらのメモリ領域を使用して、システム100全体にわたってメモリ空間を割り当てることができる。例えば、処理装置120は、メモリ要求を受け取ると、メモリ領域を識別して(メモリアドレスなどの)記憶域を割り当てる。さらに、システム100は、ハードディスクなどの他の記憶装置を使用することにより追加のランダムアクセスメモリをシミュレートして、仮想メモリ、すなわち仮想アドレスを実アドレスにマッピングすることにより作成されるアドレス指定可能な記憶空間を作成することができる。
本開示は、複数のプロセッサ120を有するコンピュータ装置100上、或いはより高い処理能力を提供するように共にネットワーク化された一群のコンピュータ装置上で動作できると理解されたい。プロセッサ120は、いずれかの汎用プロセッサ、及びプロセッサ120を制御するように構成されたハードウェアモジュール又はソフトウェアモジュール(記憶装置160に記憶されたモジュール1 162、モジュール2 164及びモジュール3 166など)、並びに実際のプロセッサ設計にソフトウェア命令を組み込んだ専用プロセッサを含むことができる。プロセッサ120は、基本的に、複数のコア又はプロセッサ、バス、メモリコントローラ、キャッシュなどを含む、完全に内蔵型のコンピュータシステムとすることができる。マルチコアプロセッサは、対称型であっても又は非対称型であってもよい。
システムバス110は、様々なバスアーキテクチャのいずれかを使用する、メモリバス又はメモリコントローラ、周辺バス及びローカルバスを含むいくつかのタイプのバス構造のいずれであってもよい。ROM140などに記憶される基本入出力(BIOS)は、起動中などにコンピュータ装置100内の要素間で情報を転送し合うのに役立つ基本ルーチンを提供することができる。コンピュータ装置100は、ハードディスクドライブ、磁気ディスクドライブ、又は光ディスクドライブなどの記憶装置160をさらに含む。記憶装置160は、プロセッサ120を制御するためのソフトウェアモジュール162、164、166を含むことができる。他のハードウェアモジュール又はソフトウェアモジュールも企図される。記憶装置160は、ドライブインターフェイスによってシステムバス110に接続される。ドライブ及び関連するコンピュータ可読記憶媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、及びコンピュータ装置100のためのその他のデータの不揮発性記憶を行う。1つの態様では、特定の機能を実行するハードウェアモジュールが、この機能を実施するために、プロセッサ120、バス110及びディスプレイ170などの必要なハードウェア要素に接続された非一時的コンピュータ可読媒体に記憶されたソフトウェア要素を含む。基本的な構成要素は当業者に公知であり、装置100が小型であるか、ハンドヘルド型コンピュータ装置であるか、デスクトップ型コンピュータであるか、又はコンピュータサーバであるかなどの装置のタイプに依存して適当な変形も企図される。
本明細書で説明する例示的な実施形態では、ハードディスク160を使用するが、当業者であれば、例示的な動作環境では、磁気カセット、フラッシュメモリカード、デジタル多用途ディスク、カートリッジ、ランダムアクセスメモリ(RAM)150、リードオンリメモリ(ROM)140、及びビットストリームを含む有線又は無線信号などの、コンピュータがアクセス可能なデータを記憶できる他のタイプのコンピュータ可読媒体を使用できると理解するはずである。正確に言えば、非一時的コンピュータ可読記憶媒体には、エネルギー、搬送波信号、電磁波及び信号などの媒体は明確に含まれない。
コンピュータ装置100とのユーザインタラクションを可能にするために、入力装置190は、発話のためのマイク、ジェスチャ入力又はグラフィック入力のためのタッチ感知式スクリーン、キーボード、マウス、動作入力及び音声などの多くの入力メカニズムを表す。出力装置170も、当業者に公知の多くの出力メカニズムの1つ又はそれ以上とすることができる。場合によっては、多モードシステムにより、ユーザが複数種の入力を行ってコンピュータ装置100と通信できるようにする。一般に、通信インターフェイス180は、ユーザ入力及びシステム出力の制御及び管理を行う。いずれかの特定のハードウェア構成上で動作することに制限はなく、従って改善されたハードウェア又はファームウェア構成が開発されるにつれ、これらをここに示す基本的な特徴部に代えて容易に使用することができる。
説明を明確にするために、例示的なシステムの実施形態を、「プロセッサ」又はプロセッサ120として示す機能ブロックを含む個々の機能ブロックを含むものとして示している。これらのブロックが表す機能は、以下に限定されるわけではないが、ソフトウェアを実行できるハードウェア、及び汎用プロセッサ上で実行されるソフトウェアの同等物として動作することを専用とするプロセッサ120などのハードウェアを含む、共有ハードウェア又は専用ハードウェアのいずれかを使用することにより実現することができる。例えば、図1に示す1又はそれ以上のプロセッサの機能を、単一の共有プロセッサ又は複数のプロセッサにより実現することができる。(「プロセッサ」という用語を使用していても、これがソフトウェアを実行できるハードウェアのみを意味すると解釈すべきではない。)例示的な実施形態は、マイクロプロセッサ及び/又はデジタルシグナルプロセッサ(DSP)ハードウェア、後述する動作を実行するソフトウェアを記憶するためのリードオンリメモリ(ROM)140、及び結果を記憶するためのランダムアクセスメモリ(RAM)150を含むことができる。超大規模集積回路(VLSI)ハードウェアの実施形態、並びに特別仕様のVLSI回路を汎用DSP回路と組み合わせたものを提供することもできる。
様々な実施形態の論理的動作は、(1)汎用コンピュータ内のプログラマブル回路上で実行される、コンピュータ実装ステップ、動作又は手順のシーケンス、(2)専用プログラマブル回路上で実行される、コンピュータ実装ステップ、動作又は手順のシーケンス、及び/又は(3)プログラマブル回路内の相互接続された機械モジュール又はプログラムエンジンとして実装される。図1に示すシステム100は、記載する方法の全部又は一部を実施することができ、記載するシステムの一部とすることができ、及び/又は記載する非一時的コンピュータ可読記憶媒体内の命令に従って動作することができる。このような論理的動作は、モジュールのプログラムに従って特定の機能を実施するようにプロセッサ120を制御するよう構成されたモジュールとして実装することができる。例えば、図1には、プロセッサ120を制御するように構成された3つのモジュールMod1 162、Mod2 164、及びMod3 166を示している。一例として、Mod1 162を、システム100にコード署名要件を強制するようにプロセッサ120を制御するよう構成することができる。Mod2 164は、システム100上のメモリ領域を無作為に選択し、この選択したメモリ領域を使用してシステム100全体にわたってメモリ空間を割り当てるようにプロセッサ120を制御するよう構成することができる。Mod3 166は、署名済み又は無署名の静的コード、インタープリタ型コード及びjust−in−timeコードを含むコンピュータコードを実行するようにプロセッサを制御するよう構成することができる。これらのモジュールは、記憶装置160上に記憶して実行時にRAM150又はメモリ130内にロードしてもよく、又は当業で公知のように他のコンピュータ可読メモリの場所に記憶してもよい。
コンピュータシステムのいくつかの構成要素を開示したところで、次にjust−in−timeコードを処理するための例示的なシステムを示す図2を参照する。明確にするために、図2の説明は、コード署名要件を強制するように構成された、図1に示すような例示的なシステムの観点から行う。
この例では、システム202内で、特定の資格を有するアプリケーションによってjust−in−timeコードが処理される。この特定の資格は、アプリケーションが無署名のコードを処理する許可を有することを保証するものである。特定の資格は、許可フラグ、属性、参照記号、記述子、又はオペレーティングシステムにより行使される他のいずれかの特徴とすることができる。1つの態様では、このアプリケーションをウェブブラウザとすることができる。ウェブブラウザは、Opera、Safari、又はK−Meleonなどの「フル」ウェブブラウザであっても、或いはiOS用のSafari又はOpera Miniなどの、「フル」ブラウザ能力の一部を含む「モバイル」ブラウザであってもよい。
システム202内の資格を有するアプリケーション204は、無署名のjust−in−time実行可能なコードであるコード部分を含むコンピュータコードを受け取る210。次に、資格を有するアプリケーション204は、無署名のjust−in−time実行可能なコード部分を識別する212。識別は、コード内のjust−in−timeフラグ、just−in−time実行可能な部分を抽出する構文解析プログラム又はその他の識別要素、just−in−time実行可能な部分の場所についてのテーブル、コードの特定の特徴、特性、属性、パターン又は構造、或いはコード解析を通じた識別などの他のいずれかの識別に基づくことができる。資格を有するアプリケーション204は、無署名のjust−in−time実行可能なコード部分222を識別した後、無署名のjust−in−time実行可能なコード部分に装置上の無作為に選択したメモリ領域を割り当てる224。システムは、署名済みのコード部分214を任意に処理し216、この処理した署名済みのコード部分218を実行モジュール220に渡して実行させる。
資格を有するアプリケーション204は、無作為に選択したメモリ領域を割り当てるために、例えば、NtAllocateVirtualMemory、VirtualAlloc、vm_aslr_mmap、及びvm_allocateなどの命令セットを含むことができる。これらの関数は、連続する又は不連続なアドレスブロックを確保し、これらの確保したアドレスブロック内のページ領域を割り当てることができる。これらのアドレスブロックは、任意のアドレスにおける任意のサイズのメモリ領域から確保することができ、これらは固定することも又は動的に選択することもできる。資格を有するアプリケーション204は、無作為に選択したメモリ領域を選択することができ、或いはオペレーティングシステム又はメモリマネージャなどの別のシステム要素によって無作為に選択されたメモリ領域を単純に使用することもできる。メモリ領域は、JITにおけるメモリ操作に対する脆弱性を低下させるために無作為に選択される。実行コードのメモリレイアウトを無作為化することにより、メモリレイアウトの予測可能性が低下し、攻撃が成功する確率が低減されるので、システム202は、コード注入又はシェルコードを含む攻撃に対して一定レベルのセキュリティをもたらす。1つの態様では、1回の処理につき、無署名の実行可能なコード部分に、無作為に選択したメモリ領域を1つしか割り当てることができない。別の態様では、1回の処理につき、無署名の実行可能なコード部分に、複数の無作為に選択したメモリ領域を割り当てることができる。さらに別の態様では、1回の処理につき、無署名のjust−in−time実行可能なコード部分に、1又はそれ以上の無作為に選択したメモリ領域、及び1又はそれ以上の作為的に選択したメモリ領域を割り当てることができる。この方法を、他の互換性のあるセキュリティ及び/又はパフォーマンス強化手法と組み合わせることもできる。
1つの実施形態では、無作為に選択したメモリ領域に対するメモリアクセス許可を、読み取り可能、書き込み可能、かつ実行可能とすることができる。この結果、資格を有するアプリケーション204は、この領域に記憶されたデータを読み取ること、このデータを修正すること、及びデータ内の命令を実行することを含むことができる動作を、このメモリ領域内で行うことができる。従って、この実施形態では、資格を有するアプリケーション204が、無作為に選択したメモリ領域をコード署名要件の対象外とする余分なステップを伴わずに、無作為に選択したメモリ領域224内の無署名のjust−in−time実行可能なコード部分222を実行することができる。
別の実施形態では、システム202又は資格を有するアプリケーション204が、無署名のjust−in−time実行可能なコード部分228の少なくとも一部に割り当てられた無作為に選択したメモリ領域226を、コード署名要件の対象外とする。システム202又は資格を有するアプリケーション204は、資格を有するアプリケーション204が、無作為に選択したメモリ領域を無署名のjust−in−time実行可能なコード部分に割り当てた後に、この領域を対象外とすることができる。システム202又は資格を有するアプリケーション204は、資格を有するアプリケーション204が、無作為に選択したメモリ領域を無署名のjust−in−time実行可能なコード部分228に割り当てた時点又はその前に、この領域を対象外とすることもできる。最後に、資格を有するアプリケーション204は、無作為に選択したメモリ領域220内の無署名のjust−in−time実行可能なコード部分を実行すること又は実行させることができる。
図3に、第1の無署名のjust−in−time実行可能な部分306及び第2の部分308を含むコンピュータコード302の例を示す。この無署名のjust−in−time実行可能な部分306は、いずれかのプログラミング言語で書かれた、just−in−timeコンパイルに依拠するいずれかのコード部分を含むことができる。対照的に、第2の部分308は、いずれかのプログラミング言語で書かれたいずれかのコード部分を含むことができ、任意にデジタル署名することができる。図3から分かるように、無署名のjust−in−time実行可能な部分306は、JavaScript(R)コードとすることができ、第2の部分308は、マークアップ言語によるものとすることができる。他のjust−in−time言語の例としては、LISP、Java(R)及び.NETフレームワークが挙げられる。さらに、コンピュータコード302は、システム202が無署名のjust−in−time実行可能な部分306を識別するために使用できるjust−in−timeフラグ304を含むことができる。ある例では、just−in−timeフラグがスクリプトタグ304である。
図4に、アプリケーション410の無作為化したメモリレイアウトの例を示す。この例では、無署名のjust−in−time実行可能なコード部分を記憶するための、無作為に選択したメモリ領域412、すなわちロードアドレスが割り当てられる。無作為に選択したロードアドレスは、重要データ領域、すなわちプロセスヒープ414、スレッドスタック416及びもう1つのスレッドスタック418にも割り当てられる。アプリケーションのメモリレイアウトは、メモリ操作に対する脆弱性から保護するために無作為化される。実行コードのメモリレイアウトを無作為化することにより、メモリレイアウトの予測可能性が低下し、攻撃が成功する確率が低減されるので、アプリケーションは、コード注入又はシェルコードを含むセキュリティ攻撃を防ぐことができる。
いくつかの基本的なシステム要素及び概念を開示したところで、次に図5及び図6に示す例示的な方法の実施形態を参照する。明確にするために、これらの方法の説明は、この方法を実施するように構成された、図1に示すような例示的なシステムの観点から行う。本明細書で概説するステップは例示的なものであり、いくつかのステップを除外し、追加し又は修正する組み合わせを含むこれらのステップのあらゆる組み合わせで実装することができる。
図5には、コード署名要件を強制するように構成された装置においてjust−in−timeコードを処理するための例示的な方法の実施形態を示す。この装置は、スマート電話、タブレット、コンピュータ、GPS及びポータブルメディアなどの、モバイルコンピュータ装置又はその他のコンピュータ装置とすることができる。図5から分かるように、まずシステムは、一部に無署名のjust−in−time実行可能なコード306を含むコンピュータコード302を受け取る510。特定の実施形態では、このjust−in−timeコードが、特定の資格を有するアプリケーションによって処理される。アプリケーションの特定の資格は、証明書及びプロビジョニングプロファイルに基づいて与えることができ、また公開鍵インフラストラクチャ(例えば、信頼できる機関を通じて取得され共有される公開暗号鍵と秘密暗号鍵の対)、及び1又はそれ以上のオペレーティングシステムレベルのメカニズム(例えば、認証、セキュリティポリシー、アクセス制御、セキュリティプロトコル、暗号ソフトウェア及びプロトコルなど)を通じて行使することができる。
次に、アプリケーションは、無署名のjust−in−time実行可能なコード部分306を識別する512。識別は、上述した通りに行うことができる。次に、アプリケーションは、無署名のjust−in−time実行可能なコード部分306の少なくとも一部に、装置上の無作為に選択したメモリ領域412を割り当てる514。1つの態様では、アプリケーションが、無署名のjust−in−time実行可能なコード部分306の一部に、装置上の無作為に選択したメモリ領域412を割り当て、無署名のjust−in−time実行可能なコード306の残り部分に、別のメモリ領域を割り当てることができる。このメモリ領域は、装置上で実行されるオペレーティングシステムカーネル及び/又は別のアプリケーションによって無作為に選択することができる。1つの態様では、無作為に選択したメモリ領域をアプリケーションが再使用することを、アプリケーションの残りの処理期間にわたって禁止することができる。別の態様では、無作為に選択したメモリ領域を含むメモリページをアプリケーションが共有することを禁止することができる。
1つの実施形態では、その後システムが、無作為に選択したメモリ領域412をコード署名要件の対象外とし516、アプリケーションが、無作為に選択したメモリ領域412内の無署名のjust−in−time実行可能なコード部分306を実行する518。
別の実施形態では、アプリケーションが、無作為に選択したメモリ領域412をコード署名要件の対象外とする余分なステップを伴わずに、無作為に選択したメモリ領域4124内の無署名のjust−in−time実行可能なコード部分306を実行する518。ここでは、無作為に選択したメモリ領域に対するメモリアクセス許可が、読み取り可能、書き込み可能、かつ実行可能である。従って、アプリケーションは、この領域に記憶されたデータを読み取ること、このデータを修正すること、及びデータ内の命令を実行することを含むことができる動作を、このメモリ領域内で行うことができる。さらに、この無作為に選択したメモリ領域412をJITコンパイラが使用して、JITコンパイルコードを作成することができる。
1つの態様では、システムが、従来のJIT法と本明細書に示す強化した方法を切り替えることができる。プログラマーは、例えばJITコードの一部が特に影響を受け易いこと、又は高めた速度及び/又はセキュリティを別様に命令していることを示すことができる。同様に、ウェブブラウザが、信頼できるサイトからのJavaScript(R)コードに遭遇した場合、システムは、このJavaScript(R)コードを従来の方法で処理することができ、またウェブブラウザが、悪質な可能性のある又は信頼できないドメインからのJavaScript(R)コードに遭遇した場合、システムは、強化されたセキュリティモードに切り替えてこのJavaScript(R)コードを処理することができる。システムは、ユーザ入力、信頼できるサイトのデータベース、一定のコードパターン、ユーザ/装置の設定などの1又はそれ以上の内部及び/又は外部イベントに基づいて、「標準的な」JITコード処理と「強化された」JITコード処理を切り替えることができる。ネットワークを基盤にしたサーバは、一群の装置のためのJITコード処理モードを指示することができる。
図6には、コード署名要件を強制するように構成された装置においてjust−in−timeコードを実行するための方法の実施形態600を示す。装置は、この装置が実行するコードの一部又は全部に対してコード署名要件を強制することができる。さらに、無作為に選択したメモリ領域412に対するメモリアクセス許可を、読み取り可能、書き込み可能、かつ実行可能とすることができる。
図6で分かるように、まず、システム内のアプリケーションは、コンピュータコード302の無署名のjust−in−time実行可能な部分306を記憶している無作為に選択したメモリ領域412にアクセスする。この例では、無作為に選択したメモリ領域412に対するアクセス許可が、読み取り可能、書き込み可能、かつ実行可能である。無作為に選択したメモリ領域412内の無署名のjust−in−time実行可能なコード部分は、例えば、helloWorld関数を含むJavaScript(R)スクリプトとすることができる。
Figure 0005647360
破線のボックスで示すように、システムは、無作為に選択したメモリ領域412を任意にコード署名要件の対象外とし604、その後アプリケーションが、無作為に選択したメモリ領域412内の無署名のjust−in−time実行可能なコード部分306を実行する。例えば、アプリケーションは、JavaScript(R)スクリプトを記憶している無作為に選択したメモリ領域をシステム又はアプリケーションがコード署名要件の対象外とした後に、helloWorld関数を実行することができる。
或いは、アプリケーションは、無作為に選択したメモリ領域412をコード署名要件の対象外とする余分なステップを伴わずに、無作為に選択したメモリ領域4124内の無署名のjust−in−time実行可能なコード部分306を実行することができる606。ここでは、アプリケーションが、無署名のコードを処理できるようになる特定の資格を有する。例えば、アプリケーションは、特定の資格を有することができ、従って無作為に選択したメモリ領域412をコード署名要件の対象外とする余分なステップを伴わずにhelloWorld関数を実行することができる。
これらの方法を使用して、アドレス空間レイアウトの無作為化を用いてJITにおけるメモリ操作に対する脆弱性を低下させることにより、コード署名要件を強制するシステム内で無署名のJITコンパイルコードを実行することができる。この結果、これらの方法により、コード署名要件を強制するセキュアシステムが、無作為に割り当てられたメモリ範囲を使用してJITを実装できるようになり、これによりセキュリティ及び/又はパフォーマンスが高められる。
本開示の範囲に含まれる実施形態は、コンピュータ実行可能命令又はデータ構造を保持又は記憶するための有形の及び/又は非一時的なコンピュータ可読記憶媒体を含むこともできる。このような非一時的コンピュータ可読記憶媒体は、上述したいずれかの専用プロセッサの機能設計を含む汎用又は専用コンピュータがアクセスできるいずれの利用可能な媒体であってもよい。限定ではなく一例として、このような非一時的コンピュータ可読媒体は、RAM、ROM、EEPROM、CD−ROM又はその他の光ディスクストレージ、磁気ディスクストレージ又はその他の磁気記憶装置、或いは所望のプログラムコード手段を、コンピュータ実行可能命令、データ構造又はプロセッサチップ設計の形で保持又は記憶するために使用できる他のいずれかの媒体を含むことができる。
コンピュータ実行可能命令は、例えば、汎用コンピュータ、専用コンピュータ又は専用処理装置に特定の機能又は機能群を実行させる命令及びデータを含む。コンピュータ実行可能命令は、スタンドアローン環境又はネットワーク環境内のコンピュータにより実行されるプログラムモジュールも含む。一般に、プログラムモジュールは、特定のタスクを実行し又は特定の抽象データタイプを実装する専用プロセッサなどの設計に内在するルーチン、プログラム、コンポーネント、データ構造、オブジェクト及び関数を含む。コンピュータ実行可能命令、関連するデータ構造及びプログラムモジュールは、本明細書で開示した方法のステップを実行するためのプログラムコード手段の例を表す。このような実行可能命令又は関連データ構造の特定のシーケンスは、このようなステップで説明した機能を実施するための対応する動作の例を表す。
当業者であれば、パーソナルコンピュータ、ハンドヘルド装置、マルチプロセッサシステム、マイクロプロセッサベースの又はプログラム可能な消費者向け電子機器、ネットワークPC、ミニコンピュータ及びメインフレームコンピュータなどを含む多くの種類のコンピュータシステム構成を有するネットワークコンピュータ環境において本開示の他の実施形態を実施できると理解するであろう。通信ネットワークを通じて(有線リンク、無線リンク、又はこれらの組み合わせのいずれかによって)リンクされたローカル処理装置及び遠隔処理装置によりタスクが行われる分散コンピュータ環境において実施形態を実施することもできる。分散コンピュータ環境では、ローカルメモリ記憶装置と遠隔メモリ記憶装置の両方にプログラムモジュールを配置することができる。
上述した様々な実施形態は、例示として示したものにすぎず、本開示の範囲を限定すると解釈すべきではない。例えば、本明細書における原理は、携帯電話機又はタブレットなどのモバイル装置においても、或いは署名済みのコードを実行するデスクトップ型コンピュータ装置においても適用することができる。当業者であれば、本明細書で図示し説明した実施形態例及び用途例に従うことなく、及び本開示の思想及び範囲から逸脱することなく、本明細書で説明した原理に様々な修正及び変更を行えることを容易に認識するであろう。
202 システム
204 資格を有するアプリケーション
210 コンピュータコードを受け取る
212 無署名の部分を識別
214 署名済みの部分
216 署名済みの部分を処理
218 署名済みの部分
222 無署名のJIT部分
224 無作為に選択したメモリ領域を割り当て
226 メモリ領域を対象外にする
228 無署名のJIT部分
220 実行

Claims (20)

  1. コード署名要件を強制する装置においてコンピュータコードを受信する処理と、
    前記コンピュータコードの無署名のjust−in−time実行可能な部分を識別する処理と、
    前記無署名のjust−in−time実行可能な部分の少なくとも一部に、前記装置上の無作為に選択したメモリ領域を割り当てる処理と、
    前記無作為に選択したメモリ領域内の前記無署名のjust−in−time実行可能な部分を実行する処理と、
    が実行されることを特徴とする方法。
  2. 受信した前記コンピュータコードの無署名のjust−in−time実行可能な部分を識別する処理は、前記コンピュータコード内のjust−in−timeフラグに基づくことを特徴とする請求項1に記載の方法。
  3. 前記無署名のjust−in−time実行可能なコンピュータコード部分は、特定の資格を有するアプリケーションにより処理されることを特徴とする請求項1に記載の方法。
  4. 前記アプリケーションの前記特定の資格は、証明書及びプロビジョニングプロファイルに基づいて与えられることを特徴とする請求項3に記載の方法。
  5. 前記アプリケーションの前記特定の資格は、公開鍵インフラストラクチャ及び少なくとも1つのオペレーティングシステムレベルのメカニズムを通じて行使されることを特徴とする請求項3に記載の方法。
  6. 前記無署名のjust−in−time実行可能なコード部分のための無作為に選択したメモリ領域を、1回の処理につき1つしか割り当てることができないことを特徴とする請求項1に記載の方法。
  7. 前記アプリケーションの処理期間中に、前記無作為に選択したメモリ領域を前記アプリケーションが再使用することを禁止する処理をさらに含む、請求項3に記載の方法。
  8. 前記無作為に選択したメモリ領域を含むメモリページの共有を禁止する処理をさらに含む、請求項1に記載の方法。
  9. プロセッサと、
    命令を記憶する不揮発性のコンピュータ読み取り可能な記録媒体とを備えたシステムであって、
    前記プロセッサの実行時に、前記命令は該プロセッサに対して、
    コンピュータコードを受け取る処理と、
    前記コンピュータコードの無署名のjust−in−time実行可能な部分を識別する処理と、
    前記無署名のjust−in−time実行可能な部分の少なくとも一部に、前記システム上の無作為に選択したメモリ領域を割り当てる処理と、
    前記無作為に選択したメモリ領域をコード署名要件の対象外とする処理と、
    前記無署名のjust−in−time実行可能な部分を実行する処理と、
    を含む方法を実行させることを特徴とするシステム。
  10. 前記無署名のjust−in−time実行可能なコンピュータコード部分は、特定の資格を有するアプリケーションにより処理されることを特徴とする請求項9に記載のシステム。
  11. 前記無署名のjust−in−time実行可能なコード部分のための無作為に選択したメモリ領域を、1回の処理につき1つしか割り当てることができないことを特徴とする請求項9に記載のシステム。
  12. 前記システム上で実行されるオペレーティングシステムカーネルが、前記無作為に選択したメモリ領域を選択することを特徴とする請求項9に記載のシステム。
  13. just−in−timeコードを処理するための命令を記憶する不揮発性のコンピュータ読み取り可能な記録媒体であって、コード署名要件を強制するコンピュータ装置の実行時、該コンピュータ装置に、
    前記コンピュータ装置において受け取ったコンピュータコードの無署名のjust−in−time実行可能な部分を識別する手順と、
    前記無署名のjust−in−time実行可能なコンピュータコード部分を記憶する無作為に選択したメモリ領域にアクセスする手順と、
    前記無作為に選択したメモリ領域内の前記無署名のjust−in−time実行可能な部分を実行する手順と、
    を実行させるための前記命令を記憶した不揮発性のコンピュータ読み取り可能な記録媒体。
  14. 前記受け取ったコンピュータコードの前記無署名のjust−in−time実行可能な部分を識別する手順は、前記コンピュータコード内のjust−in−timeフラグに基づくことを特徴とする、請求項13に記載のコンピュータ読み取り可能な記録媒体。
  15. 前記無署名のjust−in−time実行可能なコンピュータコード部分は、特定の資格を有するアプリケーションにより処理される、請求項13に記載のコンピュータ読み取り可能な記録媒体。
  16. 前記アプリケーションの前記特定の資格は、公開鍵インフラストラクチャ及び少なくとも1つのオペレーティングシステムレベルのメカニズムを通じて行使される、請求項15に記載のコンピュータ読み取り可能な記録媒体。
  17. 前記無署名のjust−in−time実行可能なコンピュータコード部分は、JavaScript(R)コードである、請求項13に記載のコンピュータ読み取り可能な記録媒体。
  18. 前記無署名のjust−in−time実行可能な部分は、ウェブブラウザにより実行される、請求項13に記載のコンピュータ読み取り可能な記録媒体。
  19. 前記無署名のjust−in−time実行可能なコンピュータコード部分は、特定の資格を有するアプリケーションにより処理される、請求項17に記載のコンピュータ読み取り可能な記録媒体。
  20. 前記コンピュータ装置上で実行されるオペレーティングシステムカーネルが、前記無作為に選択したメモリ領域を選択する、請求項19に記載のコンピュータ読み取り可能な記録媒体。
JP2013550558A 2011-01-18 2012-01-18 メモリ範囲を無作為に割り当てたセキュアシステムにおいてjitをサポートするためのシステム及び方法 Expired - Fee Related JP5647360B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/008,880 US8646050B2 (en) 2011-01-18 2011-01-18 System and method for supporting JIT in a secure system with randomly allocated memory ranges
US13/008,880 2011-01-18
PCT/US2012/021696 WO2012099945A1 (en) 2011-01-18 2012-01-18 System and method for supporting jit in a secure system with randomly allocated memory ranges

Publications (2)

Publication Number Publication Date
JP2014504764A JP2014504764A (ja) 2014-02-24
JP5647360B2 true JP5647360B2 (ja) 2014-12-24

Family

ID=45615051

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013550558A Expired - Fee Related JP5647360B2 (ja) 2011-01-18 2012-01-18 メモリ範囲を無作為に割り当てたセキュアシステムにおいてjitをサポートするためのシステム及び方法

Country Status (11)

Country Link
US (1) US8646050B2 (ja)
EP (1) EP2666116B1 (ja)
JP (1) JP5647360B2 (ja)
KR (1) KR101504857B1 (ja)
CN (1) CN103329139B (ja)
AU (1) AU2012200181B2 (ja)
BR (1) BR112013018294A2 (ja)
DE (1) DE102012200613A1 (ja)
GB (1) GB2487645B (ja)
MX (1) MX2013008218A (ja)
WO (1) WO2012099945A1 (ja)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9135434B2 (en) * 2010-04-19 2015-09-15 Appcentral, Inc. System and method for third party creation of applications for mobile appliances
US8646050B2 (en) * 2011-01-18 2014-02-04 Apple Inc. System and method for supporting JIT in a secure system with randomly allocated memory ranges
WO2013130548A2 (en) * 2012-02-27 2013-09-06 University Of Virginia Patent Foundation Method of instruction location randomization (ilr) and related system
US9111093B1 (en) * 2014-01-19 2015-08-18 Google Inc. Using signals from developer clusters
US9130996B1 (en) * 2014-03-26 2015-09-08 Iboss, Inc. Network notifications
US9390260B2 (en) * 2014-06-09 2016-07-12 Lehigh University Methods for enforcing control flow of a computer program
US9361102B2 (en) * 2014-06-09 2016-06-07 Lehigh University Methods for enforcing control flow of a computer program
US10311228B2 (en) 2014-09-30 2019-06-04 Apple Inc. Using a fine-grained address space layout randomization to mitigate potential security exploits
US10311227B2 (en) 2014-09-30 2019-06-04 Apple Inc. Obfuscation of an address space layout randomization mapping in a data processing system
US9507526B2 (en) * 2014-11-14 2016-11-29 Netapp, Inc. Just-in time remote data storage allocation
US10303885B2 (en) 2016-03-02 2019-05-28 Apple Inc. Methods and systems for securely executing untrusted software
US10268601B2 (en) 2016-06-17 2019-04-23 Massachusetts Institute Of Technology Timely randomized memory protection
US10310991B2 (en) * 2016-08-11 2019-06-04 Massachusetts Institute Of Technology Timely address space randomization
US10810137B2 (en) 2017-02-27 2020-10-20 Red Hat, Inc. Physical address randomization for secure encrypted memory
US11017078B2 (en) * 2018-04-24 2021-05-25 Microsoft Technology Licensing, Llc Environmentally-trained time dilation
US10785017B2 (en) 2018-04-24 2020-09-22 Microsoft Technology Licensing, Llc Mitigating timing attacks via dynamically scaled time dilation
US10965444B2 (en) 2018-04-24 2021-03-30 Microsoft Technology Licensing, Llc Mitigating timing attacks via dynamically triggered time dilation
US11593483B2 (en) * 2018-12-19 2023-02-28 The Board Of Regents Of The University Of Texas System Guarder: an efficient heap allocator with strongest and tunable security
US10747510B1 (en) * 2019-06-04 2020-08-18 Apptimize Llc Application runtime modification

Family Cites Families (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5412717A (en) * 1992-05-15 1995-05-02 Fischer; Addison M. Computer system security method and apparatus having program authorization information data structures
ATE177857T1 (de) * 1992-05-15 1999-04-15 Addison M Fischer Verfahren und vorrichtung zur sicherheit eines computersystem mit programmberechtigungsdatenstrukturen
JPH10301773A (ja) * 1997-04-30 1998-11-13 Sony Corp 情報処理装置および情報処理方法、並びに記録媒体
US6308315B1 (en) * 1998-10-14 2001-10-23 Sun Microsystems, Inc. System and method for automatically and selectively promoting object variables to method fields and variables in a digital computer system
JP2000207223A (ja) * 1999-01-12 2000-07-28 Matsushita Electric Ind Co Ltd 並列処理向けのプログラム処理方法および装置、並びに並列処理向けのプログラム処理を実行するプログラムを記録した記録媒体および並列処理向けの命令列を記録した記録媒体
JP3355602B2 (ja) * 1999-01-27 2002-12-09 インターナショナル・ビジネス・マシーンズ・コーポレーション 多次元配列オブジェクトの処理方法及び装置
US20110178613A9 (en) * 2000-02-14 2011-07-21 Pierre Bonnat Method And System For Processing Signals For A MEMS Detector That Enables Control Of A Device Using Human Breath
US6922782B1 (en) * 2000-06-15 2005-07-26 International Business Machines Corporation Apparatus and method for ensuring data integrity of unauthenticated code
US7302467B2 (en) * 2000-08-07 2007-11-27 Sony Corporation Information processing device and information processing method, service providing system, and computer-executable program for the same
US6883165B1 (en) * 2000-09-28 2005-04-19 International Business Machines Corporation Apparatus and method for avoiding deadlocks in a multithreaded environment
US20020099563A1 (en) * 2001-01-19 2002-07-25 Michael Adendorff Data warehouse system
US7526811B1 (en) * 2001-05-22 2009-04-28 Novell, Inc. Methods for detecting executable code which has been altered
JP2004303114A (ja) * 2003-04-01 2004-10-28 Hitachi Ltd インタープリタおよびネイティブコード実行方法
US7380242B2 (en) * 2003-05-14 2008-05-27 Mainsoft Israel Ltd. Compiler and software product for compiling intermediate language bytecodes into Java bytecodes
US7634778B2 (en) * 2003-06-26 2009-12-15 Microsoft Corporation Operating system managing a linked list of callback dynamic function tables for acquiring exception handling information from a runtime environment
US7797239B2 (en) * 2004-03-12 2010-09-14 Sybase, Inc. Hierarchical entitlement system with integrated inheritance and limit checks
US7191422B1 (en) * 2004-05-26 2007-03-13 Sun Microsystems, Inc. System and method for determining a carrier layout using cornered chip-to-chip input/output
US7260691B2 (en) * 2004-06-30 2007-08-21 Intel Corporation Apparatus and method for initialization of a double-sided DIMM having at least one pair of mirrored pins
US20060009112A1 (en) * 2004-07-06 2006-01-12 Guenther Donald E Electronic random message storage and generation novelty device
US7502928B2 (en) * 2004-11-12 2009-03-10 Sony Computer Entertainment Inc. Methods and apparatus for secure data processing and transmission
US7546430B1 (en) * 2005-08-15 2009-06-09 Wehnus, Llc Method of address space layout randomization for windows operating systems
JP4754299B2 (ja) * 2005-08-18 2011-08-24 株式会社エヌ・ティ・ティ・データ 情報処理装置
US20070283336A1 (en) * 2006-06-01 2007-12-06 Michael Karl Gschwind System and method for just-in-time compilation in a heterogeneous processing environment
US20070283117A1 (en) * 2006-06-05 2007-12-06 Microsoft Corporation Unmanaged memory accessor
US8028148B2 (en) * 2006-09-06 2011-09-27 Microsoft Corporation Safe and efficient allocation of memory
JP4598857B2 (ja) * 2006-09-11 2010-12-15 パナソニック株式会社 Icカード、およびそのアクセス制御方法
US20080127142A1 (en) 2006-11-28 2008-05-29 Microsoft Corporation Compiling executable code into a less-trusted address space
US8875271B2 (en) * 2006-12-08 2014-10-28 Microsoft Corporation Executing unsigned content and securing access in a closed system
JP4473256B2 (ja) * 2006-12-27 2010-06-02 インターナショナル・ビジネス・マシーンズ・コーポレーション アプリケーションプログラムによるリソースアクセスを制御するための情報処理装置、方法、及びプログラム
US8413125B2 (en) * 2007-01-26 2013-04-02 Oracle International Corporation Asynchronous dynamic compilation based on multi-session profiling to produce shared native code
JP4930078B2 (ja) * 2007-01-31 2012-05-09 富士通株式会社 情報処理方法、情報処理装置、情報処理プログラムおよび該プログラムを記録した記録媒体
US8561135B2 (en) * 2007-12-28 2013-10-15 Motorola Mobility Llc Wireless device authentication using digital certificates
US8819647B2 (en) * 2008-01-25 2014-08-26 International Business Machines Corporation Performance improvements for nested virtual machines
CN101515300B (zh) * 2009-04-02 2011-07-20 阿里巴巴集团控股有限公司 一种Ajax网页内容的抓取方法及***
JP2011002976A (ja) * 2009-06-18 2011-01-06 Panasonic Corp プログラム実行制御装置
US20110191848A1 (en) * 2010-02-03 2011-08-04 Microsoft Corporation Preventing malicious just-in-time spraying attacks
US8646050B2 (en) * 2011-01-18 2014-02-04 Apple Inc. System and method for supporting JIT in a secure system with randomly allocated memory ranges

Also Published As

Publication number Publication date
CN103329139B (zh) 2016-08-10
BR112013018294A2 (pt) 2016-11-16
GB2487645B (en) 2014-03-19
GB201200836D0 (en) 2012-02-29
EP2666116B1 (en) 2018-01-10
GB2487645A (en) 2012-08-01
US20120185700A1 (en) 2012-07-19
WO2012099945A1 (en) 2012-07-26
MX2013008218A (es) 2013-08-09
KR101504857B1 (ko) 2015-03-20
JP2014504764A (ja) 2014-02-24
AU2012200181A1 (en) 2012-08-02
KR20130114733A (ko) 2013-10-17
AU2012200181B2 (en) 2014-04-17
CN103329139A (zh) 2013-09-25
EP2666116A1 (en) 2013-11-27
US8646050B2 (en) 2014-02-04
DE102012200613A1 (de) 2012-12-06

Similar Documents

Publication Publication Date Title
JP5647360B2 (ja) メモリ範囲を無作為に割り当てたセキュアシステムにおいてjitをサポートするためのシステム及び方法
US20200349265A1 (en) Technologies for trusted i/o with a channel identifier filter and processor-based cryptographic engine
CN111651778B (zh) 基于risc-v指令架构的物理内存隔离方法
JP5500458B2 (ja) プロセッサメインメモリのメモリコンテンツのセキュリティ保護
CN107851162B (zh) 用于对安全i/o的密码引擎进行安全编程的技术
KR102244645B1 (ko) 인증된 변수의 관리
Strackx et al. Efficient isolation of trusted subsystems in embedded systems
US8826391B2 (en) Virtualized trusted descriptors
CN109800050B (zh) 一种虚拟机的内存管理方法、装置、相关设备及***
US20180082057A1 (en) Access control
WO2017062128A2 (en) Technologies for end-to-end biometric-based authentication and platform locality assertion
US20120260106A1 (en) System and method for binary layout randomization
WO2015150391A1 (en) Software protection
CN110348204A (zh) 一种代码保护***、认证方法、装置、芯片及电子设备
US10303885B2 (en) Methods and systems for securely executing untrusted software
Strackx et al. Salus: Kernel support for secure process compartments
EP3785149B1 (en) Memory assignment for guest operating systems
US9398019B2 (en) Verifying caller authorization using secret data embedded in code
JP2023065323A (ja) コンピュータに実装された方法、システム及びコンピュータプログラム
AU2013202876B2 (en) System and method for supporting JIT in a secure system with randomly allocated memory ranges
Weiser Enclave Security and Address-based Side Channels
Schneider Trusted Computing on Modern Platforms: Analysis, Challenges, and Implications
CN112364356A (zh) 一种数据处理设备和方法
Shepherd et al. Trusted Execution Environments

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140618

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140630

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140919

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20141106

R150 Certificate of patent or registration of utility model

Ref document number: 5647360

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees