JP6494744B2 - リターン指向プログラミング攻撃の透過的な検出及び抽出 - Google Patents
リターン指向プログラミング攻撃の透過的な検出及び抽出 Download PDFInfo
- 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
Links
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
-
- 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/55—Detecting local intrusion or implementing counter-measures
- G06F21/554—Detecting local intrusion or implementing counter-measures involving event detection and direct action
-
- 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/60—Protecting data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/03—Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
- G06F2221/033—Test 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
本発明は、リターン指向プログラミング(Return-oriented-programming:ROP)攻撃の検出及び防止に関し、特にコード及び/またはスタックの不一致に基づくROP攻撃の透過的な検出、抽出及び防止に関する。
Claims (16)
- 1つまたは複数のアプリケーションにおけるリターン指向プログラミング(ROP)攻撃の検出及び防止のためのコンピュータ実装方法であって、
スタック内の1つまたは複数のROPガジェットを検出するために、スタック検査デバイスを用いてスタック検査を実行する工程と、
コンテインメントデバイスを用いて前記ROP攻撃を封じ込める工程と、
攻撃分析デバイスを用いて前記ROP攻撃中に前記スタック内で検出された前記1つまたは複数のROPガジェットを分析する工程と、
を有し、
前記スタック検査は、
1つまたは複数の障害条件を検出するために、スタックフレームを前記スタックの頂部から前記スタックの底部に向かってスタックウォーキングする工程と、
有効なスタックフレーム及びリターンコードアドレスが存在するか否かを判定する工程と、
有効なスタックフレーム及びリターンコードアドレスが存在しない場合、ROP攻撃を示すタイプIIIの障害条件を含む、障害条件タイプを判定する工程と、
を有し、
前記スタックフレームの有効性を、スタックポインタがスタックメモリメモリセクション内を指し示しているか否か及び巻き戻し情報が取得されたか否かによって判定し、
前記リターンコードアドレスの有効性を、前記リターンコードアドレスが実行可能許可を伴うメモリのデータセクション内またはコードメモリセクション内を指し示しているか否かによって判定し、
前記スタックポインタが前記スタックメモリセクション内を指し示していないために有効な前記スタックフレームが存在しないと判定した場合、あるいは前記リターンコードアドレスが前記実行可能許可を伴う前記メモリの前記データセクション内または前記コードメモリセクション内を指し示していないために有効な前記リターンコードアドレスが存在しないと判定した場合に、前記ROP攻撃を示す前記タイプIIIの障害条件であると判定する、コンピュータ実装方法。 - 前記ROP攻撃を封じ込める工程は、
前記検出されたROPガジェットを含む前記1つまたは複数のアプリケーションの実行を保留する工程と、
実行状況情報をストレージデバイスに格納する工程と、
を含み、
前記実行状況情報は、前記攻撃分析デバイスを用いて分析するためのレジスタ、スタック及びヒープメモリのうちの少なくとも1つを含む、請求項1に記載の方法。 - 前記1つまたは複数のROPガジェットを分析する工程は、
実行されていないROPガジェットを特定及び分析するために、前方ROPガジェット検索を実行する工程と、
既に実行されたROPガジェットを特定及び分析するために、後方ROPガジェット検索を実行する工程と、
をさらに含む、請求項1に記載の方法。 - 前記前方ROPガジェット検索は、前記スタックの前記底部に到達するまで反復的に繰り返し、前記後方ROPガジェット検索は、前記スタックの開始に到達するまで反復的に繰り返す、請求項3に記載の方法。
- 前記後方ROPガジェット検索は、閾値レベルによって決定されるスタック位置に到達するまで反復的に繰り返す、請求項3に記載の方法。
- 前記ROP攻撃は、前記1つまたは複数のROPガジェットの実行前に、前記1つまたは複数のROPガジェットを封じ込めることで防止される、請求項1に記載の方法。
- 前記障害条件タイプは、タイプI、タイプII及びタイプIIIの障害条件を含む、請求項1に記載の方法。
- 1つまたは複数のアプリケーションにおけるリターン指向プログラミング(ROP)攻撃の検出及び防止のためのシステムであって、
スタック内の1つまたは複数のROPガジェットを検出するために、スタック検査を実行するスタック検査デバイスを含む、攻撃検出デバイスと、
前記ROP攻撃を封じ込めるコンテインメントデバイスと、
前記ROP攻撃中に前記スタック内で検出された前記1つまたは複数のROPガジェットを分析する攻撃分析デバイスと、
を有し、
前記スタック検査デバイスは、
1つまたは複数の障害条件を検出するために、スタックフレームを前記スタックの頂部から前記スタックの底部に向かってスタックウォーキングするスタックウォーキングデバイスと、
有効なスタックフレーム及びリターンコードアドレスが存在するか否かを判定し、ROP攻撃を示すタイプIIIの障害条件を含む、障害条件タイプを判定するアドレス妥当性判定デバイスと、
を有し、
前記スタック検査デバイスは、
前記スタックフレームの有効性を、スタックポインタがスタックメモリメモリセクション内を指し示しているか否か及び巻き戻し情報が取得されたか否かによって判定し、
前記リターンコードアドレスの有効性を、前記リターンコードアドレスが実行可能許可を伴うメモリのデータセクション内またはコードメモリセクション内を指し示しているか否かによって判定し、
前記スタックポインタが前記スタックメモリセクション内を指し示していないために有効な前記スタックフレームが存在しないと判定した場合、あるいは前記リターンコードアドレスが前記実行可能許可を伴う前記メモリの前記データセクション内または前記コードメモリセクション内を指し示していないために有効な前記リターンコードアドレスが存在しないと判定した場合に、前記ROP攻撃を示す前記タイプIIIの障害条件であると判定する、システム。 - 前記コンテインメントデバイスは、
前記検出されたROPガジェットを含む前記1つまたは複数のアプリケーションの実行を保留し、実行状況情報をストレージデバイスに格納することで前記ROP攻撃を封じ込め、
前記実行状況情報は、前記攻撃分析デバイスを用いて分析するためのレジスタ、スタック及びヒープメモリのうちの少なくとも1つを含む、請求項8に記載のシステム。 - 前記攻撃分析デバイスは、
実行されていないROPガジェットを特定及び分析するために、前方ROPガジェット検索を実行し、既に実行されたROPガジェットを特定及び分析するために、後方ROPガジェット検索を実行することで、前記1つまたは複数のROPガジェットを分析する、請求項8に記載のシステム。 - 前記前方ROPガジェット検索は、前記スタックの前記底部に到達するまで反復的に繰り返し、前記後方ROPガジェット検索は、前記スタックの開始に到達するまで反復的に繰り返す、請求項10に記載のシステム。
- 前記後方ROPガジェット検索は、閾値レベルによって決定されるスタック位置に到達するまで反復的に繰り返す、請求項10に記載のシステム。
- 前記コンテインメントデバイスは、
前記1つまたは複数のROPガジェットの実行前に前記1つまたは複数のROPガジェットを封じ込める、請求項8に記載のシステム。 - 前記障害条件のタイプは、タイプI、タイプII及びタイプIIIの障害条件を含む、請求項8に記載のシステム。
- コンピュータで読み取り可能なプログラムが格納された記録媒体であって、前記コンピュータで読み取り可能なプログラムが、コンピュータ上で実行されるとき、
スタック内の1つまたは複数のROPガジェットを検出するために、スタック検査デバイスを用いてスタック検査を実行する工程と、
コンテインメントデバイスを用いて前記ROP攻撃を封じ込める工程と、
攻撃分析デバイスを用いて前記ROP攻撃中に前記スタック内で検出された前記1つまたは複数のROPガジェットを分析する工程と、
をコンピュータに実行させ、
前記スタック検査として、
前記コンピュータに、
1つまたは複数の障害条件を検出するために、スタックフレームを前記スタックの頂部から前記スタックの底部に向かってスタックウォーキングする工程と、
有効なスタックフレーム及びリターンコードアドレスが存在するか否かを判定する工程と、
有効なスタックフレーム及びリターンコードアドレスが存在しない場合、ROP攻撃を示すタイプIIIの障害条件を含む、障害条件タイプを判定する工程と、
を実行させ、
前記スタックフレームの有効性を、スタックポインタがスタックメモリメモリセクション内を指し示しているか否か及び巻き戻し情報が取得されたか否かによって判定させ、
前記リターンコードアドレスの有効性を、前記リターンコードアドレスが実行可能許可を伴うメモリのデータセクション内またはコードメモリセクション内を指し示しているか否かによって判定させ、
前記スタックポインタが前記スタックメモリセクション内を指し示していないために有効な前記スタックフレームが存在しないと判定した場合、あるいは前記リターンコードアドレスが前記実行可能許可を伴う前記メモリの前記データセクション内または前記コードメモリセクション内を指し示していないために有効な前記リターンコードアドレスが存在しないと判定した場合に、前記ROP攻撃を示す前記タイプIIIの障害条件であると判定させるための、前記コンピュータで読み取り可能なプログラムが格納された記録媒体。 - 前記ROP攻撃を封じ込める工程は、
前記検出されたROPガジェットを含む前記1つまたは複数のアプリケーションの実行を保留する工程と、
実行状況情報をストレージデバイスに格納する工程と、
を含み、
前記実行状況情報は、前記攻撃分析デバイスを使用して分析するためのレジスタ、スタック及びヒープメモリのうちの少なくとも1つを含む、請求項15に記載のコンピュータ読み取り可能な記録媒体。
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)
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)
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 |
-
2015
- 2015-07-29 US US14/812,634 patent/US9904780B2/en active Active
- 2015-07-30 JP JP2017507946A patent/JP6494744B2/ja active Active
- 2015-07-30 EP EP15827986.9A patent/EP3175386B1/en active Active
- 2015-07-30 WO PCT/US2015/042824 patent/WO2016019104A1/en active Application Filing
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 |