JP2011008778A - プログラム実行フローの修正を防止する方法及び装置 - Google Patents
プログラム実行フローの修正を防止する方法及び装置 Download PDFInfo
- Publication number
- JP2011008778A JP2011008778A JP2010121289A JP2010121289A JP2011008778A JP 2011008778 A JP2011008778 A JP 2011008778A JP 2010121289 A JP2010121289 A JP 2010121289A JP 2010121289 A JP2010121289 A JP 2010121289A JP 2011008778 A JP2011008778 A JP 2011008778A
- Authority
- JP
- Japan
- Prior art keywords
- program
- memory
- mask
- address
- execution flow
- 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.)
- Granted
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
- G06F21/53—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 executing in a restricted environment, e.g. sandbox or secure virtual machine
-
- 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)
Abstract
【解決手段】攻撃者によって修正されていないプログラム実行フローの操作が置かれているコンピュータのメモリの1つ以上の範囲を識別し、メモリアドレスが1つ以上の識別されたメモリ範囲の中にあることを確実にするためにメモリアドレスをマスクするためのマスクを決定し、プログラムの実行フローを検査して、プログラムの実行フローが、プログラム実行フローの次の操作が置かれている目標メモリアドレスへジャンプすることを引き起こすプログラムの1つ以上の操作を識別し、識別された1つ以上の操作の実行前にプログラム実行フローの中へある操作を挿入する。挿入された操作は、決定されたマスクを目標アドレスへ適用し、これによってジャンプを引き起こす操作が、1つ以上の識別されたメモリ範囲の中にあるメモリ場所へ向けられる。
【選択図】図1
Description
対策の第1の種類としては、攻撃者がリターンアドレスを変更することを不可能にするやり方である。この種の対策の例は、非特許文献1に記載されている。
対策の別の種類としては、攻撃者がリターンアドレスを修正することを許容するが、損害が起こる前に、これらの変更を検出しようと試みるやり方である。そのような対策の例は、スタック・クッキー(例えば、非特許文献2を参照)、ポインタ暗号化(例えば、非特許文献3を参照)、及び制御フロー・インテグリティCFI(例えば、非特許文献4を参照)である。
攻撃者によって修正されていない前記プログラムの実行フローの操作が置かれていることが期待されるコンピュータのメモリの1つ以上の範囲を識別するステップと、
メモリアドレスが前記1つ以上の識別されたメモリ範囲の中にあることを確実にするために、前記メモリアドレスをマスクするためのマスクを決定するステップと、
前記プログラムの実行フローを検査して、前記プログラムの実行フローが、前記プログラムの実行フローの次の操作が置かれている目標メモリアドレスへジャンプすることを引き起こす前記プログラムの1つ以上の操作を識別するステップと、
前記識別された1つ以上の操作の実行前に、前記プログラムの実行フローの中へある操作を挿入するステップであって、前記挿入された操作は、前記決定されたマスクを前記目標メモリアドレスへ適用することによって前記目標メモリアドレスをマスクし、これによって、前記ジャンプを引き起こす操作が、前記1つ以上の識別されたメモリ範囲の中にあるメモリ場所へ向けられることを確実にする、ステップと
を含み、
前記コンピュータの前記メモリの1つ以上の範囲を識別するステップは、
プログラムコードの前記プログラムの実行フローを検査し、前記プログラムの実行フローの間に呼び出される関数について、前記関数が呼び出されるメモリアドレス場所を決定することを含み、
前記方法は、
前記プログラムの実行フローが、前記呼び出された関数から、前記関数が呼び出されたアドレス又は前記関数が呼び出されたアドレスの次のアドレスへ戻るようにするマスクを決定するステップと、
前記呼び出された関数からの戻り処理が実行される前は常に、前記挿入された操作へ前記マスクを適用するステップと
を更に含む。
関数又はメソッドのコール(call:呼び出し)、
関数又はメソッドのコールからの戻り処理(リターン処理)、
計算されたジャンプ、
ライブラリ関数へのジャンプ
の1つ以上を含む。
ライブラリがロードされた前記メモリ範囲を読み出し専用としてマークするステップと、
グローバル・オフセット・テーブル及びプロシージャ・リンケージ・テーブルの双方あるいはいずれか一方を読み出し専用としてマークするステップと
の両方又はいずれか一方のステップを更に含む。
グローバル・オフセット・テーブル又はプロシージャ・リンケージ・テーブルを読み出し専用としてマークすることは、これらのテーブルの内容の修正に依存する任意の攻撃を防御する。
任意の計算されたジャンプの前に前記マスクを適用する操作を挿入するステップと、
任意のライブラリのコール(呼び出し)の前に前記マスクを適用する操作を挿入するステップと、
グローバル・オフセット・テーブルにアクセスする前に前記マスクを前記グローバル・オフセット・テーブルへ適用するステップと、
プロシージャ・リンケージ・テーブルにアクセスする前に前記マスクを前記プロシージャ・リンケージ・テーブルへ適用するステップと
の1つ以上を含む。
修正されていないプログラムコードが置かれていることが期待される前記メモリ範囲の最後のメモリアドレスが、一連の連続した論理「1」で構成されていない場合、前記メモリ範囲の前記最後のメモリアドレスが一連の論理「1」で構成されるまで、ダミー命令又はNOP命令又は存在しない命令で前記メモリ範囲を充填するステップを含む。
プログラムコードのプログラムの実行フローを検査して、該プログラムの実行フローの間に呼び出される関数について、該関数が呼び出されるメモリアドレス場所を決定するステップと、
該呼び出された関数から、該関数が呼び出されたアドレス、又はこれらのアドレスの次にあるアドレスへ、プログラムの実行フローが戻るようにするマスクを決定するステップと、
呼び出された関数からのリターン処理(戻り処理)が実行される前は常に、該挿入された命令へ前記マスクを適用するステップと
を含む。
前記プログラムの実行フローの操作を整列させるステップであって、メソッドコール又は計算されたジャンプが、ある一定の区間又はこの区間の倍数だけ分離されたメモリアドレスに置かれるように整列される、ステップと、
前記マスクを適用した後に、結果として得られるメモリアドレスが、メソッドコール又は計算されたジャンプではない命令が置かれているアドレスの1つになるように、前記マスクを決定するステップと
を更に含む。
メソッドコール又は計算されたジャンプが、奇数メモリアドレスに置かれるように、前記プログラムの実行フローの操作を整列させるステップと、
前記マスクを適用した後に、結果として得られるメモリアドレスが、偶数アドレスであって、ジャンプ又はメソッドコールからのリターン処理が次のジャンプ又はメソッドコールの前にあるアドレスで生じるように、前記マスクを決定するか、又は、メソッドコール又は計算されたジャンプが偶数メモリアドレスに置かれるように、前記プログラムの実行フローの操作を整列させるステップと、
前記マスクを適用した後に、結果として得られるメモリアドレスが、奇数アドレスであって、メソッドコールからのジャンプ又はリターン処理が、次のジャンプ又はメソッドコールの前にあるアドレスで生じるように、前記マスクを決定するステップと
を含む。
前記挿入された操作によって、操作が実行される前にチェックされるパラメータを設定するステップと、
前記パラメータが設定されている場合にのみ、前記マスクの操作に後続する前記ジャンプの操作について及び前記ジャンプの実行に後続する操作について設定を実行するステップとを更に含む。
攻撃者によって修正されていない前記プログラムの実行フローの操作が置かれていることが期待されるコンピュータのメモリの1つ以上の範囲を識別するモジュールと、
メモリアドレスが前記1つ以上の識別されたメモリ範囲の中にあることを確実にするように、前記メモリアドレスをマスクするためのマスクを決定するモジュールと、
前記プログラムの実行フローを検査して、前記プログラムの前記実行フローが、前記プログラムの実行フローの次の操作が置かれている目標メモリアドレスへジャンプすることを引き起こす前記プログラムの1つ以上の操作を識別するモジュールであって、前記目標メモリアドレスは、識別された操作の現在のメモリアドレスに隣接するメモリアドレスとは異なる、モジュールと、
前記識別された1つ以上の操作の実行前に、前記プログラムの実行フローの中へある操作を挿入するモジュールであって、前記挿入された操作は、前記決定されたマスクを前記目標メモリアドレスへ適用することによって前記目標アドレスをマスクし、これによって、前記ジャンプを引き起こす操作が、前記1つ以上の識別されたメモリ範囲の中にあるメモリ場所へ向けられることを確実にする、モジュールと
を備える。
BIC:論理ビットクリア(AND NOT)
攻撃者:ソフトウェア内の脆弱性を探している悪意のあるユーザ
制御フロー・インテグリティ:アプリケーションにおける意図された制御フロー又はプログラムコードから外れることを識別するための対策
グローバル・オフセット・テーブル:グローバル・オフセット・テーブルは、位置独立アドレス計算(position-independent address calculation)の結果を絶対場所(absolute location)へ変換する
ヒープ:動的メモリ割り当てに使用されるコンピュータメモリ
マスク:ビット単位の操作に使用される値であって、他の値と結合されて特定の値域の中にある値を戻す
OR:論理OR操作
プログラムコード:実行されるべきアプリケーションの命令
プロシージャ・リンケージ・テーブル:プロシージャ・リンケージ・テーブルは、位置独立関数コール(position-independent function call)を絶対場所へ変換する。
シェルコード:攻撃者によって、メモリ、例えば、ヒープ又はスタックの中へ注入されるプログラムコード
スタック:固定された基点をもち、サイズが可変のコンピュータメモリ。スタックは後入れ先出し法で動作する
スタック・クッキー:予測し得ない値のトークン
[get return address from stack(スタックからリターンアドレスを取得する)]
[jump to this address(このアドレスへジャンプする)]
[get return address from stack(スタックからリターンアドレスを取得する)]
[apply mask on address, thus making sure that the return address points to code memory(マスクをアドレスに適用し、これにより、リターンアドレスがコードメモリを指し示すことを確実にする)]
[jump to this address(このアドレスへジャンプする)]
a)リターンアドレスをフェッチして、そこへジャンプする
b)リターンアドレスをフェッチして、マスク及びリターンアドレスを用いて、例えば、AND操作(又は任意のビット単位操作)を実行し、次いで、そのAND操作の結果へジャンプする
ヒープ及びスタックは、メモリ内のより高いアドレスに置かれているので、スタック又はヒープ内の場所を指し示すリターンアドレスは、コードセグメント内のアドレスには決して設定されることがない1つ以上のビットを常に有している。したがって、AND操作を用いて、コードセグメントの外側へコードが決してジャンプしないことを強制することができる。他のオペレーティングシステム又はプロセッサでは、他のビット単位操作が使用されてもよいことに留意すべきである。これらの他の操作の例は、OR、BIC(ビットクリア)、又はリターンアドレス内のある数のビットをセット又はリセットし得る他の任意の操作である。
この実施形態において、提案されるメカニズムは、メソッドがアプリケーション内の任意のコードへジャンプすることを許容する代わりに、その任意のコードへのジャンプをコールする(呼び出す)メソッドへのみ戻ることを許容する。これを行うために、関数ごとに特有のマスクが計算される。このアプローチは、下記で更に説明されるように、コード又はバイナリ解析を必要とする。次の例を考える。
そのような場合、攻撃者は課された制限をうまく避けることができる。対策として、ライブラリ関数へのコールを、次のように変更した場合について考える。
[copy address of library function to register(ライブラリ関数のアドレスをレジスタへコピーする)]
[mask register(レジスタをマスクする)]
[jump to address in register(レジスタ内のアドレスへジャンプする)]
最初のステップにおいて、全ての命令は、例えば、キャリーがクリアされるとき、条件付きでのみ実行するようにマークされなければならない。次いで、リターンアドレスをマスクする命令が選択され、キャリーフラグをセットするように修正される(下記で与えられるコード例では命令03)。メソッドから戻るために使用される次のジャンプは、この命令の「cs」サフィックスから分かるように、キャリーフラグがセットされるならば、条件付きで実行される。更に、リターンが向けられる命令(下記のコードの命令08)は、キャリーフラグがセットされるならば、条件付きで実行される。したがって、たとえ攻撃者が、リターン命令(下記のコードの命令04)がジャンプする場所に影響を与えることができたとしても、攻撃者は、キャリーがセットされているときに実行する命令があるアドレスへ制限される。これは、ライブラリ関数を呼び出す命令を含めて、アプリケーション全体のほとんど全ての命令を排除する。したがって、このアプローチは攻撃者を更に妨げる。というのは、攻撃者は、メソッドコール(ライブラリメソッドコールを除いて)が戻る正常な命令へのみにしかジャンプできないからである。
sum:#パラメータa及びbを加算して,結果を戻す
#この命令は、
#キャリーフラグがクリアされている場合にのみ実行する
01: addcc r0,r0,r1
#リターン;結果はr0の中にある
#r10を0xFFFFFFへセットする
02: movcc r10,#−1
#リターンアドレス(「lr」の中にある)をマスクする
#0x0000FFFFを用いる。更に
#キャリーを再びセットする
03: bicccs lr,r10,LSL #16
#キャリーは現在セットされている。コール側へ戻る
04: bxcs lr
親:<他の命令>
05: movcc r0,#1
06: movcc r1,#1
07: blcc sum
#キャリーをクリアする
08: movcss r10,pc,LSR #1
#キャリーフラグは現在クリアされている
09: ldrcc r0,L0
10: blcc printf
<他の命令>
Claims (14)
- 攻撃者がコンピュータプログラムの実行フローを修正することを防止する方法であって、前記コンピュータプログラムは、順次に実行される操作のシーケンスを含み、
攻撃者によって修正されていない前記プログラムの実行フローの操作が置かれていることが期待されるコンピュータのメモリの1つ以上の範囲を識別するステップと、
メモリアドレスが前記1つ以上の識別されたメモリ範囲の中にあることを確実にするために、前記メモリアドレスをマスクするためのマスクを決定するステップと、
前記プログラムの実行フローを検査して、前記プログラムの実行フローが、前記プログラムの実行フローの次の操作が置かれている目標メモリアドレスへジャンプすることを引き起こす前記プログラムの1つ以上の操作を識別するステップと、
前記識別された1つ以上の操作の実行前に、前記プログラムの実行フローの中へある操作を挿入するステップであって、前記挿入された操作は、前記決定されたマスクを前記目標メモリアドレスへ適用することによって前記目標メモリアドレスをマスクし、これによって、前記ジャンプを引き起こす操作が、前記1つ以上の識別されたメモリ範囲の中にあるメモリ場所へ向けられることを確実にする、ステップと
を含み、
前記コンピュータの前記メモリの1つ以上の範囲を識別するステップは、
プログラムコードの前記プログラムの実行フローを検査し、前記プログラムの実行フローの間に呼び出される関数について、前記関数が呼び出されるメモリアドレス場所を決定することを含み、
前記方法は、
前記プログラムの実行フローが、前記呼び出された関数から、前記関数が呼び出されたアドレス又は前記関数が呼び出されたアドレスの次のアドレスへ戻るようにするマスクを決定するステップと、
前記呼び出された関数からのリターン処理が実行される前は常に、前記挿入された操作へ前記マスクを適用するステップと
を更に含む方法。 - 前記1つ以上の識別されたメモリ範囲は、
前記コンピュータプログラムの前記プログラムコードが置かれているメモリ範囲と、
前記コンピュータプログラムによって使用されるようにロードされた1つ以上のライブラリが置かれているメモリ範囲との1つ以上を含む、請求項1に記載の方法。 - 前記プログラムの実行フローが目標メモリアドレスへジャンプすることを引き起こす前記1つ以上の操作は、
関数又はメソッドのコール処理、
関数又はメソッドのコール処理からのリターン処理、
計算されたジャンプ、
ライブラリ関数へのジャンプ
の1つ以上を含む、請求項1又は2に記載の方法。 - ライブラリがロードされた前記メモリ範囲を読み出し専用としてマークするステップと、
グローバル・オフセット・テーブル及びプロシージャ・リンケージ・テーブルの双方あるいはいずれか一方を読み出し専用としてマークするステップと
の両方又はいずれか一方のステップを更に含む、請求項1ないし3のいずれか一項に記載の方法。 - 任意の計算されたジャンプの前に前記マスクを適用する操作を挿入するステップと、
任意のライブラリコールの前に前記マスクを適用する操作を挿入するステップと、
グローバル・オフセット・テーブルにアクセスする前に前記マスクを前記グローバル・オフセット・テーブルへ適用するステップと、
プロシージャ・リンケージ・テーブルにアクセスする前に前記マスクを前記プロシージャ・リンケージ・テーブルへ適用するステップと
の1つ以上を含む、請求項1ないし4のいずれか一項に記載の方法。 - 修正されていないプログラムコードが置かれていることが期待される前記メモリ範囲の最後のメモリアドレスが、一連の連続した論理「1」で構成されていない場合、前記メモリ範囲の前記最後のメモリアドレスが一連の論理「1」で構成されるまで、ダミー命令又はNOP命令又は存在しない命令で前記メモリ範囲を充填するステップを含む、請求項1ないし5のいずれか一項に記載の方法。
- 前記マスクは、前記関数が呼び出された操作のメモリアドレスの次にある操作のメモリアドレスをOR操作することに基づいて決定されるものである、請求項1に記載の方法。
- 前記プログラムの実行フローの間に呼び出される各関数について、前記関数に対して特有のマスクが決定され、前記関数特有のマスクは、前記呼び出された関数からの戻り処理が実行されるべきときに常に適用される、請求項1又は7に記載の方法。
- 前記プログラムの実行フローの操作を整列させるステップであって、メソッドコール又は計算されたジャンプが、ある一定の区間又はこの区間の倍数だけ分離されたメモリアドレスに置かれるように整列される、ステップと、
前記マスクを適用した後に、結果として得られるメモリアドレスが、メソッドコール又は計算されたジャンプではない命令が置かれているアドレスの1つになるように、前記マスクを決定するステップと
を更に含む、請求項1ないし8のいずれか一項に記載の方法。 - メソッドコール又は計算されたジャンプが、奇数メモリアドレスに置かれるように、前記プログラムの実行フローの操作を整列させるステップと、
前記マスクを適用した後に、結果として得られるメモリアドレスが、偶数アドレスであって、ジャンプ又はメソッドコールからのリターン処理が次のジャンプ又はメソッドコールの前にあるアドレスで生じるように、前記マスクを決定するか、又は、メソッドコール又は計算されたジャンプが偶数メモリアドレスに置かれるように、前記プログラムの実行フローの操作を整列させるステップと、
前記マスクを適用した後に、結果として得られるメモリアドレスが、奇数アドレスであって、メソッドコールからのジャンプ又はリターン処理が、次のジャンプ又はメソッドコールの前にあるアドレスで生じるように、前記マスクを決定するステップと
を含む、請求項9に記載の方法。 - 前記挿入された操作によって、操作が実行される前にチェックされるパラメータを設定するステップと、
前記パラメータが設定されている場合にのみ、前記マスクの操作に後続する前記ジャンプの操作について及び前記ジャンプの実行に後続する操作について設定を実行するステップと
を更に含む、請求項1ないし10のいずれか一項に記載の方法。 - 攻撃者がコンピュータプログラムの実行フローを修正することを防止する装置であって、前記コンピュータプログラムは、順次に実行される操作のシーケンスを含み、
攻撃者によって修正されていない前記プログラムの実行フローの操作が置かれていることが期待されるコンピュータのメモリの1つ以上の範囲を識別するモジュールと、
メモリアドレスが前記1つ以上の識別されたメモリ範囲の中にあることを確実にするように、前記メモリアドレスをマスクするためのマスクを決定するモジュールと、
前記プログラムの実行フローを検査して、前記プログラムの前記実行フローが、前記プログラムの実行フローの次の操作が置かれている目標メモリアドレスへジャンプすることを引き起こす前記プログラムの1つ以上の操作を識別するモジュールと、
前記識別された1つ以上の操作の実行前に、前記プログラムの実行フローの中へある操作を挿入するモジュールであって、前記挿入された操作は、前記決定されたマスクを前記目標メモリアドレスへ適用することによって前記目標アドレスをマスクし、これによって、前記ジャンプを引き起こす操作が、前記1つ以上の識別されたメモリ範囲の中にあるメモリ場所へ向けられることを確実にする、モジュールと
を備え、
前記コンピュータのメモリの1つ以上の範囲を識別する前記モジュールは、
プログラムコードの前記プログラムの実行フローを検査して、前記プログラムの実行フローの間に呼び出される関数について、前記関数が呼び出されるメモリアドレス場所を決定するモジュールを備え、
前記装置は、
前記プログラムの実行フローが、前記呼び出された関数から、前記関数が呼び出されたアドレス又は前記関数が呼び出されたアドレスの次のアドレスへ戻るようにするマスクを決定するモジュールと、
前記呼び出された関数からのリターン処理が実行される前は常に、前記挿入された操作へ前記マスクを適用するモジュールと
を更に備える、装置。 - 請求項2ないし11のいずれか一項に記載の方法を実行するためのモジュールを更に備える、請求項12に記載の装置。
- コンピュータの上で実行するときに、請求項1ないし11のいずれか一項に記載の方法を実行させるコンピュータ・プログラム・コードを備えるコンピュータプログラム。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP09161239A EP2256659A1 (en) | 2009-05-27 | 2009-05-27 | Method and apparatus for preventing modification of a program execution flow |
EP09161239.0 | 2009-05-27 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2011008778A true JP2011008778A (ja) | 2011-01-13 |
JP4990998B2 JP4990998B2 (ja) | 2012-08-01 |
Family
ID=41165694
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2010121289A Expired - Fee Related JP4990998B2 (ja) | 2009-05-27 | 2010-05-27 | プログラム実行フローの修正を防止する方法及び装置 |
Country Status (2)
Country | Link |
---|---|
EP (1) | EP2256659A1 (ja) |
JP (1) | JP4990998B2 (ja) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5265061B1 (ja) * | 2012-05-11 | 2013-08-14 | アンラブ,インコーポレイテッド | 悪意のあるファイル検査装置及び方法 |
JP2013196512A (ja) * | 2012-03-21 | 2013-09-30 | Ntt Data Corp | 変換装置、変換方法、変換プログラム |
JP2013228957A (ja) * | 2012-04-26 | 2013-11-07 | Nippon Telegr & Teleph Corp <Ntt> | 制御監視装置、制御監視方法及び制御監視プログラム |
JP2013239172A (ja) * | 2012-05-11 | 2013-11-28 | Ahnlab Inc | 非実行ファイル検査装置及び方法 |
JP2015503815A (ja) * | 2012-01-16 | 2015-02-02 | クアルコム,インコーポレイテッド | リターン指向プログラミングを抑制するための動的実行防止 |
JP6338796B1 (ja) * | 2018-01-09 | 2018-06-06 | 株式会社Attc | 変換装置、変換プログラム、プログラム変換方法 |
JP6460433B1 (ja) * | 2018-08-15 | 2019-01-30 | 株式会社Attc | 変換装置、変換プログラム、プログラム変換方法 |
JP2019016338A (ja) * | 2017-07-03 | 2019-01-31 | 株式会社デンソー | プログラム生成方法および電子制御装置 |
JP2022003582A (ja) * | 2017-07-03 | 2022-01-11 | 株式会社デンソー | 電子制御装置及びプログラム |
WO2024057507A1 (ja) * | 2022-09-15 | 2024-03-21 | 三菱電機株式会社 | プログラム処理装置、プログラム処理方法、およびプログラム処理プログラム |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104050411A (zh) * | 2011-04-21 | 2014-09-17 | 北京奇虎科技有限公司 | 主动防御方法 |
WO2013174503A1 (en) * | 2012-05-21 | 2013-11-28 | Eth Zurich | Secure loader |
US9245110B2 (en) | 2013-12-17 | 2016-01-26 | International Business Machines Corporation | Stack entry overwrite protection |
CN105205390A (zh) * | 2015-09-21 | 2015-12-30 | 上海斐讯数据通信技术有限公司 | 一种移动终端的安全检测系统及安全检测方法 |
US10866908B2 (en) * | 2016-05-19 | 2020-12-15 | Narf Industries, LLC | System and method for probabilistic defense against remote exploitation of memory |
CN106682508B (zh) * | 2016-06-17 | 2019-01-11 | 腾讯科技(深圳)有限公司 | 病毒的查杀方法和装置 |
WO2018058414A1 (en) * | 2016-09-29 | 2018-04-05 | Intel Corporation | Overflow detection |
JP6885226B2 (ja) | 2017-07-03 | 2021-06-09 | 株式会社デンソー | 電子制御装置 |
KR102351663B1 (ko) * | 2020-02-26 | 2022-01-17 | 세종대학교산학협력단 | Cfi 기반 got 변조 공격 방지 장치 및 그 방법 |
CN113885438B (zh) * | 2021-10-26 | 2023-10-27 | 中国航发沈阳黎明航空发动机有限责任公司 | 一种整体叶盘混合铣加工自动截取程序的方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5745676A (en) * | 1995-12-04 | 1998-04-28 | International Business Machines Corporation | Authority reduction and restoration method providing system integrity for subspace groups and single address spaces during program linkage |
JP2007004647A (ja) * | 2005-06-27 | 2007-01-11 | Hitachi Ltd | 不正コードの実行を防ぐプログラムの生成方法、及び、そのプログラム |
JP2007304954A (ja) * | 2006-05-12 | 2007-11-22 | Sharp Corp | メモリ保護機能を有するコンピュータシステム |
-
2009
- 2009-05-27 EP EP09161239A patent/EP2256659A1/en not_active Withdrawn
-
2010
- 2010-05-27 JP JP2010121289A patent/JP4990998B2/ja not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5745676A (en) * | 1995-12-04 | 1998-04-28 | International Business Machines Corporation | Authority reduction and restoration method providing system integrity for subspace groups and single address spaces during program linkage |
JP2007004647A (ja) * | 2005-06-27 | 2007-01-11 | Hitachi Ltd | 不正コードの実行を防ぐプログラムの生成方法、及び、そのプログラム |
JP2007304954A (ja) * | 2006-05-12 | 2007-11-22 | Sharp Corp | メモリ保護機能を有するコンピュータシステム |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2015503815A (ja) * | 2012-01-16 | 2015-02-02 | クアルコム,インコーポレイテッド | リターン指向プログラミングを抑制するための動的実行防止 |
JP2013196512A (ja) * | 2012-03-21 | 2013-09-30 | Ntt Data Corp | 変換装置、変換方法、変換プログラム |
JP2013228957A (ja) * | 2012-04-26 | 2013-11-07 | Nippon Telegr & Teleph Corp <Ntt> | 制御監視装置、制御監視方法及び制御監視プログラム |
JP2013239172A (ja) * | 2012-05-11 | 2013-11-28 | Ahnlab Inc | 非実行ファイル検査装置及び方法 |
JP5265061B1 (ja) * | 2012-05-11 | 2013-08-14 | アンラブ,インコーポレイテッド | 悪意のあるファイル検査装置及び方法 |
JP6996215B2 (ja) | 2017-07-03 | 2022-01-17 | 株式会社デンソー | プログラム生成方法および電子制御装置 |
JP2019016338A (ja) * | 2017-07-03 | 2019-01-31 | 株式会社デンソー | プログラム生成方法および電子制御装置 |
JP7147947B2 (ja) | 2017-07-03 | 2022-10-05 | 株式会社デンソー | 電子制御装置及びプログラム |
JP2022003582A (ja) * | 2017-07-03 | 2022-01-11 | 株式会社デンソー | 電子制御装置及びプログラム |
JP6338796B1 (ja) * | 2018-01-09 | 2018-06-06 | 株式会社Attc | 変換装置、変換プログラム、プログラム変換方法 |
JP2019121203A (ja) * | 2018-01-09 | 2019-07-22 | 株式会社Attc | 変換装置、変換プログラム、プログラム変換方法 |
JP6460433B1 (ja) * | 2018-08-15 | 2019-01-30 | 株式会社Attc | 変換装置、変換プログラム、プログラム変換方法 |
JP2020027512A (ja) * | 2018-08-15 | 2020-02-20 | 株式会社Attc | 変換装置、変換プログラム、プログラム変換方法 |
WO2024057507A1 (ja) * | 2022-09-15 | 2024-03-21 | 三菱電機株式会社 | プログラム処理装置、プログラム処理方法、およびプログラム処理プログラム |
Also Published As
Publication number | Publication date |
---|---|
JP4990998B2 (ja) | 2012-08-01 |
EP2256659A1 (en) | 2010-12-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4990998B2 (ja) | プログラム実行フローの修正を防止する方法及び装置 | |
US7086088B2 (en) | Preventing stack buffer overflow attacks | |
EP2756366B1 (en) | Systems, methods, and media for detecting return-oriented programming payloads | |
EP3069254B1 (en) | Improved control flow integrity system and method | |
KR101480821B1 (ko) | 리턴-지향형 프로그래밍을 억제하기 위한 동적 실행 방지 | |
US20080140884A1 (en) | Canary bit | |
US7287283B1 (en) | Return-to-LIBC attack blocking system and method | |
EP2942727B1 (en) | Return-oriented programming as an obfuscation technique | |
JP6435834B2 (ja) | 命令実行制御装置、命令実行制御方法 | |
CN109409086B (zh) | 基于新增指令的检测堆栈中返回地址被篡改的装置 | |
US11947663B2 (en) | Control flow protection based on phantom addressing | |
US10572666B2 (en) | Return-oriented programming mitigation | |
US20080133858A1 (en) | Secure Bit | |
US11113392B2 (en) | Executable binary code insertion | |
Lehniger et al. | Window Canaries: Re-thinking Stack Canaries for Architectures with Register Windows | |
US10579457B1 (en) | Processor for achieving flow integrity and a method of providing notice of a fault in control flow | |
CN113032737B (zh) | 软件的保护方法、装置、电子设备及存储介质 | |
CN111898119B (zh) | 控制流完整性保护方法、装置、设备及存储介质 | |
CN116028945A (zh) | 防止执行注入的恶意代码的保护 | |
Roth et al. | Implicit buffer overflow protection using memory segregation | |
Lehniger et al. | Combination of ROP Defense Mechanisms for Better Safety and Security in Embedded Systems | |
CN109409083B (zh) | 检测堆栈中返回地址被篡改的装置 | |
Gao et al. | Metamorphic software for buffer overflow mitigation | |
Vallentin | On the evolution of buffer overflows | |
US20230418950A1 (en) | Methods, Devices, and Systems for Control Flow Integrity |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20120120 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20120313 |
|
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: 20120410 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20120502 |
|
R150 | Certificate of patent (=grant) or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (prs date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20150511 Year of fee payment: 3 |
|
LAPS | Cancellation because of no payment of annual fees |