JP2014526751A - リターン指向プログラミングのペイロードを検出するためのシステム、方法、および、非一時的コンピュータ可読媒体 - Google Patents
リターン指向プログラミングのペイロードを検出するためのシステム、方法、および、非一時的コンピュータ可読媒体 Download PDFInfo
- 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
Links
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/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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/562—Static detection
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/03—Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
- G06F2221/034—Test or assess a computer or a system
Abstract
【課題】リターン指向プログラミング(ROP)ペイロードの存在を検出するシステム、方法、および、媒体を提供する。
【解決手段】潜在的なガジェットアドレス空間を識別し、データの一部分が潜在的なガジェットアドレス空間のアドレスと一致するか否かを決定し、データの一部分が潜在的なガジェットアドレス空間のアドレスと一致するという決定に応じて、アドレスから始まる複数の命令にそれぞれ関連する複数の操作が、データ内にROPペイロードが存在していることを示しているか否かを決定し、データ内にROPペイロードが存在していることを複数の操作が示しているという決定が所定の回数なされたことに応じて、データ内にROPペイロードが存在していることを示す。
【選択図】図3
【解決手段】潜在的なガジェットアドレス空間を識別し、データの一部分が潜在的なガジェットアドレス空間のアドレスと一致するか否かを決定し、データの一部分が潜在的なガジェットアドレス空間のアドレスと一致するという決定に応じて、アドレスから始まる複数の命令にそれぞれ関連する複数の操作が、データ内にROPペイロードが存在していることを示しているか否かを決定し、データ内にROPペイロードが存在していることを複数の操作が示しているという決定が所定の回数なされたことに応じて、データ内にROPペイロードが存在していることを示す。
【選択図】図3
Description
本発明は、リターン指向プログラミングのペイロードを検出するためのシステム、方法、および、非一時的コンピュータ可読媒体に関するものである。
[関連出願の相互参照]
本願は、2012年9月15日に出願された米国仮特許出願番号第61/535,288号の優先権を主張するものであり、その全体の内容を、参考としてここに援用している。
本願は、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+n*1で初期化されうる。命令ポインタ(EIP)およびスタックポインタ(ESP)にこれらの値を付与するために、いずれかの適切な機構が用いられうる。例えば、命令ポインタ(EIP)およびスタックポインタ(ESP)を設定するために、スタックピボットの命令シーケンスが用いられうる。
これによって第1のガジェットが呼び出されることになる(図1の右側の「第1」)。図に示すように、この呼び出しの間に、「pop eax」命令および「ret」命令が実行される。この「pop eax」命令は、スタックポインタ(ESP)によって指示されるアドレス(X+n*1)の値(0x0010104)をレジスタEAXにコピーし、ESPを1メモリアドレスサイズ程度をインクリメントする(例えば、32ビットのアドレスサイズでは4バイト)。「ret」(リターン)命令は、スタックポインタ(ESP)によって指示されたアドレスの値を命令ポインタ(EIP)に代入し、スタックポインタ(ESP)のアドレスサイズをインクリメントする。よって、この「ret」コマンドは、スタックポインタ(ESP)に指示されたアドレス(X+n*2)の値(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ペイロードを含むと識別できる。
いくつかの実施形態では、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)実行された命令の総数が総実行しきい値に達している場合。
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+n*2)の値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)の固有のガジェットのしきい値が用いられてよい。
例えば、いくつかの実施形態では、ガジェットカウントは、各ガジェットの終了に応じてインクリメントされてよい。いくつかの実施形態における他の例としては、ガジェットカウントは、それぞれ固有のガジェット(例えば、以前に実行されていないガジェット)の終了に応じてのみインクリメントされてよい。いくつかの実施形態におけるさらなる他の例としては、ガジェットカウントは、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)
- データ内のリターン指向プログラミング(ROP)ペイロードの存在を検出するシステムであって、
ハードウェアプロセッサを備え、
前記ハードウェアプロセッサは、
潜在的なガジェットアドレス空間を識別し、
前記データの一部分が前記潜在的なガジェットアドレス空間のアドレスと一致するか否かを決定し、
前記データの一部分が前記潜在的なガジェットアドレス空間のアドレスと一致するという決定に応じて、
前記アドレスから始まる複数の命令にそれぞれ関連する複数の操作が、前記データ内にROPペイロードが存在していることを示しているか否かを決定し、
前記データ内にROPペイロードが存在していることを前記複数の操作が示しているという決定が所定の回数なされたことに応じて、前記データ内にROPペイロードが存在していることを示す、システム。 - 前記データ内にROPペイロードが存在していることを前記複数の操作が示しているか否かの決定において、前記ハードウェアプロセッサは、エミュレータを用いて、前記アドレスから始まる複数の命令の実行を試みる、請求項1に記載のシステム。
- 前記ハードウェアプロセッサは、前記エミュレータを用いて、前記アドレスから始まる前記複数の命令を実行する試みが、不当な実行アドレスの命令を実行する試みを含むか否かを決定する、請求項2に記載のシステム。
- 前記ハードウェアプロセッサは、前記エミュレータを用いて、前記アドレスから始まる前記複数の命令を実行する試みが、不当命令または特権命令を実行する試みを含むか否かを決定する、請求項2に記載のシステム。
- 前記ハードウェアプロセッサは、前記潜在的なガジェットアドレス空間からの命令により、エミュレータの仮想アドレス空間を初期化する、請求項1に記載のシステム。
- 前記データ内にROPペイロードが存在していることを前記複数の操作が示しているか否かの決定において、前記ハードウェアプロセッサは、前記複数の操作が、前記データの不変の部分によって制御される間接的な制御移行命令を実行するか否かを決定する、請求項1に記載のシステム。
- 前記データ内にROPペイロードが存在していることを前記複数の操作が示しているか否かの決定において、前記ハードウェアプロセッサは、前記複数の操作が、前記データの不変の部分によって制御されるリターン命令を実行するかどうかを決定する、請求項1に記載のシステム。
- 前記ハードウェアプロセッサは、ガジェットにおける命令数のカウントを計算し、前記ガジェットにおける前記命令数の前記カウントをしきい値と比較する、請求項1に記載のシステム。
- 前記ハードウェアプロセッサは、実行される命令の総数のカウントを計算し、前記実行される命令の前記総数の前記カウントをしきい値と比較する、請求項1に記載のシステム。
- 前記ハードウェアプロセッサは、
前記データの次の部分を選択し、
前記データの前記次の部分が、前記潜在的なガジェットアドレス空間のアドレスと一致するか否かを決定し、
前記データの前記次の部分が前記潜在的なガジェットアドレス空間のアドレスと一致するとの決定に応じて、
前記アドレスから始まる複数の命令にそれぞれ関連する複数の操作が、前記データ内にROPペイロードが存在していることを示しているか否かを決定し、
前記データ内にROPペイロードが存在していることを前記複数の操作が示しているという決定が所定の回数なされたことに応じて、前記データ内にROPペイロードが存在していることを示す、請求項1に記載のシステム。 - データ内のリターン指向プログラミング(ROP)ペイロードの存在を検出する方法であって、
ハードウェアプロセッサを用い、潜在的なガジェットアドレス空間を識別するステップと、
前記ハードウェアプロセッサを用い、前記データの一部分が前記潜在的なガジェットアドレス空間のアドレスと一致するか否かを決定するステップと、
前記データの一部分が前記潜在的なガジェットアドレス空間のアドレスと一致するという決定に応じて、
前記ハードウェアプロセッサを用い、前記アドレスから始まる複数の命令にそれぞれ関連する複数の操作が、前記データ内にROPペイロードが存在していることを示しているか否かを決定するステップと、
前記ハードウェアプロセッサを用い、前記データ内にROPペイロードが存在していることを複数の操作が示しているという決定が所定回数なされたことに応じて、前記データ内にROPペイロードが存在していることを示すステップと、
を含む方法。 - 前記データ内にROPペイロードが存在していることを前記複数の操作が示しているか否かを決定するステップは、エミュレータを用いて前記アドレスから始まる複数の命令の実行を試みるステップを含む、請求項11に記載の方法。
- 前記エミュレータを用いて前記アドレスから始まる前記複数の命令の実行を試みるステップは、不当な実行アドレスの命令の実行を試みることを含むか否かを、前記ハードウェアプロセッサを用いて決定するステップをさらに含む、請求項12に記載の方法。
- 前記エミュレータを用いて前記アドレスから始まる前記複数の命令の実行を試みるステップは、不当命令または特権命令の実行を試みることを含むか否かを、前記ハードウェアプロセッサを用いて決定するステップをさらに含む、請求項12に記載の方法。
- 前記ハードウェアプロセッサを用いて、前記潜在的なガジェットアドレス空間からの命令によりエミュレータの仮想アドレス空間を初期化するステップをさらに含む、請求項11に記載の方法。
- 前記データ内にROPペイロードが存在していることを前記複数の操作が示しているかを決定するステップは、前記複数の操作が、前記データの不変の部分によって制御される間接的な制御移行命令を実行するか否かを決定するステップを含む、請求項11に記載の方法。
- 前記データ内にROPペイロードが存在していることを前記複数の操作が示しているか否かを決定するステップは、前記複数の操作が、前記データの不変の部分によって制御されるリターン命令を実行するか否かを決定するステップを含む、請求項11に記載の方法。
- 前記ハードウェアプロセッサを用い、ガジェットにおける命令数のカウントを計算し、前記ガジェットにおける命令数の前記カウントをしきい値と比較するステップをさらに含む、請求項11に記載の方法。
- 前記ハードウェアプロセッサを用い、実行される命令の総数のカウントを計算し、前記実行される命令の総数の前記カウントをしきい値と比較するステップをさらに含む、請求項11に記載の方法。
- 前記ハードウェアプロセッサを用いて、前記データの次の部分を選択するステップと、
前記データの前記次の部分が、前記潜在的なガジェットアドレス空間のアドレスと一致するか否かを決定するステップと、
前記データの前記次の部分が前記潜在的なガジェットアドレス空間のアドレスと一致するとの決定に応じて、
前記ハードウェアプロセッサを用いて、前記アドレスから始まる複数の命令にそれぞれ関連する複数の操作が、前記データ内にROPペイロードが存在していることを示しているか否かを決定するステップと、
前記データ内にROPペイロードが存在していることを前記複数の操作が示しているという決定が所定の回数なされたことに応じて、前記ハードウエアプロセッサを用いて、前記データ内にROPペイロードが存在していることを示すステップと、をさらに含む、請求項11に記載の方法。 - コンピュータ実行可能命令を含む非一時的コンピュータ可読媒体であって、前記コンピュータ実行可能命令は、プロセッサにより実行されると、データ内のリターン指向プログラミング(ROP)ペイロードの存在を検出する方法を前記プロセッサに実行させ、前記方法は、
潜在的なガジェットアドレス空間を識別するステップと、
前記データの一部分が前記潜在的なガジェットアドレス空間のアドレスと一致するか否かを決定するステップと、
前記データの一部分が前記潜在的なガジェットアドレス空間のアドレスと一致するという決定に応じて、
前記アドレスから始まる複数の命令にそれぞれ関連する複数の操作が、前記データ内にROPペイロードが存在していることを示しているか否かを決定するステップと、
前記データ内にROPペイロードが存在していることを複数の操作が示しているという決定が所定回数なされたことに応じて、前記データ内にROPペイロードが存在していることを示すステップと、
を含む、非一時的コンピュータ可読媒体。 - 前記データ内にROPペイロードが存在していることを前記複数の操作が示しているか否かを決定するステップは、エミュレータを用いて前記アドレスから始まる複数の命令の実行を試みるステップを含む、請求項21に記載の非一時的コンピュータ可読媒体。
- 前記方法は、前記エミュレータを用いて前記アドレスから始まる前記複数の命令の実行を試みるステップが、不当な実行アドレスの命令の実行を試みることを含むか否かを決定するステップをさらに含む、請求項22に記載の非一時的コンピュータ可読媒体。
- 前記方法は、前記エミュレータを用いて前記アドレスから始まる前記複数の命令の実行を試みるステップが、不当命令または特権命令の実行を試みることを含むか否かを決定するステップをさらに含む、請求項22に記載の非一時的コンピュータ可読媒体。
- 前記方法は、前記潜在的なガジェットアドレス空間からの命令によりエミュレータの仮想アドレス空間を初期化するステップをさらに含む、請求項21に記載の非一時的コンピュータ可読媒体。
- 前記データ内にROPペイロードが存在していることを前記複数の操作が示しているかを決定するステップは、前記複数の操作が、前記データの不変の部分によって制御される間接的な制御移行命令を実行するか否かを決定するステップを含む、請求項21に記載の非一時的コンピュータ可読媒体。
- 前記データ内にROPペイロードが存在していることを前記複数の操作が示しているか否かを決定するステップは、前記複数の操作が、前記データの不変の部分によって制御されるリターン命令を実行するか否かを決定するステップを含む、請求項21に記載の非一時的コンピュータ可読媒体。
- 前記方法は、ガジェットにおける命令数のカウントを計算し、前記ガジェットにおける命令数の前記カウントをしきい値と比較するステップをさらに含む、請求項21に記載の非一時的コンピュータ可読媒体。
- 前記方法は、実行される命令の総数のカウントを計算し、前記実行される命令の総数の前記カウントをしきい値と比較するステップをさらに含む、請求項21に記載の非一時的コンピュータ可読媒体。
- 前記方法は、
前記データの次の部分を選択するステップと、
前記データの前記次の部分が、前記潜在的なガジェットアドレス空間のアドレスと一致するか否かを決定するステップと、
前記データの前記次の部分が前記潜在的なガジェットアドレス空間のアドレスと一致するとの決定に応じて、
前記アドレスから始まる複数の命令にそれぞれ関連する複数の操作が、前記データ内にROPペイロードが存在していることを示しているか否かを決定するステップと、
前記データ内にROPペイロードが存在していることを前記複数の操作が示しているという決定が所定の回数なされたことに応じて、前記データ内にROPペイロードが存在していることを示すステップと、
をさらに含む、請求項21に記載の非一時的コンピュータ可読媒体。
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)
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)
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 |
-
2012
- 2012-09-17 US US14/344,458 patent/US9495541B2/en active Active
- 2012-09-17 WO PCT/US2012/055824 patent/WO2013040598A1/en active Application Filing
- 2012-09-17 RU RU2014112261/08A patent/RU2014112261A/ru not_active Application Discontinuation
- 2012-09-17 EP EP12832510.7A patent/EP2756366B1/en active Active
- 2012-09-17 JP JP2014530941A patent/JP2014526751A/ja active Pending
-
2015
- 2015-01-23 HK HK15100755.8A patent/HK1200551A1/xx unknown
-
2016
- 2016-11-11 US US15/349,445 patent/US10192049B2/en active Active
-
2019
- 2019-01-25 US US16/257,829 patent/US20190370460A1/en not_active Abandoned
-
2021
- 2021-05-07 US US17/315,184 patent/US11599628B2/en active Active
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 |