CVE-2020-0674
CVE-2020-0674 は、レガシー jscript エンジンにおける use-after-free の脆弱性です。Internet Explorer でトリガーできます。ここにあるエクスプロイトは maxpl0it によって書かれましたが、脆弱性自体は Qihoo 360 によって、実際の攻撃で悪用されているのを発見されました。このエクスプロイトは単に calc を起動するだけです。
エクスプロイトの解説はこちらから。
脆弱性の概要
- この脆弱性は、比較関数を使用する際の Array
sort 関数に存在します。
- 比較関数に渡される 2 つの引数はガベージコレクタによって追跡されないため、GC が呼び出された後には解放済みメモリを指すことになります。
エクスプロイトの注意点
- このエクスプロイトは特に Windows 7 向けに作成されていますが、おそらくそれほど手間なく移植できるでしょう。
- このエクスプロイトは x64 版の IE 向けに作成されているため、以下のブラウザー構成で動作します(テスト済みです)。
- IE 8 (x64 ビルド)
- IE 9 (x64 ビルド)
- IE 10 (拡張保護モードまたは TabProcGrowth のいずれかを有効化)
- IE 11 (拡張保護モードまたは TabProcGrowth のいずれかを有効化)
- Windows 7 の拡張保護モード (EPM) はブラウザープロセスの x64 版を有効にするだけなので、サンドボックス回避というよりは、追加のサンドボックスがそもそも存在しない、という点に留意してください。皮肉なことに、このエクスプロイトは x64 向けのため、EPM によって実際に動作が可能になります。
- このエクスプロイトは EMET を完全にバイパスするようには作られていません(実際に実装されているのはスタックピボット検出のバイパスのみです)。ただし、最終版 (5.52) ではエクスプロイト実行時に EAF+ がトリガーされないようです(少なくとも Windows 7 x64 では)。一方 5.5 ではトリガーされます。したがって、拡張保護モードで最大限の EMET 設定を有効にした IE 11 ではエクスプロイトが動作します。
- エクスプロイトにはコメントが多用されていますが、エクスプロイトの仕組みと各段階での動作をより深く理解するには、
var debug = false; を var debug = true; に変更し、開発者コンソールを開いてログを表示するか、コンソールを閉じたまま代わりに alert ポップアップを表示してください(少し煩わしいかもしれません)。