ハッキングコンテストで使われたWindows 7版IE8のセキュリティ機構回避手法、公開される 14
よくやるなぁ 部門より
あるAnonymous Coward 曰く、
ハッキングコンテスト「Pwn2Own 2010」でWindows 7のハッキングに使われた脆弱性実証(Exploit)コードが公開された (Vreugdenhil Researchのブログ記事、Exploitコード)。
このExploitコードはJavaScriptコードが含まれたHTMLコードとなっており、Windows7のIE8から開くとネイティブコードが実行されるというもの。内容は整数型のラップアラウンドを起こさせてからヒープ確保を行わせて文字列のヒープオーバーフローを起こすという単純なものだが、Windows7に備わっているセキュリティ機構であるASLR(アドレス空間配置のランダム化)やDEP(ヒープやスタックでのコード実行の禁止)を突破する点が新しい。方法の詳細は論文に書かれている。
ASLRの回避に使った方法は、バッファのオーバーフロー部分をいじくり回してヒープのレイアウトを求めることで、vftableにあるDLLのアドレスを手に入れるというもの。DEPの回避に使った方法は、今後作るオブジェクトと同じメモリ確保サイズの配列を作り、use-after-freeを利用して配列と同じメモリを別のオブジェクトに割り当てさせて、配列を書き換えてオブジェクトのメンバを操作することによって、間接callからVirtualProtectを呼ぶというもの。
VirtualProtectのアドレスもランダマイズされているが、IEで使用しているATLライブラリがVirtualProtectの呼び出しを含んでいるために、vftableから得たDLLのインポートセクションのアドレスからVirtualProtectのアドレスを取得することができるそうだ。
もう大丈夫なんですよね? (スコア:1)
Re:もう大丈夫なんですよね? (スコア:2, 参考になる)
整数型のラップアラウンドによるヒープオーバーフロー自体はMS11-002なので既に修正されています。
http://www.microsoft.com/japan/technet/security/bulletin/ms11-002.mspx [microsoft.com]
ASLRとDEPの回避手法は今でも使えるはずです。
それにしても、ASLRとDEPのbypassは広まってきていますね。例えばWindows7のIE8のCSS処理にある0day(未修正)な脆弱性を使った、ASLR/DEPをbypassするexploitも出てきています。
https://www.metasploit.com/redmine/projects/framework/repository/entry... [metasploit.com]
ASLRとDEPを過信しないことが大切ですね。
Re: (スコア:0)
Re: (スコア:0)
セキュリティホール自体は塞がれたかもしれないけど、ASLRを迂回する方法はそう簡単に対策を立てられない気がする(アプリの互換性に影響が出るから)。
EMET [microsoft.com]で対策できるかもしれないしできないかもしれない。
Re:もう大丈夫なんですよね? (スコア:1, 興味深い)
メモリを読まれる以上、ASLRはどうしようもない気がしますね。
それよりもDEPの回避を何とかした方が良いかと。
これの対策には強制アクセス制御を導入すれば良いはず。
例えば、Linuxの主要ディストロ(FedoraやUbuntuなど)では既にSELinuxやAppArmorなどの強制アクセス制御によって、ブラウザによるmprotect (WindowsでいうところのVirtualProtect)の実行を防いでいる(はず)ので、この手のDEP回避は通用しません。
ただIEだとプラグインなどがVirtualProtectを呼んでいて互換性を崩すため無理…と言いそうな気もしないでもない。
まぁROPでもDEP回避はできますが、今回ほどお手軽には行かないはず。バージョン依存も激しくなりますし。
Re: (スコア:0)
> ただIEだとプラグインなどがVirtualProtectを呼んでいて互換性を崩すため無理…と言いそうな気もしないでもない。
Linuxでさえぐぐると「動きません」→「SELinuxを無効にしてください」のコンボがわらわら出てくるのにWindowsでできるわけがないでしょ。
プラグインなんか引っ張り出すまでもなく、いまどきのブラウザはどれもJITのために動的生成したネイティブコードに実行許可を与えられることは必須です。そもそもタレコミにもIE自身がVirtualProtectを呼んでるって書いてるやん。
Re: (スコア:0)
暗号みたいだが (スコア:0, 荒らし)
スゲーやつがいた。ホントだぞ。
まで読んだ。
続きはWebで。
#ってのもスゲー古い感じがするな
人間の造り出したもので (スコア:0)
問題は間違いを指摘されてすぐ修正する勇気があるかどうかだ。
Re: (スコア:0)
Re: (スコア:0)
お前の理屈も完璧だな。
例外が多すぎるぞ。
これって (スコア:0)
DEPの適用範囲が違うx64版とかでも通用するの?
あと、IE9は?