JP5769891B2 - リターン指向プログラミングを抑制するための動的実行防止 - Google Patents
リターン指向プログラミングを抑制するための動的実行防止 Download PDFInfo
- Publication number
- JP5769891B2 JP5769891B2 JP2014552383A JP2014552383A JP5769891B2 JP 5769891 B2 JP5769891 B2 JP 5769891B2 JP 2014552383 A JP2014552383 A JP 2014552383A JP 2014552383 A JP2014552383 A JP 2014552383A JP 5769891 B2 JP5769891 B2 JP 5769891B2
- Authority
- JP
- Japan
- Prior art keywords
- memory
- executable
- code
- subset
- function
- 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
Links
- 230000002265 prevention Effects 0.000 title description 26
- 230000015654 memory Effects 0.000 claims description 401
- 230000006870 function Effects 0.000 claims description 250
- 238000012545 processing Methods 0.000 claims description 123
- 238000000034 method Methods 0.000 claims description 81
- 230000008569 process Effects 0.000 claims description 20
- 230000008859 change Effects 0.000 claims description 18
- 238000011010 flushing procedure Methods 0.000 claims description 3
- 230000001052 transient effect Effects 0.000 claims 1
- 238000010586 diagram Methods 0.000 description 18
- 206010000210 abortion Diseases 0.000 description 7
- 238000004891 communication Methods 0.000 description 5
- 230000000670 limiting effect Effects 0.000 description 5
- 230000000295 complement effect Effects 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 230000002085 persistent effect Effects 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 3
- 230000006399 behavior Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 239000012634 fragment Substances 0.000 description 2
- 230000002401 inhibitory effect Effects 0.000 description 2
- 239000004238 monoammonium glutamate Substances 0.000 description 2
- 239000000243 solution Substances 0.000 description 2
- 238000000638 solvent extraction Methods 0.000 description 2
- 230000002123 temporal effect Effects 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000001010 compromised effect Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000007123 defense Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000002347 injection Methods 0.000 description 1
- 239000007924 injection Substances 0.000 description 1
- 230000009191 jumping Effects 0.000 description 1
- 239000006249 magnetic particle Substances 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 239000003550 marker Substances 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000002245 particle Substances 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring 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/54—Monitoring 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 adding security routines or objects to programs
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Storage Device Security (AREA)
- Executing Machine-Instructions (AREA)
- Devices For Executing Special Programs (AREA)
- Stored Programmes (AREA)
Description
<概要>
図1は、ROP攻撃を抑制することに対する1つまたは複数の特徴が実施され得る例示的な動作環境、デバイス、および/またはシステム100を示すブロック図である。動作環境100は、1つまたは複数のメモリおよび/または記憶デバイスに結合された処理回路102(たとえば、1つまたは複数のプロセッサ)を含み得る。一例では、動作環境100は、仮想メモリとして知られているメモリ管理技術を実施し得る。仮想メモリは、マルチタスキングカーネルのために開発された技術である。仮想メモリは、直接アドレス可能な読出し/書込みメモリ(RAM)として挙動する一種類だけのメモリである「仮想」メモリが存在するかのように、プログラムが設計されることを可能にするランダムアクセスメモリおよびディスク記憶など、様々な形態のデータおよび/または実行可能コードの記憶を仮想化する。仮想メモリをサポートする多くのオペレーティングシステムはまた、それ自体の専用アドレス空間(たとえば、それ自体の仮想メモリ)内で各プロセスを実行し得、プログラムまたはアプリケーションが、仮想メモリへの唯一のアクセスを有するかのように設計されるようにする。たとえば、複数の専用アドレス空間120a、120b、120cが本明細書で示され、これらのアドレス空間のそれぞれは、異なるプロセス、プログラム、および/またはアプリケーションに関連付けられ得る。
図3は、実行可能コードが非実行可能として駐在する、すべてまたは大半のメモリ空間を最初にタグ付けすることによって実行防止を実行するように適合され得る例示的な処理回路302を示す。処理回路302は、1つまたは複数のプロセッサ310および任意にキャッシュメモリシステム312を含んでもよい。処理回路302は、メモリデバイス304、様々な通信インターフェース306、および/または1つまたは複数の入力/出力(I/O)インターフェース308などの外部デバイスに結合され得る。非限定的な例として、通信インターフェース306は、バスを介する通信用インターフェース、セルラーネットワーク、シリアルポート、パラレルポート、イーサネット(登録商標)接続、ユニバーサルシリアルバス(USB)接続、IEEE 1394(「ファイアワイヤ」)接続、ブルートゥースワイヤレス接続、802.1 a/b/g/nタイプのワイヤレス接続、ならびに他の適切な通信プロトコルおよびインターフェースを含み得る。非限定的な例として、I/Oインターフェース308は、キーボード、マウス、トラックボール、触覚装置、音声入力および出力、ならびにディスプレイなどのデバイスへのインターフェースを含み得る。
図8は、処理回路内のコードの実行を抑制するための一般的な例示的方法を示すフロー図である。この方法は、たとえば、メモリ(たとえば、仮想メモリ、内部/外部メモリなど)から命令をフェッチする処理回路によって実施されてもよい。メモリ内の実行可能コードのエリアが、非実行可能としてタグ付け(たとえば、マーク)される802。処理回路は、メモリ804から1つまたは複数の命令を実行するための要求を監視してもよい。1つまたは複数の命令を実行するための要求が検出される806と、1つまたは複数の命令が駐在するメモリエリアが、実行可能としてタグ付けされる808。次いで、処理回路は、メモリエリアから1つまたは複数の命令を実行してもよい810。完了すると、1つまたは複数の命令が駐在するメモリエリアが、元の非実行可能にタグ付けされる812。
別の例では、関数呼び出しに対するコードが、複数のメモリページの第1のサブセット内の第1のメモリページ内に駐在する場合、方法は、(a)実行可能状態にある第1のメモリページの使用を追跡するステップ、(b)すべての進行中の関数呼び出しが、第1のメモリページ内の対応するコードの実行を完了したときを確認するステップ、および/または(c)最後の進行中の関数呼び出しが完了すると、第1のメモリページに対する状態インジケータを非実行可能状態にセットするステップをさらに含み得る。
図11は、メモリエリアが必要とされるかまたは呼び出されたときにメモリエリアの状態を変更することを許容する間接レイヤの例示的な実施態様を示すブロック図である。この例では、処理回路1102は、実行可能命令/コード1108および/または対応する間接コード1104/1106(すなわち、間接レイヤ)を含むメモリモジュール1110(たとえば、仮想メモリ、メモリデバイスなど)に結合され得る。一例では、間接コード1104/1106は、実行可能コードに明確に追加または挿入されている(たとえば、プリコンパイル、コンパイル、および/またはポストコンパイルにおいて)個別の命令であってよい。別の例では、間接コード1104/1106は、メモリ内に駐在するいくつかの命令への確実なアクセスについて所望の機能を達成するために、プロセッサによって構成/翻訳される既存の命令であってよい。
102 処理回路
104 仮想メモリ
106 永続記憶デバイス
108 物理メモリデバイス
110 ヒープ
112 スタック
114 定数データ
116 初期化されたデータ
118 実行可能命令
120a 専用アドレス空間
120b 専用アドレス空間
120c 専用アドレス空間
200 呼び出しスタック
202A フレーム
202B フレーム
202C フレーム
204 フレームポインタ
206 スタックポインタ
302 処理回路
304 メモリデバイス
306 通信インターフェース
308 入力/出力(I/O)インターフェース
310 プロセッサ
312 キャッシュメモリシステム
314 キャッシュメモリ
316 命令キャッシュ
318 データキャッシュ
320 統合されたキャッシュ
322 実行防止モジュール
402 処理回路
502 処理回路
504 仮想メモリ
506 キャッシュメモリ
508 到来スタブ
510 送出スタブ
512 メモリページk
514 アプリケーション
520 関数Fを呼び出す
522 非実行可能(NX)フラグ/ビットがクリア/除去される
524 関数Fをフェッチおよび/またはロードする
526 関数Fを実行する
528 関数Fからリターンする
530 非実行可能(NX)ページフラグをセットする
534 キャッシュメモリからページkをフラッシュする
536 非実行ビットモジュール
540 間接スタブ
542 第1のメモリページ、メモリページl
544 到来/送出スタブF
548 メモリページq
550 関数F
552 到来/送出スタブI
554 到来/送出スタブJ
600 破損した呼び出しスタック
602 命令を含むメモリの一部分
610 先頭アドレス
612 ガジェットA
614 関数Y
616 先頭アドレス
618 ガジェットB
620 関数W
622 先頭アドレス
624 ガジェットE
626 関数V
628 先頭アドレス
630 ガジェットD
632 関数U
634 先頭アドレス
636 ガジェットC
638 復帰アドレス
640 関数X
702 ガジェット
704 ガジェットがフェッチされる
706 ガジェット呼び出しおよび/またはプロセスを終了する
1102 処理回路
1104 間接コード
1106 間接コード
1108 実行可能命令
1110 メモリモジュール
1112 メモリ領域、実行可能コード
1114 実行可能コードB
Claims (40)
- 処理回路において動作可能な方法であって、
メモリデバイス内の実行可能コードの複数のメモリページの第1のサブセットに対する状態インジケータを非実行可能状態にセットするステップと、
前記複数のメモリページの前記第1のサブセット内の関数に対する間接スタブを含む、前記複数のメモリページの第2のサブセットに対する状態インジケータを実行可能状態にセットするステップと、
前記複数のメモリページの前記第2のサブセット内の対応する間接スタブに対して、前記複数のメモリページの前記第1のサブセット内の前記関数のうちの1つに対する関数呼び出しを指示するステップと、を含み、前記対応する間接スタブが、前記複数のメモリページの前記第1のサブセットからの前記呼び出された関数の実行を指示する前に、前記複数のメモリページの前記第1のサブセットに対する状態インジケータを変更する方法。 - 前記実行可能コードが、単一のアプリケーションとプロセスの一方または両方に対応する、請求項1に記載の方法。
- 前記複数のメモリページの前記第1のサブセットまたは前記第2のサブセットのうちの少なくとも一方に対する状態インジケータが非実行可能状態にセットされた後で、前記メモリデバイスに実行可能コードの前記複数のメモリページをロードするステップをさらに含む、請求項1に記載の方法。
- 前記複数のメモリページの前記第1のサブセットまたは前記第2のサブセットのうちの少なくとも一方に対する状態インジケータが非実行可能状態にセットされる前に、前記メモリデバイスに実行可能コードの前記複数のメモリページをロードするステップをさらに含む、請求項1に記載の方法。
- 前記実行可能コードが駐在する前記メモリデバイスが仮想メモリを実装する、請求項1に記載の方法。
- 前記複数のメモリページの前記第1のサブセット内に駐在する実行可能コードの実行防止を行うステップをさらに含む、請求項1に記載の方法。
- 実行防止を行うステップが、
実行のために前記処理回路によって前記実行可能コードがフェッチされたときに前記非実行可能状態にあるメモリページ内に駐在するいずれかの実行可能コードの実行を打ち切るステップを含む、請求項6に記載の方法。 - 前記対応する間接スタブが、前記呼び出された関数の実行を有効化するために、前記複数のメモリページの前記第1のサブセットに対する状態インジケータを、前記非実行可能状態から前記実行可能状態に変更する、請求項1に記載の方法。
- 前記呼び出された関数が完了すると、前記複数のメモリページの前記第2のサブセット内の前記対応する間接スタブにリターンするステップをさらに含み、前記対応する間接スタブが、次いで、前記複数のメモリページの前記第1のサブセットに対する状態インジケータを変更する、請求項1に記載の方法。
- 前記対応する間接スタブが、前記呼び出された関数の実行を無効化するために、前記複数のメモリページの前記第1のサブセットに対する状態インジケータを、実行可能状態から非実行可能状態に変更する、請求項9に記載の方法。
- 前記関数呼び出しが完了すると、前記処理回路の内部キャッシュメモリをフラッシュするステップをさらに含む、請求項1に記載の方法。
- 前記間接スタブが、前記実行可能コードのコンパイル段階またはプリコンパイル段階において生成される、請求項1に記載の方法。
- 前記対応する間接スタブが、前記処理回路によって順次実行されるように制限された、少なくとも第1の命令と第2の命令とを含む、請求項1に記載の方法。
- 前記第1の命令の後に前記第2の命令以外の命令が続く場合、前記関数の実行を打ち切るステップをさらに含む、請求項13に記載の方法。
- 前記第1の命令が前記関数呼び出しの一部であり、前記第2の命令が前記呼び出された関数の初期命令である、請求項13に記載の方法。
- 前記対応する間接スタブが、前記第1の命令の後に前記第2の命令が続かない場合に実行が打ち切られるように前記第1の命令を前記第2の命令に結び付けることによって実装される、請求項15に記載の方法。
- 前記呼び出された関数に対するコードが、前記複数のメモリページの前記第1のサブセット内の第1のメモリページ内に駐在し、
前記実行可能状態にある前記第1のメモリページの使用を追跡するステップと、
すべての進行中の関数呼び出しが前記第1のメモリページ内の対応するコードの実行をいつ完了したかを確認するステップと、
最後の進行中の関数呼び出しが完了すると、前記第1のメモリページに対する状態インジケータを前記非実行可能状態にセットするステップとをさらに含む、請求項1に記載の方法。 - メモリデバイスと、
前記メモリデバイスに結合された処理回路とを備え、前記処理回路が、
前記メモリデバイス内の実行可能コードの複数のメモリページの第1のサブセットに対する状態インジケータを非実行可能状態にセットし、
前記複数のメモリページの前記第1のサブセット内の関数に対する間接スタブを含む、前記複数のメモリページの第2のサブセットに対する状態インジケータを実行可能状態にセットし、
前記複数のメモリページの前記第2のサブセット内の対応する間接スタブに対して、前記複数のメモリページの前記第1のサブセット内の前記関数のうちの1つに対する関数呼び出しを指示するように構成され、前記対応する間接スタブが、前記複数のメモリページの前記第1のサブセットからの前記呼び出された関数の実行を指示する前に、前記複数のメモリページの前記第1のサブセットに対する状態インジケータを変更する処理デバイス。 - 前記処理回路が、
前記複数のメモリページの前記第1のサブセット内に駐在する実行可能コードの実行防止を行うようにさらに構成される、請求項18に記載の処理デバイス。 - 実行防止を行うと、前記処理回路が、
実行のために前記処理回路によって前記実行可能コードがフェッチされたときに前記非実行可能状態にあるメモリページ内に駐在するいずれかの実行可能コードの実行を打ち切るようにさらに構成される、請求項19に記載の処理デバイス。 - 前記対応する間接スタブが、前記関数の実行を有効化するために、前記複数のメモリページの前記第1のサブセットに対する状態インジケータを、非実行可能状態から実行可能状態に変更する、請求項18に記載の処理デバイス。
- 前記処理回路が、
前記呼び出された関数が完了すると、前記複数のメモリページの前記第2のサブセット内の前記対応する間接スタブにリターンするようにさらに構成され、前記対応する間接スタブが、次いで、前記複数のメモリページの前記第1のサブセットに対する状態インジケータを変更する、請求項18に記載の処理デバイス。 - 前記対応する間接スタブが、前記関数の実行を無効化するために、前記複数のメモリページの前記第1のサブセットに対する状態インジケータを、実行可能状態から非実行可能状態に変更する、請求項18に記載の処理デバイス。
- 前記対応する間接スタブが、前記処理回路によって順次実行されるように制限された、少なくとも第1の命令と第2の命令とを含み、前記処理回路が、
前記第1の命令の後に前記第2の命令以外の命令が続く場合、前記関数呼び出しの実行を打ち切るようにさらに構成される、請求項18に記載の処理デバイス。 - 実行可能コードの複数のメモリページをメモリデバイスにロードするための手段と、
前記複数のメモリページの第1のサブセットに対する状態インジケータを非実行可能状態にセットするための手段と、
前記複数のメモリページの前記第1のサブセット内の関数に対する間接スタブを含む、前記複数のメモリページの第2のサブセットに対する状態インジケータを実行可能状態にセットするための手段と、
前記複数のメモリページの前記第2のサブセット内の対応する間接スタブに対して、前記複数のメモリページの前記第1のサブセット内の前記関数のうちの1つに対する関数呼び出しを指示するための手段と、を含み、前記対応する間接スタブが、前記複数のメモリページの前記第1のサブセットからの前記呼び出された関数の実行を指示する前に、前記複数のメモリページの前記第1のサブセットに対する状態インジケータを変更する、処理デバイス。 - 命令を記憶した非一時的プロセッサ可読記憶媒体であって、前記命令が少なくとも1つのプロセッサによって実行されると、
メモリデバイス内の実行可能コードの複数のメモリページの第1のサブセットに対する状態インジケータを非実行可能状態にセットすることと、
前記複数のメモリページの前記第1のサブセット内の関数に対する間接スタブを含む、前記複数のメモリページの第2のサブセットに対する状態インジケータを実行可能状態にセットすることと、
前記複数のメモリページの前記第2のサブセット内の対応する間接スタブに対する、前記複数のメモリページの前記第1のサブセット内の前記関数のうちの1つに対する関数呼び出しを指示すること、とを前記少なくとも1つのプロセッサに実行させ、前記対応する間接スタブが、前記複数のメモリページの前記第1のサブセットからの前記呼び出された関数の実行を指示する前に、前記複数のメモリページの前記第1のサブセットに対する状態インジケータを変更する、非一時的プロセッサ可読記憶媒体。 - 処理回路において動作可能な方法であって、
複数の関数を含むアプリケーションソースコードを生成するステップと、
前記ソースコード内の各関数に対する間接コードを生成するステップと、
前記処理回路における前記ソースコードと前記間接コードとに基づいて実行可能コードを生成するステップ
とを含み、前記実行可能コードは、前記ソースコードに対応する前記実行可能コードの一部がメモリにロードされるときに非実行可能として識別され、前記間接コードに対応する前記実行可能コードの一部がメモリにロードされるときに実行可能として識別されるように構成される、方法。 - 前記実行可能コードが、単一のアプリケーションとプロセスの一方又は両方に対応する、請求項27に記載の方法。
- 前記間接コードが、前記実行可能コードのコンパイル段階またはプリコンパイル段階において生成される、請求項27に記載の方法。
- 前記ソースコードおよび間接コードが、メモリにロードされるときに個別のメモリページ内に駐在するようにコンパイルされる、請求項27に記載の方法。
- 第1の関数が実行のために起動されているときに、第1の間接コードが、対応する前記第1の関数に対するメモリ状態インジケータを非実行可能状態から実行可能状態に切り替えさせる、請求項27に記載の方法。
- 第1の関数が実行を終了すると、第1の間接コードが、対応する前記第1の関数に対するメモリ状態インジケータを実行可能状態から非実行可能状態に切り替えさせる、請求項27に記載の方法。
- 第1の関数に関連する第1の間接コードが前記第1の関数を指し、前記実行可能コードが生成されると、前記第1の間接コードおよび第1の関数が異なるメモリページ内にロードされるようにコンパイルされる、請求項27に記載の方法。
- 前記間接コードが、処理回路によって順次実行されるように制限された、少なくとも第1の命令と第2の命令とを含む、請求項27に記載の方法。
- 前記第1の命令の後に前記第2の命令以外の命令が続く場合、前記間接コードの実行を打ち切らせる命令を追加するステップをさらに含む、請求項34に記載の方法。
- 命令を記憶した非一時的プロセッサ可読記憶媒体であって、前記命令が少なくとも1つのプロセッサによって実行されると、
複数の関数を含むアプリケーションソースコードを生成することと、
前記ソースコード内の各関数に対する間接コードを生成することと、
前記ソースコードと前記間接コードとに基づいて実行可能コードを生成することとを前記少なくとも1つのプロセッサに実行させ、前記実行可能コードは、前記ソースコードに対応する前記実行可能コードの一部がメモリにロードされるときに非実行可能として識別され、前記間接コードに対応する前記実行可能コードの一部がメモリにロードされるときに実行可能として識別されるように構成される、非一時的プロセッサ可読記憶媒体。 - 前記実行可能コードが、単一のアプリケーションとプロセスの一方または両方に対応する、請求項36に記載の非一時的プロセッサ可読記憶媒体。
- 前記間接コードが、前記実行可能コードのコンパイル段階またはプリコンパイル段階において生成される、請求項36に記載の非一時的プロセッサ可読記憶媒体。
- 第1の関数が実行のために起動されているときに、第1の間接コードが、対応する前記第1の関数に対するメモリ状態インジケータを非実行可能状態から実行可能状態に切り替えさせる、請求項36に記載の非一時的プロセッサ可読記憶媒体。
- 第1の関数が実行を終了すると、第1の間接コードが、対応する前記第1の関数に対するメモリ状態インジケータを実行可能状態から非実行可能状態に切り替えさせる、請求項36に記載の非一時的プロセッサ可読記憶媒体。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/351,006 | 2012-01-16 | ||
US13/351,006 US8776223B2 (en) | 2012-01-16 | 2012-01-16 | Dynamic execution prevention to inhibit return-oriented programming |
PCT/US2013/021591 WO2013109546A1 (en) | 2012-01-16 | 2013-01-15 | Dynamic execution prevention to inhibit return-oriented programming |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2015503815A JP2015503815A (ja) | 2015-02-02 |
JP5769891B2 true JP5769891B2 (ja) | 2015-08-26 |
Family
ID=47604256
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2014552383A Expired - Fee Related JP5769891B2 (ja) | 2012-01-16 | 2013-01-15 | リターン指向プログラミングを抑制するための動的実行防止 |
Country Status (8)
Country | Link |
---|---|
US (1) | US8776223B2 (ja) |
EP (1) | EP2805246B1 (ja) |
JP (1) | JP5769891B2 (ja) |
KR (1) | KR101480821B1 (ja) |
CN (2) | CN104054061B (ja) |
BR (1) | BR112014017156A8 (ja) |
TW (1) | TWI468980B (ja) |
WO (1) | WO2013109546A1 (ja) |
Families Citing this family (41)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9256730B2 (en) * | 2012-09-07 | 2016-02-09 | Crowdstrike, Inc. | Threat detection for return oriented programming |
US9177147B2 (en) * | 2012-09-28 | 2015-11-03 | Intel Corporation | Protection against return oriented programming attacks |
US9223979B2 (en) | 2012-10-31 | 2015-12-29 | Intel Corporation | Detection of return oriented programming attacks |
US10114643B2 (en) * | 2013-05-23 | 2018-10-30 | Intel Corporation | Techniques for detecting return-oriented programming |
US9189214B2 (en) * | 2013-10-30 | 2015-11-17 | International Business Machines Corporation | Code stack management |
US9703948B2 (en) * | 2014-03-28 | 2017-07-11 | Intel Corporation | Return-target restrictive return from procedure instructions, processors, methods, and systems |
US9390264B2 (en) | 2014-04-18 | 2016-07-12 | Qualcomm Incorporated | Hardware-based stack control information protection |
US9904780B2 (en) * | 2014-07-31 | 2018-02-27 | Nec Corporation | Transparent detection and extraction of return-oriented-programming attacks |
EP2996034B1 (en) * | 2014-09-11 | 2018-08-15 | Nxp B.V. | Execution flow protection in microcontrollers |
WO2016041592A1 (en) * | 2014-09-17 | 2016-03-24 | Irdeto B.V. | Generating and executing protected items of software |
US9646154B2 (en) * | 2014-12-12 | 2017-05-09 | Microsoft Technology Licensing, Llc | Return oriented programming (ROP) attack protection |
US9569613B2 (en) * | 2014-12-23 | 2017-02-14 | Intel Corporation | Techniques for enforcing control flow integrity using binary translation |
SG10201504066QA (en) * | 2015-05-25 | 2016-12-29 | Huawei Internat Pte Ltd | Method and system for defense against return oriented programming (rop) based attacks |
US9576138B1 (en) | 2015-09-30 | 2017-02-21 | International Business Machines Corporation | Mitigating ROP attacks |
US9767292B2 (en) | 2015-10-11 | 2017-09-19 | Unexploitable Holdings Llc | Systems and methods to identify security exploits by generating a type based self-assembling indirect control flow graph |
US9904782B2 (en) * | 2015-10-27 | 2018-02-27 | Mcafee, Llc | Synchronous execution of designated computing events using hardware-assisted virtualization |
US10152592B2 (en) | 2015-12-11 | 2018-12-11 | International Business Machines Corporation | Compiler assisted protection against arbitrary code execution |
US10762199B2 (en) | 2015-12-11 | 2020-09-01 | International Business Machines Corporation | Compiler assisted protection against arbitrary code execution |
US10007787B2 (en) | 2015-12-28 | 2018-06-26 | International Business Machines Corporation | Runtime return-oriented programming detection |
US11089033B2 (en) * | 2016-04-26 | 2021-08-10 | Mitsubishi Electric Corporation | Intrusion detection device, intrusion detection method, and computer readable medium |
US10423792B2 (en) | 2016-09-23 | 2019-09-24 | Red Hat, Inc. | Identifying exploitable code sequences |
US10437990B2 (en) | 2016-09-30 | 2019-10-08 | Mcafee, Llc | Detection of return oriented programming attacks in a processor |
KR101908573B1 (ko) | 2016-11-01 | 2018-10-16 | 성균관대학교 산학협력단 | 효율적인 리턴-지향형 프로그래밍 공격을 방어할 수 있도록 컴퓨터 프로그램을 생성하는 방법 |
US10599835B2 (en) | 2018-02-06 | 2020-03-24 | Vmware, Inc. | 32-bit address space containment to secure processes from speculative rogue cache loads |
CN110598406B (zh) * | 2018-06-12 | 2022-08-23 | 杨力祥 | 一种数据保护方法及计算装置 |
WO2020095295A1 (en) * | 2018-11-07 | 2020-05-14 | C2A-Sec, Ltd. | Return-oriented programming protection |
US11036619B2 (en) | 2019-06-06 | 2021-06-15 | International Business Machines Corporation | Bypassing execution of a module in real-time |
US11074069B2 (en) | 2019-06-06 | 2021-07-27 | International Business Machines Corporation | Replaying interactions with transactional and database environments with re-arrangement |
US11016762B2 (en) | 2019-06-06 | 2021-05-25 | International Business Machines Corporation | Determining caller of a module in real-time |
US10915426B2 (en) | 2019-06-06 | 2021-02-09 | International Business Machines Corporation | Intercepting and recording calls to a module in real-time |
US10929126B2 (en) | 2019-06-06 | 2021-02-23 | International Business Machines Corporation | Intercepting and replaying interactions with transactional and database environments |
US11341241B2 (en) | 2019-11-08 | 2022-05-24 | International Business Machines Corporation | Enhancing memory safe programming using a page frame tag mechanism |
US11989286B2 (en) * | 2021-05-07 | 2024-05-21 | Ventana Micro Systems Inc. | Conditioning store-to-load forwarding (STLF) on past observations of STLF propriety |
US12099448B2 (en) | 2021-05-07 | 2024-09-24 | Ventana Micro Systems Inc. | Virtually-indexed cache coherency using physical address proxies |
US12093179B2 (en) | 2021-05-07 | 2024-09-17 | Ventana Micro Systems Inc. | Store-to-load forwarding correctness checks using physical address proxies stored in load queue entries |
US11989285B2 (en) | 2021-05-07 | 2024-05-21 | Ventana Micro Systems Inc. | Thwarting store-to-load forwarding side channel attacks by pre-forwarding matching of physical address proxies and/or permission checking |
US12086063B2 (en) | 2021-05-07 | 2024-09-10 | Ventana Micro Systems Inc. | Physical address proxy reuse management |
US12073220B2 (en) | 2021-05-07 | 2024-08-27 | Ventana Micro Systems Inc. | Store-to-load forwarding correctness checks at store instruction commit |
US12079129B2 (en) | 2021-05-07 | 2024-09-03 | Ventana Micro Systems Inc. | Using physical address proxies to accomplish penalty-less processing of load/store instructions whose data straddles cache line address boundaries |
US11868263B2 (en) | 2021-05-07 | 2024-01-09 | Ventana Micro Systems Inc. | Using physical address proxies to handle synonyms when writing store data to a virtually-indexed cache |
US12079126B2 (en) * | 2021-05-07 | 2024-09-03 | Ventana Micro Systems Inc. | Unforwardable load instruction re-execution eligibility based on cache update by identified store instruction |
Family Cites Families (29)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5742840A (en) * | 1995-08-16 | 1998-04-21 | Microunity Systems Engineering, Inc. | General purpose, multiple precision parallel operation, programmable media processor |
US6317870B1 (en) * | 1999-02-26 | 2001-11-13 | Hewlett-Packard Company | System and method for optimization of inter-module procedure calls |
US6654888B1 (en) * | 1999-12-31 | 2003-11-25 | International Business Machines Corporation | Installing and controlling trial software |
GB0226874D0 (en) * | 2002-11-18 | 2002-12-24 | Advanced Risc Mach Ltd | Switching between secure and non-secure processing modes |
US7475220B1 (en) | 2003-08-18 | 2009-01-06 | Cray Incorporated | Buffer overflow detection |
US7287283B1 (en) | 2003-09-25 | 2007-10-23 | Symantec Corporation | Return-to-LIBC attack blocking system and method |
US20080133858A1 (en) | 2004-11-04 | 2008-06-05 | Board Of Trustees Of Michigan State University | Secure Bit |
US7540026B1 (en) | 2005-01-24 | 2009-05-26 | Symantec Corporation | No-execute processor feature global disabling prevention system and method |
WO2007035623A1 (en) * | 2005-09-17 | 2007-03-29 | Technology Group Northwest Inc. | System and method for foiling code-injection attacks in a computing device |
GB0525871D0 (en) * | 2005-12-20 | 2006-02-01 | Symbian Software Ltd | Malicious software detecting in a computing device |
US8041958B2 (en) * | 2006-02-14 | 2011-10-18 | Lenovo (Singapore) Pte. Ltd. | Method for preventing malicious software from execution within a computer system |
US7464226B2 (en) * | 2006-02-23 | 2008-12-09 | Lars Andreas Reinertsen | Fractional caching |
US8079032B2 (en) * | 2006-03-22 | 2011-12-13 | Webroot Software, Inc. | Method and system for rendering harmless a locked pestware executable object |
US9064115B2 (en) * | 2006-04-06 | 2015-06-23 | Pulse Secure, Llc | Malware detection system and method for limited access mobile platforms |
JP2007304954A (ja) * | 2006-05-12 | 2007-11-22 | Sharp Corp | メモリ保護機能を有するコンピュータシステム |
US8286238B2 (en) * | 2006-09-29 | 2012-10-09 | Intel Corporation | Method and apparatus for run-time in-memory patching of code from a service processor |
CN101093531B (zh) * | 2007-04-30 | 2011-05-11 | 李宏强 | 一种提高计算机软件安全的方法 |
CN100541509C (zh) * | 2007-12-10 | 2009-09-16 | 上海北大方正科技电脑系统有限公司 | 一种查杀电脑病毒的方法 |
US8074281B2 (en) * | 2008-01-14 | 2011-12-06 | Microsoft Corporation | Malware detection with taint tracking |
US8578483B2 (en) | 2008-07-31 | 2013-11-05 | Carnegie Mellon University | Systems and methods for preventing unauthorized modification of an operating system |
CN101446905B (zh) * | 2008-12-29 | 2012-06-27 | 飞天诚信科技股份有限公司 | 编译方法 |
EP2256659A1 (en) * | 2009-05-27 | 2010-12-01 | NTT DoCoMo, Inc. | Method and apparatus for preventing modification of a program execution flow |
US8352797B2 (en) | 2009-12-08 | 2013-01-08 | Microsoft Corporation | Software fault isolation using byte-granularity memory protection |
US8464233B2 (en) * | 2010-06-21 | 2013-06-11 | Microsoft Corporation | Compile time interpretation of markup codes |
US8756590B2 (en) * | 2010-06-22 | 2014-06-17 | Microsoft Corporation | Binding data parallel device source code |
US8789189B2 (en) * | 2010-06-24 | 2014-07-22 | NeurallQ, Inc. | System and method for sampling forensic data of unauthorized activities using executability states |
US8332594B2 (en) * | 2010-06-28 | 2012-12-11 | International Business Machines Corporation | Memory management computer |
US9116717B2 (en) * | 2011-05-27 | 2015-08-25 | Cylance Inc. | Run-time interception of software methods |
US20120331303A1 (en) * | 2011-06-23 | 2012-12-27 | Andersson Jonathan E | Method and system for preventing execution of malware |
-
2012
- 2012-01-16 US US13/351,006 patent/US8776223B2/en active Active
-
2013
- 2013-01-15 CN CN201380005427.4A patent/CN104054061B/zh active Active
- 2013-01-15 KR KR1020147022839A patent/KR101480821B1/ko active IP Right Grant
- 2013-01-15 CN CN201510679658.4A patent/CN105303104B/zh active Active
- 2013-01-15 EP EP13701340.5A patent/EP2805246B1/en active Active
- 2013-01-15 TW TW102101513A patent/TWI468980B/zh not_active IP Right Cessation
- 2013-01-15 JP JP2014552383A patent/JP5769891B2/ja not_active Expired - Fee Related
- 2013-01-15 WO PCT/US2013/021591 patent/WO2013109546A1/en active Application Filing
- 2013-01-15 BR BR112014017156A patent/BR112014017156A8/pt not_active IP Right Cessation
Also Published As
Publication number | Publication date |
---|---|
CN105303104B (zh) | 2019-03-22 |
EP2805246A1 (en) | 2014-11-26 |
TW201342109A (zh) | 2013-10-16 |
WO2013109546A1 (en) | 2013-07-25 |
KR101480821B1 (ko) | 2015-01-09 |
KR20140114433A (ko) | 2014-09-26 |
EP2805246B1 (en) | 2017-03-01 |
US8776223B2 (en) | 2014-07-08 |
CN104054061A (zh) | 2014-09-17 |
US20130185792A1 (en) | 2013-07-18 |
BR112014017156A2 (pt) | 2017-06-13 |
CN105303104A (zh) | 2016-02-03 |
BR112014017156A8 (pt) | 2017-07-04 |
TWI468980B (zh) | 2015-01-11 |
CN104054061B (zh) | 2015-11-25 |
JP2015503815A (ja) | 2015-02-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5769891B2 (ja) | リターン指向プログラミングを抑制するための動的実行防止 | |
US11841966B2 (en) | Inhibiting memory disclosure attacks using destructive code reads | |
JP5944520B2 (ja) | リターン指向プログラミングエクスプロイトを検出するための方法、デバイス、およびシステム | |
US10445494B2 (en) | Attack protection for valid gadget control transfers | |
Davi et al. | Isomeron: Code Randomization Resilient to (Just-In-Time) Return-Oriented Programming. | |
US9250937B1 (en) | Code randomization for just-in-time compilers | |
US10311229B1 (en) | Mitigating timing side-channel attacks by obscuring alternatives in code | |
TWI717762B (zh) | 動態分段位址空間佈局隨機化技術 | |
US10528729B2 (en) | Methods and systems for defending against cyber-attacks | |
US10868665B1 (en) | Mitigating timing side-channel attacks by obscuring accesses to sensitive data | |
US20160171213A1 (en) | Apparatus and method for controlling instruction execution to prevent illegal accesses to a computer | |
US10572666B2 (en) | Return-oriented programming mitigation | |
US11307856B2 (en) | Branch target variant of branch-with-link instruction | |
US11893113B2 (en) | Return-oriented programming protection | |
Shao et al. | fASLR: Function-based ASLR for resource-constrained IoT systems | |
US20180004947A1 (en) | Enhanced control transfer security | |
JP2006048186A (ja) | 動的コンパイラの生成コードを保護する言語処理系 | |
Strackx et al. | Efficient and effective buffer overflow protection on ARM processors | |
LUȚAȘ et al. | Bypassing KPTI Using the Speculative Behavior of the SWAPGS Instruction | |
Ripoll-Ripoll | return-to-csu: A New Method to Bypass 64-bit Linux ASLR |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20140813 |
|
A529 | Written submission of copy of amendment under article 34 pct |
Free format text: JAPANESE INTERMEDIATE CODE: A529 Effective date: 20140711 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20140813 |
|
A871 | Explanation of circumstances concerning accelerated examination |
Free format text: JAPANESE INTERMEDIATE CODE: A871 Effective date: 20140813 |
|
A975 | Report on accelerated examination |
Free format text: JAPANESE INTERMEDIATE CODE: A971005 Effective date: 20141202 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20141208 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20150309 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20150424 |
|
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: 20150525 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20150623 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5769891 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 |