2014年5月14日水曜日

ROP (Return-Oriented Programming)

少し旧聞となるが、Windows XP で利用できる最終バージョンである EMET 4.1 に、ROP (Return-Oriented Programming) と言う攻撃手法を使うことにより、迂回されてしまうことが判明しているそうな。

Microsoftの「EMET」に迂回される問題、次期版で解決へ
BromiumによるとEMETの迂回は、「ROP(Return-Oriented Programming)」と呼ばれる攻撃手法を応用することで可能になるという。ROPを使った攻撃手法では既に、Windowsの攻撃防御機構「Data Execution Prevention(DEP)」や「Address Space Layout Randomization(ASLR)」も迂回されてしまうことが判明している。

では、ROP とは何か?

RECONシリーズ最終回 Return Oriented Programming(ROP) - ITセキュリティのアライ出し
ROP はReturn-into-libc と同様に、アセンブラで2命令程度の短いコードブロックをたくさん組み合わせることで、シェルコードの代替として実行する手法である。

これでは、ちょっと理解できない。


Return-oriented Programming (ROP) でDEPを回避してみる - ももいろテクノロジー
Return-to-libcによるDEP回避では、libc内の関数を呼び出すことでシェル起動を行った。 そして連続して関数を呼び出すために、pop命令+ret命令の先頭にジャンプしてスタックを操作するということを行った。 この手法を発展させ、ret命令で終わる命令列の先頭へのジャンプを繰り返すことで、任意の命令列を実行させることができる。 これはReturn-oriented Programming (ROP) と呼ばれる。

コードを使った実証実験の方が分かり易い。
と言いつつ、コードから遠ざかっている私には、全部理解できていない。もうちょっと勉強させてもらおう。

以下のページも見つけたが、これも後日読むことにした。
Practical Return-Oriented Programming