JP6435834B2 - 命令実行制御装置、命令実行制御方法 - Google Patents
命令実行制御装置、命令実行制御方法 Download PDFInfo
- Publication number
- JP6435834B2 JP6435834B2 JP2014251644A JP2014251644A JP6435834B2 JP 6435834 B2 JP6435834 B2 JP 6435834B2 JP 2014251644 A JP2014251644 A JP 2014251644A JP 2014251644 A JP2014251644 A JP 2014251644A JP 6435834 B2 JP6435834 B2 JP 6435834B2
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- return
- unit
- label
- identification information
- 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
- 238000000034 method Methods 0.000 title claims description 37
- 238000012795 verification Methods 0.000 claims description 43
- 230000008569 process Effects 0.000 claims description 21
- 230000010365 information processing Effects 0.000 description 69
- 238000010586 diagram Methods 0.000 description 14
- 230000007704 transition Effects 0.000 description 10
- 230000006870 function Effects 0.000 description 6
- 238000001514 detection method Methods 0.000 description 5
- 230000004913 activation Effects 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 230000002265 prevention Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000003068 static effect Effects 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
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)
- Executing Machine-Instructions (AREA)
Description
(ROP攻撃)
図1は、本実施の形態におけるROP(Return-Oriented Programming:ROP)攻撃を説明する図である。ROP攻撃は、スタックオーバーフローなどのプログラムの脆弱性を利用して、スタック情報を改ざんし、実行する命令の遷移を制御するプログラミング手法である。
図1、図2に示したように、ROP攻撃では、命令の実行が、通常はサブルーチンから戻り先にならないプログラムpa内の途中の命令に遷移する。したがって、本実施の形態における情報処理装置は、命令の実行が、サブルーチンコールからの戻り先アドレスが示す命令とは異なる命令に遷移するROP攻撃の特性を利用し、ROP攻撃を検出する。即ち、情報処理装置は、リターン命令による遷移先の命令が、戻り先アドレスの命令ではない場合に、ROP攻撃を検出する。
第1の実施の形態におけるプログラムpaの一例として、図3、図4にしたがって、アセンブリコードの一例を説明する。図3、図4に示すアセンブリコードは、図1、図2に示したプログラムpaの一例であって、アセンブリコードで記述されたプログラムである。図3、図4のアセンブリコードは、戻り先ラベルの付加の形態が異なる。
図5は、第1の実施の形態における情報処理装置のハードウェア構成を示す図である。図5に示す情報処理装置100は、例えば、プログラムカウンタ(Program Counter:PC)10、命令メモリ11、命令フェッチ部12、命令デコード部13、命令実行部14等を有する。
図6は、図5に示した情報処理装置100の命令実行制御処理の流れを説明する図である。
図7は、図5に示した情報処理装置100の処理を、図1に示したスタック領域30が改ざんされていない場合に基づいて説明する図である。図7において、図1で示したものと同一のものは、同一の記号で示す。図7は、プログラムpy−1と、プログラムpy−1が呼び出すライブラリ「lib_b」py−2と、スタック領域30とを示す。プログラムpy−1、及び、ライブラリ「lib_b」py−2は、カーネル空間で動作するプログラムである。
図8は、図5に示した情報処理装置100の処理を、図1に示したスタック領域30が改ざんされている場合に基づいて説明する図(その1)である。図8において、図1で示したものと同一のものは、同一の記号で示す。図8は、ライブラリ「lib_a」py−11と、ライブラリ「lib_b」py−12と、スタック領域30とを示す。ライブラリ「lib_a」py−11、及び、ライブラリ「lib_b」py−12は、カーネル空間で動作するプログラムである。
第2の実施の形態では、第1の実施の形態に加えて、情報処理装置がROP攻撃の検出の対象とするプログラムを限定する。第2の実施の形態では、図3、図4に示したアセンブリコードpx、pyは、リターン命令「return」の代わりに、検証用リターン命令「return_verify」を有する。第2の実施の形態における情報処理装置は、検証用のリターン命令を検出した場合に、戻り先アドレスの判定処理を行う。
図10は、第2の実施の形態における、アセンブリコードpzの一例を示す図である。図10に示すアセンブリコードpzは、図1、図2に示したプログラムpaの一例であって、アセンブリコードで記述されたプログラムである。また、図10に示すアセンブリコードpzは、図3に示したアセンブリコードpxに対応する。
図11は、第2の実施の形態における情報処理装置のハードウェア構成を示す図である。図11において、図5で示したものと同一のものは、同一の記号で示す。図11に示す情報処理装置200は、図5に示す、第1の実施の形態の情報処理装置100と同様にして、プログラムカウンタ10、命令メモリ11、命令フェッチ部12、命令デコード部13、命令実行部14等を有する。
第1の実施の形態では、戻り先ラベルが、予め定めた値(「LABEL_RET」)である場合を例示した。ただし、戻り先ラベルは、メインルーチンが呼び出したサブルーチンの種別に応じて値が異なっていてもよい。例えば、図3、図4に示したアセンブリコードpx、pyの戻り先ラベルは、コール命令によって呼び出したサブルーチンに応じて、異なる値を有する。
コール命令を含む第1の命令群と、リターン命令を含む第2の命令群とを記憶する記憶部と、
前記第1の命令群から前記コール命令によって呼び出された前記第2の命令群の実行時に、前記第2の命令群の前記リターン命令による、前記第1の命令群への戻り先アドレスの命令が識別情報を有するか否かを判定し、前記識別情報を有する場合に、前記第1の命令群の処理を続行し、前記識別情報を有しない場合に、命令実行処理を停止する処理部、とを有する、
命令実行制御装置。
付記1において、
前記処理部は、前記戻り先アドレスの命令に前記識別情報が付加されているか否かに基づいて、前記戻り先アドレスの命令が前記識別情報を有するか否かを判定する、
命令実行制御装置。
付記1において、
前記処理部は、前記戻り先アドレスの命令が前記識別情報であるか否かに基づいて、前記戻り先アドレスの命令が前記識別情報を有するか否かを判定する、
命令実行制御装置。
付記1乃至3のいずれかにおいて、
前記処理部は、さらに、前記戻り先アドレスの命令が前記識別情報を有する場合に前記識別情報が所定の情報であるか否かを判定し、前記識別情報が前記所定の情報である場合、前記第1の命令群の処理を続行し、前記所定の情報ではない場合、前記命令実行処理を停止する、
命令実行制御装置。
付記1乃至4のいずれかにおいて、
前記処理部は、さらに、前記第2の命令群の前記リターン命令が検証用のリターン命令であるか否かを判定し、前記検証用のリターン命令である場合に、前記戻り先アドレスの命令が前記識別情報を有するか否かを判定し、前記検証用のリターン命令ではない場合に、前記戻り先アドレスの命令が前記識別情報を有するか否かを判定せず前記第1の命令群の処理を続行する、
命令実行制御装置。
付記1乃至5のいずれかにおいて、
前記処理部は、前記識別情報を有しない場合に、例外割り込みを発生させる、
命令実行制御装置。
付記1乃至6のいずれかにおいて、
前記記憶部はスタック領域を含み、
前記処理部は、前記第2の命令群の前記リターン命令による前記第1の命令群への戻り先アドレスを前記スタック領域から取得し、前記戻り先アドレスの命令が前記識別情報を有するか否かを判定する、
命令実行制御装置。
付記1乃至7のいずれかにおいて、
前記処理部は、
判定部を含み命令をデコードする命令デコード部と、分岐部を含み前記命令を実行する命令実行部とを有し、
前記分岐部は、前記命令実行部による前記第2の命令群の前記リターン命令の実行時に、前記戻り先アドレスの命令の判定を前記判定部に指示し、
前記判定部は、前記命令デコード部がデコードした前記戻り先アドレスの命令が、前記識別情報を有するか否かを判定する、
命令実行制御装置。
第1の命令群のコール命令によって呼び出された、リターン命令を含む前記第2の命令群の実行時に、前記第2の命令群の前記リターン命令による、前記第1の命令群への戻り先アドレスの命令が識別情報を有するか否かを判定し、
前記識別情報を有する場合に、前記第1の命令群の処理を続行し、前記識別情報を有しない場合に、命令実行処理を停止する、
命令実行制御方法。
付記9において、
前記判定は、前記戻り先アドレスの命令に前記識別情報が付加されているか否かに基づいて、前記戻り先アドレスの命令が前記識別情報を有するか否かを判定する、
命令実行制御方法。
付記9において、
前記判定は、前記戻り先アドレスの命令が前記識別情報であるか否かに基づいて、前記戻り先アドレスの命令が前記識別情報を有するか否かを判定する、
命令実行制御方法。
付記9乃至11のいずれかにおいて、
前記判定は、さらに、前記戻り先アドレスの命令が前記識別情報を有する場合に前記識別情報が所定の情報であるか否かを判定し、
前記停止は、前記識別情報が前記所定の情報である場合に前記第1の命令群の処理を続行し、前記所定の情報ではない場合に前記命令実行処理を停止する、
命令実行制御方法。
付記9乃至12のいずれかにおいて、
前記判定は、さらに、前記第2の命令群の前記リターン命令が検証用のリターン命令であるか否かを判定し、前記検証用のリターン命令である場合に、前記戻り先アドレスの命令が前記識別情報を有するか否かを判定し、前記検証用のリターン命令ではない場合に、前記戻り先アドレスの命令が前記識別情報を有するか否かを判定せず前記第1の命令群の処理を続行する、
命令実行制御方法。
付記9乃至13のいずれかにおいて、
前記停止は、前記識別情報を有しない場合に、例外割り込みを発生させる、
命令実行制御方法。
付記9乃至14のいずれかにおいて、
前記判定は、前記第2の命令群の前記リターン命令による前記第1の命令群への戻り先アドレスをスタック領域から取得し、前記戻り先アドレスの命令が前記識別情報を有するか否かを判定する、
命令実行制御方法。
Claims (6)
- コール命令を含む第1の命令群と、リターン命令を含む第2の命令群とを記憶する記憶部と、
判定部を含み命令をデコードする命令デコード部と、
分岐部を含み前記命令を実行する命令実行部と、を有し、
前記分岐部は、前記第1の命令群から前記コール命令によって呼び出された前記リターン命令の前記命令実行部による実行時に、前記第1の命令群への戻り先アドレスの命令の判定を前記判定部に指示し、
前記判定部は、前記命令デコード部によってデコードされた命令であって前記リターン命令による前記戻り先アドレスの命令が識別情報を有するか否かを判定し、前記識別情報を有する場合に、前記第1の命令群の処理を続行し、前記識別情報を有しない場合に、命令実行処理を停止する、
命令実行制御装置。 - 請求項1において、
前記判定部は、前記戻り先アドレスの命令に前記識別情報が付加されているか否かに基づいて、前記戻り先アドレスの命令が前記識別情報を有するか否かを判定する、
命令実行制御装置。 - 請求項1において、
前記判定部は、前記戻り先アドレスの命令が前記識別情報であるか否かに基づいて、前記戻り先アドレスの命令が前記識別情報を有するか否かを判定する、
命令実行制御装置。 - 請求項1乃至3のいずれかにおいて、
前記判定部は、さらに、前記戻り先アドレスの命令が前記識別情報を有する場合に前記識別情報が所定の情報であるか否かを判定し、前記識別情報が前記所定の情報である場合、前記第1の命令群の処理を続行し、前記所定の情報ではない場合、前記命令実行処理を停止する、
命令実行制御装置。 - 請求項1乃至4のいずれかにおいて、
前記判定部は、さらに、前記第2の命令群の前記リターン命令が検証用のリターン命令であるか否かを判定し、前記検証用のリターン命令である場合に、前記戻り先アドレスの命令が前記識別情報を有するか否かを判定し、前記検証用のリターン命令ではない場合に、前記戻り先アドレスの命令が前記識別情報を有するか否かを判定せず前記第1の命令群の処理を続行する、
命令実行制御装置。 - 命令を実行する命令実行部に含まれる分岐部が、第1の命令群に含まれるコール命令によって呼び出された、前記第2の命令群に含まれるリターン命令の前記命令実行部による実行時に、前記第1の命令群への戻り先アドレスの命令の判定を、前記命令をデコードする命令デコード部に含まれる判定部に指示し、
前記判定部が、前記命令デコード部によってデコードされた命令であって前記リターン命令による前記戻り先アドレスの命令が識別情報を有するか否かを判定し、
前記判定部が、前記識別情報を有する場合に、前記第1の命令群の処理を続行し、前記識別情報を有しない場合に、命令実行処理を停止する、
命令実行制御方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2014251644A JP6435834B2 (ja) | 2014-12-12 | 2014-12-12 | 命令実行制御装置、命令実行制御方法 |
US14/881,464 US20160171213A1 (en) | 2014-12-12 | 2015-10-13 | Apparatus and method for controlling instruction execution to prevent illegal accesses to a computer |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2014251644A JP6435834B2 (ja) | 2014-12-12 | 2014-12-12 | 命令実行制御装置、命令実行制御方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2016115033A JP2016115033A (ja) | 2016-06-23 |
JP6435834B2 true JP6435834B2 (ja) | 2018-12-12 |
Family
ID=56111429
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2014251644A Expired - Fee Related JP6435834B2 (ja) | 2014-12-12 | 2014-12-12 | 命令実行制御装置、命令実行制御方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20160171213A1 (ja) |
JP (1) | JP6435834B2 (ja) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101930596B1 (ko) * | 2016-10-06 | 2018-12-18 | 명지대학교 산학협력단 | 데이터 히든 장치 및 이에 있어서 프로그램 구동 방법 |
KR101851330B1 (ko) * | 2016-10-11 | 2018-04-23 | 서울대학교산학협력단 | 코드 재사용 공격 탐지 장치 및 그 방법 |
GB2554942B (en) * | 2016-10-14 | 2018-11-21 | Imagination Tech Ltd | Verifying firmware binary images using a hardware design and formal assertions |
JP6885226B2 (ja) * | 2017-07-03 | 2021-06-09 | 株式会社デンソー | 電子制御装置 |
JP6460433B1 (ja) * | 2018-08-15 | 2019-01-30 | 株式会社Attc | 変換装置、変換プログラム、プログラム変換方法 |
WO2021148128A1 (en) * | 2020-01-24 | 2021-07-29 | Huawei Technologies Co., Ltd. | Processing unit for safe execution of machine code |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2762829B2 (ja) * | 1992-02-06 | 1998-06-04 | 日本電気株式会社 | 電子計算機 |
US7552477B1 (en) * | 2005-02-23 | 2009-06-23 | Symantec Corporation | Detecting return-to-LIBC buffer overflows via dynamic disassembly of offsets |
US7607122B2 (en) * | 2005-06-17 | 2009-10-20 | Microsoft Corporation | Post build process to record stack and call tree information |
US7581089B1 (en) * | 2006-04-20 | 2009-08-25 | The United States Of America As Represented By The Director Of The National Security Agency | Method of protecting a computer stack |
JP5374348B2 (ja) * | 2009-12-10 | 2013-12-25 | 株式会社豊田中央研究所 | ソフトウェア検査装置及びプログラム |
US9177147B2 (en) * | 2012-09-28 | 2015-11-03 | Intel Corporation | Protection against return oriented programming attacks |
KR101445634B1 (ko) * | 2014-01-27 | 2014-10-06 | 주식회사 이글루시큐리티 | 프로그램의 취약점을 이용한 공격의 탐지 장치 및 방법 |
US9703948B2 (en) * | 2014-03-28 | 2017-07-11 | Intel Corporation | Return-target restrictive return from procedure instructions, processors, methods, and systems |
US9767272B2 (en) * | 2014-10-20 | 2017-09-19 | Intel Corporation | Attack Protection for valid gadget control transfers |
US9646154B2 (en) * | 2014-12-12 | 2017-05-09 | Microsoft Technology Licensing, Llc | Return oriented programming (ROP) attack protection |
US10867031B2 (en) * | 2015-07-23 | 2020-12-15 | Apple Inc. | Marking valid return targets |
-
2014
- 2014-12-12 JP JP2014251644A patent/JP6435834B2/ja not_active Expired - Fee Related
-
2015
- 2015-10-13 US US14/881,464 patent/US20160171213A1/en not_active Abandoned
Also Published As
Publication number | Publication date |
---|---|
JP2016115033A (ja) | 2016-06-23 |
US20160171213A1 (en) | 2016-06-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6435834B2 (ja) | 命令実行制御装置、命令実行制御方法 | |
JP7101761B2 (ja) | コール・パス依存認証 | |
AU2014348812B2 (en) | Improved control flow integrity system and method | |
US20180211046A1 (en) | Analysis and control of code flow and data flow | |
CN107077562B (zh) | 用于动态控制代码执行的计算机实现的方法和系统 | |
JP6189039B2 (ja) | セキュアドメインおよび低セキュアドメインを使用するデータ処理装置および方法 | |
Erlingsson | Low-level software security: Attacks and defenses | |
JP2019502197A (ja) | ランタイム生成コードにおける悪意のあるコードの検出のためのシステムおよび方法 | |
CN108319850B (zh) | 沙箱检测的方法、沙箱系统和沙箱设备 | |
JP2022503899A (ja) | スタック・ポインタを検証すること | |
Otsuki et al. | Building stack traces from memory dump of Windows x64 | |
KR20220108176A (ko) | 도메인 전이 디스에이블 구성 파라미터 | |
CN110717181B (zh) | 基于新型程序依赖图的非控制数据攻击检测方法及装置 | |
CN108701184B (zh) | 用于硬件控制流施行的控制流传递的基于包的验证的方法和设备 | |
US10579457B1 (en) | Processor for achieving flow integrity and a method of providing notice of a fault in control flow | |
CN106922191B (zh) | 生成和执行受保护的软件项目 | |
Lehniger et al. | Combination of ROP Defense Mechanisms for Better Safety and Security in Embedded Systems | |
US11307856B2 (en) | Branch target variant of branch-with-link instruction | |
US20230418950A1 (en) | Methods, Devices, and Systems for Control Flow Integrity | |
CN111771188B (zh) | 数据处理装置及数据处理方法 | |
CN114489657A (zh) | 用于编译源代码的系统和过程 | |
Gerstmayer et al. | Binary protection framework for embedded systems | |
CN118734311A (en) | A computer system configured to execute a computer program | |
JP2023511814A (ja) | インターモーダル呼び出し分岐命令 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20171113 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20180615 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20180731 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20180928 |
|
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: 20181016 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20181029 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6435834 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |