JP4625839B2 - バッファオーバーフロー攻撃を感知して復旧する方法及びその装置 - Google Patents

バッファオーバーフロー攻撃を感知して復旧する方法及びその装置 Download PDF

Info

Publication number
JP4625839B2
JP4625839B2 JP2007503839A JP2007503839A JP4625839B2 JP 4625839 B2 JP4625839 B2 JP 4625839B2 JP 2007503839 A JP2007503839 A JP 2007503839A JP 2007503839 A JP2007503839 A JP 2007503839A JP 4625839 B2 JP4625839 B2 JP 4625839B2
Authority
JP
Japan
Prior art keywords
attack
buffer overflow
memory area
address
overflow attack
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
JP2007503839A
Other languages
English (en)
Other versions
JP2007529818A (ja
Inventor
チョイ、リン
シン、ヨン
Original Assignee
コリア ユニバーシティー インダストリー アンド アカデミー コーオペレーション ファウンデーション
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 コリア ユニバーシティー インダストリー アンド アカデミー コーオペレーション ファウンデーション filed Critical コリア ユニバーシティー インダストリー アンド アカデミー コーオペレーション ファウンデーション
Publication of JP2007529818A publication Critical patent/JP2007529818A/ja
Application granted granted Critical
Publication of JP4625839B2 publication Critical patent/JP4625839B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • FMECHANICAL ENGINEERING; LIGHTING; HEATING; WEAPONS; BLASTING
    • F16ENGINEERING ELEMENTS AND UNITS; GENERAL MEASURES FOR PRODUCING AND MAINTAINING EFFECTIVE FUNCTIONING OF MACHINES OR INSTALLATIONS; THERMAL INSULATION IN GENERAL
    • F16KVALVES; TAPS; COCKS; ACTUATING-FLOATS; DEVICES FOR VENTING OR AERATING
    • F16K17/00Safety valves; Equalising valves, e.g. pressure relief valves
    • F16K17/02Safety valves; Equalising valves, e.g. pressure relief valves opening on surplus pressure on one side; closing on insufficient pressure on one side
    • F16K17/04Safety valves; Equalising valves, e.g. pressure relief valves opening on surplus pressure on one side; closing on insufficient pressure on one side spring-loaded
    • F16K17/0446Safety valves; Equalising valves, e.g. pressure relief valves opening on surplus pressure on one side; closing on insufficient pressure on one side spring-loaded with an obturating member having at least a component of their opening and closing motion not perpendicular to the closing faces
    • F16K17/0453Safety valves; Equalising valves, e.g. pressure relief valves opening on surplus pressure on one side; closing on insufficient pressure on one side spring-loaded with an obturating member having at least a component of their opening and closing motion not perpendicular to the closing faces the member being a diaphragm
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/1425Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block
    • G06F12/1441Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block for a range
    • FMECHANICAL ENGINEERING; LIGHTING; HEATING; WEAPONS; BLASTING
    • F16ENGINEERING ELEMENTS AND UNITS; GENERAL MEASURES FOR PRODUCING AND MAINTAINING EFFECTIVE FUNCTIONING OF MACHINES OR INSTALLATIONS; THERMAL INSULATION IN GENERAL
    • F16KVALVES; TAPS; COCKS; ACTUATING-FLOATS; DEVICES FOR VENTING OR AERATING
    • F16K27/00Construction of housing; Use of materials therefor
    • F16K27/02Construction of housing; Use of materials therefor of lift valves
    • F16K27/0236Diaphragm cut-off apparatus
    • FMECHANICAL ENGINEERING; LIGHTING; HEATING; WEAPONS; BLASTING
    • F16ENGINEERING ELEMENTS AND UNITS; GENERAL MEASURES FOR PRODUCING AND MAINTAINING EFFECTIVE FUNCTIONING OF MACHINES OR INSTALLATIONS; THERMAL INSULATION IN GENERAL
    • F16KVALVES; TAPS; COCKS; ACTUATING-FLOATS; DEVICES FOR VENTING OR AERATING
    • F16K31/00Actuating devices; Operating means; Releasing devices
    • F16K31/12Actuating devices; Operating means; Releasing devices actuated by fluid
    • F16K31/14Actuating devices; Operating means; Releasing devices actuated by fluid for mounting on, or in combination with, hand-actuated valves
    • F16K31/145Actuating devices; Operating means; Releasing devices actuated by fluid for mounting on, or in combination with, hand-actuated valves the fluid acting on a diaphragm
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Mechanical Engineering (AREA)
  • Computer Hardware Design (AREA)
  • Executing Machine-Instructions (AREA)
  • Storage Device Security (AREA)

Description

本発明はコンピュータに係り、コンピュータ動作を妨害するバッファオーバーフロー攻撃を感知し、復旧する方法及びその装置に関する。
バッファオーバーフロー(buffer overflow)攻撃は、Code RedとSQL Slammerワーム(Worm)のような最近のワームの発生から分かるように、最も強力で致命的な形態の悪性コード攻撃である。
本発明は、そのような悪性コードを利用した攻撃を探知し且つ復旧できる方法を提供する。
バッファオーバーフロー攻撃は、一般的にシステムのデータを破壊し、またプログラム実行の流れを変更させるかのように異常な症状を引き起こすが、このような症状は、プログラム実行中に命令語参照とデータ参照との安全性を点検することによってハードウェアが簡単に感知できる。かかる命令語参照及びデータ参照の安全点検装置と共にセキュリティ(保安)のレベルを上昇させるための方策として、変造復旧バッファ(Corruption Recovery Buffer、CRB)と呼ばれるさらに強い技術を提案する。安全点検装置と結合されたCRBは、バッファオーバーフロー攻撃により引き起こされる疑わしいメモリ記録を一時的に保存することによって、攻撃が感知される場合にメモリの状態を攻撃以前の状態に復旧させることができる。
バッファバッファオーバーフローに対する脆弱性及びこれを利用した悪性コード攻撃は、インターネット/コンピュータセキュリティ問題のうち最も致命的な形態のセキュリティ問題である。第一の理由は、バッファがオーバーフローされることは、バッファ近くのデータを破壊するだけでなく、プログラムに対する制御を奪って悪意の目的を持った任意のコードを実行させうるからである。第二の理由は、悪性コードは、人の操作がなくても自ら複製、伝播されるため、悪性コード攻撃のあらゆる形態のうちでも、最も速い伝播速度を有するからである。第三の理由は、バッファオーバーフロー攻撃は、1988年に最初のワームウイルスが、このようなバッファオーバーフロー攻撃の形態で起こり、最も長くかつ今後も最も持続的に攻撃が予想されるからである。最後に、バッファオーバーフロー攻撃は、悪性コード攻撃のうち最も頻繁に発生する攻撃形態でもある。
多様なソフトウェア的な解決策が運営体制の修正、コンパイラツールとパッチ、デバッギングツール、及び動的ライブラリなどの形態で提案されたが、それらは根本的にレガシー(legacy)応用プログラムにはとても無力であるか、または深刻な性能障害要因を含むこともある。相変らず、対応策として最も多く使われるものは、脆弱点が発見された部分のソースコードを修正した後、再度コンパイルしてパッチ及び修正事項を製作した後、これを該当プログラムユーザーをして直接にダウンロードさせるものである。しかし、これは、脆弱なソースが公開的に知られた後に特定された製品の特定の脆弱性をさらに公開するだけで、根本的な対策ではない。
本発明が達成しようとする技術的な課題は、前記の問題点を解決するために、コンピュータにおいて発生する悪性コードを利用したバッファオーバーフロー攻撃を感知し、復旧できる方法及びその装置を提供するところにある。
前記技術的課題を解決するための本発明によるバッファオーバーフロー攻撃の感知方法の一態様は、(a)プロセッサ復帰命令語をフェッチする時に、復帰命令語が示すアドレスを感知する段階と、(b)前記感知されたアドレスがプロセッサのスタック領域に存在する否かを判断する段階と、(c)前記感知されたアドレスがスタック領域に存在する場合、前記復帰命令は不正であり、バッファオーバーフロー攻撃があると判断する段階とを含むことを特徴とする。
前記他の技術的課題を解決するための本発明によるバッファオーバーフロー攻撃の感知装置の一態様は、プロセッサ復帰命令語をフェッチする時に、復帰命令語が示すアドレスを感知するアドレス感知部と、前記アドレス感知部で感知したアドレスがプロセッサのスタック領域に存在する否かを判断する確認部と、前記確認部で前記アドレス感知部で感知したアドレスがスタック領域に存在すると判断する場合、前記復帰命令は不正であり、バッファオーバーフロー攻撃があると判断する攻撃判断部とを備えることを特徴とする。
前記技術的課題を解決するための本発明による、バッファオーバーフロー攻撃の感知方法の他の態様は、(a)所定の保存命令を行った後に復帰するアドレスを感知する段階と、(b)プロセッサのスタック領域内の連続的な保存命令が前記復帰するアドレスを修正するか否かを判断する段階と、(c)前記(b)段階で、連続的な保存命令が前記復帰するアドレスを修正すると判断されれば、バッファオーバーフロー攻撃があると判断する段階とを含むことを特徴とする。
前記他の技術的課題を解決するための本発明によるバッファオーバーフロー攻撃の感知装置の他の態様は、所定の保存命令を行った後に復帰するアドレスを感知するアドレス感知部と、プロセッサのスタック領域内の連続的な保存命令が前記アドレス感知部により復帰するアドレスを修正するか否かを判断するアドレス修正判断部と、前記アドレス修正判断部で連続的な保存命令が前記復帰するアドレスを修正すると判断すれば、バッファオーバーフロー攻撃があると判断する攻撃判断部とを備えることを特徴とする。
前記技術的課題を解決するための本発明によるバッファオーバーフロー攻撃からの復旧方法は、バッファオーバーフロー攻撃からプロセッサの動作状態を復旧する方法において、(a)バッファオーバーフロー攻撃があり得る書き込み動作を、書き込み動作が記録される元の目的地の代りに所定の他の場所に保存しながら、前記書き込み動作中にバッファオーバーフロー攻撃があるか否かを感知する段階と、(b)バッファオーバーフロー攻撃があると感知されない場合には、所定の間隔で前記保存された内容を書き込み動作が記録される元の目的地に保存し、バッファオーバーフロー攻撃があると感知される場合、攻撃による安全でない書き込みは捨てる段階と、(c)バッファオーバーフロー攻撃があると感知されれば、それ以後の安全でない書き込みを保存せずに無視する段階とを含むことを特徴とする。
前記他の技術的課題を解決するための本発明によるバッファオーバーフロー攻撃からの復旧装置は、バッファオーバーフロー攻撃からプロセッサの動作状態を復旧する装置において、バッファオーバーフロー攻撃があり得る書き込み動作を、書き込み動作が記録される元のメモリ領域の代りに所定の他の保存手段に保存する保存部と、前記書き込み動作中にバッファオーバーフロー攻撃があるか否かを感知する攻撃感知部と、バッファオーバーフロー攻撃があると感知されない場合には、所定の間隔で前記所定の他の保存手段に保存された内容を書き込み動作が記録される元のメモリ領域に保存し、バッファオーバーフロー攻撃があると感知される場合、攻撃による安全でない書き込みは捨てる保存管理部と、バッファオーバーフロー攻撃があると感知されれば、それ以後の安全でない書き込みを前記所定の他の保存手段に保存せずに無視する記録管理部とを備えることを特徴とする。
本発明を利用すれば、効果的にコンピュータに発生しうるバッファオーバーフロー攻撃を感知し、攻撃を受けた場合にも被害を最小化しながら攻撃以前の状態に復旧/復帰でき、具現方法によってコンピュータシステムの性能の低下は最小化しつつ、効果的にシステムを防御できるので、その結果、コンピュータ及びインターネットを使用する環境を大きく改善できる。
以下、添付した図面を参照して、本発明の望ましい一実施形態を詳細に説明する。
バッファオーバーフロー攻撃は、ハードウェアによって簡単に感知できる異常な症状や跡を残すことが普通である。例えば、スタックスマッシングと呼ばれるバッファオーバーフロー攻撃の最も多い形態は、プロセスのローカルスタックフレームの復帰アドレスを変更し、これは普通プログラム遂行中には可能でない。同様に、悪性コードは、よくプログラムアドレス空間のスタックやデータ領域から命令語をフェッチしようとするが、これも普通のプログラム遂行ではあまり生じない動作である。
このような異常な症状を検出するために、本発明は、命令語とデータ参照のアドレス領域とを検査して、その安全性を検証する安全保護装置(safety guard)と呼ばれるマイクロ構造技術を導入する。また、疑わしい書き込みを保存して攻撃が感知される場合、システムを攻撃以前の状態に戻しうる変造復旧バッファ(Corruption Recovery Buffer:CRB)というさらに強いセキュリティ技術を提示する。
バッファオーバーフロー攻撃は、オーバーフローされた変数近くの変造されるデータによって始まる。プロセスアドレス空間のプログラムテキスト領域は、書き込みが禁止されているために、スタック、ヒープ、あるいは静的データのようなデータ領域のみ変造される。図1は、スタックスマッシング攻撃がどのようにx86系列プロセッサの復帰アドレスを変更できるかを示す。
x86プロセッサにおいて、EBPはスタックの底部、ESPはスタックの上部を示し、EBPとESPとが示す領域は、一プロシージャに該当するスタックフレーム100である。スタックフレーム100には、ローカル変数110、因子120、復帰アドレス130、以前フレームポインタ(EBP)140が保存されている。ここで、ローカル変数110または因子120がオーバーフロー攻撃の対象となるバッファ変数であり、このようなバッファ攻撃は、参照番号100のスタックフレームの下から上にスタックにある近くのデータを上書きし、結局は、復帰アドレス130を変更させる。この変更された復帰アドレス150は、一般的に外部から入力された悪性コードの開始アドレスを示し、現在攻撃が発生した関数が復帰するときの変更された復帰アドレス150への復帰、すなわち悪性コードを開始して悪性コードが実行されるのである。
strcpyのように脆弱点がある関数がローカル変数に入力を読み込む時、外部入力は関数のスタックフレーム内で該当変数のみならず、近く領域のデータにオーバーフローされ、これは、結果的に復帰アドレスを変造させうる。
図2は、バッファオーバーフロー攻撃により作られた制御及びデータ変造の種類を分類した図である。何時そして何処でデータが変造されたかによって、プログラム実行中のエラー発生如何が決定される。変造されたデータ項目がそれ以後に全く参照されなければ、データ変造は、プログラム実行に影響を及ぼさないであろう。以下では、かかる場合を“使用しないデータ変造”という。もし、同じ位置でさらに早い時点で同じ攻撃が発生すれば、そのデータは、参照され且つ深刻な問題を起こしうる。したがって、データ変造の効果は、その位置だけでなく攻撃の時点にも影響を受ける。変造されたデータ項目が後に参照される場合を、以下では“活動性データ変造”と言及する。
活動性データ変造は、次のような3種類に分類されうる。第一の種類は、変造されたデータがリターン命令あるいは間接分岐命令のような分岐命令語の目的アドレスとして使われる場合、これを“目的アドレス変造”と呼ぶ。このような場合、変更された分岐目的アドレスから命令語をフェッチする場合に、プログラムの実行流れが変更される。ほとんどのバッファオーバーフロー攻撃は、スタックフレームの復帰アドレスあるいはスタックまたはヒープ領域での関数ポインタを目標として、このような制御データの変造を通じて悪性コード攻撃を試みる。
データ変造の第二の種類は、攻撃が分岐命令の条件を変更する時に発生する。これも復帰アドレスや関数ポインタを変更せずとも、プログラム制御流れに対する変更を誘発しうる。以下では、このようなものを“分岐条件変造”という。例えば、
if (a>0) then call func#a(a) else func#b(a);
のようなコードで変数aの値によって他の関数が引出されうる。すなわち、変数aの値が変造されれば、正常に引出される関数でない他の関数を引き出すことによって制御流れを変更するのである。
以下では、活動性(ライブ)データ変造の他のあらゆる場合を“純粋データ変造”という。この場合、制御の流れを直接的に変えないが、その後プログラムによって参照される活動性データを変更する。この場合、正常なプログラムの実行のように見えるが、誤った結果や状態を引き起こし得る。なお、データ変造は、他のデータ位置に伝播され、その結果、分岐目標変造あるいは分岐条件変造につながりうる。
前記の活動性データ変造の3種類の場合、いずれも異常な実行または終了を起こしうる。変造されたデータ項目を参照することは、正しくない被演算子によって発生するエラーと関連したデータ参照例外あるいは実行につながりやすい。例えば、変造されたデータアドレスからロードすることは、TLBミス、ページミス、あるいは接近違反につながりうる。たとえ、変造されたデータ項目が成功的に参照されるとしても、以後の演算過程でオーバーフローやフローティングポイント例外などを起こしうる。
変造されたデータ項目が条件分岐の分岐条件あるいは間接分岐の分岐目標として使われる場合、実行制御流れを変更させる。特に、正しくない目標アドレスから命令語をフェッチする場合を“制御変造”と呼ぶ。これは、バッファオーバーフロー攻撃によって発生した正しくない制御流れを意味する。これは、分岐目標が外部から入ったワームコードに対するポインタに変更される場合、悪性コードの実行につながりうる。以下では、このような制御変造を“外部コード制御変造”という。悪性コードは、自ら複製されて他の脆弱なホストに伝播されるため、バッファオーバーフロー攻撃の最も深刻な結果と言える。また、これは、バッファオーバーフロー攻撃の最も多い形態でもある。制御変造のさらに他の形態は、変更された分岐目標がテキスト領域の正常なコードを示す時である。これを“内部コード制御変造”と呼ぶ。
以下、本発明によってバッファオーバーフロー攻撃感知を行う安全点検の流れを説明する。
攻撃を受けるシステムは、データ及び命令語の参照時に異常な症状を示す。例えば、スタックスマッシング攻撃は、スタック内部のローカル変数のみならず、復帰アドレスまで上書きされる。さらに、よく現在のスタックフレームの外側のスタック領域に自身に随伴した悪意のコードを複写するが、このいずれの場合も普通のプログラム実行中には可能でない。また、攻撃を受けたプログラムは、スタック領域から命令語をフェッチする。リナックスの「シグナルハンドラ(signal handlers)」あるいはgccの「トランポリン(trampolines)」関数のようなまれな場合以外には、スタックから命令語をフェッチすることは普通でない。異常な命令語または異常なデータ参照は、参照されているアドレスに対する安全検査を通じて実行途中に容易に探知できる。
図3は、本発明によってバッファオーバーフロー攻撃を感知する方法の一例を示すフローチャートである。
この方法は、プロセッサ復帰命令語をフェッチする時に復帰命令語が示すアドレスを感知し(300段階)、感知されたアドレスがプロセッサのスタック領域に存在するか否かを判断し(310段階)、感知されたアドレスがスタック領域に存在する場合、前記復帰命令は不正であり、バッファオーバーフロー攻撃があると判断する(320段階)。
図4は、図3の方法を実施するためのバッファオーバーフロー攻撃を感知装置の構成を示すブロック図である。
この装置は、プロセッサ復帰命令語をフェッチする時に復帰命令語が示すアドレスを感知するアドレス感知部400、アドレス感知部400で感知したアドレスがプロセッサのスタック領域に存在する否かを判断する確認部410、及び確認部410で、アドレス感知部400で感知したアドレスがスタック領域に存在すると判断する場合、前記復帰命令は不正であり、バッファオーバーフロー攻撃があると判断する攻撃判断部420を備える。
この場合、攻撃判断部420は、320段階で不正命令であると判断された復帰命令は実行せずに捨てることが望ましい。
以下、本発明がCPUのようなプロセッサに含まれて具現化された場合を例として挙げて詳細に説明する。これは、プロセッサがどのようにバッファオーバーフロー攻撃によるデータあるいは制御変造に対抗してシステムを防御できるかを示す。
プロセッサから命令語をフェッチするときに、図4の装置は、結局次のような動作を行う。
復帰命令が示すアドレスがスタック領域に存在する時、復帰命令は、正しくないと判断する。
もし、プログラムカウンターがスタック領域内の一地点を示すならば、該当命令語は安全でないと判断されて捨てられる。しかし、このような方法は、gcc trampolines関数またはリナックスシグナルハンドラのように、スタック領域から命令語をフェッチしなければならない例外的な場合に問題となりうる。
バッファオーバーフローを発生させる悪性コードは、多くの場合に復帰アドレスを上書きするため、スタック領域に制御を変える命令語は、復帰命令語となる。しかし、trampolinesまたはリナックスシグナルハンドラの場合は、復帰命令語ではない呼び出し命令語によって呼ばれる。したがって、復帰命令語の目標アドレスがスタック領域を表すか否かを検査することで、trampolines関数による正常な命令語と悪性コード攻撃による異常な命令語とを区分できる。命令語を実行する間のこのような種類の安全検査を安全点検といい、復帰命令語に対する特定の場合の参照安全検査を命令語参照安全点検という。
これは、簡単な範囲チェックであり、本発明を具現化する場合にハードウェアー的な費用または性能面での損失なしにハードウェアで具現化されうる。
外部から入った悪性コードは、ほどんどの場合、プログラムのアドレス空間のうちスタック領域にのみ存在できるため、命令語参照安全点検は、バッファオーバーフロー攻撃によって作られた外部コード制御変造を効果的に除去できる。しかし、これは、テキスト領域から命令語をフェッチする内部コード制御変造は防止し難い場合が発生しうる。また、これは、分岐条件でない分岐目標アドレスのみを検査するので、分岐条件変造によって発生する制御変造も防止し難いこともある。
攻撃の初期段階で攻撃を感知して防止することがいつも有利な方法である。したがって、データ変造段階でシステムを防御することが、制御変造後にシステムを防御することよりシステムに加えられる被害を減らすことができる。命令語参照安全保護以外に、図5に示すように他の安全保護策がデータ変造段階で提供されうる。
図5は、本発明によるバッファオーバーフロー攻撃を感知する方法の他の例を示すフローチャートである。
この方法は、所定の保存命令を行った後に復帰するアドレスを感知し(500段階)、プロセッサのスタック領域内の連続的な保存命令が前記復帰するアドレスを修正するか否かを判断し(510段階)、510段階で連続的な保存命令が前記復帰するアドレスを修正すると判断されれば、バッファオーバーフロー攻撃があると判断する(520段階)。
図6は、図5の方法を実施するためのバッファオーバーフロー攻撃を感知する装置の構成を示すブロック図である。
この装置は、所定の保存命令を行った後に復帰するアドレスを感知するアドレス感知部600、プロセッサのスタック領域内の連続的な保存命令がアドレス感知部600によって復帰するアドレスを修正するか否かを判断するアドレス修正判断部610、及びアドレス修正判断部610で連続的な保存命令が前記復帰するアドレスを修正すると判断すれば、バッファオーバーフロー攻撃があると判断する攻撃判断部620を備える。
図6の装置は、結果的に次のような動作を行う。
スタック領域内の連続的な保存命令が復帰アドレスを修正する時、これは異常なものであると判断する。
復帰アドレスが保存された位置に対して連続的な保存命令語のアドレス領域を検査することで、復帰アドレスあるいはフレームポインタの変造からシステムを保護することができる。このような安全保護をデータ参照安全点検という。復帰アドレスが修正されることを防止することによって、スタックスマッシング攻撃によって制御変造が起こることを防止することができる。この安全保護を使用するために、復帰アドレスが保存される所のアドレスを知っている必要がある。そのために、この場合、アドレス感知部600は、参照番号500段階で所定の保存命令を行った後に復帰するアドレスを所定のスタックに保存し、アドレス修正判断部610は、前記連続的な保存命令の保存範囲が前記スタックに保存されたアドレスと相反するか否かを判断して、前記復帰するアドレスが侵犯されて修正されると判断することが望ましい。
これに関する説明のために、本発明では、復帰アドレスポインタスタック(Return Address Pointer Stack、以下RAPSという)の概念を使用する。
図7は、本発明によるRAPSの構造を示す。復帰アドレスがスタックに保存される度に、保存される所のアドレスがRAPSにプッシュされる。復帰アドレスがスタックから読み取られるとき、RAPSでポップ(pop)演算が起こる。x86プロセッサにおいてsetjmp、longjmpのような場合には、下記数式のように数回のポップ演算が同時に起こらなければならない。

while (RAPS(top) < ESP) pop RAPS;

二つの連続的な保存演算がスタック内の低いアドレスから高いアドレス方向につながる連続的な領域に起こるとき、RAPSは、開始地点と終了地点とを記憶する二つのポインタ(それぞれ、StartPtrとEndPtr)を利用してこの範囲を記憶する。もし、連続的な保存範囲がRAPSのTopに保存されたアドレスを侵犯すれば(すなわち、連続的な保存範囲とRAPSに保存されたアドレスとの間に衝突が発生すれば)データ参照安全点検装置は、安全違反を知らせる。
ほとんどのバッファオーバーフロー攻撃は、最も外側のスタックフレーム付近の復帰アドレスを変造させる。もし、オーバーフローされた変数が現在スタックフレーム内のローカル変数である場合、すぐ以前のスタックフレーム内の復帰アドレスが悪性コードによって変造される。しかし、オーバーフローされた変数がポインタによる呼び出しによって伝えられた因子である場合、実際のバッファオーバーフローは、以前スタックフレームで発生し、その一つ以前のスタックフレーム内の復帰アドレスが変造される。すなわち、オーバーフローが起こる変数が参照による呼び出し方式で伝えられる場合、いかなるスタックフレームでもバッファオーバーフロー攻撃が発生しうる。したがって、RAPS内のあらゆる値に対して連続的な保存の範囲が検査されなければならない。しかし、ほとんどの攻撃は、最も最近のスタックフレーム付近の復帰アドレスを目標とするので、数個の最近復帰アドレスのみを検査することも十分に良い方法となる。
前記のように動作されるデータ参照安全点検装置が具現化される場合、ハードウェアコスト面では命令語参照安全点検に比べて高くなるが、制御及びデータ変造に対してはさらに高いレベルの防御を提供するようになる。

バッファオーバーフロー攻撃からの元の状態の復旧

プロセッサのような素子に具現化されうる前述された本発明による安全点検装置によって、危険なメモリ参照を探知すれば、いくつかの対応方法を選択できる。
第一の方法は、攻撃を受けるプロセスを終了しうる。しかし、これは、攻撃者がプロセスを終了するのに成功することであるので、サービス拒否状態を発生させうる。
第二の方法は、現在攻撃される関数の実施を終了し、その制御流れを強制的に呼び出し者に戻す方法である。これを強制復帰(compulsory return)という。これは、本発明による装置が復帰アドレスの位置を追跡して、強制的にPC値を変更することができるために可能である。
第三の方法は、あらゆる安全でない保存演算を無視し、元の実行流れは変化させない方法である。これを静かな復旧(calm recovery)という。この方法は、元の実行流れは変えないが、ローカル変数に対するデータ変造によって異常な実行を誘発しる。
最後の方法は、攻撃以前の状態に復旧させた後に呼び出し者に復帰させる方法である。しかし、これは、以前または新しい構造的な状態を保存するためのハードウェアー的な保存手段あるいはバッファを必要とする。
本発明では、バッファオーバーフロー攻撃を感知する時の復旧あるいは復帰技術であって、前記の方法を複合して使用できる。以下、前記各復旧あるいは復帰方法について説明する。

強制復帰(compulsory returen)

簡単なハードウェア解決策で攻撃を受けた関数を終え、その制御の流れが呼び出し者に復帰するように強制的に変更する。これは、スタックに保存された復帰アドレスの値でプログラムカウンターを更新し、現在のスタックフレームをポップアップして具現できる。多くの場合、攻撃を受けた関数の目的は、単に外部の入力をローカル変数に複写するだけである。したがって、オーバーフローが発生した変数は、悪意のコードだけを含んでいるので、ほとんどの場合に入力を捨てることが安全である。

静かな復旧

攻撃によって発生するあらゆる安全でない書き込みを単純に無視する方法である。データ参照安全点検装置は、復帰アドレスを保護するので、攻撃は制御を奪うことができず、攻撃を受けたプロセスは、攻撃以後に正常な実行を続けるようになる。プロセッサは、静かに安全でない書き込みのみを無視し、攻撃されたプロセスの元の制御流れを変更しないので、これを静かな復旧と呼ぶ。したがって、この方法は、強制復帰方法に比べて強制的でない。しかし、この方法は、データ変造に脆弱であり、データ参照安全点検装置が安全違反を知らせる以前にスタックフレーム内のローカル変数が既に変造されるので、異常な実行を誘発しうる。

変造復旧バッファ(CRB)

さらに積極的な方法は、攻撃が感知されたときに元ののバッファ状態を復旧することである。このために、変造復旧バッファ(CRB)と呼ばれる特別なハードウェアバッファに疑わしい書き込みを保存する。データ参照安全保護装置違反が発生した時、プロセッサは、CRB内のあらゆる安全でない値を捨て、静かにそれ以後の安全でない書き込みを無視する。そして、その後に続くあらゆる演算を静かな復旧のように行う。これにより、メモリの入力バッファは、元の状態を維持し、いかなる種類のスタック領域に対するデータ変造も避けるようになる。
図8は、CRBを利用して本発明によってバッファオーバーフロー攻撃から復旧する方法を示すフローチャートである。
プロセッサの動作状態を復旧するこの方法は、バッファオーバーフロー攻撃があり得る書き込み動作を、書き込み動作が記録される元の目的地の代りに所定の他の場所に保存しながら(800段階)、前記書き込み動作中にバッファオーバーフロー攻撃があるか否かを感知する(810段階)。そして、バッファオーバーフロー攻撃があると感知されない場合には、所定の間隔で前記保存された内容を書き込み動作が記録される元の目的地に保存し、バッファオーバーフロー攻撃があると感知される場合、攻撃による安全でない書き込みは捨て(820段階)、バッファオーバーフロー攻撃があると感知されれば、それ以後の安全でない書き込みを保存せずに無視する(830段階)。
図9は、図8の方法を実施するためのバッファオーバーフロー攻撃からの復旧装置の構成を示すブロック図である。
バッファオーバーフロー攻撃からプロセッサの動作状態を復旧するこの装置は、バッファオーバーフロー攻撃があり得る書き込み動作を、書き込み動作が記録される元のメモリ領域910の代りに所定の他の保存手段920に保存する保存部900、前記書き込み動作中にバッファオーバーフロー攻撃があるか否かを感知する攻撃感知部930、バッファオーバーフロー攻撃があると感知されない場合には、所定の間隔で所定の他の保存手段920に保存された内容を書き込み動作が記録される元のメモリ領域910に保存し、バッファオーバーフロー攻撃があると感知される場合、攻撃による安全でない書き込みは捨てる保存管理部940、及びバッファオーバーフロー攻撃があると感知されれば、それ以後の安全でない書き込みを所定の他の保存手段920に保存せずに無視する記録管理部950を備える。
そして、この装置は、前記書き込み動作が記録される元のメモリ領域910への読み取り動作を管理する引出し管理部960をさらに備え、引出し管理部960は、前記書き込み動作の元のメモリ910領域に読み取り動作がある場合、元のメモリ910領域と、保存部900によって保存される所定の他の保存手段920とに同時に接近して、読み取り動作の目的地アドレスが所定の他の保存手段920にあり、まだ元のメモリ910領域に保存されない場合には、所定の他の保存手段920から前記読み取り動作が要求するデータを供給することが望ましく、保存部900が保存する所定の他の保存手段920は、先入れ先出し方式のFIFO素子であることが望ましい。
また、保存管理部940は、バッファオーバーフロー攻撃が感知される場合、攻撃の発生前に保存された書き込みも、書き込み動作が記録される元のメモリ領域910に保存することが望ましい。
さらに、保存部900は、前記書き込み動作が記録される元のメモリ領域910の連続的な領域で二番目の継続的な書き込みがある場合には、前記書き込みを所定の他の保存手段920に保存し、そうでない場合には、書き込み動作が記録される元のメモリ領域910に記録することが望ましい。この動作のために、保存管理部940の制御を受ける。
そして、保存管理部940がFIFO素子920に保存された内容を書き込み動作が記録されるメモリ領域910に保存する所定の間隔は、FIFO素子920の容量により決定されることが望ましい。
図10は、FIFOから構成された本発明によるCRBの構造を示す。以下の説明は、必要時には図9の図面と同時に参照番号を引用する。
CRB1000は、潜在的なバッファオーバーフロー攻撃の結果である疑わしい書き込みを保存するのに使われる。該疑わしい書き込みが安全なものと判明された後、この値はメモリ1010に伝達される。したがって、メモリ1010は、攻撃以前のバッファの原状態を常に維持するようになる。メモリ1010は、普通のシステムメモリまたはCPU内部あるいはCPUに接続されているキャッシュメモリとなり、いずれの場合にも本発明の要旨は維持して具現化される。
バッファオーバーフロー攻撃は、メモリの連続的な領域に継続的な書き込みを実行することを伴う。単一書き込みは、メモリのバッファのオーバーフローを引き起こさないため、本発明では、望ましくメモリ1010の連続的な領域に二番目の継続的な書き込みを疑わしい書き込みの始まりと見なす。したがって、二つの継続的な保存演算だけでなく、メモリの連続的な領域も疑わしい攻撃の成立のための必須条件である。以下では、このような連続的なメモリ領域の二番目の記録をCRBトリガーと言及する。保存管理部940、1020がCRBトリガーに応じてCRBにデータを記録し、この記録されたデータを元の記録されるメモリ1010に保存させる。
保存管理部1020は、CRBトリガーが発生しない場合には、バッファオーバーフロー攻撃でないので、CRB1000に記録する必要なく、すぐ目的地メモリ1010に記録する。もし、CRBトリガーが発生した場合であれば、これは疑わしい書き込みである可能性があるので、全ての書き込みは、保存管理部1020によって元の記録されるメモリ1010ではないCRB1000、特にテール部分に記録される。
CRBトリガーが保存管理部1020によって感知されれば、次の継続的な書き込みがCRBトリガー条件が満たされなくなるまで、保存部900によってメモリ1010の代わりにCRB1000に書き込まれる。もし、この継続的な書き込みの実行中に攻撃感知部930によってバッファオーバーフロー攻撃、すなわち、データ参照安全点検装置違反が発生しなければ、CRB1000に保存されたその継続的な記録は、安全したものと見なされてメモリ1010に伝えられる。
データ参照安全点検装置に対する違反が発生すれば、CRB1000に保存された値は安全でなく、記録管理部950によりそれ以後の記録は無視される。また、静かな復旧の場合と同様に、本発明が適用されたプロセッサは、あらゆる安全でない書き込みを無視した後、正常実行を続ける。このバッファオーバーフロー攻撃の間にそのメモリは、そのまま維持されるので、データも制御も変造されない。
プロセッサのような装置に本発明によるCRB1000あるいは図9の構成を追加することは、読み取り演算を複雑にする。最新のデータがそのメモリに存在しない場合もあるので、読み取りは、CRBとメモリとを同時に接近しなければならない。これに関する機能を引出し管理部960、1030が支援する。
読み取り演算のアドレスがメモリ1010にのみある場合(Miss)には、引出し管理部1030は、メモリ1010からそのデータを供給させる。そして、もし読み取り演算のアドレスがCRB1000に書き込まれたデータもあり、メモリ1010にもある場合には、CRB1000とメモリ1010とのうちいずれからデータを供給してもよい。
もし、読み取り演算のアドレスがCRB1000に書かれたデータにあるが、まだメモリ1010に伝えられなかったとすれば(Hit)、CRB1000がそのデータを供給しなければならない。これは、CRB1000によって維持される開始と終わりアドレスを読み取り演算のアドレスと比較して簡単に検査できる。図10に示されたように、ヘッド(Head)とテール(Tail)とは、それぞれまだメモリ1010に伝達していないCRB1000で最も古い記録と最新の記録とを示す。CRB1000は、継続的な書き込みの最後の実行のみを保管しているので、CRBの以前値は、他のCRBトリガー条件を満足する前にメモリにフラッシュされなければならない。したがって、CRBトリガーが感知されれば、遅延(stall)が発生する。
遅延は、CRB1000を構成するFIFO素子のような保存素子の制限された容量によって発生する。もし、CRB1000がいっぱいに満ちていれば、疑わしい記録は、CRB1000の新しいデータの一部がメモリ1010にフラッシュされるまで遅延されなければならない。
前記の場合と同様に、遅延の長さは、CRB1000の容量によって決まる。CRBが小さいほど遅延は、さらに長くさらに頻繁に発生する。
本発明を適用したシステムの性能を試験するために、SPEC2000CPUベンチマーク、CPU2000ベンチマークの多様なアプリケーションを利用した試験と、SimpleScalar2.0ツールを使用して基本キャッシュ/TLBを有し、4個の無秩序なパイプラインを有しながら本発明によるCRBを含むプロセッサモデルを使用して、各アプリケーションごとに50個の独立的なシミュレーションを行った結果、1KBのCRBは、2%以下の性能低下であらゆる制御及びデータ変造を除去するのに十分であるということが分かる。
したがって、本発明を適用したプロセッサは、性能面ではほとんど低下することなく、バッファオーバーフロー攻撃に対してとても効率的な手段を提供することが分かり、これは本発明の効果を十分に立証すると言える。
前述された本発明による方法と装置は多様に具現化されうる。例えば、ASICあるいはFPGAのような素子を使用して別途のチップとして具現して、CPUのようなプロセッサと接続して使われるように具現化されてもよく、あるいはプロセッサの内部の一構成部として具現化されてバッファオーバーフロープロセッサを具現化するために使われてもよい。このような多様な具現化が可能であるということは、当業者は容易に理解できるであろう。
本発明が属する技術分野で当業者は、本発明が本発明の本質的な特性から逸脱しない範囲で変形された形態に具現化されうることが理解できるであろう。したがって、本発明の開示された実施例は、限定的な観点でなく説明的な観点で考慮されなければならない。前記の説明に含まれた例は、本発明についての理解のために導入されたものであり、その例は、本発明の思想と範囲を限定しない。当業者ならば、前述した例以外にも、本発明による多様な実施形態が可能であるということが分かるであろう。本発明の範囲は、前記説明ではなく、特許請求の範囲に現れており、それと同等な範囲内にある全ての差異点は、本発明に含まれていると解釈されなければならない。
また、当業者ならば、本発明による前記の各段階は、一般的なプログラミング技法を利用してソフトウェア的に、またはハードウェア的に多様に具現化できるということが容易に分かるであろう。
さらに、本発明の一部段階は、また、コンピュータで読み取り可能な記録媒体にコンピュータが読み取り可能なコードとして具現化可能である。コンピュータが読み取り可能な記録媒体は、コンピュータシステムによって読み取れるデータが保存されるあらゆる種類の記録装置を含む。
本発明は、コンピュータ産業に利用され、特に、外部からの悪意的な攻撃に対応してコンピュータを管理して、その結果コンピュータ動作を妨害するバッファオーバーフロー攻撃を感知し、それから復旧することが可能である。
スタックスマッシング攻撃がどのようにx86系列プロセッサの復帰アドレスを変更できるかを示す。 バッファオーバーフロー攻撃により作られた制御及びデータ変造の種類を分類した図面である。 本発明によってバッファオーバーフロー攻撃を感知する方法の一例を示すフローチャートである。 図3の方法を実施するためのバッファオーバーフロー攻撃を感知装置の構成を示すブロック図である。 本発明によるバッファオーバーフロー攻撃を感知する方法の他の例を示すフローチャートである。 図5の方法を実施するためのバッファオーバーフロー攻撃を感知する装置の構成を示すブロック図である。 本発明による復帰アドレスポインタスタックの構成を示す図面である。 変造復旧バッファを利用して、本発明によってバッファオーバーフロー攻撃から復旧する方法を示すフローチャートである。 図8の方法を実施するためのバッファオーバーフロー攻撃からの復旧装置の構成を示すブロック図である。 FIFOから構成された本発明による変造復旧バッファの構造を示す図面である。

Claims (9)

  1. コンピュータにおいて発生する悪性コードを利用したバッファオーバーフロー攻撃からプロセッサの動作状態を復旧する方法において、
    (a)保存部が、書き込み情報を元のメモリ領域の代りに所定の保存手段に保存しながら、攻撃感知部が前記書き込み情報中にバッファオーバーフロー攻撃があるか否かを感知する段階であって、前記攻撃感知部のアドレス感知部が、前記書き込み情報のプロセッサ復帰命令語をフェッチする時に、前記プロセッサ復帰命令語が示すアドレスを感知し、前記攻撃感知部の確認部が、前記感知されたアドレスがプロセッサのスタック領域に存在するか否かを判断し、前記攻撃感知部の攻撃判断部が、前記感知されたアドレスがスタック領域に存在する場合、前記プロセッサ復帰命令語は不正であり、バッファオーバーフロー攻撃があると判断することで、バッファオーバーフロー攻撃があるか否かを感知する段階と、
    (b)バッファオーバーフロー攻撃があることが感知されない場合には、保存管理部が、所定の時間後に前記所定の保存手段の書き込み情報を前記元のメモリ領域に保存し、バッファオーバーフロー攻撃があることが感知される場合には、バッファオーバーフロー攻撃が感知された前記所定の保存手段の書き込み情報を削除する段階と、
    (c)前記(b)段階で、バッファオーバーフロー攻撃があることが感知された場合には、記録管理部が、それ以後のバッファオーバーフロー攻撃が感知された書き込み情報を前記所定の保存手段に保存せずに無視する段階と、を含むことを特徴とするバッファオーバーフロー攻撃からの復旧方法。
  2. 前記(b)段階で、バッファオーバーフロー攻撃が感知され場合、前記保存管理部が、攻撃の発生前に前記所定の保存手段に保存された書き込み情報も前記元のメモリ領域に保存することを特徴とする請求項1に記載のバッファオーバーフロー攻撃からの復旧方法。
  3. 前記(a)段階で、前記元のメモリ領域の連続的な領域で、二番目の継続的な書き込み情報がある場合には、前記書き込み情報を前記元のメモリ領域の代りに前記所定の保存手段に保存し、前記元のメモリ領域の連続的な領域で、二番目の継続的な書き込み情報がない場合には、前記元のメモリ領域に保存することを特徴とする請求項1に記載のバッファオーバーフロー攻撃からの復旧方法。
  4. 前記元のメモリ領域及び前記所定の保存手段に前記書き込み情報が保存されている際に、前記元のメモリ領域と前記所定の保存手段に同時にアクセスし読み取りを管理する引出し管理部は、読み取りのアドレスのデータが前記所定の保存手段に保存されており、まだ前記元のメモリ領域に保存されていない場合には、前記所定の保存手段から前記読み取りのアドレスのデータを供給することを特徴とする請求項1に記載のバッファオーバーフロー攻撃からの復旧方法。
  5. コンピュータにおいて発生する悪性コードを利用したバッファオーバーフロー攻撃からプロセッサの動作状態を復旧する装置において、
    書き込み情報を元のメモリ領域の代りに所定の保存手段に保存する保存部と、
    前記書き込み情報中にバッファオーバーフロー攻撃があるか否かを感知する攻撃感知部であって、前記書き込み情報のプロセッサ復帰命令語をフェッチする時に、前記プロセッサ復帰命令語が示すアドレスを感知するアドレス感知部と、前記感知されたアドレスがプロセッサのスタック領域に存在するか否かを判断する確認部と、前記感知されたアドレスがスタック領域に存在する場合、前記プロセッサ復帰命令語は不正であり、バッファオーバーフロー攻撃があると判断する攻撃判断部と、を有する前記攻撃感知部と、
    バッファオーバーフロー攻撃があることが感知されない場合には、所定の時間後に前記所定の保存手段の書き込み情報を前記元のメモリ領域に保存し、バッファオーバーフロー攻撃があることが感知される場合には、バッファオーバーフロー攻撃が感知された書き込み情報を削除する保存管理部と、
    バッファオーバーフロー攻撃があることが感知された場合には、それ以後のバッファオーバーフロー攻撃が感知された書き込み情報を前記所定の保存手段に保存せずに無視する記録管理部と、を備えることを特徴とするバッファオーバーフロー攻撃からの復旧装置。
  6. 前記保存管理部は、バッファオーバーフロー攻撃が感知され場合、攻撃の発生前に前記所定の保存手段に保存された書き込み情報も前記元のメモリ領域に保存することを特徴とする請求項5に記載のバッファオーバーフロー攻撃からの復旧装置。
  7. 前記保存部は、前記元のメモリ領域の連続的な領域で、二番目の継続的な書き込み情報がある場合には、前記書き込み情報を前記元のメモリ領域の代りに前記所定の保存手段に保存し、前記元のメモリ領域の連続的な領域で、二番目の継続的な書き込み情報がない場合には、前記元のメモリ領域に保存することを特徴とする請求項5に記載のバッファオーバーフロー攻撃からの復旧装置。
  8. 前記元のメモリ領域への読み取りを管理する引出し管理部をさらに備え、
    前記元のメモリ領域及び前記所定の保存手段に前記書き込み情報が保存されている際に、前記引出し管理部は、前記元のメモリ領域に読み取りがある場合、前記元のメモリ領域と前記所定の保存手段に同時にアクセスし、読み取りの目的地アドレスが前記所定の保存手段に保存されており、まだ元のメモリ領域に保存されていない場合には、前記所定の保存手段から前記読み取りの目的地アドレスのデータを供給することを特徴とする請求項5に記載のバッファオーバーフロー攻撃からの復旧装置。
  9. 前記保存部の前記所定の保存手段は、先入れ先出し方式のFIFO素子であることを特徴とする請求項5〜請求項8のうちいずれか一項に記載のバッファオーバーフロー攻撃からの復旧装置。
JP2007503839A 2004-03-18 2005-03-18 バッファオーバーフロー攻撃を感知して復旧する方法及びその装置 Active JP4625839B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020040018279A KR100586500B1 (ko) 2004-03-18 2004-03-18 버퍼 오버플로우 공격들을 감지하고 복구하는 방법 및 그장치
PCT/KR2005/000776 WO2006001574A1 (en) 2004-03-18 2005-03-18 Method for sensing and recovery agatinst buffer overflow attacks and apparatus thereof

Publications (2)

Publication Number Publication Date
JP2007529818A JP2007529818A (ja) 2007-10-25
JP4625839B2 true JP4625839B2 (ja) 2011-02-02

Family

ID=35781963

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007503839A Active JP4625839B2 (ja) 2004-03-18 2005-03-18 バッファオーバーフロー攻撃を感知して復旧する方法及びその装置

Country Status (5)

Country Link
US (1) US7814333B2 (ja)
EP (1) EP1733307A1 (ja)
JP (1) JP4625839B2 (ja)
KR (1) KR100586500B1 (ja)
WO (1) WO2006001574A1 (ja)

Families Citing this family (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8037526B1 (en) * 2005-03-30 2011-10-11 Symantec Corporation Detecting buffer overflows using frame pointer characteristics
US7945953B1 (en) 2005-07-06 2011-05-17 Symantec Corporation Method to identify buffer overflows and RLIBC attacks
US20070050848A1 (en) * 2005-08-31 2007-03-01 Microsoft Corporation Preventing malware from accessing operating system services
US8185952B2 (en) * 2007-01-03 2012-05-22 Texas Instruments Incorporated Static and dynamic firewalls
US8261065B2 (en) * 2007-05-07 2012-09-04 Intel Corporation Protecting caller function from undesired access by callee function
US8645704B2 (en) * 2007-05-07 2014-02-04 Intel Corporation Protecting caller function from undesired access by callee function
US8312254B2 (en) * 2008-03-24 2012-11-13 Nvidia Corporation Indirect function call instructions in a synchronous parallel thread processor
US8519116B2 (en) 2008-04-29 2013-08-27 Siemens Healthcare Diagnostics Inc. Method for predicting a clinical response of a patient suffering from or at risk of developing cancer towards a given mode of treatment
US8230499B1 (en) * 2008-05-29 2012-07-24 Symantec Corporation Detecting and blocking unauthorized downloads
US8117660B2 (en) * 2008-06-19 2012-02-14 Microsoft Corporation Secure control flows by monitoring control transfers
US8353033B1 (en) * 2008-07-02 2013-01-08 Symantec Corporation Collecting malware samples via unauthorized download protection
CN101694686B (zh) * 2009-09-21 2011-07-20 北京工业大学 基于逻辑隔离的缓冲区溢出动态度量方法
KR101033191B1 (ko) 2010-02-19 2011-05-11 고려대학교 산학협력단 메모리 실행영역 추적을 사용한 버퍼오버플로 악성코드 탐지기법
US8561198B2 (en) 2010-05-07 2013-10-15 Mcafee, Inc. Detection of malicious system calls
GB2482701C (en) * 2010-08-11 2018-12-26 Advanced Risc Mach Ltd Illegal mode change handling
RU2014112261A (ru) * 2011-09-15 2015-10-20 Зе Трастис Оф Коламбия Юниверсити Ин Зе Сити Оф Нью-Йорк Системы, способы и носители информации для обнаружения полезных нагрузок возвратно-ориентированного программирования
US8839429B2 (en) * 2011-11-07 2014-09-16 Qualcomm Incorporated Methods, devices, and systems for detecting return-oriented programming exploits
CN103294517B (zh) 2012-02-22 2018-05-11 国际商业机器公司 堆栈溢出保护装置、堆栈保护方法、相关编译器和计算装置
KR101212553B1 (ko) * 2012-05-11 2012-12-14 주식회사 안랩 악성 파일 검사 장치 및 방법
US9690703B1 (en) * 2012-06-27 2017-06-27 Netapp, Inc. Systems and methods providing storage system write elasticity buffers
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
US9846717B2 (en) * 2012-10-23 2017-12-19 Galois, Inc. Software security via control flow integrity checking
US9223979B2 (en) 2012-10-31 2015-12-29 Intel Corporation Detection of return oriented programming attacks
CA2809516C (en) 2013-03-13 2016-11-08 Khalid Nawaf Alharbi Preventing stack buffer overflow attacks
US9189214B2 (en) * 2013-10-30 2015-11-17 International Business Machines Corporation Code stack management
US9245110B2 (en) 2013-12-17 2016-01-26 International Business Machines Corporation Stack entry overwrite protection
US9977897B2 (en) * 2014-07-16 2018-05-22 Leviathan Security Group, Inc. System and method for detecting stack pivot programming exploit
US10049211B1 (en) * 2014-07-16 2018-08-14 Bitdefender IPR Management Ltd. Hardware-accelerated prevention of code reuse attacks
EP2996034B1 (en) * 2014-09-11 2018-08-15 Nxp B.V. Execution flow protection in microcontrollers
US9870469B2 (en) * 2014-09-26 2018-01-16 Mcafee, Inc. Mitigation of stack corruption exploits
US10228992B2 (en) 2016-01-06 2019-03-12 International Business Machines Corporation Providing instructions to facilitate detection of corrupt stacks
US9576128B1 (en) * 2016-01-06 2017-02-21 International Business Machines Corporation Interlinking routines with differing protections using stack indicators
US9606855B1 (en) 2016-01-06 2017-03-28 International Business Machines Corporation Caller protected stack return address in a hardware managed stack architecture
US9582274B1 (en) 2016-01-06 2017-02-28 International Business Machines Corporation Architected store and verify guard word instructions
US9514301B1 (en) 2016-01-06 2016-12-06 International Business Machines Corporation Interlinking modules with differing protections using stack indicators
US10120745B2 (en) 2016-01-06 2018-11-06 International Business Machines Corporation Providing instructions to protect stack return addresses in a hardware managed stack architecture
CN106060068A (zh) * 2016-06-27 2016-10-26 杭州华三通信技术有限公司 一种信息过滤方法和装置
US10437990B2 (en) 2016-09-30 2019-10-08 Mcafee, Llc Detection of return oriented programming attacks in a processor
US10613864B2 (en) * 2018-03-16 2020-04-07 Texas Instruments Incorporated Processor with hardware supported memory buffer overflow detection

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH045729A (ja) * 1990-04-23 1992-01-09 Mitsubishi Electric Corp プロセッサ装置
US5473756A (en) * 1992-12-30 1995-12-05 Intel Corporation FIFO buffer with full/empty detection by comparing respective registers in read and write circular shift registers
US6704871B1 (en) * 1997-09-16 2004-03-09 Safenet, Inc. Cryptographic co-processor
JP3552627B2 (ja) 2000-02-04 2004-08-11 インターナショナル・ビジネス・マシーンズ・コーポレーション スタック保護システム、コンピュータシステム、コンパイラ、スタック保護方法および記憶媒体
US6578094B1 (en) * 2000-03-02 2003-06-10 International Business Machines Corporation Method for preventing buffer overflow attacks
US20020144141A1 (en) * 2001-03-31 2002-10-03 Edwards James W. Countering buffer overrun security vulnerabilities in a CPU
EP1271283B1 (en) 2001-06-29 2007-05-23 Stonesoft Corporation An intrusion detection method and system
KR100560166B1 (ko) * 2001-12-05 2006-03-13 한국전자통신연구원 실시간 버퍼 오버플로우 해킹 탐지 방법
CA2372034A1 (en) * 2002-02-14 2003-08-14 Cloakware Corporation Foiling buffer-overflow and alien-code attacks by encoding
JP2003288129A (ja) 2002-03-28 2003-10-10 Sun Atmark:Kk メモリ管理方法、メモリ装置、コンピュータシステム、コンパイラ及びプログラム
JP4660056B2 (ja) * 2002-08-05 2011-03-30 株式会社セキュアウェア データ処理装置

Also Published As

Publication number Publication date
US7814333B2 (en) 2010-10-12
KR100586500B1 (ko) 2006-06-07
JP2007529818A (ja) 2007-10-25
EP1733307A1 (en) 2006-12-20
US20070180524A1 (en) 2007-08-02
KR20050093057A (ko) 2005-09-23
WO2006001574A1 (en) 2006-01-05

Similar Documents

Publication Publication Date Title
JP4625839B2 (ja) バッファオーバーフロー攻撃を感知して復旧する方法及びその装置
KR100777938B1 (ko) 부정 코드 실행의 방지 방법, 및 부정 코드 실행의 방지용 프로그램의 기록매체
US7594111B2 (en) Secure execution of a computer program
US7603704B2 (en) Secure execution of a computer program using a code cache
EP0815510B1 (en) Method for protecting executable software programs against infection by software viruses
JP6189039B2 (ja) セキュアドメインおよび低セキュアドメインを使用するデータ処理装置および方法
JP2012501028A (ja) コード解析の発見的方法
US9804975B2 (en) Hardware-enforced prevention of buffer overflow
KR20150065715A (ko) 안전한 도메인과 덜 안전한 도메인을 갖는 데이터 처리장치에서의 예외처리
US9542557B2 (en) Snoop-based kernel integrity monitoring apparatus and method thereof
CN113569244A (zh) 一种基于处理器跟踪的内存恶意代码检测方法
JP2022503921A (ja) 遷移無効インジケータ
JP2010257150A (ja) 不正処理検知装置、不正処理検知方法及びプログラム
US11500785B2 (en) Systems and methods for memory safety with random embedded secret tokens
JP4643201B2 (ja) バッファオーバーフロー脆弱性分析方法、データ処理装置、分析情報提供装置、分析情報抽出処理用プログラムおよび分析情報提供処理用プログラム
JP4374476B2 (ja) キャッシュ・メモリ及びその制御方法
US11138012B2 (en) Processor with hardware supported memory buffer overflow detection
JP4627266B2 (ja) 未知のマルウェアによる情報漏洩防止システム
Zhang et al. Hardware supported anomaly detection: down to the control flow level
JPH0844556A (ja) 電子計算機におけるセキュリティ、システム保護を行うソフトウェアの構造及び仕組み
Huang DataGuard: Guarded Pages for Augmenting Stack Object Protections
CN117951685A (zh) 函数代码的执行方法、装置、电子设备及存储介质
Fu et al. Scism: A solution for general buffer overflow protection

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090901

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20091201

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100119

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20100419

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20100426

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100519

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100615

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100915

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

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

R150 Certificate of patent or registration of utility model

Ref document number: 4625839

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131112

Year of fee payment: 3

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250