JP2014526751A - リターン指向プログラミングのペイロードを検出するためのシステム、方法、および、非一時的コンピュータ可読媒体 - Google Patents

リターン指向プログラミングのペイロードを検出するためのシステム、方法、および、非一時的コンピュータ可読媒体 Download PDF

Info

Publication number
JP2014526751A
JP2014526751A JP2014530941A JP2014530941A JP2014526751A JP 2014526751 A JP2014526751 A JP 2014526751A JP 2014530941 A JP2014530941 A JP 2014530941A JP 2014530941 A JP2014530941 A JP 2014530941A JP 2014526751 A JP2014526751 A JP 2014526751A
Authority
JP
Japan
Prior art keywords
data
address
instructions
gadget
operations
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.)
Pending
Application number
JP2014530941A
Other languages
English (en)
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.)
Columbia University of New York
Original Assignee
Columbia University of New York
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 Columbia University of New York filed Critical Columbia University of New York
Publication of JP2014526751A publication Critical patent/JP2014526751A/ja
Pending legal-status Critical Current

Links

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
    • G06F21/54Monitoring 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
    • 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/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/562Static detection
    • 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/034Test or assess a computer or a system

Abstract

【課題】リターン指向プログラミング(ROP)ペイロードの存在を検出するシステム、方法、および、媒体を提供する。
【解決手段】潜在的なガジェットアドレス空間を識別し、データの一部分が潜在的なガジェットアドレス空間のアドレスと一致するか否かを決定し、データの一部分が潜在的なガジェットアドレス空間のアドレスと一致するという決定に応じて、アドレスから始まる複数の命令にそれぞれ関連する複数の操作が、データ内にROPペイロードが存在していることを示しているか否かを決定し、データ内にROPペイロードが存在していることを複数の操作が示しているという決定が所定の回数なされたことに応じて、データ内にROPペイロードが存在していることを示す。
【選択図】図3

Description

本発明は、リターン指向プログラミングのペイロードを検出するためのシステム、方法、および、非一時的コンピュータ可読媒体に関するものである。
[関連出願の相互参照]
本願は、2012年9月15日に出願された米国仮特許出願番号第61/535,288号の優先権を主張するものであり、その全体の内容を、参考としてここに援用している。
システムを危殆化させたり、マルウェア感染させる手段の1つとして、サーバ/クライアントアプリケーションにおけるメモリ破損の脆弱性につけ込むことが一般的になってきている。攻撃者は、標的とするアプリケーションに悪意のある入力を与えることにより、脆弱なプロセスに対して、シェルコードとして知られる任意のコードを注入して実行することができる。
コード注入による攻撃が一般化するにともない、人気のあるオペレーティングシステムの最新バージョンでは、例えばデータ実行防止(DEP)のような、メモリページを実行不可とすることによって上記攻撃を弱体化するための対応策が広く採られるようになってきている。
一方、攻撃者は、これらの防御を回避するために、コードを注入せずとも標的とするシステムに対して任意コードを実行できるリターン指向プログラミング(ROP)を利用する傾向が強まっている。ROPは、プロセスの実行可能なアドレス空間にすでに存在するコードの実行によるものだが、ライブラリ機能全体のコードを実行するのではなく、プロセスのコードセグメント全体に散乱している、「ガジェット」と呼ばれる小さいコードフラグメントの組合せを実行する。ガジェットの実行順序は、攻撃ペイロードの一部である一連のガジェットアドレスによって制御される。これは、攻撃者が制御データのみを注入することによって、攻撃の対象であるシステムに対して任意コードを実行できることを意味する。
攻撃中、ROPペイロードによって呼び出された各ガジェットは、注入されたROPペイロードに含まれる一連のガジェットアドレスを読み出す間接的な制御移行命令によって次のガジェットに制御を移行する。
ROPペイロードがそれ自体に記憶するガジェットアドレスを用いて上記ガジェットの実行制御を行えるようにするために、ROPペイロードによって選択されるガジェットは、一般的に、実行可能なメモリ空間の不揮発性部分に格納されている。例えば、実行可能なメモリ空間のこのような不揮発性部分は、一般的に、アドレス空間配置のランダム化(ASLR)の対象にはならないだろう。ガジェットが存在する実行可能なメモリ空間は、ガジェットアドレス空間と呼ばれることもある。
図1は、ROPペイロードの一例を示す図であり、ROPペイロードがどのようにガジェットの実行を制御するかを示している。図に示すように、ROPペイロードは、アドレスXから始まるデータメモリ内に存在し、各nバイトのデータは、新しいペイロードでありうる。図中、nは、攻撃の標的となるシステムで用いられるアドレスサイズである(例えば、4バイト)。ROPペイロードは、標的のシステムの命令ポインタ(EIP)およびスタックポインタ(ESP)を制御して所望のガジェットを呼び出すことができる。
より詳しくは、例えば、命令ポインタ(EIP)およびスタックポインタ(ESP)は、まず、図1に示すような値070072F7およびメモリアドレスX+n1で初期化されうる。命令ポインタ(EIP)およびスタックポインタ(ESP)にこれらの値を付与するために、いずれかの適切な機構が用いられうる。例えば、命令ポインタ(EIP)およびスタックポインタ(ESP)を設定するために、スタックピボットの命令シーケンスが用いられうる。
これによって第1のガジェットが呼び出されることになる(図1の右側の「第1」)。図に示すように、この呼び出しの間に、「pop eax」命令および「ret」命令が実行される。この「pop eax」命令は、スタックポインタ(ESP)によって指示されるアドレス(X+n1)の値(0x0010104)をレジスタEAXにコピーし、ESPを1メモリアドレスサイズ程度をインクリメントする(例えば、32ビットのアドレスサイズでは4バイト)。「ret」(リターン)命令は、スタックポインタ(ESP)によって指示されたアドレスの値を命令ポインタ(EIP)に代入し、スタックポインタ(ESP)のアドレスサイズをインクリメントする。よって、この「ret」コマンドは、スタックポインタ(ESP)に指示されたアドレス(X+n2)の値(070015BB)を命令ポインタ(EIP)に設定することによって、アドレス070015BBにおける次のガジェットの呼び出し(図1の右側の「第2」)をセットアップする。そして、他のガジェットの呼び出し(図1の右側の「第3」、「第4」、および、「第5」)は、ROPペイロードで特定されているアドレスによって指定された順序で実行することができる。これによって、図に示すように、スタックポインタ(ESP)は、ROPペイロードにおけるガジェットアドレスリストに従い、所望のガジェットへと制御を移行するための「インデックス」レジスタとして用いられることができるようになる。
図1に示すように、ガジェットは「ret」命令で終わるが、他の間接的な制御移行命令が用いられる可能性もある。
したがって、リターン指向プログラミングペイロードを検出する機構が望まれる。
リターン指向プログラミング(ROP)のペイロードの存在を検出するためのシステム、方法、および、媒体を提供する。
いくつかの実施形態では、リターン指向プログラミング(ROP)のペイロードの存在を検出するためのシステムが提供される。システムは、ハードウェアプロセッサを備え、ハードウェアプロセッサは、潜在的なガジェットアドレス空間を識別し、データの一部分が潜在的なガジェットアドレス空間のアドレスと一致するか否かを決定し、データの一部分が潜在的なガジェットアドレス空間のアドレスと一致するという決定に応じて、アドレスから始まる複数の命令にそれぞれ関連する複数の操作が、データ内にROPペイロードが存在していることを示しているか否かを決定し、データ内にROPペイロードが存在していることを複数の操作が示しているという決定が所定の回数なされたことに応じて、データ内にROPペイロードが存在していることを示す。
いくつかの実施形態では、リターン指向プログラミング(ROP)のペイロードの存在を検出するための方法が提供される。方法は、ハードウェアプロセッサを用い、潜在的なガジェットアドレス空間を識別するステップと、ハードウェアプロセッサを用い、データの一部分が潜在的なガジェットアドレス空間のアドレスと一致するか否かを決定するステップと、データの一部分が潜在的なガジェットアドレス空間のアドレスと一致するという決定に応じて、ハードウェアプロセッサを用い、アドレスから始まる複数の命令にそれぞれ関連する複数の操作が、データ内にROPペイロードが存在していることを示しているか否かを決定するステップと、ハードウェアプロセッサを用い、データ内にROPペイロードが存在していることを複数の操作が示しているという決定が所定回数なされたことに応じて、データ内にROPペイロードが存在していることを示すステップと、を含む。
いくつかの実施形態では、プロセッサにより実行されると、データ内のリターン指向プログラミング(ROP)ペイロードの存在を検出する方法をプロセッサに実行させるコンピュータ実行可能命令を含む非一時的コンピュータ可読媒体が提供される。方法は、潜在的なガジェットアドレス空間を識別するステップと、データの一部分が潜在的なガジェットアドレス空間のアドレスと一致するか否かを決定するステップと、データの一部分が潜在的なガジェットアドレス空間のアドレスと一致するという決定に応じて、アドレスから始まる複数の命令にそれぞれ関連する複数の操作が、データ内にROPペイロードが存在していることを示しているか否かを決定するステップと、データ内にROPペイロードが存在していることを複数の操作が示しているという決定が所定回数なされたことに応じて、データ内にROPペイロードが存在していることを示すステップと、を含む。
従来技術に従う、ガジェットの実行を制御するリターン指向プログラミング(ROP)のペイロードを示す。 いくつかの実施形態に従う、ROPペイロードを検出するプロセスの一例を示す。 いくつかの実施形態に従う、ROPペイロードが含まれているか否かを決定するためにデータに対して実行されうる動作の例を示す。 いくつかの実施形態に従う、ROPペイロードを検出するために用いられうるハードウェアの一例を示す。
リターン指向プログラミング(ROP)ペイロードの存在を検出するためのシステム、方法、および、媒体を提供する。
いくつかの実施形態では、これらシステム、方法、および、媒体は、ネットワークトラフィックまたはプロセスのメモリバッファなどのデータにおけるROPペイロードを識別することができる。また、これらシステム、方法、および、媒体は、標的となるプロセスのアドレス空間にすでに存在するコードを、データに従って投機的に実行することにより、ROPペイロードを識別できる。例えば、データに含まれている有効メモリアドレスにおける標的プロセスのアドレス空間に存在するコードフラグメント(ガジェット)を投機的に実行するために、コードエミュレータが用いられてよい。データに含まれているメモリアドレスを呼び出すことにより、固有のガジェットがしきい値の回数実行された場合、そのデータはROPペイロードを含むと識別できる。
いくつかの実施形態では、CPUエミュレータを用いるシェルコード検出器の一部として、または、それに加えて、ROPペイロードの存在を検出する機構を実装することにより、任意の適切な実行時のヒューリスティックを用いて、さまざまなタイプのシェルコードの実行時の動作を識別することもできる。例えば、いくつかの実施形態では、これらの機構は、Nemuと称されるシェルコード検出器またはShellOSと称されるシェルコード検出器の一部、または、それらに加えて実装されうる。
図2は、いくつかの実施形態に従う、ROPペイロードを識別するために用いられうるプロセス200を示す。図に示すように、プロセス200は、202で開始された後、204において、ROPペイロードによって使用されるかもしれない1つ以上の潜在的なガジェットアドレス空間を識別する。これら1つ以上のガジェットアドレス空間は、任意の適切な方法で識別されてもよい。例えば、いくつかの実施形態において、これらのガジェットアドレス空間は、不揮発性コード(例えば、ASLRの対象にならないコード)を含む実行可能なメモリ空間として識別されてもよい。また、いくつかの実施形態における他の例としては、1つ以上のガジェットアドレス空間、または、1つ以上のアプリケーションに対して複数のガジェットアドレス空間が識別されてもよい。いくつかの実施形態におけるさらなる他の例としては、同じコードでバージョンが異なる場合、同じコードで状態が異なる(例えば、オンデマンドダイナミックリンクライブラリを用いたときのようにコードが随時変化する)場合、同じコードでメモリレイアウトが異なる場合、異なるアプリケーションで用いられるときに同じコードでコンテクストが異なる場合、などに対しては、複数のガジェットアドレス空間が識別されうる。
次に、206において、エミュレータの仮想アドレス空間は、識別された1つ以上のガジェットアドレス空間のインスタンス(例えば、実際のインスタンス)からのプロセスメモリのスナップショットで初期化される。いくつかの実施形態では、エミュレータ内に異なるページテーブルが維持されることにより、潜在的なROPペイロードのためのデータチェックが複数のガジェット空間に対して同時に可能になる。
次に、208において、第1のデータが選択される。このデータは、任意の適切なソースから得られてよく、任意の適切なフォーマットであってよい。データは、例えば、メモリ、バッファ、ストリーミングコンテンツ、記憶装置、ファイル、メッセージなどから得られてよい。他の例としては、データは、任意の適切なバイト数(例えば4)またはビット数(例えば32)のグループで格納されてよく、任意の適切な配置(例えば、「リトルエンディアン」または「ビッグエンディアン」)で並べられてもよい。以下に説明するが、いくつかの実施形態では、何が「オリジナル」データ(すなわち、ガジェットの実行中に変更されないデータ)であり、何が非オリジナルデータであるかを識別できるように格納されてよい。
その後、プロセス200は、選択されたデータの値がエミュレータの1つ以上のアドレス空間のいずれかにおけるアドレスと一致するかどうかを決定する。例えば、図3(a)に示すように、データ302の値は「0072F741」であり、これは、ガジェットアドレス空間304の有効アドレスと一致しない。他の例では、図3(b)に示すように、別データ306の値は「070072F7」であり、これは、詳細な部分308によって示されるように、ガジェットアドレス空間304の中の1つのアドレスと一致する。
選択されたデータの値が1つ以上のアドレス空間のいずれかの有効アドレスと一致しないことを決定すると、プロセス200は、212において次のデータを選択する。次のデータは、任意の適切な方法で選択されてよい。例えば、次のデータは、複数のバイトを囲む選択ウィンドウを1バイト移動させることによって選択されてよい。例えば、図3(a)および3(b)で示すように、次のデータを選択すると、4バイトを1データとして選択しているウィンドウ310は、1バイト移動して異なる組み合わせの4バイトを1データとして選択している新たなウィンドウ312を形成してよい。
一方、選択されたデータの値が1つ以上のガジェットアドレス空間のいずれかの有効アドレスと一致することを決定した場合、プロセス200は、214において、エミュレータを用いて、一致する1つ以上のガジェットアドレス空間におけるアドレスからコードの実行開始を試みる。この試みは、選択されたデータの値に命令ポインタ(EIP)を設定し、かつ、(例えば、上記212のように、次のデータが選択されたかのように)次のデータを指示するようスタックポインタ(ESP)を設定することによって開始されてよい。例えば、図3(b)に示すように、命令ポインタ(EIP)は、「070072F7」に設定されてよく、スタックポインタ(ESP)は、次のデータを指示するよう設定されてよい。
上述のように、これによって、第1のガジェットが呼び出されることになる。この呼び出し中に、「pop eax」命令、および、「ret」命令が実行される。この「pop eax」命令は、スタックポインタ(ESP)によって指示されるアドレスの値(0x0010104)をレジスタEAXにコピーし、ESPのメモリアドレスサイズをインクリメントする(例えば、図に示すように4バイト)。「ret」(リターン)命令は、スタックポインタ(ESP)によって指示されたアドレスの値を命令ポインタ(EIP)に代入し、ESPのメモリアドレスサイズをインクリメントする。そして、スタックポインタ(ESP)によって指示されたアドレスの値(070015BB)を命令ポインタ(EIP)に設定することにより、上記「ret」コマンドは、アドレス070015BBで次のガジェットの呼び出しをセットアップする。図に示すように、これによって、スタックポインタ(ESP)は、ROPペイロードにおけるアドレスリストに従い、所望のガジェットへと制御を移行するための「インデックス」レジスタとして用いられることができるようになる。
いくつかの実施形態では、データの値と一致するガジェットアドレス空間におけるアドレスで命令の実行を試みる前に、そのアドレスがガジェットと一致するものとしてすでに識別されているか否かの決定がなされてよい。まだ識別されていない場合、プロセス200は、214をスキップして直接224に分岐してよい(図2には示されていない)。そうでない場合、記載通りに214を実行してよい。アドレスがガジェットと一致すると識別するために、また、アドレスがガジェットと一致するとしてすでに識別されているか否かを決定するために、任意の適切な機構が用いられてよい。
いくつかの実施形態では、1つ以上のガジェットにおける命令がスタックポインタを正確に操作する限り、エミュレータは、ガジェットの実行を継続させることができ、また、以下の理由の1つまたは複数によって実行を終了させることができる。
i)ガジェットが、不当なアドレスに制御を移行した場合。
ii)エミュレータに不当なまたは特権命令が与えられた場合。
iii)現在のガジェットで実行されている命令の数が特定のしきい値に達している場合。
iv)実行された命令の総数が総実行しきい値に達している場合。
いくつかの実施形態では、iii)またはiv)であるかどうかを決定するために、エミュレータは、現在のガジェットで実行されているガジェット命令数だけでなく、エミュレータが214で実行している、ガジェットコードを実行する現在の試みでの命令の総数もカウントしてよい。
図2に示すように、プロセス200は、216において、不当な実行アドレスについてのテストを行うことができる。いくつかの実施形態では、不当な実行アドレスを識別するために任意の適切なテストを用いてもよい。例えば、DEPによって保護されたアドレス、カーネルによってのみアクセス可能なアドレスなどに命令ポインタ(EIP)が設定された場合、プロセス200は、不当な実行アドレスを識別してよい。不当な実行アドレスに到達した場合、プロセス200は、224に分岐し、以下に記載するようにデータの終わりに達したかどうかを決定してよい。
そうでない場合、プロセス200は、218に分岐し、不当または特権命令についてのテストを行ってよい。いくつかの実施形態では、不当または特権命令を識別するために任意の適切なテストを用いてもよい。例えば、害のない入力のランダムなアドレスは、コードセグメントの1つにおける実際の命令の中間位置に該当するので、不当としてよい。あるいは、そのバイトは、カーネルのみが実行することを許可されている特権命令のオペコードに対応するので、不当としてよい。不当または特権命令に到達した場合、プロセス200は、224に分岐し、以下に記載するようにデータの終わりに達しているか否かを決定する。
そうでない場合、プロセス200は、220に分岐し、現在のガジェットで実行されているガジェット命令数のカウントがしきい値に達しているか、および/または、しきい値を超えているか否かを決定する。このテストは、ランダム符号の実行と、ROPペイロードによるガジェットの実行とを区別するのに役立つ。いくつかの場合では、チューリング完全なプログラムだけでなく、一般的なエクスプロイトにおいて用いられるガジェットの典型的なサイズは、2〜5命令の範囲であり、一方、単一のガジェットにおいて実行される命令数は、最大でも10命令だけであってよい。いくつかの実施形態では、現在のガジェットで実行されるガジェット命令数のカウントが32または他の適切な数(例えば、32未満)に設定されてよい。現在のガジェットで実行されるガジェット命令数のカウントがしきい値に達する、および/または、しきい値を超える場合、プロセス200は、224に分岐し、以下に記載するように、データの終わりに達しているか否かを決定してよい。
そうでない場合、プロセス200は、222に分岐し、現在の試みで実行されている命令の総数のカウントがしきい値に達している、および/または、しきい値を超えているか否かを決定する。このテストは、例えば、制御フローがループまたは長すぎる直線状のコードパスに「はまって」しまった場合、確実に実行を停止することができる。いくつかの実施形態では、任意の適切なしきい値が用いられてよい。いくつかの実施形態では、例えば、しきい値は、500、4096、および/または、他の任意の適切な値に設定されてよい。現在の試みで実行されている命令の総数のカウントがしきい値に達する、および/または、しきい値を超える場合、プロセス200は、224に分岐し、以下に記載するように、データの終わりに達しているか否かを決定する。
上述のように、不当な実行アドレスが識別されたこと、不当または特権命令が識別されたこと、現在のガジェットの実行命令数のカウントがしきい値に達したこと、または、現在の試みで実行されている命令の総数のカウントがしきい値に達したことが216、218、220、および、222でそれぞれ決定された場合、プロセス200は、224に分岐し、データの終りであるか否かを決定してよい。この決定は、任意の適切な方法でなされてもよい。例えば、いくつかの実施形態では、特定のメモリアドレスに達した場合、データストリームが停止した場合、ファイルの終わりに達した場合などに、プロセス200は、データの終わりであると決定してよい。データの終わりではない、と決定した場合、プロセス200は、212に関連して前述したように、次のデータを選択してよい。そうでない場合、プロセス200は、234において、データがROPペイロードを含まないものとして識別し、236で終了してよい。
しかしながら、222において、現在の試みで実行されている命令の総数のカウントがしきい値を下回ったことが決定された場合、プロセス200は、226において、ROPペイロードによる意図的なガジェットの実行を示す1つ以上の操作が行われたか否かを決定してよい。いくつかの実施形態では、ROPペイロードによる意図的なガジェットの実行が行われたことを示すために任意の適切な操作が用いられてよい。例えば、いくつかの実施形態では、ランダム命令シーケンスの偶発的な実行と、ROPペイロードによる意図的なガジェットの実行とを区別する操作が用いられてもよい。
いくつかの実施形態によれば、226における決定は、ROPペイロードの実行時の動作を識別するための、任意の適切な実行時のヒューリスティックを用いてなされてよい。例えば、いくつかの実施形態では、オリジナルデータ(すなわち、疑わしいROPペイロードのオリジナルデータ)によって制御される間接的な制御移行命令は、ROPペイロードによるガジェットの意図的な実行が行われたことを示す操作でありうる。
例えば、図1に関連して上述したように、第1のガジェット呼び出しの終わりの「ret」(リターン)命令は、スタックポインタ(ESP)に指示されたアドレスの値を命令ポインタ(EIP)に代入し、スタックポインタ(ESP)のアドレスサイズをインクリメントする。スタックポインタ(ESP)により指示されたオリジナルデータのアドレス(X+n2)の値070015BB(オリジナルデータで特定されている)を命令ポインタに設定することにより、「ret」コマンドは、アドレス070015BBで次のガジェット呼び出し(図1の右側の「第2」)をセットアップする。この「ret」命令は、ROPペイロードによって意図的にガジェットが実行されたことを示す操作であってよい。
いくつかの実施形態における他の例としては、命令シーケンスの実行中に、「jmp eax」命令によって制御がガジェット空間の他の有効な位置に移行されても、EAXの値がデータからロードされなかった場合、この命令シーケンスは、操作などではないと識別されてよい。
また、他の例では、「ret」命令に続き、ある時点で、命令ポインタ(EIP)の現在位置から数バイト離れた先に制御を移行する相対的な呼び出し命令も考慮される。この場合には、「ret」命令が(ペイロードからアドレスを読み出し、そこへジャンプしても)操作であるということにはならないだろう。なぜなら、読み出された値は、データのその位置にあったオリジナル値ではなく、呼び出し命令により実行時に追加(PUSH)されたリターンアドレスだからである。
ROPペイロードによる意図的なガジェットの実行を示す操作が行われなかったことが226で決定された場合、プロセス200は、214に戻り、1つ以上のガジェットアドレス空間において命令を実行する試みを継続してよい。
そうでない場合、プロセス200は、228においてガジェットカウントをインクリメントし、230において、ガジェットカウントがしきい値に達した、および/または、しきい値を超えたか否かを決定する。このガジェットカウントは、任意の適切な方法でインクリメントされてよい。
例えば、いくつかの実施形態では、ガジェットカウントは、各ガジェットの終了に応じてインクリメントされてよい。いくつかの実施形態における他の例としては、ガジェットカウントは、それぞれ固有のガジェット(例えば、以前に実行されていないガジェット)の終了に応じてのみインクリメントされてよい。いくつかの実施形態におけるさらなる他の例としては、ガジェットカウントは、2つ(または他の適切な数)以上の命令を有する固有のガジェットのそれぞれが終了したことに応じてのみインクリメントされてよい。いくつかの実施形態では、任意の適切なしきい値が用いられてよい。いくつかの実施形態では、例えば、4から8(例えば6)の固有のガジェットのしきい値が用いられてよい。
ガジェットカウントがしきい値に達していない、および/または、しきい値以下であることが230で決定された場合、プロセス200は、214に戻り、1つ以上のガジェットアドレス空間において命令を実行する試みを継続してよい。そうでない場合、プロセス200は、232において、データがROPペイロードを含むものと識別し、236で終了する。
いくつかの実施形態によれば、(例えば、図1、2、3に示し、それに関連して説明された)本願明細書に記載の機構を実行するために任意の適切なハードウェアおよび/またはソフトウェアが用いられてよい。例えば、本願明細書に記載された機構を実行するソフトウェアを実行するために、コンピュータなどの多目的装置、あるいは、クライアント、サーバなどの特殊目的装置が用いられてよい。図4に示す装置400などの多目的または特殊目的装置のいずれかは、例えば、ハードウェアプロセッサ402(マイクロプロセッサ、デジタルシグナルプロセッサ、コントローラなどでありうる)、メモリ404、通信インターフェース406、ディスプレイインターフェースおよびディスプレイ408、ユーザ入力デバイス410、データベースおよび/または記憶装置432(412?)、コミュニケーションバス414などの任意の適切なコンポーネントを含みうる。通信インターフェース406によって、ハードウェアおよび/またはソフトウェアと、他の通信ネットワーク(例えば、インターネット、有線ネットワーク、無線ネットワークなど)や他の装置との通信が可能になりうる。このハードウェアおよび/またはソフトウェアは、他の装置の一部として、あるいは、スタンドアロン装置として実装されてよい。これらの装置のいずれかが、ハードウェアおよび/またはソフトウェアでの実装に関わらず、エミュレータを含んでよい。
いくつかの実施形態では、本願明細書に記載された処理を実行する命令を格納するのに用いられる任意の適切なコンピュータ可読媒体が用いられてよい。例えば、いくつかの実施形態では、コンピュータ可読媒体は、一時的または非一時的であってもよい。例えば、非一時的コンピュータ可読媒体は、磁気媒体(ハードディスク、フロッピーディスクなど)、光媒体(コンパクトディスク、デジタルビデオディスク、ブルーレイディスクなど)、半導体媒体(フラッシュメモリ、電気的プログラマブル読取り専用メモリ(EPROM)、電気的消去可能プログラマブル読取り専用メモリ(EEPROM)など)、伝送中に瞬時的でない、すなわち永続的な状態を欠かない任意の適切な媒体、および/または任意の適切な有形媒体を含んでよい。別の例として、一時的なコンピュータ可読媒体は、ネットワーク、ワイヤ、導体、光ファイバ、回路、伝送中に瞬時的である、すなわち、永続的な状態を欠く任意の適切な媒体、および/または、任意の適切な無形媒体に信号を含めてよい。
上述の例示的実施形態において本発明を説明してきたが、本開示は一例にすぎず、本発明の主旨および範囲から逸脱することなく、本発明の実施に関する詳細に関して多くの変更を行うことができ、本発明は下記の請求項によってのみ制限されると理解されよう。本開示のいくつかの実施形態の特徴は、種々の方法による組み合わせや再編成が可能である。

Claims (30)

  1. データ内のリターン指向プログラミング(ROP)ペイロードの存在を検出するシステムであって、
    ハードウェアプロセッサを備え、
    前記ハードウェアプロセッサは、
    潜在的なガジェットアドレス空間を識別し、
    前記データの一部分が前記潜在的なガジェットアドレス空間のアドレスと一致するか否かを決定し、
    前記データの一部分が前記潜在的なガジェットアドレス空間のアドレスと一致するという決定に応じて、
    前記アドレスから始まる複数の命令にそれぞれ関連する複数の操作が、前記データ内にROPペイロードが存在していることを示しているか否かを決定し、
    前記データ内にROPペイロードが存在していることを前記複数の操作が示しているという決定が所定の回数なされたことに応じて、前記データ内にROPペイロードが存在していることを示す、システム。
  2. 前記データ内にROPペイロードが存在していることを前記複数の操作が示しているか否かの決定において、前記ハードウェアプロセッサは、エミュレータを用いて、前記アドレスから始まる複数の命令の実行を試みる、請求項1に記載のシステム。
  3. 前記ハードウェアプロセッサは、前記エミュレータを用いて、前記アドレスから始まる前記複数の命令を実行する試みが、不当な実行アドレスの命令を実行する試みを含むか否かを決定する、請求項2に記載のシステム。
  4. 前記ハードウェアプロセッサは、前記エミュレータを用いて、前記アドレスから始まる前記複数の命令を実行する試みが、不当命令または特権命令を実行する試みを含むか否かを決定する、請求項2に記載のシステム。
  5. 前記ハードウェアプロセッサは、前記潜在的なガジェットアドレス空間からの命令により、エミュレータの仮想アドレス空間を初期化する、請求項1に記載のシステム。
  6. 前記データ内にROPペイロードが存在していることを前記複数の操作が示しているか否かの決定において、前記ハードウェアプロセッサは、前記複数の操作が、前記データの不変の部分によって制御される間接的な制御移行命令を実行するか否かを決定する、請求項1に記載のシステム。
  7. 前記データ内にROPペイロードが存在していることを前記複数の操作が示しているか否かの決定において、前記ハードウェアプロセッサは、前記複数の操作が、前記データの不変の部分によって制御されるリターン命令を実行するかどうかを決定する、請求項1に記載のシステム。
  8. 前記ハードウェアプロセッサは、ガジェットにおける命令数のカウントを計算し、前記ガジェットにおける前記命令数の前記カウントをしきい値と比較する、請求項1に記載のシステム。
  9. 前記ハードウェアプロセッサは、実行される命令の総数のカウントを計算し、前記実行される命令の前記総数の前記カウントをしきい値と比較する、請求項1に記載のシステム。
  10. 前記ハードウェアプロセッサは、
    前記データの次の部分を選択し、
    前記データの前記次の部分が、前記潜在的なガジェットアドレス空間のアドレスと一致するか否かを決定し、
    前記データの前記次の部分が前記潜在的なガジェットアドレス空間のアドレスと一致するとの決定に応じて、
    前記アドレスから始まる複数の命令にそれぞれ関連する複数の操作が、前記データ内にROPペイロードが存在していることを示しているか否かを決定し、
    前記データ内にROPペイロードが存在していることを前記複数の操作が示しているという決定が所定の回数なされたことに応じて、前記データ内にROPペイロードが存在していることを示す、請求項1に記載のシステム。
  11. データ内のリターン指向プログラミング(ROP)ペイロードの存在を検出する方法であって、
    ハードウェアプロセッサを用い、潜在的なガジェットアドレス空間を識別するステップと、
    前記ハードウェアプロセッサを用い、前記データの一部分が前記潜在的なガジェットアドレス空間のアドレスと一致するか否かを決定するステップと、
    前記データの一部分が前記潜在的なガジェットアドレス空間のアドレスと一致するという決定に応じて、
    前記ハードウェアプロセッサを用い、前記アドレスから始まる複数の命令にそれぞれ関連する複数の操作が、前記データ内にROPペイロードが存在していることを示しているか否かを決定するステップと、
    前記ハードウェアプロセッサを用い、前記データ内にROPペイロードが存在していることを複数の操作が示しているという決定が所定回数なされたことに応じて、前記データ内にROPペイロードが存在していることを示すステップと、
    を含む方法。
  12. 前記データ内にROPペイロードが存在していることを前記複数の操作が示しているか否かを決定するステップは、エミュレータを用いて前記アドレスから始まる複数の命令の実行を試みるステップを含む、請求項11に記載の方法。
  13. 前記エミュレータを用いて前記アドレスから始まる前記複数の命令の実行を試みるステップは、不当な実行アドレスの命令の実行を試みることを含むか否かを、前記ハードウェアプロセッサを用いて決定するステップをさらに含む、請求項12に記載の方法。
  14. 前記エミュレータを用いて前記アドレスから始まる前記複数の命令の実行を試みるステップは、不当命令または特権命令の実行を試みることを含むか否かを、前記ハードウェアプロセッサを用いて決定するステップをさらに含む、請求項12に記載の方法。
  15. 前記ハードウェアプロセッサを用いて、前記潜在的なガジェットアドレス空間からの命令によりエミュレータの仮想アドレス空間を初期化するステップをさらに含む、請求項11に記載の方法。
  16. 前記データ内にROPペイロードが存在していることを前記複数の操作が示しているかを決定するステップは、前記複数の操作が、前記データの不変の部分によって制御される間接的な制御移行命令を実行するか否かを決定するステップを含む、請求項11に記載の方法。
  17. 前記データ内にROPペイロードが存在していることを前記複数の操作が示しているか否かを決定するステップは、前記複数の操作が、前記データの不変の部分によって制御されるリターン命令を実行するか否かを決定するステップを含む、請求項11に記載の方法。
  18. 前記ハードウェアプロセッサを用い、ガジェットにおける命令数のカウントを計算し、前記ガジェットにおける命令数の前記カウントをしきい値と比較するステップをさらに含む、請求項11に記載の方法。
  19. 前記ハードウェアプロセッサを用い、実行される命令の総数のカウントを計算し、前記実行される命令の総数の前記カウントをしきい値と比較するステップをさらに含む、請求項11に記載の方法。
  20. 前記ハードウェアプロセッサを用いて、前記データの次の部分を選択するステップと、
    前記データの前記次の部分が、前記潜在的なガジェットアドレス空間のアドレスと一致するか否かを決定するステップと、
    前記データの前記次の部分が前記潜在的なガジェットアドレス空間のアドレスと一致するとの決定に応じて、
    前記ハードウェアプロセッサを用いて、前記アドレスから始まる複数の命令にそれぞれ関連する複数の操作が、前記データ内にROPペイロードが存在していることを示しているか否かを決定するステップと、
    前記データ内にROPペイロードが存在していることを前記複数の操作が示しているという決定が所定の回数なされたことに応じて、前記ハードウエアプロセッサを用いて、前記データ内にROPペイロードが存在していることを示すステップと、をさらに含む、請求項11に記載の方法。
  21. コンピュータ実行可能命令を含む非一時的コンピュータ可読媒体であって、前記コンピュータ実行可能命令は、プロセッサにより実行されると、データ内のリターン指向プログラミング(ROP)ペイロードの存在を検出する方法を前記プロセッサに実行させ、前記方法は、
    潜在的なガジェットアドレス空間を識別するステップと、
    前記データの一部分が前記潜在的なガジェットアドレス空間のアドレスと一致するか否かを決定するステップと、
    前記データの一部分が前記潜在的なガジェットアドレス空間のアドレスと一致するという決定に応じて、
    前記アドレスから始まる複数の命令にそれぞれ関連する複数の操作が、前記データ内にROPペイロードが存在していることを示しているか否かを決定するステップと、
    前記データ内にROPペイロードが存在していることを複数の操作が示しているという決定が所定回数なされたことに応じて、前記データ内にROPペイロードが存在していることを示すステップと、
    を含む、非一時的コンピュータ可読媒体。
  22. 前記データ内にROPペイロードが存在していることを前記複数の操作が示しているか否かを決定するステップは、エミュレータを用いて前記アドレスから始まる複数の命令の実行を試みるステップを含む、請求項21に記載の非一時的コンピュータ可読媒体。
  23. 前記方法は、前記エミュレータを用いて前記アドレスから始まる前記複数の命令の実行を試みるステップが、不当な実行アドレスの命令の実行を試みることを含むか否かを決定するステップをさらに含む、請求項22に記載の非一時的コンピュータ可読媒体。
  24. 前記方法は、前記エミュレータを用いて前記アドレスから始まる前記複数の命令の実行を試みるステップが、不当命令または特権命令の実行を試みることを含むか否かを決定するステップをさらに含む、請求項22に記載の非一時的コンピュータ可読媒体。
  25. 前記方法は、前記潜在的なガジェットアドレス空間からの命令によりエミュレータの仮想アドレス空間を初期化するステップをさらに含む、請求項21に記載の非一時的コンピュータ可読媒体。
  26. 前記データ内にROPペイロードが存在していることを前記複数の操作が示しているかを決定するステップは、前記複数の操作が、前記データの不変の部分によって制御される間接的な制御移行命令を実行するか否かを決定するステップを含む、請求項21に記載の非一時的コンピュータ可読媒体。
  27. 前記データ内にROPペイロードが存在していることを前記複数の操作が示しているか否かを決定するステップは、前記複数の操作が、前記データの不変の部分によって制御されるリターン命令を実行するか否かを決定するステップを含む、請求項21に記載の非一時的コンピュータ可読媒体。
  28. 前記方法は、ガジェットにおける命令数のカウントを計算し、前記ガジェットにおける命令数の前記カウントをしきい値と比較するステップをさらに含む、請求項21に記載の非一時的コンピュータ可読媒体。
  29. 前記方法は、実行される命令の総数のカウントを計算し、前記実行される命令の総数の前記カウントをしきい値と比較するステップをさらに含む、請求項21に記載の非一時的コンピュータ可読媒体。
  30. 前記方法は、
    前記データの次の部分を選択するステップと、
    前記データの前記次の部分が、前記潜在的なガジェットアドレス空間のアドレスと一致するか否かを決定するステップと、
    前記データの前記次の部分が前記潜在的なガジェットアドレス空間のアドレスと一致するとの決定に応じて、
    前記アドレスから始まる複数の命令にそれぞれ関連する複数の操作が、前記データ内にROPペイロードが存在していることを示しているか否かを決定するステップと、
    前記データ内にROPペイロードが存在していることを前記複数の操作が示しているという決定が所定の回数なされたことに応じて、前記データ内にROPペイロードが存在していることを示すステップと、
    をさらに含む、請求項21に記載の非一時的コンピュータ可読媒体。
JP2014530941A 2011-09-15 2012-09-17 リターン指向プログラミングのペイロードを検出するためのシステム、方法、および、非一時的コンピュータ可読媒体 Pending JP2014526751A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201161535288P 2011-09-15 2011-09-15
US61/535,288 2011-09-15
PCT/US2012/055824 WO2013040598A1 (en) 2011-09-15 2012-09-17 Systems, methods, and media for detecting return-oriented programming payloads

Publications (1)

Publication Number Publication Date
JP2014526751A true JP2014526751A (ja) 2014-10-06

Family

ID=47883833

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014530941A Pending JP2014526751A (ja) 2011-09-15 2012-09-17 リターン指向プログラミングのペイロードを検出するためのシステム、方法、および、非一時的コンピュータ可読媒体

Country Status (6)

Country Link
US (4) US9495541B2 (ja)
EP (1) EP2756366B1 (ja)
JP (1) JP2014526751A (ja)
HK (1) HK1200551A1 (ja)
RU (1) RU2014112261A (ja)
WO (1) WO2013040598A1 (ja)

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8763103B2 (en) 2006-04-21 2014-06-24 The Trustees Of Columbia University In The City Of New York Systems and methods for inhibiting attacks on applications
US9495541B2 (en) * 2011-09-15 2016-11-15 The Trustees Of Columbia University In The City Of New York Detecting return-oriented programming payloads by evaluating data for a gadget address space address and determining whether operations associated with instructions beginning at the address indicate a return-oriented programming payload
US10114643B2 (en) 2013-05-23 2018-10-30 Intel Corporation Techniques for detecting return-oriented programming
US9465936B2 (en) * 2013-11-06 2016-10-11 Bitdefender IPR Management Ltd. Systems and methods for detecting return-oriented programming (ROP) exploits
US9594912B1 (en) * 2014-06-06 2017-03-14 Fireeye, Inc. Return-oriented programming detection
US20160196427A1 (en) * 2014-07-08 2016-07-07 Leviathan, Inc. System and Method for Detecting Branch Oriented Programming Anomalies
US9961102B2 (en) * 2014-07-16 2018-05-01 Mcafee, Llc Detection of stack pivoting
US9501637B2 (en) * 2014-09-26 2016-11-22 Intel Corporation Hardware shadow stack support for legacy guests
US9940484B2 (en) * 2014-12-23 2018-04-10 Intel Corporation Techniques for detecting false positive return-oriented programming attacks
US9767292B2 (en) 2015-10-11 2017-09-19 Unexploitable Holdings Llc Systems and methods to identify security exploits by generating a type based self-assembling indirect control flow graph
US10878091B2 (en) 2016-02-24 2020-12-29 Nippon Telegraph And Telephone Corporation Attack code detection device, attack code detection method, and attack code detection program
CN106372501B (zh) * 2016-08-22 2019-03-26 南京大学 一种针对rop攻击的防御方法
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
WO2018066516A1 (ja) * 2016-10-06 2018-04-12 日本電信電話株式会社 攻撃コード検知装置、攻撃コード検知方法及び攻撃コード検知プログラム
US10489592B1 (en) * 2017-03-21 2019-11-26 Symantec Corporation Creating an execution safety container for unreliable exploits
US20180285559A1 (en) * 2017-03-28 2018-10-04 Rodrigo Branco Stack pivot detection systems and methods
US10503904B1 (en) 2017-06-29 2019-12-10 Fireeye, Inc. Ransomware detection and mitigation
US10990682B2 (en) * 2017-12-18 2021-04-27 Nuvoton Technology Corporation System and method for coping with fault injection attacks
US20220138311A1 (en) * 2018-01-08 2022-05-05 Digital Immunity Llc Systems and methods for detecting and mitigating code injection attacks
CA3088604A1 (en) * 2018-01-08 2019-07-11 Digital Immunity, Inc. Systems and methods for detecting and mitigating code injection attacks
EP3906508B1 (en) * 2018-12-31 2024-03-13 Intel Corporation Securing systems employing artificial intelligence
US20220188414A1 (en) * 2019-03-05 2022-06-16 C2A-Sec, Ltd. Return-oriented programming protection
US11256807B2 (en) 2019-06-26 2022-02-22 Intel Corporation Mitigation of return-oriented programming exploits
US11222554B2 (en) * 2019-08-16 2022-01-11 Informatica Llc Method, apparatus, and computer-readable medium for format preserving encryption of a numerical value
US20210133330A1 (en) * 2019-11-01 2021-05-06 Blackberry Limited Determining a security score in binary software code

Family Cites Families (159)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2277151B (en) 1993-04-05 1997-06-25 Univ Brunel Neural network based machine health monitoring system
US5398196A (en) 1993-07-29 1995-03-14 Chambers; David A. Method and apparatus for detection of computer viruses
DE69511556D1 (de) 1994-06-01 1999-09-23 Quantum Leap Innovations Inc Computervirenfalle
US5694539A (en) 1994-08-10 1997-12-02 Intrinsa Corporation Computer process resource modelling method and apparatus
US6006328A (en) 1995-07-14 1999-12-21 Christopher N. Drake Computer software authentication, protection, and security system
US5889943A (en) 1995-09-26 1999-03-30 Trend Micro Incorporated Apparatus and method for electronic mail virus detection and elimination
US5696822A (en) 1995-09-28 1997-12-09 Symantec Corporation Polymorphic virus detection module
US5765030A (en) 1996-07-19 1998-06-09 Symantec Corp Processor emulator module having a variable pre-fetch queue size for program execution
US5968133A (en) 1997-01-10 1999-10-19 Secure Computing Corporation Enhanced security network time synchronization device and method
GB2321364A (en) 1997-01-21 1998-07-22 Northern Telecom Ltd Retraining neural network
US5964889A (en) 1997-04-16 1999-10-12 Symantec Corporation Method to analyze a program for presence of computer viruses by examining the opcode for faults before emulating instruction in emulator
US6609196B1 (en) 1997-07-24 2003-08-19 Tumbleweed Communications Corp. E-mail firewall with stored key encryption/decryption
US5978917A (en) 1997-08-14 1999-11-02 Symantec Corporation Detection and elimination of macro viruses
US6357008B1 (en) 1997-09-23 2002-03-12 Symantec Corporation Dynamic heuristic method for detecting computer viruses using decryption exploration and evaluation phases
US6088804A (en) 1998-01-12 2000-07-11 Motorola, Inc. Adaptive system and method for responding to computer network security attacks
US6389532B1 (en) 1998-04-20 2002-05-14 Sun Microsystems, Inc. Method and apparatus for using digital signatures to filter packets in a network
US6658565B1 (en) 1998-06-01 2003-12-02 Sun Microsystems, Inc. Distributed filtering and monitoring system for a computer internetwork
US6347374B1 (en) 1998-06-05 2002-02-12 Intrusion.Com, Inc. Event detection
US6970924B1 (en) 1999-02-23 2005-11-29 Visual Networks, Inc. Methods and apparatus for monitoring end-user experience in a distributed network
US7185367B2 (en) 1999-05-11 2007-02-27 Cylant, Inc. Method and system for establishing normal software system behavior and departures from normal behavior
US6681331B1 (en) 1999-05-11 2004-01-20 Cylant, Inc. Dynamic software system intrusion detection
US7065657B1 (en) 1999-08-30 2006-06-20 Symantec Corporation Extensible intrusion detection system
US6952776B1 (en) 1999-09-22 2005-10-04 International Business Machines Corporation Method and apparatus for increasing virus detection speed using a database
US6701440B1 (en) 2000-01-06 2004-03-02 Networks Associates Technology, Inc. Method and system for protecting a computer using a remote e-mail scanning device
EP1117035A1 (en) 2000-01-14 2001-07-18 Sun Microsystems, Inc. Runtime environment component services
US6785818B1 (en) 2000-01-14 2004-08-31 Symantec Corporation Thwarting malicious registry mapping modifications and map-loaded module masquerade attacks
US6973187B2 (en) 2000-01-31 2005-12-06 Vdg, Inc. Block encryption method and schemes for data confidentiality and integrity protection
US6775780B1 (en) 2000-03-16 2004-08-10 Networks Associates Technology, Inc. Detecting malicious software by analyzing patterns of system calls generated during emulation
KR100367129B1 (ko) 2000-03-21 2003-01-09 주식회사 하우리 다형성 바이러스 진단시스템 및 그 방법
WO2001077833A2 (en) 2000-04-06 2001-10-18 Granite Technologies, Inc. System and method for real time monitoring and control of networked computers
US6721721B1 (en) 2000-06-15 2004-04-13 International Business Machines Corporation Virus checking and reporting for computer database search results
US6901519B1 (en) 2000-06-22 2005-05-31 Infobahn, Inc. E-mail virus protection system and method
GB0016835D0 (en) 2000-07-07 2000-08-30 Messagelabs Limited Method of, and system for, processing email
US7069583B2 (en) 2000-07-14 2006-06-27 Computer Associates Think, Inc. Detection of polymorphic virus code using dataflow analysis
US8341743B2 (en) 2000-07-14 2012-12-25 Ca, Inc. Detection of viral code using emulation of operating system functions
US7093239B1 (en) 2000-07-14 2006-08-15 Internet Security Systems, Inc. Computer immune system and method for detecting unwanted code in a computer system
US6698016B1 (en) 2000-08-29 2004-02-24 Microsoft Corporation Method for injecting code into another process
US6785732B1 (en) 2000-09-11 2004-08-31 International Business Machines Corporation Web server apparatus and method for virus checking
US7072876B1 (en) 2000-09-19 2006-07-04 Cigital System and method for mining execution traces with finite automata
US7707305B2 (en) 2000-10-17 2010-04-27 Cisco Technology, Inc. Methods and apparatus for protecting against overload conditions on nodes of a distributed network
US20020066034A1 (en) 2000-10-24 2002-05-30 Schlossberg Barry J. Distributed network security deception system
US7146305B2 (en) 2000-10-24 2006-12-05 Vcis, Inc. Analytical virtual machine
US20020078382A1 (en) 2000-11-29 2002-06-20 Ali Sheikh Scalable system for monitoring network system and components and methodology therefore
US20020095607A1 (en) 2001-01-18 2002-07-18 Catherine Lin-Hendel Security protection for computers and computer-networks
JP2005503047A (ja) 2001-02-06 2005-01-27 エン ガルデ システムズ、インコーポレイテッド 安全なネットワークを供給するための装置と方法
US6983380B2 (en) 2001-02-06 2006-01-03 Networks Associates Technology, Inc. Automatically generating valid behavior specifications for intrusion detection
US7089592B2 (en) 2001-03-15 2006-08-08 Brighterion, Inc. Systems and methods for dynamic detection and prevention of electronic fraud
US20020188167A1 (en) 2001-06-06 2002-12-12 Anthony Viole Multilumen catheter for minimizing limb ischemia
JP4566460B2 (ja) 2001-06-07 2010-10-20 パイオニア株式会社 電子メールのウィルスチェックシステム
US20020194490A1 (en) 2001-06-18 2002-12-19 Avner Halperin System and method of virus containment in computer networks
US6873988B2 (en) 2001-07-06 2005-03-29 Check Point Software Technologies, Inc. System and methods providing anti-virus cooperative enforcement
US7487544B2 (en) 2001-07-30 2009-02-03 The Trustees Of Columbia University In The City Of New York System and methods for detection of new malicious executables
US6718469B2 (en) 2001-08-01 2004-04-06 Networks Associates Technology, Inc. System and method for executing computer virus definitions containing general purpose programming language extensions
US7356736B2 (en) 2001-09-25 2008-04-08 Norman Asa Simulated computer system for monitoring of software performance
US7107618B1 (en) 2001-09-25 2006-09-12 Mcafee, Inc. System and method for certifying that data received over a computer network has been checked for viruses
US6907430B2 (en) 2001-10-04 2005-06-14 Booz-Allen Hamilton, Inc. Method and system for assessing attacks on computer networks using Bayesian networks
US7607171B1 (en) 2002-01-17 2009-10-20 Avinti, Inc. Virus detection by executing e-mail code in a virtual machine
US7225343B1 (en) 2002-01-25 2007-05-29 The Trustees Of Columbia University In The City Of New York System and methods for adaptive model generation for detecting intrusions in computer systems
US7448084B1 (en) 2002-01-25 2008-11-04 The Trustees Of Columbia University In The City Of New York System and methods for detecting intrusions in a computer system by monitoring operating system registry accesses
US7222366B2 (en) 2002-01-28 2007-05-22 International Business Machines Corporation Intrusion event filtering
JP2003256234A (ja) 2002-03-05 2003-09-10 Communication Research Laboratory 抗脆弱性サーバ装置及びソフトウェア
US7788699B2 (en) 2002-03-06 2010-08-31 Vir2Us, Inc. Computer and method for safe usage of documents, email attachments and other content that may contain virus, spy-ware, or malicious code
US6715084B2 (en) 2002-03-26 2004-03-30 Bellsouth Intellectual Property Corporation Firewall system and method via feedback from broad-scope monitoring for intrusion detection
US7359962B2 (en) 2002-04-30 2008-04-15 3Com Corporation Network security system integration
US7370360B2 (en) 2002-05-13 2008-05-06 International Business Machines Corporation Computer immune system and method for detecting unwanted code in a P-code or partially compiled native-code program executing within a virtual machine
US7086088B2 (en) 2002-05-15 2006-08-01 Nokia, Inc. Preventing stack buffer overflow attacks
US7409717B1 (en) 2002-05-23 2008-08-05 Symantec Corporation Metamorphic computer virus detection
US7418729B2 (en) 2002-07-19 2008-08-26 Symantec Corporation Heuristic detection of malicious computer code by page tracking
US7380277B2 (en) 2002-07-22 2008-05-27 Symantec Corporation Preventing e-mail propagation of malicious computer code
US7526809B2 (en) 2002-08-08 2009-04-28 Trend Micro Incorporated System and method for computer protection against malicious electronic mails by analyzing, profiling and trapping the same
US7418733B2 (en) 2002-08-26 2008-08-26 International Business Machines Corporation Determining threat level associated with network activity
US7331062B2 (en) 2002-08-30 2008-02-12 Symantec Corporation Method, computer software, and system for providing end to end security protection of an online transaction
US7146640B2 (en) 2002-09-05 2006-12-05 Exobox Technologies Corp. Personal computer internet security system
US7155708B2 (en) 2002-10-31 2006-12-26 Src Computers, Inc. Debugging and performance profiling using control-dataflow graph representations with reconfigurable hardware emulation
KR100456635B1 (ko) 2002-11-14 2004-11-10 한국전자통신연구원 분산 서비스 거부 공격 대응 시스템 및 방법
US7412723B2 (en) 2002-12-31 2008-08-12 International Business Machines Corporation Method and system for morphing honeypot with computer security incident correlation
US7293201B2 (en) 2003-01-17 2007-11-06 Microsoft Corporation System and method for active diagnosis and self healing of software systems
US20040148520A1 (en) 2003-01-29 2004-07-29 Rajesh Talpade Mitigating denial of service attacks
US20040153644A1 (en) 2003-02-05 2004-08-05 Mccorkendale Bruce Preventing execution of potentially malicious software
US7269824B2 (en) 2003-02-13 2007-09-11 Path Reliability, Inc. Software behavior pattern recognition and analysis
DE10313318A1 (de) 2003-03-25 2004-10-21 Giesecke & Devrient Gmbh Kontrollierte Ausführung eines für eine virtuelle Maschine vorgesehenen Programms auf einem tragbaren Datenträger
US7716736B2 (en) 2003-04-17 2010-05-11 Cybersoft, Inc. Apparatus, methods and articles of manufacture for computer virus testing
US20050108562A1 (en) 2003-06-18 2005-05-19 Khazan Roger I. Technique for detecting executable malicious code using a combination of static and dynamic analyses
US7712133B2 (en) 2003-06-20 2010-05-04 Hewlett-Packard Development Company, L.P. Integrated intrusion detection system and method
US7392543B2 (en) 2003-06-30 2008-06-24 Symantec Corporation Signature extraction system and method
US7496896B2 (en) 2003-07-17 2009-02-24 Computer Associates Think, Inc. Accessing return values and exceptions
EP1661025A4 (en) 2003-08-11 2010-05-26 Chorus Systems Inc SYSTEMS AND METHOD FOR GENERATING AND USING AN ADAPTIVE REFERENCE MODEL
US7415618B2 (en) 2003-09-25 2008-08-19 Sun Microsystems, Inc. Permutation of opcode values for application program obfuscation
US7644441B2 (en) 2003-09-26 2010-01-05 Cigital, Inc. Methods for identifying malicious software
US7421681B2 (en) * 2003-10-09 2008-09-02 International Business Machines Corporation Method and system for autonomic monitoring of semaphore operation in an application
US7318226B2 (en) 2003-10-16 2008-01-08 International Business Machines Corporation Distributed autonomic solutions repository
US7506241B2 (en) 2003-10-16 2009-03-17 International Business Machines Corporation Method and apparatus for a self healing agent
EP1682990B1 (en) 2003-11-12 2013-05-29 The Trustees of Columbia University in the City of New York Apparatus method and medium for detecting payload anomaly using n-gram distribution of normal data
US7263690B1 (en) * 2003-11-14 2007-08-28 Sun Microsystems, Inc. Mechanism for safe byte code in a tracing framework
US7840968B1 (en) 2003-12-17 2010-11-23 Mcafee, Inc. Method and system for containment of usage of language interfaces
US7624449B1 (en) 2004-01-22 2009-11-24 Symantec Corporation Countering polymorphic malicious computer code through code optimization
US7334262B2 (en) 2004-01-22 2008-02-19 Symantec Corporation Proactive prevention of polymorphic SMTP worms
US7913305B2 (en) 2004-01-30 2011-03-22 Microsoft Corporation System and method for detecting malware in an executable code module according to the code module's exhibited behavior
US7373524B2 (en) 2004-02-24 2008-05-13 Covelight Systems, Inc. Methods, systems and computer program products for monitoring user behavior for a server application
KR100586500B1 (ko) * 2004-03-18 2006-06-07 학교법인고려중앙학원 버퍼 오버플로우 공격들을 감지하고 복구하는 방법 및 그장치
US8528086B1 (en) 2004-04-01 2013-09-03 Fireeye, Inc. System and method of detecting computer worms
US7496898B1 (en) 2004-04-15 2009-02-24 Sun Microsystems, Inc. Error analysis and diagnosis for generic function calls
US7832012B2 (en) 2004-05-19 2010-11-09 Computer Associates Think, Inc. Method and system for isolating suspicious email
US7506170B2 (en) 2004-05-28 2009-03-17 Microsoft Corporation Method for secure access to multiple secure networks
US7490268B2 (en) 2004-06-01 2009-02-10 The Trustees Of Columbia University In The City Of New York Methods and systems for repairing applications
US7207065B2 (en) 2004-06-04 2007-04-17 Fortify Software, Inc. Apparatus and method for developing secure software
US7523500B1 (en) 2004-06-08 2009-04-21 Symantec Corporation Filtered antivirus scanning
US7748038B2 (en) 2004-06-16 2010-06-29 Ironport Systems, Inc. Method and apparatus for managing computer virus outbreaks
US7908653B2 (en) 2004-06-29 2011-03-15 Intel Corporation Method of improving computer security through sandboxing
US20060010495A1 (en) 2004-07-06 2006-01-12 Oded Cohen Method for protecting a computer from suspicious objects
US7603715B2 (en) 2004-07-21 2009-10-13 Microsoft Corporation Containment of worms
US7577991B2 (en) 2004-07-22 2009-08-18 International Business Machines Corporation Method to enhance platform firmware security for logical partition data processing systems by dynamic restriction of available external interfaces
US20060080678A1 (en) 2004-09-07 2006-04-13 Bailey Mark W Task distribution method for protecting servers and tasks in a distributed system
US7818781B2 (en) 2004-10-01 2010-10-19 Microsoft Corporation Behavior blocking access control
US20060101516A1 (en) 2004-10-12 2006-05-11 Sushanthan Sudaharan Honeynet farms as an early warning system for production networks
US20070028220A1 (en) 2004-10-15 2007-02-01 Xerox Corporation Fault detection and root cause identification in complex systems
US8108929B2 (en) 2004-10-19 2012-01-31 Reflex Systems, LLC Method and system for detecting intrusive anomalous use of a software system using multiple detection algorithms
ITRM20040517A1 (it) 2004-10-20 2005-01-20 Diego Angelo Tomaselli Metodo e sistema antivirus.
US7831995B2 (en) 2004-10-29 2010-11-09 CORE, SDI, Inc. Establishing and enforcing security and privacy policies in web-based applications
US7493654B2 (en) 2004-11-20 2009-02-17 International Business Machines Corporation Virtualized protective communications system
WO2006060581A2 (en) 2004-11-30 2006-06-08 Sensory Networks Inc. Apparatus and method for acceleration of security applications through pre-filtering
US7636856B2 (en) 2004-12-06 2009-12-22 Microsoft Corporation Proactive computer malware protection through dynamic translation
US20060143709A1 (en) 2004-12-27 2006-06-29 Raytheon Company Network intrusion prevention
US7979889B2 (en) 2005-01-07 2011-07-12 Cisco Technology, Inc. Methods and apparatus providing security to computer systems and networks
US7735138B2 (en) 2005-01-14 2010-06-08 Trend Micro Incorporated Method and apparatus for performing antivirus tasks in a mobile wireless device
US7751565B2 (en) 2005-01-25 2010-07-06 Pak Kay Yuen Secure encryption system, device and method
US7647589B1 (en) 2005-02-07 2010-01-12 Parallels Software International, Inc. Methods and systems for safe execution of guest code in virtual machine context
US7865908B2 (en) 2005-03-11 2011-01-04 Microsoft Corporation VM network traffic monitoring and filtering on the host
US7770153B2 (en) 2005-05-20 2010-08-03 Microsoft Corporation Heap-based bug identification using anomaly detection
US7490355B2 (en) 2005-06-16 2009-02-10 Chung Shan Institute Of Science And Technology Method of detecting network worms
US7526758B2 (en) 2005-06-30 2009-04-28 Microsoft Corporation Execution failure investigation using static analysis
US7822818B2 (en) 2005-07-01 2010-10-26 Symantec Corporation Methods and systems for detecting and preventing the spread of malware on instant messaging (IM) networks by using automated IM users
WO2007022454A2 (en) * 2005-08-18 2007-02-22 The Trustees Of Columbia University In The City Of New York Systems, methods, and media protecting a digital data processing device from attack
US20070074046A1 (en) 2005-09-23 2007-03-29 Czajkowski David R Secure microprocessor and method
US7779472B1 (en) 2005-10-11 2010-08-17 Trend Micro, Inc. Application behavior based malware detection
US7627893B2 (en) 2005-10-20 2009-12-01 International Business Machines Corporation Method and system for dynamic adjustment of computer security based on network activity of users
CA2626993A1 (en) 2005-10-25 2007-05-03 The Trustees Of Columbia University In The City Of New York Methods, media and systems for detecting anomalous program executions
US7975059B2 (en) 2005-11-15 2011-07-05 Microsoft Corporation Generic application level protocol analyzer
US7490266B2 (en) 2006-02-13 2009-02-10 Freescale Semiconductor, Inc. Integrated circuit and processing system with improved power source monitoring and methods for use therewith
US8763103B2 (en) * 2006-04-21 2014-06-24 The Trustees Of Columbia University In The City Of New York Systems and methods for inhibiting attacks on applications
US7840946B2 (en) 2006-06-02 2010-11-23 International Business Machines Corporation System and method for matching a plurality of ordered sequences with applications to call stack analysis to identify known software problems
WO2008055156A2 (en) 2006-10-30 2008-05-08 The Trustees Of Columbia University In The City Of New York Methods, media, and systems for detecting an anomalous sequence of function calls
KR100922579B1 (ko) * 2006-11-30 2009-10-21 한국전자통신연구원 네트워크 공격 탐지 장치 및 방법
US8190861B2 (en) * 2006-12-04 2012-05-29 Texas Instruments Incorporated Micro-sequence based security model
US8495708B2 (en) * 2007-03-22 2013-07-23 The Invention Science Fund I, Llc Resource authorizations dependent on emulation environment isolation policies
IL183390A0 (en) * 2007-05-24 2007-09-20 Deutsche Telekom Ag Distributed system for the detection
US8145470B2 (en) * 2007-06-27 2012-03-27 Microsoft Corporation Accelerated access device emulator access scheme in a hypervisor environment with child and root partitions
US8141163B2 (en) 2007-07-31 2012-03-20 Vmware, Inc. Malicious code detection
US8010763B2 (en) * 2007-08-02 2011-08-30 International Business Machines Corporation Hypervisor-enforced isolation of entities within a single logical partition's virtual address space
US8701189B2 (en) * 2008-01-31 2014-04-15 Mcafee, Inc. Method of and system for computer system denial-of-service protection
US8892916B2 (en) * 2008-08-06 2014-11-18 International Business Machines Corporation Dynamic core pool management
US8214900B1 (en) 2008-12-18 2012-07-03 Symantec Corporation Method and apparatus for monitoring a computer to detect operating system process manipulation
US10055251B1 (en) * 2009-04-22 2018-08-21 The Trustees Of Columbia University In The City Of New York Methods, systems, and media for injecting code into embedded devices
US8510723B2 (en) * 2009-05-29 2013-08-13 University Of Maryland Binary rewriting without relocation information
EP2262259A1 (en) * 2009-06-08 2010-12-15 Nagravision S.A. Method for monitoring execution of data processing program instructions in a security module
US8689201B2 (en) * 2010-01-27 2014-04-01 Telcordia Technologies, Inc. Automated diversity using return oriented programming
US8997218B2 (en) * 2010-12-22 2015-03-31 F-Secure Corporation Detecting a return-oriented programming exploit
US9058492B1 (en) * 2011-02-14 2015-06-16 Symantec Corporation Techniques for reducing executable code vulnerability
US9495541B2 (en) * 2011-09-15 2016-11-15 The Trustees Of Columbia University In The City Of New York Detecting return-oriented programming payloads by evaluating data for a gadget address space address and determining whether operations associated with instructions beginning at the address indicate a return-oriented programming payload

Also Published As

Publication number Publication date
US11599628B2 (en) 2023-03-07
EP2756366A4 (en) 2015-05-27
US10192049B2 (en) 2019-01-29
US20190370460A1 (en) 2019-12-05
EP2756366A1 (en) 2014-07-23
US20210264022A1 (en) 2021-08-26
US9495541B2 (en) 2016-11-15
US20140344932A1 (en) 2014-11-20
EP2756366B1 (en) 2020-01-15
WO2013040598A1 (en) 2013-03-21
US20170243002A1 (en) 2017-08-24
RU2014112261A (ru) 2015-10-20
HK1200551A1 (en) 2015-08-07

Similar Documents

Publication Publication Date Title
US11599628B2 (en) Detecting return-oriented programming payloads by evaluating data for a gadget address space address and determining whether operations associated with instructions beginning at the address indicate a return-oriented programming payload
US8590041B2 (en) Application sandboxing using a dynamic optimization framework
US9824217B2 (en) Runtime detection of self-replicating malware
Göktaş et al. Size Does Matter: Why Using {Gadget-Chain} Length to Prevent {Code-Reuse} Attacks is Hard
KR102075372B1 (ko) 안전한 도메인과 덜 안전한 도메인을 갖는 데이터 처리장치에서의 예외처리
RU2531861C1 (ru) Система и способ оценки вредоносности кода, исполняемого в адресном пространстве доверенного процесса
EP3779745B1 (en) Code pointer authentication for hardware flow control
TWI468980B (zh) 用以抑制返回導向的程式設計的動態執行防止
US8272059B2 (en) System and method for identification and blocking of malicious code for web browser script engines
US20150213260A1 (en) Device and method for detecting vulnerability attack in program
US9396334B1 (en) System and method for detecting harmful files executable on a virtual stack machine
KR102132501B1 (ko) 매립 디바이스에 대한 공격을 금지하기 위한 방법, 시스템 및 미디어
KR102079377B1 (ko) 문서 파일의 악성 코드 무력화 서비스 제공 방법 및 장치
Poulios et al. Ropinjector: Using return oriented programming for polymorphism and antivirus evasion
US20070083770A1 (en) System and method for foiling code-injection attacks in a computing device
CN111783087A (zh) 可执行文件恶意执行的检测方法及装置、终端、存储介质
US10339313B2 (en) System and method for bypassing a malware infected driver
US20180096139A1 (en) Method and system for defense against return oriented programming (rop) based attacks
US11893113B2 (en) Return-oriented programming protection
US11113392B2 (en) Executable binary code insertion
US9607152B1 (en) Detect encrypted program based on CPU statistics
JP6207392B2 (ja) 異常検出装置、異常検出方法、及び異常検出プログラム
Amler Hacking Blind
Priya et al. Reduction of code reuse attacks using code randomization and recursive traversal algorithm