2013年の冬は“ゼロデイ”が多く出てきましたMcAfee Labsで強力なFlashゼロデイの分析を行ったと思うと、すぐにAdobe Readerの最新バージョン(および旧バージョン)を狙う別のゼロデイ攻撃に関するセキュリティ警告が出されました。過去に私たちが経験したInternet Explorerのゼロデイエクスプロイトとは異なり、このReaderゼロデイエクスプロイトは、完全に“兵器化”したものです。このゼロデイエクスプロイトには、ブローカープロセスでメモリー情報公開やサンドボックスエスケープを使用し、アドレス空間配置のランダム化(ASLR)やデータ実行防止(DEP)を回避するなどの先進的なテクニックが含まれています。このブログでは、このエクスプロイトを簡単に分析します。
このエクスプロイトで使用される不正なPDFファイルは、主に3つの部分で構成されています。
- 脆弱性を誘発するROP(return-oriented programming)ペイロードを伴うヒープスプレーデータとAdobe XML Forms Architecture(XFA)オブジェクトを操作するJavaScriptコードを含んだ、高度に難読化されたJavaScriptコード
- 均一にエンコードされたXFAオブジェクト
- ドロップされた2つのDLLに関連性があると思われる、暗号化されたバイナリストリーム
このエクスプロイトには、2つの段階があります。第1段階として、サンドボックス化されたプロセス内でのコード実行が、AcroForm.apiモジュールで発生します。攻撃者の制御するヒープスプレー領域から仮想テーブルポインターが読み込まれ、その後、呼び出し命令で使用されます。
このエクスプロイトは、AcroForm.apiのベースモジュールアドレスをリークすることができます。組み込まれたJavaScriptコードを使用してAdobe Readerの現行バージョンを検出し、ランタイム時にすべてのROPペイロードをビルドすることが可能です。
最も重要なことは、通常のシェルコードが一切ないことです。必要なすべてのシェルコード関数は、ROPコードレベルで実装されます。つまり、大半のエミュレーションベースのシェルコード検出テクニックでは、このエクスプロイトを検出することができないということです。これらのテクニックは、正当なモジュール内の一連のアドレスしか確認できないためです。このエクスプロイトは、以前に登場した、iOSコードサイニング拡張機能を無効化できるiOS脱獄エクスプロイトと似ています。
ROPシェルコードはまず、メモリーに埋め込まれたDLL(D.T)を復号化し、AppData\Local\Temp\acrord32_sbxフォルダーにドロップします。次に、DLLを現行プロセスにロードします。その後、乗っ取られたスレッドがKernel32!Sleep APIを呼び出すことにより停止します。D.Tは、サンドボックス化されたプロセスでの実行時に、ほかのDLL(L2P.Tなど)をドロップし、別のAdobe脆弱点をエクスプロイトすることによって、サンドボックスをエスケープする準備をします。
第2段階では、ブローカープロセス中にコード実行が発生します。この呼び出し命令の宛先も、攻撃者が制御可能です。
第2段階のROPシェルコードは非常に短く、ドロップされたDLL L2P.Tにロードされ、スリープ状態になります。攻撃者が制御しているコード(L2P.T)が上位特権ブローカープロセスで実行されたため、この時点ですでに、Readerサンドボックスはエクスプロイトによって突破されています。
これは、サンドボックスを完全にエスケープしたエクスプロイトとしては、拡散していることをマカフィーが初めて確認した例です。これまでは、サンドボックスを完全にエスケープする可能性について、「Pwn2Own」といった主要なハッキングコンテストで聞いたことがあるだけでした。このエクスプロイトは、一部の複雑な部分のほかに、ネットワークとエンドポイントのセキュリティ検出・防護を回避するため、高度に難読化されたJavaScript、ROP専用シェルコード、多段型暗号化マルウェアといった、複数の回避テクニックも使っています。エクスプロイトコードは次に、乗っ取ったプロセスを終了させ、正常に見せかけたPDFファイルを表示するために新しいプロセスを作成します。このエクスプロイトは一瞬にして起こるため、元の不正PDFファイルを開く被害者が異常行動を目にすることはできません。
マカフィーでは引き続き分析を行い、サンドボックスのエスケープに関するさらに詳しい情報を今後も提供していきます。対策としては、Adobe Reader 及び Acrobat を以下の最新のバージョンに更新してください。Adobe Reader 及び Acrobat の起動後、メニューの”ヘルプ (H)” -> ”アップデートの有無をチェック (U)” をクリックすることで更新できます。
– Adobe Reader XI (11.0.02)
– Adobe Reader X (10.1.6)
– Adobe Reader 9.5.4
– Adobe Acrobat XI (11.0.02)
– Adobe Acrobat X (10.1.6)
– Adobe Acrobat 9.5.4
マカフィーのお客様には、Network Security Platform 機器向けに0x402e0600 “UDS-HTTP: Adobe Reader and Acrobat XFA Component Remote Code Execution”というシグネチャーをすでにリリースしています。また、HIPS製品の一般的なバッファオーバーフロー防止(Sigs 6013、6048)機能により、関連攻撃を阻止できます。
関連記事
- [2010/12/28] Adobe Readerをターゲットにした、ゼロデイ攻撃
- [2010/09/13] 拡散中のアドビPDFゼロデイエクスプロイトを発見
- [2010/06/15] 悪質なPDFファイルが蔓延
※本ページの内容はMcAfee Blogの抄訳です。
原文:Analyzing the First ROP-Only, Sandbox-Escaping PDF Exploit