JP6494744B2 - リターン指向プログラミング攻撃の透過的な検出及び抽出 - Google Patents

リターン指向プログラミング攻撃の透過的な検出及び抽出 Download PDF

Info

Publication number
JP6494744B2
JP6494744B2 JP2017507946A JP2017507946A JP6494744B2 JP 6494744 B2 JP6494744 B2 JP 6494744B2 JP 2017507946 A JP2017507946 A JP 2017507946A JP 2017507946 A JP2017507946 A JP 2017507946A JP 6494744 B2 JP6494744 B2 JP 6494744B2
Authority
JP
Japan
Prior art keywords
stack
rop
attack
gadget
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.)
Active
Application number
JP2017507946A
Other languages
English (en)
Other versions
JP2017514260A (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.)
NEC Laboratories America Inc
Original Assignee
NEC Laboratories America 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 NEC Laboratories America Inc filed Critical NEC Laboratories America Inc
Publication of JP2017514260A publication Critical patent/JP2017514260A/ja
Application granted granted Critical
Publication of JP6494744B2 publication Critical patent/JP6494744B2/ja
Active 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
    • 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/55Detecting local intrusion or implementing counter-measures
    • G06F21/554Detecting local intrusion or implementing counter-measures involving event detection and direct action
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/033Test or assess software

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • Debugging And Monitoring (AREA)
  • Quality & Reliability (AREA)
  • Biomedical Technology (AREA)

Description

この出願は、2014年 7月31日に出願された米国特許仮出願第62/031204号を基礎とし、その開示の全てをここに取り込む。
本発明は、リターン指向プログラミング(Return-oriented-programming:ROP)攻撃の検出及び防止に関し、特にコード及び/またはスタックの不一致に基づくROP攻撃の透過的な検出、抽出及び防止に関する。
リターン指向プログラミング(ROP)は、最も高度で強力な現代の攻撃技法のうちの1つであり、最先端のセキュリティ防御機構(例えばデータ実行防止(DEP:Data Execution Prevention)、アドレス空間レイアウトランダム化(ASLR:Address Space layout randomization)等)をバイパスできる。この技法は、その強度ゆえに、現代の攻撃及びセキュリティ上の弱点を突く手段(exploit)で広まってきている。攻撃を検出するためにこれまでいくつかの手法が提案されてきたが、従来の手法は攻撃が発生した後にしかそれを検出できない。さらにほとんどの手法は、プログラム制御フローの分析(例えばバイナリコードまたはソースコードの分解)及びセキュリティ強化コードのプログラム内への挿入等、保護すべきプログラムを理解する必要がある。しかしながら、プログラムがサポート情報(例えばソースコード情報)無しに配備される製造環境では、必ずしもこうした要件を利用できるとは限らない。
ROP攻撃を検出するための従来の手法(例えばkBouncer)では、コモディティプロセッサのハードウェア機能(例えばIntel CPU(Central Processing Unit)最終分岐記録)により提供される間接的分岐トレースを使用することでROP攻撃を検出している。これらのCPUは、最終分岐を特定のレジスタに格納する。例えばkBouncerは、リターン命令を記録し、それらに呼び出し命令が先行しているか否かをチェックする。ROP攻撃を検出するための従来の他の手法(例えばROPPecker)では、現代のCPUの最終分岐記録により発見された互いに連鎖するROPガジェットの長いシーケンスの存在を識別することでROP攻撃を検出する。この手法は、プログラムバイナリ及び関連ライブラリに含まれるROPガジェットを前処理する必要がある。この手法は、この情報及び最終分岐内のリターンアドレスを使用することで、長い連鎖の存在を判定する。しかしながら、これら従来の手法はいずれもROPガジェットが既に実行された後にROP攻撃を検出できるにすぎない。
スタック検査を実行するためのコンピュータ実装方法は、スタック内の1つまたは複数のROPガジェットを検出するために、スタック検査デバイスを使用する。スタック検査は、1つまたは複数の障害条件を検出するためにスタックフレームをスタックの頂部からスタックの底部に向かってスタックウォーキングする工程と、有効なスタックフレーム及びリターンコードアドレスが存在するか否かを判定する工程と、有効なスタックフレーム及びリターンコードアドレスが存在しない場合、OP攻撃を示すタイプIII障害条件を含む、障害条件タイプを判定する工程とを含む。ROP攻撃は、コンテインメントデバイスを用いて封じ込まれ、ROP攻撃中にスタック内で検出された1つまたは複数のROPガジェットは攻撃分析デバイスを用いて分析される。
1つまたは複数の応用例におけるリターン指向プログラミング(ROP)攻撃の検出及び防止のためのシステムは、攻撃検出デバイスを含み、攻撃検出デバイスは、スタック内で1つまたは複数のROPガジェットを検出するためにスタック検査を実行するためのスタック検査デバイスを含む。スタック検査デバイスは、1つまたは複数の障害条件を検出するためにスタックフレームをスタックの頂部からスタックの底部に向かってスタックウォーキングするためのスタックウォーキングデバイスと、有効なスタックフレーム及びリターンコードアドレスが存在するか否かを判定し、OP攻撃を示すタイプIII障害条件を含む、障害条件タイプを判定するための、アドレス妥当性判定デバイスと、をさらに含む。コンテインメントデバイスはROP攻撃を封じ込め、攻撃分析デバイスはROP攻撃中にスタック内で検出された1つまたは複数のROPガジェットを分析する。
コンピュータで読み取り可能なプログラムを含むコンピュータ読み取り可能な記録媒体であって、コンピュータで読み取り可能なプログラム、コンピュータ上で実行されるとき、スタック内で1つまたは複数のROPガジェットを検出するためにスタック検査デバイスを使用してスタック検査を実行する工程をコンピュータに実行させる。スタック検査は、1つまたは複数の障害条件を検出するためにスタックフレームをスタックの頂部からスタックの底部に向かってスタックウォーキングする工程と、有効なスタックフレーム及びリターンコードアドレスが存在するか否かを判定する工程と、有効なスタックフレーム及びリターンコードアドレスが存在しない場合、OP攻撃を示すタイプIII障害条件を含む、障害条件タイプを判定する工程とをさらに含む。ROP攻撃はコンテインメントデバイスを用いて封じ込まれ、ROP攻撃中にスタック内で検出された1つまたは複数のROPガジェットは攻撃分析デバイスを使用して分析される。
本発明のこれら及び他の利点は、当業者にとって以下の詳細な説明及び添付の図面を参照することで明らかになるであろう。
図1は、本原理の一実施形態による、本原理に好適な処理システムの一例を示している。 図2は、本原理の一実施形態による、リターン指向プログラミング(ROP)攻撃を伴うスタックウォーキング及び伴わないスタックウォーキングの一例の図を示している。 図3は、本原理の一実施形態による、リターン指向プログラミング(ROP)攻撃の検出、抽出及び防止のための方法の一例の高水準ブロック/フロー図を示している。 図4は、本原理の一実施形態による、リターン指向プログラミング(ROP)攻撃検出のための方法の一例のブロック/フロー図を示している。 図5は、本原理の一実施形態による、リターン指向プログラミング(ROP)攻撃検出のスタック検査のための方法の一例のブロック/フロー図を示している。 図6は、本原理の一実施形態による、リターン指向プログラミング(ROP)攻撃検出のためのスタックウォーキングの方法の一例を示している。 図7は、本原理の一実施形態による、リターン指向プログラミング(ROP)ガジェット分析のための方法の一例のブロック/フロー図を示している。 図8は、本原理の一実施形態による、リターン指向プログラミング(ROP)攻撃の検出、抽出及び防止のためのシステムの一例のブロック/フロー図を示している。
本発明は、本原理の様々な実施形態による、リターン指向プログラミング(ROP)攻撃の検出、抽出及び防止を対象としている。一実施形態において、本原理では、プログラムコードとスタック状況との一致を利用する。例えば、スタックからアクティブスタックフレームの関数リターンアドレスのシーケンスを検出するため、スタックウォーキングのバリエーション(例えばスタック巻き戻し)を実行し、本原理では、いずれかの不一致を検出する。
一実施形態において、本原理では、ガジェットが実行される前または(遅くとも)ガジェットから発せられた第1のシステムコールが実行される前に、そのいずれのソースコードも分析または分解することなしにプログラムバイナリを用いてスタック内のROPガジェットを検出する。このようにROP攻撃を事前に緩和することに加えて、本原理では、例えばオフラインのフォレンジック(forensic)分析を用いて攻撃者が注入したROPガジェット(例えば実行済みのガジェットと未実行のガジェットの両方を含む)の全シーケンスを系統的に抽出する。
特に有用な実施形態において、本原理では、ROP攻撃が最先のスタック内に配備された後で実行される前に、または最新のガジェットから第1のOS(Operating System)イベントが実行される前に、ROP攻撃を検出する。ほとんどのガジェットは、他のプログラムの分岐、その権限の変更、またはファイルへの書き込み等、大きな影響をもたらすシステムコール等のシステムサービスをトリガすることを意図している。本原理では、OSイベントを介してオペレーティングシステムまたは他のプログラムに向けてプログラムの境界を越えるような影響を受けるROP攻撃を緩和する。
一実施形態において、本原理では、プログラムを正しく実行させるためにコードとスタック状況とが一致していなければならないことを有利に活用する。従来、この一致はアプリケーション/プログラムの実行中に厳密にチェックされないため、ROPガジェットは(例えばCPU状態において少なくとも一時的に)停止せずに実行される。本原理では、プログラムスタックを効率的にスキャンし、ランタイム時に一致の妥当性を評価するためのスタックウォーキング技法の一変型を介して、ほとんどのネイティブプログラムバイナリ内に埋め込まれた、そのような一致を意味する情報のタイプである、特定の例外ハンドラテーブル情報を用いる。
スタックウォーキング(例えばスタック展開)は、従来はデバッギング、例外ハンドリングで使用される技法、さらに最近ではランタイム最適化技法(例えばメモリ管理のためのスタックウォーク)である。この技法はスタックをスキャンし、サイズが変化するスタックフレームを用いてスタックポインタを進行させることでリターンコードアドレスのシーケンスを発見する。一実施形態において、本原理では、スタックの一致を効率的にチェックし、スタック内にROPガジェットが配備されているか否かを事前に判定するために、この技法の変形をセキュリティドメインに採用する。検出はスタック内の(例えば潜在的に深い位置にある)スタックフレーム全体に基づくものであり、本原理のシステム及び方法では、現在発生している、または過去に発生した攻撃を検出するだけでなく、様々な実施形態では、将来実行される攻撃を検出できる。
一実施形態において、本原理では、ROPガジェットを検出し、スタック内でガジェットがその実行前に(またはガジェットからトリガされる第1のOSイベントの前に)ROP攻撃を受けないようにする。本原理について、ROPガジェットの観点から説明するが、様々な実施形態では、スタック内のリターンアドレスの任意のタイプの操作が検出及び防止できることに留意されたい。本原理では、(例えば将来実行される、及び/または過去に実行された)スタック内に配備されたROPガジェットの全シーケンスを発見するための系統的なフォレンジック能力も提供する。
本明細書で説明する実施形態は、全てハードウェアであるか、またはハードウェア要素と、ファームウェア、常駐ソフトウェア、マイクロコード等を含むが、これらに限定されないソフトウェア要素との、両方を含んでいてもよいことを理解されたい。好ましい実施形態において、本発明はハードウェア内に実装される。
各実施形態は、コンピュータまたは任意の命令実行システムによって、あるいはこれらで使用するためのプログラムコードを提供する、コンピュータで使用可能またはコンピュータで読み取り可能な媒体からアクセス可能な、コンピュータプログラム製品を含んでいてもよい。コンピュータで使用可能またはコンピュータで読み取り可能な媒体は、命令実行システム、装置またはデバイスに接続される、あるいはこれらで使用するためのプログラムを格納、通信、伝搬または移送する、任意の装置を含んでいてもよい。媒体は、磁気、光、電子、電磁、赤外線または半導体のシステム(または装置またはデバイス)、あるいは伝搬媒体とすることができる。媒体は、半導体またはソリッドステートメモリ、磁気テープ、取り外し可能なコンピュータディスケット、ランダムアクセスメモリ(RAM:Random Access Memory)、読み取り専用メモリ(ROM:Read-Only Memory)、リジッド磁気ディスク、光ディスク等の、コンピュータ読み取り可能な記録媒体を含んでいてもよい。
プログラムコードを記憶及び/または実行するのに適したデータ処理システムは、システムバスを介してメモリ要素に直接または間接的に接続された、少なくとも1つのプロセッサを含んでいてもよい。メモリ要素には、プログラムコードの実行中に用いられるローカルメモリ、バルクストレージ、並びに実行中にコードがバルクストレージから読み出される回数を減らすために少なくとも何らかのプログラムコードの一時ストレージを提供するキャッシュメモリを含むことができる。システムには、入力/出力、すなわちI/Oデバイス(キーボード、ディスプレイ、ポインティングデバイス等を含むがこれらに限定されない)を、直接またはI/Oコントローラを介して接続してもよい。
システムには、ネットワークアダプタを接続し、データ処理システムを、専用または公衆ネットワークを介して他のデータ処理システムまたはリモートプリンタまたはストレージデバイスに接続できるようにしてもよい。モデム、ケーブルモデム及びイーサネット(登録商標)カードは、現在使用可能なタイプのネットワークアダプタのほんの数例である。
次に、同じ数字が同一または同様の要素を表す図面、まず図1を参照すると、図1には、本原理の一実施形態による、本原理に好適な処理システム100の一例が示されている。処理システム100は、システムバス102を介して他の構成要素に動作可能に接続された、少なくとも1つのプロセッサ(CPU)104を含む。システムバス102には、キャッシュ106、読み取り専用メモリ(ROM)108、ランダムアクセスメモリ(RAM)110、入力/出力(I/O)アダプタ120、サウンドアダプタ130、ネットワークアダプタ140、ユーザインターフェースアダプタ150及びディスプレイアダプタ160が動作可能に接続されている。
第1のストレージデバイス122及び第2のストレージデバイス124は、I/Oアダプタ120によりシステムバス102に動作可能に接続されている。ストレージデバイス122及び124は、ディスク記憶装置(例えば、磁気記憶装置または光学ディスク記憶装置)、固体磁気装置等のいずれであってもよい。ストレージデバイス122及び124は、同じタイプの記憶装置であってもよく、異なるタイプの記憶装置であってもよい。
スピーカ132は、サウンドアダプタ130によってシステムバス102に動作可能に接続されている。トランシーバ142は、ネットワークアダプタ140によってシステムバス102に動作可能に接続されている。ディスプレイデバイス162は、ディスプレイアダプタ160によってシステムバス102に動作可能に接続されている。
第1のユーザ入力デバイス152、第2のユーザ入力デバイス154及び第3のユーザ入力デバイス156は、ユーザインターフェースアダプタ150によってシステムバス102に動作可能に接続されている。ユーザ入力デバイス152、154及び156は、キーボード、マウス、キーパッド、イメージキャプチャデバイス、モーション感知デバイス、マイクロフォン、あるいはこれらのデバイスのうちの少なくとも2つのデバイスの機能が組み込まれたデバイス等のいずれであってもよい。本原理の趣旨を維持する限りにおいて、他のタイプの入力デバイスを使用してもよい。ユーザ入力デバイス152、154及び156は、同じタイプのユーザ入力デバイスであってもよく、異なるタイプのユーザ入力デバイスであってもよい。ユーザ入力デバイス152、154及び156は、システム100に情報を入力し、システム100から情報を出力するために使用される。
処理システム100は、当業者であれば容易に思いつくような他の要素(図示せず)を含んでいてもよく、特定の要素を除いてもよい。例えば、当業者であれば容易に理解できるが、処理システム100には、その詳細な実装に応じて他の様々な入力デバイス及び/または出力デバイスを含むことができる。例えば、無線及び/または有線による種々の入力デバイス及び/または出力デバイスを使用できる。さらに、当業者であれば容易に理解できるが、様々な構成において追加のプロセッサ、コントローラ、メモリ等を使用することも可能である。処理システム100の上記及び他の変形例は、本明細書で提供される本原理の教示によって当業者であれば容易に考えられるであろう。
さらに、図1および図8に関して以下で説明するシステム100および800は、本原理のそれぞれの実施形態を実装するためのシステムであることが理解されよう。処理システム100の一部または全部は、図8のシステム800の1つまたは複数の要素で実現されてもよい。
さらに、処理システム100は、例えば図2、図3、図4、図5、図6及び図7で示す方法200、300、400、500、600及び700を含む、本明細書において説明する方法の少なくとも一部を実行してもよいと理解されるべきである。同様に、図8のシステム800の一部または全部を用いて、図2、図3、図4、図5、図6及び図7で示す方法200、300、400、500、600及び700の少なくとも一部を実行してもよい。
次に、図2を参照すると、図2には、本原理の一実施形態による、ROP攻撃を伴う及びROP攻撃を伴わないスタックウォーキング200の一例の図が示されている。一実施形態において、例えばプログラムカウンタ及びスタックポインタのペアの入力を受信すると、スタックウォーキングはスタック頂部から開始し、スタック底部に向かって移動しながら、スタック202をスキャンする。スタックポインタは、各スタックフレーム(例えばs3、s2、s1等)のサイズに対して反復的に進行し、各工程でリターンコードアドレス(例えばc3、c2、c1、c0等)を見つける(例えば反復前進)。所与のコードアドレスにおける各スタックフレーム(例えばs3、s2、s1等)のサイズは、プログラムバイナリに存在する、以下で詳細に説明する、巻き戻し情報から見つけることができる。ブロック201には、ROP攻撃を伴わないスタックウォーキングのための疑似コードの一例(例えばオリジナルコード)が示されている。
ブロック204には、本原理による、ROP攻撃を伴うスタックウォーキングの一例が示されている。一実施形態において、ROP攻撃が発生した時、ROPガジェットのシーケンスが実行され、この制御フローはオリジナルのアプリケーション/プログラムでは異常である。関数コードの異常な部分(例えばリターンで終わる関数の中央へのリターンまたはジャンプ)を使用することで、リターンアドレス間の距離はもはや有効な関数呼び出しの距離ではない。したがって、スタックウォーキングは、次のスタックフレームの適切なリターンアドレスを見つけられない可能性がある。例えばブロック205のコードを含むガジェットによって、リターンアドレス(cx)がスタック距離(sx)を与えることになり、その位置で(例えばROP攻撃により)無効なリターンアドレスが見つかる。
様々な実施形態において、本原理では、スタック内の全てのスタックフレームを検査してもよく、スタック内に配備されたROPガジェットをROP攻撃が発生する前に検出できる。さらに、攻撃が発生する前に攻撃を緩和することに加えて、本原理では、攻撃がスタック内に注入された可能性のあるガジェットの攻撃シーケンスを、自動的に抽出することが可能であり、これにより様々な実施形態においてフォレンジック分析の系統的能力を提供する。これらの実施形態を以下でより詳細に説明する。
次に、図3を参照すると、図3には、本原理の一実施形態による、リターン指向プログラミング(ROP)攻撃の検出、抽出及び防止のための方法300の一例の高水準ブロック/フロー図が示されている。一実施形態において、本原理によるシステム及び方法は、複数のアプリケーション313、315及び317を含むオペレーティングシステムカーネル310と交信できる。
ブロック320では、オペレーティングシステムイベント(例えばシステム呼び出し、中断、コンテキスト交換等)が実行され、ブロック320におけるオペレーティングシステムイベントの実行により、ブロック330では、1つまたは複数のアプリケーション(例えば313、315及び317)においてROP攻撃が発生しているか否かを検出するために、本原理によるシステム及び方法がトリガされる。様々な実施形態において、ブロック330における検出は、透過的に(例えばどのようなアプリケーションソフトウェアの挿入や修正を伴うことなく)実行される。ブロック331で攻撃が検出された場合、ブロック340で攻撃が封じ込まれ、ブロック350でROPガジェットが分析され、その後、ブロック360で出力が生成される。ブロック331で攻撃が検出されない場合、ブロック333にてアプリケーションの実行が続行される。
一実施形態において、本原理では3つの主な構成要素を採用する。第1の構成要素は、ブロック330でROP攻撃を検出するROP攻撃検出デバイスである。第2の構成要素は、攻撃の進行を止め、オペレーティングシステムまたは他のプログラムに対するいかなる影響もブロックするために、攻撃下におけるプロセス(例えばアプリケーション/プログラム)の実行を保留することで、ブロック340にて検出された攻撃を封じ込めるコンテインメントデバイスである。第3の構成要素は、ブロック350で、保留されたプロセス状態を分析し、ROPガジェットのシーケンス(例えばROP攻撃に対して使用される連鎖したオリジナルコードの再使用片であってよい)を発見する、攻撃分析デバイスである。これらの構成要素を以下でより詳細に説明する。
次に、図4を参照すると、図4には、本原理の一実施形態による、リターン指向プログラミング(ROP)攻撃検出のための方法400の一例のブロック/フロー図が示されている。ブロック420で、1つまたは複数のオペレーティングシステムイベントが実行され、これによりROP攻撃が存在するか否かを判定するためにブロック430でROP攻撃検出がトリガされる。ブロック432で、最適化スイッチがオンに切り替えられたか否かが判定される。最適化スイッチは、いくつかの実施形態において、攻撃検出中にシステム性能に対する最適化を適用するために採用してもよい。この最適化は、性能と攻撃検出のタイミングとの間のトレードオフに関連するため、この最適化は、オペレーティングシステム、アプリケーション等のポリシーに応じて、いくつかの実施形態ではオプションであってもよい。
一実施形態において、最適化スイッチがオフに切り替えられた(または存在しない)場合、ブロック434にてスタック検査が実行される。ブロック432では、最適化スイッチがオンに切り替えられた場合、ブロック436でROP攻撃の脅威レベルが閾値(例えば予め設定された閾値)よりも高いか否かを判定するために、この脅威レベルがチェックされる。ブロック436で脅威レベルが閾値レベルよりも高いと判定された場合、ブロック434でスタック検査が実行され、ブロック440にて攻撃が封じ込められる。ブロック436で脅威レベルが閾値レベルよりも低いと判定された場合、ブロック438ではスタック検査がスキップされる。
ブロック436では、本原理の一実施形態による、CPUハードウェアレベル情報に基づく閾値レベルとの比較のために、ROP攻撃脅威レベルの推定が実行される。例えば、現代のCPUは、プログラム実行の効率を向上させるために関数リターンの予測メカニズムを含む。リターンアドレスを予測するために、CPUは制限されたサイズ内でハードウェアスタックを維持できる(例えば「リターンスタックバッファ」)。プログラムの通常の実行では、リターンは呼び出しにほぼ合致するため、この情報が使用される。しかしながら、ROP攻撃が発生した場合、ROP攻撃は呼び出しとリターンとのペアを壊すため、リターンに多くの予測誤りが生じる。
一意実施形態において、予測誤りの数は、ハードウェア性能カウンタ(例えばBPU_MISSED_CALL_RET)を用いて効率的に測定できる。このカウンタの予測誤り率を測定することで、ROP攻撃の可能性が推定される。ROP脅威レベルが閾値レベルより上であるか否かは、ブロック436で、この推定が本原理による特定のプログラムに対して定義された閾値よりも高いか低いかによって決定される。
次に、図5を参照すると、図5には、本原理の一実施形態による、リターン指向プログラミング(ROP)攻撃検出のスタック検査のための方法500の一例のブロック/フロー図が示されている。ブロック534にて、ROP攻撃を検出するためにスタック検査が実行される。一実施形態において、ブロック501で、スタックの頂部からスタックウォーキングが開始され、ブロック503で、例えばプログラムバイナリから巻き戻し情報を採用することで、スタック内の次のフレームが特定される。ブロック505で、スタックポインタがスタックの底部を示す(例えばスタックウォーキングがスタックの底部に到達した)場合、ブロック507でスタック検査を終了する。ブロック505で、スタックポインタがスタックの底部を示していない場合、ブロック509で、スタックフレームから有効なスタックフレーム及び/またはリターンコード(例えばリターンアドレス)が見つかったか否かを判定する。
一実施形態において、ブロック509で、有効なスタックフレーム及びリターンコードが見つかった場合、ブロック503で、次のスタックフレームを特定するためにスタック検査を進める。ブロック509で、有効なスタックフレーム及びリターンコードが見つからなかった場合、本原理を採用する様々な実施形態では、いずれのタイプの障害が存在するかを判定する。
一実施形態において、スタックウォーキングは、説明のために3つのタイプの障害ケースに分類される、複数の理由の障害条件に戻る。例えば動的に生成されたコードが実行された場合、スタックウォーキング方法では(例えば巻き戻し情報の見落としにより)スタックフレームが見つからない場合がある。仮想機械、インタープリタ、エミュレータ等は、このタイプのコードを使用する。このような障害ケースは、実行可能許可を伴うメモリのデータセクション内のコードリターンアドレスにより特徴付けることが可能であり、スタックポインタは有効なスタックメモリセクションに属する。説明を容易にするため、これらのタイプの障害ケースをタイプI障害と呼ぶ。
一実施形態において、次のタイプの障害(タイプIIと呼ばれる)は、アプリケーション内のほとんどの他のコードが適切な巻き戻し情報を有する一方で、適切な巻き戻し情報を持たないアプリケーション内の特定のコードによって引き起こされる。このケースでは、コードリターンアドレスは実行可能許可を伴うコードメモリセクション内にあり、コードに関する対応するバイナリファイルが存在する。スタックポインタは有効なスタックメモリセクションに属する。第3のタイプの障害(タイプIIIと呼ばれる)は、無効なスタックポインタまたは無効なコードアドレスによって特徴付けることができる。特に、この条件は、コードリターンアドレスがいずれのメモリセクションにも属さない場合、またはコードアドレスが実行不能なメモリセクションに属する場合、またはスタックポインタが有効なスタックメモリセクションに属さない場合に決定される。これは、ROP攻撃によって引き起こされる、プログラムカウンタ及びスタックのランタイム状況が一致しない通常の特徴であり、ROP攻撃の存在を示すものである。
一実施形態において、ブロック509で、障害が検出された(例えば有効なスタックフレーム及びリターンコードがない)場合、ブロック511で、最初に障害をチェックし、障害がタイプIであるかタイプIIであるかを判定する。ブロック511でタイプIまたはタイプIIの障害であると判定された場合、ブロック515で耐障害スタックウォーキング(resilient stack walking)を実行する。耐障害スタックウォーキングでは、タイプIII障害を回避しながら、有効なスタックフレームのスタックを(例えばブルートフォース(brute force)様式で)スキャンしてもよい。ブロック517で、ブロック515の耐障害スタックウォーキングがスタックの底部に到達したと判定された場合、ブロック507でスタック検査が停止されて終了する。ブロック517で、スタックの底部に到達していないと判定された場合、ブロック509で、有効なスタックフレーム及びリターンコードが存在するか否かがチェックされる。
一実施形態において、ブロック511で、タイプIまたはタイプIIの障害が見つからない場合、ブロック513で、タイプIII障害が存在するか否かが判定される。タイプIII障害が検出された場合、ブロック540で攻撃が封じ込められる。タイプIII障害が存在しない場合、ブロック507でスタック検査を終了する。いくつかの実施形態において、ブロック511でタイプIまたはタイプIIの障害が検出されない場合、ブロック513で障害はタイプIII障害であると自動的に決定される。
次に、図6を参照すると、図6には、本原理の一実施形態による、リターン指向プログラミング(ROP)攻撃検出のためのスタックウォーキングの方法600の一例が示されている。一実施形態において、本原理を採用し、スタックの頂部605から開始し、スタックの底部617に到達するまで、スタック601を上方にスキャンする。一実施形態において、フレーム603は、第1の無効なフレーム607を検出するためにスタック頂部から連続してスキャンされる。ブロック611及び614で、タイプI及び/またはタイプIIの障害が検出される(及び停止せずにスキャンされる)可能性があるが、ブロック615で、検出ポイント(POD)609でタイプIII障害が検出された場合、検出された攻撃はブロック640にて封じ込められる。
一実施形態において、攻撃の封じ込めは、ブロック640にて、コンテインメントデバイスによって実行される。攻撃のいずれの進行も回避し、コンピューティングシステム内部で影響をブロックするために、ブロック640で、見つかった疑わしいプロセス(例えばROP攻撃)の封じ込めが実行される。ブロック640における攻撃の封じ込めには、一実施形態による2つのタスクを実行する。第1に、見つかったプロセスの実行を保留する。第2に、攻撃分析デバイスを使用して攻撃の詳細を判断するために、実行状況情報(例えばオフライン分析のための全てのレジスタ、スタック及びヒープメモリ)をストレージデバイス内に格納する(図7に関して以下で詳細に説明する)。加えて、タイプIIIが検出されたポイントのプログラムカウンタ及びスタックポインタのペアを、ストレージデバイスに格納する。この実行状況情報は検出ポイント(POD)と呼んでもよく、攻撃分析デバイスを使用して攻撃を分析するための開始ポイントである(図7に関して以下で詳細に説明する)。
次に、図4及び図5を参照しつつ図7を参照すると、図7には、本原理の一実施形態による、リターン指向プログラミング(ROP)ガジェット分析のための方法700の一例のブロック/フロー図が示されている。ブロック750にて、一実施形態による攻撃分析デバイスを使用してROPガジェット分析を実行する。ブロック750におけるガジェット分析は、保存された疑わしいプロセスのランタイム状況から攻撃(例えばROP攻撃)の詳細を決定する。ROP攻撃において、攻撃者は、違法コードの一部(例えばROPガジェット)を示す連鎖する一連のリターンアドレスを置く。こうした一連のコード(例えばROPガジェット)は、オリジナルプログラムでは意図していない悪意のある論理(例えば悪意のあるプログラム関数)を実行することがある。一実施形態において、本原理による、ガジェットの検索及び分析750は、ブロック701の前方ROPガジェット検索及び/または分析と、ブロック703の後方ROPガジェット検索及び/または分析との両方を実行するため、PODからスタックのスキャンを開始することで、ROPガジェットのシーケンスを自動的に見つけることができる。
一実施形態において、前方ROPガジェット検索701は、ブロック711でPODからスタックの検索を開始する。PODは、ブロック430で攻撃検出器デバイスによって検出され、ブロック740にて、攻撃の封じ込め中にストレージデバイスに封じ込められる。本原理を採用して、スタックポインタのサイズだけスタックポインタをスタックの底部に向けて前進させ、ブロック712で、スタック内の次のリターンアドレスを見つけるためのサブルーチンとして、ブロック501で実行されるスタックウォーキングと同様のスタックウォーキング方法を適用してもよい。ブロック713にてスタックの底部に到達した場合、ブロック714にて最後に取得されたROPガジェットをROPガジェットシーケンスの終端としてマークし、前方ROPガジェット検索701を停止する。
一実施形態において、スタックの底部に到達していない場合、前方ROPガジェット検索は、ブロック717にて、スタックウォーキング方法が有効なリターンアドレスを戻すか否かを判定する。ブロック717にて、無効なリターンアドレス(例えばコードアドレス)が戻された場合、ブロック716にて、無効なアドレスに呼び出し命令が先行しているか否かが判定される。例えば安全なプログラム制御フローでは、これは呼び出し命令によってプッシュされる値であり、呼び出し命令が先行しているはずである。しかしながら、一般に、ROPでは、このアドレスが必ずしも呼び出し命令に先行していないROPガジェットのエントリを示す。この条件に見合わない(例えばアドレスに有効な呼び出し命令が先行していない)場合、ブロック715にて、リターンコードアドレスがROPガジェットとして記録され、ブロック712にて、次のリターンアドレスが特定される。アドレスに有効な呼び出し命令が先行している場合、前方ROPガジェット検索は、本原理によるいずれのROPガジェットも記録せずに、ブロック712にて次のリターンアドレスを特定する。
一実施形態において、いくつかのROPガジェットが検出時点で既に実行されている場合、PODはまだ実行されていない第1のROPガジェットを示す。こうしたケースでは、前方ROPガジェット検索701がROPガジェットのまだ実行されていない部分シーケンスを検索及び/または分析した後、本原理の実施形態による後方ROPガジェット検索703を実行し、既に実行されたROPガジェットを検索及び/または分析する。
一実施形態において、ブロック721にて、後方ROPガジェット検索703がPODから開始し、ブロック722にて、次のリターンアドレスを特定するため及び/またはROPガジェットとなる命令を見つけるために、スタックの開始に向けてスタックポインタのサイズだけ検索を前進させる。前進はブロック723にて、スタックの開始まで、または閾値条件(例えば所定の閾値レベル)によって決められたスタック位置まで続行してもよい。ブロック723にて、スタックの開始(または閾値条件)に到達したと判定した場合、最後に見つかったROPガジェットは、ブロック724にて、ROPガジェットシーケンスの開始としてマークされ、ブロック705にて、後方ROPガジェット検索703が完了する。
一実施形態において、ブロック723にて、スタックの開始(または閾値条件)に到達していないと判定した場合、検索は、スタックウォーキングサブルーチンが無効なアドレスを戻したか否か、及び無効なアドレスに呼び出し命令が先行しているか否かを、ブロック726にて判定する。無効なアドレスが見つかった場合、及びブロック726で無効なアドレスに呼び出し命令が先行していない場合、ブロック725にて、リターンコードアドレスをROPガジェットとして記録し、ブロック722にて、次のリターンアドレスを特定する。アドレスが有効であり、ブロック726にて、有効な呼び出し命令が先行していると判定した場合、後方ROPガジェット検索は、本原理の一実施形態により、いずれのROPガジェットも記録せずにブロック722にて次のリターンアドレスを特定する。
次に、図4、図5及び図7を参照しつつ図8を参照すると、図8には、本原理の一実施形態による、リターン指向プログラミング(ROP)攻撃の検出、抽出及び防止のためのシステム800の一例のブロック/フロー図が示されている。説明が煩雑とならないよう、システム800の多くの態様を単一の形で説明するが、システム800の説明で記載する複数のアイテムには同様の態様を適用できる。例えば、攻撃検出器803について単一のROP攻撃を記載しているが、本原理の趣旨を維持する限りにおいて、本原理が教示する複数の攻撃検出器803により複数のROP攻撃を検出してもよい。さらに、攻撃検出器803は、本原理の趣旨を維持する限りにおいて、複数の形に拡張可能なシステム800に関連する、単なる一態様であることが理解されよう。
本原理の様々な実施形態によるシステム800は、バス801に接続される、1つまたは複数の攻撃検出器803、1つまたは複数のコンテインメントデバイス805、1つまたは複数の攻撃分析デバイス807、1つまたは複数のスタック検査デバイス809、1つまたは複数の最適化スイッチ811、1つまたは複数のスタックウォーキングデバイス813、1つまたは複数のアドレス妥当性判定デバイス815、並びに1つまたは複数のストレージデバイス817を含むことができる。
一実施形態において、1つまたは複数の攻撃検出器803を用いて、本原理による(例えばブロック430で)ROP攻撃を検出してもよく、また(例えばブロック436で)ROP脅威が閾値レベルよりも上であるかまたは下であるかを判定してもよい。1つまたは複数のコンテインメントデバイス805を用いて、攻撃のいずれの進行も防止し(例えばコンピューティングシステム、アプリケーション等における)、いずれの攻撃の影響もブロックするために、(ブロック440で)ROP攻撃を封じ込めてもよく、ROP攻撃情報をストレージデバイス817に格納してもよい。攻撃検索及び分析デバイス807は、(例えばブロック750で)ROPガジェットの検索及び分析を実行してもよい。攻撃検索及び分析デバイス807は、本原理の様々な実施形態による、(例えばブロック701で)前方ROPガジェット検索及び/または(例えばブロック703で)後方ROPガジェット検索を実行してもよい。
一実施形態において、スタック検査デバイス809を用いて、ROP攻撃を検出するために(例えばブロック534で)1つまたは複数のスタックを検査し、障害のタイプ(例えばタイプI、II及び/またはIII)を決定する。最適化スイッチ811を用いて(例えばブロック432で)、オーバーヘッドコストを低下させて速度を上げてもよく、本原理が適用されるシステムのハードウェアに依存してもよい。一実施形態において、スタックウォーキングデバイス813を用いて、スタックウォーキング及び/または耐障害スタックウォーキングを(例えばそれぞれブロック501及び515で)実行してもよく、アドレス妥当性判定デバイス815は、本原理の様々な実施形態により、(例えばブロック509で)有効なスタックフレーム及び/またはリターンアドレスを見つけたか否かを判定してもよい。
上述した説明は、あらゆる点で説明的かつ例示的なものであり、制限的なものではないと理解されるべきであり、本明細書で開示する本発明の範囲は、詳細な説明から決定されるべきではなく、特許法で認められた最大限の広さに基づいて解釈される特許請求の範囲から決定されるべきである。「追加情報」と題する出願に対する付属書に追加の情報が与えられる。本明細書で示し、説明した実施形態は、本原理に関する例示にすぎないこと、また当業者は、本発明の範囲及び主旨から逸脱することなく、様々な変更を実施してもよいと理解されるべきである。当業者は、本発明の範囲及び主旨から逸脱することなく、他の様々な特徴の組み合わせを実施できる。

Claims (16)

  1. 1つまたは複数のアプリケーションにおけるリターン指向プログラミング(ROP)攻撃の検出及び防止のためのコンピュータ実装方法であって、
    スタック内の1つまたは複数のROPガジェットを検出するために、スタック検査デバイスを用いてスタック検査を実行する工程と、
    コンテインメントデバイスを用いて前記ROP攻撃を封じ込める工程と、
    攻撃分析デバイスを用いて前記ROP攻撃中に前記スタック内で検出された前記1つまたは複数のROPガジェットを分析する工程と、
    を有し、
    前記スタック検査は、
    1つまたは複数の障害条件を検出するために、スタックフレームを前記スタックの頂部から前記スタックの底部に向かってスタックウォーキングする工程と、
    有効なスタックフレーム及びリターンコードアドレスが存在するか否かを判定する工程と、
    有効なスタックフレーム及びリターンコードアドレスが存在しない場合、ROP攻撃を示すタイプIIIの障害条件を含む、障害条件タイプを判定する工程と、
    を有し、
    前記スタックフレームの有効性を、スタックポインタがスタックメモリメモリセクション内を指し示しているか否か及び巻き戻し情報が取得されたか否かによって判定し、
    前記リターンコードアドレスの有効性を、前記リターンコードアドレスが実行可能許可を伴うメモリのデータセクション内またはコードメモリセクション内を指し示しているか否かによって判定し、
    前記スタックポインタが前記スタックメモリセクション内を指し示していないために有効な前記スタックフレームが存在しないと判定した場合、あるいは前記リターンコードアドレスが前記実行可能許可を伴う前記メモリの前記データセクション内または前記コードメモリセクション内を指し示していないために有効な前記リターンコードアドレスが存在しないと判定した場合に、前記ROP攻撃を示す前記タイプIIIの障害条件であると判定する、コンピュータ実装方法。
  2. 前記ROP攻撃を封じ込める工程は、
    前記検出されたROPガジェットを含む前記1つまたは複数のアプリケーションの実行を保留する工程と、
    実行状況情報をストレージデバイスに格納する工程と、
    を含み、
    前記実行状況情報は、前記攻撃分析デバイスを用いて分析するためのレジスタ、スタック及びヒープメモリのうちの少なくとも1つを含む、請求項1に記載の方法。
  3. 前記1つまたは複数のROPガジェットを分析する工程は、
    実行されていないROPガジェットを特定及び分析するために、前方ROPガジェット検索を実行する工程と、
    既に実行されたROPガジェットを特定及び分析するために、後方ROPガジェット検索を実行する工程と、
    をさらに含む、請求項1に記載の方法。
  4. 前記前方ROPガジェット検索は、前記スタックの前記底部に到達するまで反復的に繰り返し、前記後方ROPガジェット検索は、前記スタックの開始に到達するまで反復的に繰り返す、請求項3に記載の方法。
  5. 前記後方ROPガジェット検索は、閾値レベルによって決定されるスタック位置に到達するまで反復的に繰り返す、請求項3に記載の方法。
  6. 前記ROP攻撃は、前記1つまたは複数のROPガジェットの実行前に、前記1つまたは複数のROPガジェットを封じ込めることで防止される、請求項1に記載の方法。
  7. 前記障害条件タイプは、タイプI、タイプII及びタイプIIIの障害条件を含む、請求項1に記載の方法。
  8. 1つまたは複数のアプリケーションにおけるリターン指向プログラミング(ROP)攻撃の検出及び防止のためのシステムであって、
    スタック内の1つまたは複数のROPガジェットを検出するために、スタック検査を実行するスタック検査デバイスを含む、攻撃検出デバイスと、
    前記ROP攻撃を封じ込めるコンテインメントデバイスと、
    前記ROP攻撃中に前記スタック内で検出された前記1つまたは複数のROPガジェットを分析する攻撃分析デバイスと、
    を有し、
    前記スタック検査デバイスは、
    1つまたは複数の障害条件を検出するために、スタックフレームを前記スタックの頂部から前記スタックの底部に向かってスタックウォーキングするスタックウォーキングデバイスと、
    有効なスタックフレーム及びリターンコードアドレスが存在するか否かを判定し、ROP攻撃を示すタイプIIIの障害条件を含む、障害条件タイプを判定するアドレス妥当性判定デバイスと、
    を有し、
    前記スタック検査デバイスは、
    前記スタックフレームの有効性を、スタックポインタがスタックメモリメモリセクション内を指し示しているか否か及び巻き戻し情報が取得されたか否かによって判定し、
    前記リターンコードアドレスの有効性を、前記リターンコードアドレスが実行可能許可を伴うメモリのデータセクション内またはコードメモリセクション内を指し示しているか否かによって判定し、
    前記スタックポインタが前記スタックメモリセクション内を指し示していないために有効な前記スタックフレームが存在しないと判定した場合、あるいは前記リターンコードアドレスが前記実行可能許可を伴う前記メモリの前記データセクション内または前記コードメモリセクション内を指し示していないために有効な前記リターンコードアドレスが存在しないと判定した場合に、前記ROP攻撃を示す前記タイプIIIの障害条件であると判定する、システム。
  9. 前記コンテインメントデバイスは、
    前記検出されたROPガジェットを含む前記1つまたは複数のアプリケーションの実行を保留し、実行状況情報をストレージデバイスに格納することで前記ROP攻撃を封じ込め、
    前記実行状況情報は、前記攻撃分析デバイスを用いて分析するためのレジスタ、スタック及びヒープメモリのうちの少なくとも1つを含む、請求項8に記載のシステム。
  10. 前記攻撃分析デバイスは、
    実行されていないROPガジェットを特定及び分析するために、前方ROPガジェット検索を実行し、既に実行されたROPガジェットを特定及び分析するために、後方ROPガジェット検索を実行することで、前記1つまたは複数のROPガジェットを分析する、請求項8に記載のシステム。
  11. 前記前方ROPガジェット検索は、前記スタックの前記底部に到達するまで反復的に繰り返し、前記後方ROPガジェット検索は、前記スタックの開始に到達するまで反復的に繰り返す、請求項10に記載のシステム。
  12. 前記後方ROPガジェット検索は、閾値レベルによって決定されるスタック位置に到達するまで反復的に繰り返す、請求項10に記載のシステム。
  13. 前記コンテインメントデバイスは、
    前記1つまたは複数のROPガジェットの実行前に前記1つまたは複数のROPガジェットを封じ込める、請求項8に記載のシステム。
  14. 前記障害条件のタイプは、タイプI、タイプII及びタイプIIIの障害条件を含む、請求項8に記載のシステム。
  15. コンピュータで読み取り可能なプログラムが格納された記録媒体であって、前記コンピュータで読み取り可能なプログラムが、コンピュータ上で実行されるとき、
    スタック内の1つまたは複数のROPガジェットを検出するために、スタック検査デバイスを用いてスタック検査を実行する工程と、
    コンテインメントデバイスを用いて前記ROP攻撃を封じ込める工程と、
    攻撃分析デバイスを用いて前記ROP攻撃中に前記スタック内で検出された前記1つまたは複数のROPガジェットを分析する工程と、
    をコンピュータに実行させ、
    前記スタック検査として、
    前記コンピュータに、
    1つまたは複数の障害条件を検出するために、スタックフレームを前記スタックの頂部から前記スタックの底部に向かってスタックウォーキングする工程と、
    有効なスタックフレーム及びリターンコードアドレスが存在するか否かを判定する工程と、
    有効なスタックフレーム及びリターンコードアドレスが存在しない場合、ROP攻撃を示すタイプIIIの障害条件を含む、障害条件タイプを判定する工程と、
    を実行させ、
    前記スタックフレームの有効性を、スタックポインタがスタックメモリメモリセクション内を指し示しているか否か及び巻き戻し情報が取得されたか否かによって判定させ、
    前記リターンコードアドレスの有効性を、前記リターンコードアドレスが実行可能許可を伴うメモリのデータセクション内またはコードメモリセクション内を指し示しているか否かによって判定させ、
    前記スタックポインタが前記スタックメモリセクション内を指し示していないために有効な前記スタックフレームが存在しないと判定した場合、あるいは前記リターンコードアドレスが前記実行可能許可を伴う前記メモリの前記データセクション内または前記コードメモリセクション内を指し示していないために有効な前記リターンコードアドレスが存在しないと判定した場合に、前記ROP攻撃を示す前記タイプIIIの障害条件であると判定させるための、前記コンピュータで読み取り可能なプログラムが格納された記録媒体。
  16. 前記ROP攻撃を封じ込める工程は、
    前記検出されたROPガジェットを含む前記1つまたは複数のアプリケーションの実行を保留する工程と、
    実行状況情報をストレージデバイスに格納する工程と、
    を含み、
    前記実行状況情報は、前記攻撃分析デバイスを使用して分析するためのレジスタ、スタック及びヒープメモリのうちの少なくとも1つを含む、請求項15に記載のコンピュータ読み取り可能な記録媒体。
JP2017507946A 2014-07-31 2015-07-30 リターン指向プログラミング攻撃の透過的な検出及び抽出 Active JP6494744B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201462031204P 2014-07-31 2014-07-31
US62/031,204 2014-07-31
US14/812,634 2015-07-29
US14/812,634 US9904780B2 (en) 2014-07-31 2015-07-29 Transparent detection and extraction of return-oriented-programming attacks
PCT/US2015/042824 WO2016019104A1 (en) 2014-07-31 2015-07-30 Transparent detection and extraction of return-oriented-programming attacks

Publications (2)

Publication Number Publication Date
JP2017514260A JP2017514260A (ja) 2017-06-01
JP6494744B2 true JP6494744B2 (ja) 2019-04-03

Family

ID=55180333

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017507946A Active JP6494744B2 (ja) 2014-07-31 2015-07-30 リターン指向プログラミング攻撃の透過的な検出及び抽出

Country Status (4)

Country Link
US (1) US9904780B2 (ja)
EP (1) EP3175386B1 (ja)
JP (1) JP6494744B2 (ja)
WO (1) WO2016019104A1 (ja)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9904780B2 (en) * 2014-07-31 2018-02-27 Nec Corporation Transparent detection and extraction of return-oriented-programming attacks
US9646154B2 (en) * 2014-12-12 2017-05-09 Microsoft Technology Licensing, Llc Return oriented programming (ROP) attack protection
US9940484B2 (en) * 2014-12-23 2018-04-10 Intel Corporation Techniques for detecting false positive return-oriented programming attacks
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
US10621338B1 (en) * 2015-12-30 2020-04-14 Fireeye, Inc. Method to detect forgery and exploits using last branch recording registers
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
US10395033B2 (en) 2016-09-30 2019-08-27 Intel Corporation System, apparatus and method for performing on-demand binary analysis for detecting code reuse attacks
JP6527295B2 (ja) * 2016-10-06 2019-06-05 日本電信電話株式会社 攻撃コード検知装置、攻撃コード検知方法及び攻撃コード検知プログラム
US10572666B2 (en) 2017-04-20 2020-02-25 Microsoft Technology Licensing, Llc Return-oriented programming mitigation
US10885183B2 (en) 2017-09-28 2021-01-05 International Business Machines Corporation Return oriented programming attack protection
US11003764B2 (en) * 2018-02-06 2021-05-11 Jayant Shukla System and method for exploiting attack detection by validating application stack at runtime
US10984096B2 (en) * 2018-03-28 2021-04-20 Intel Corporation Systems, methods, and apparatus for detecting control flow attacks
US11314855B2 (en) * 2018-12-05 2022-04-26 Webroot Inc. Detecting stack pivots using stack artifact verification
RU2724790C1 (ru) 2018-12-28 2020-06-25 Акционерное общество "Лаборатория Касперского" Система и способ формирования журнала при исполнении файла с уязвимостями в виртуальной машине
CN114880665B (zh) * 2022-05-12 2023-06-16 电子科技大学 一种针对面向返回编程攻击的智能化检测方法及装置

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005032182A (ja) * 2003-07-11 2005-02-03 Sony Corp プログラム、攻撃コード抽出装置およびその方法
JP2009199529A (ja) * 2008-02-25 2009-09-03 Fourteenforty Research Institute Inc 情報機器、プログラム及び不正なプログラムコードの実行防止方法
JP2010257150A (ja) * 2009-04-23 2010-11-11 Ntt Docomo Inc 不正処理検知装置、不正処理検知方法及びプログラム
JP4572259B1 (ja) * 2009-04-27 2010-11-04 株式会社フォティーンフォティ技術研究所 情報機器、プログラム及び不正なプログラムコードの実行防止方法
US8997218B2 (en) * 2010-12-22 2015-03-31 F-Secure Corporation Detecting a return-oriented programming exploit
US9274919B2 (en) * 2011-04-29 2016-03-01 Dynatrace Software Gmbh Transaction tracing mechanism of distributed heterogenous transactions having instrumented byte code with constant memory consumption and independent of instrumented method call depth
US8707434B2 (en) * 2011-08-17 2014-04-22 Mcafee, Inc. System and method for indirect interface monitoring and plumb-lining
US8839429B2 (en) 2011-11-07 2014-09-16 Qualcomm Incorporated Methods, devices, and systems for detecting return-oriented programming exploits
US8776223B2 (en) * 2012-01-16 2014-07-08 Qualcomm Incorporated Dynamic execution prevention to inhibit return-oriented programming
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
US9135435B2 (en) * 2013-02-13 2015-09-15 Intel Corporation Binary translator driven program state relocation
KR101311367B1 (ko) * 2013-04-09 2013-09-25 주식회사 안랩 메모리 보호기능 우회 공격 진단 장치 및 방법
US9684511B2 (en) * 2013-09-27 2017-06-20 Intel Corporation Using software having control transfer termination instructions with software not having control transfer termination instructions
WO2015113052A1 (en) * 2014-01-27 2015-07-30 Webroot Inc. Detecting and preventing execution of software exploits
US9703948B2 (en) * 2014-03-28 2017-07-11 Intel Corporation Return-target restrictive return from procedure instructions, processors, methods, and systems
US9305167B2 (en) * 2014-05-21 2016-04-05 Bitdefender IPR Management Ltd. Hardware-enabled prevention of code reuse attacks
US9594912B1 (en) * 2014-06-06 2017-03-14 Fireeye, Inc. Return-oriented programming detection
US9904780B2 (en) * 2014-07-31 2018-02-27 Nec Corporation Transparent detection and extraction of return-oriented-programming attacks
US20160357958A1 (en) * 2015-06-08 2016-12-08 Michael Guidry Computer System Security

Also Published As

Publication number Publication date
US20160034687A1 (en) 2016-02-04
JP2017514260A (ja) 2017-06-01
EP3175386B1 (en) 2021-04-14
WO2016019104A1 (en) 2016-02-04
EP3175386A4 (en) 2018-04-04
US9904780B2 (en) 2018-02-27
EP3175386A1 (en) 2017-06-07

Similar Documents

Publication Publication Date Title
JP6494744B2 (ja) リターン指向プログラミング攻撃の透過的な検出及び抽出
US10007784B2 (en) Technologies for control flow exploit mitigation using processor trace
KR101759008B1 (ko) 코드 실행의 프로파일링
US9747447B2 (en) Suspicious program detection
Saxena et al. Efficient fine-grained binary instrumentationwith applications to taint-tracking
US8117660B2 (en) Secure control flows by monitoring control transfers
CN109508536B (zh) 一种篡改程序流攻击的检测方法和装置
US20180211046A1 (en) Analysis and control of code flow and data flow
US9811663B2 (en) Generic unpacking of applications for malware detection
US10102373B2 (en) Method and apparatus for capturing operation in a container-based virtualization system
EP3314503B1 (en) Simulation of an application
US20130227680A1 (en) Automated protection against computer exploits
Graziano et al. Hypervisor memory forensics
US10395033B2 (en) System, apparatus and method for performing on-demand binary analysis for detecting code reuse attacks
US10121004B2 (en) Apparatus and method for monitoring virtual machine based on hypervisor
US9900324B1 (en) System to discover and analyze evasive malware
JP2019502197A (ja) ランタイム生成コードにおける悪意のあるコードの検出のためのシステムおよび方法
US20160171213A1 (en) Apparatus and method for controlling instruction execution to prevent illegal accesses to a computer
CN113176926B (zh) 一种基于虚拟机自省技术的api动态监控方法及系统
KR101052735B1 (ko) 메모리 조작유무를 감지하는 방법 및 이를 이용한 장치
US20180004947A1 (en) Enhanced control transfer security
Kumar et al. Hardware-assisted mechanisms to enforce control flow integrity: A comprehensive survey
CN104166633B (zh) 用于存储器访问保护的方法和系统
JP5989599B2 (ja) 情報処理装置、および、情報処理方法
WO2018058414A1 (en) Overflow detection

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20171031

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20171128

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180202

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20180807

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20181205

A911 Transfer of reconsideration by examiner before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20181214

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190305

R150 Certificate of patent or registration of utility model

Ref document number: 6494744

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350