Symantec Security Response Weblog

The Hunt for File Format Vulnerabilities」より
April 4, 2008 Posted by Andrea Lelli

 このところ出回っているコードのなかに,実行ファイル以外のファイル形式に存在するセキュリティ・ホールを狙うものが複数あった。例えば,Excelファイルのバグ(関連記事:Microsoftの3月定例アップデート,すべてOffice関係の「緊急」4件)を悪用する「Trojan.Mdropper.AA」系トロイの木馬や,Accessファイルに影響し,いまだ修正パッチが公開されていないMicrosoft Jet Database Engineのセキュリティ・ホール(関連記事:「Wordファイルを開くと被害の恐れ」――MS製品に新たな脆弱性)を突くものが該当する。実行ファイルと異なる一般的なファイル形式のセキュリティ・ホールを新たに見つけることは,セキュリティ研究の分野で価値の高い活動であり,特に攻撃コードの作者を検討する際に有効だ。

 Windowsの「エクスプローラ」で見つかったバグを対象とするコンセプト実証(PoC)コードが出回っていると,セキュリティ・ホール情報サイト「milw0rm」で報告された。このバグは,「種類」「作成者」「タイトル」といったプロパティ情報をWord文書から取得して表示する処理に存在している。こうした情報を格納するWord文書ストリームの「DocumentSummaryInformation」コンテナに不正な形式のデータが入っていると,エクスプローラはWord文書を解析する際に無効なポインタをアクセスする。その結果,メモリー・アクセス違反が起き,解析プロセスがクラッシュしてしまう。我々がテストしたところ,Service Pack 3(SP3)と最新修正パッチを適用したWord XPがこのバグの影響を受けるらしく,「ゼロによる除算」例外の発生でクラッシュした。同じWordでも,XP以外のバージョンは影響されないようだ。

 詳細な調査により,このバグの影響がWordのクラッシュというサービス拒否(DoS)だけで済んでいるのは,単なる幸運だったと考えるようになった。Wordのクラッシュは,不正なWord文書をWordで開くか,エクスプローラで解析すると起きる。現時点では,このバグを攻撃コード実行に悪用できる可能性は非常に低く,Wordをクラッシュさせるだけだろう。いずれにしろ,迷惑な問題であることに違いはなく,今後修正されることを願う。

 我々はmilw0rmに投稿された巧妙なWord文書(.docファイル)のPoCを調べ,問題がWord文書ストリームのDocumentSummaryInformationコンテナにあると考えた。同コンテナは「タイトル」や「作成者」といったWord文書のプロパティ情報を格納しており,エクスプローラが必要に応じてこの情報を表示する。例えば,ステータスバーを出した状態のエクスプローラでWord文書を選択すると,プロパティ情報がステータスバーに表示される。つまり,このときエクスプローラはWord文書を解析し,DocumentSummaryInformationの内容を読み出し,格納されていた情報を解釈した。運の悪いことに,この処理を担当するライブラリ「OLE32.DLL」は,プロパティのデータ・サイズが合っているかどうかを正しく確認しないのだ。その結果,DocumentSummaryInformationを読み出す際に使うポインタに誤ったデータ・サイズが加算され,不正なメモリー領域をアクセスしてしまう。



[画像のクリックで拡大表示]

 上の図は,オフセット0x4400から始まるDocumentSummaryInformation構造体をダンプしたもので,ある二つのセクションを指すヘッダーが入っている。赤い枠で囲んだ最初のセクションは,一つ目の攻撃データである。また,2番目の赤枠部分は過大な整数値となっており,OLE32.DLLは誤った判断を下してしまう。この2番目の赤枠内の整数値は,後ろに続く文字列の長さを示すデータであるが,攻撃データとして機能する。一つ目の攻撃データの値と食い違うことから,OLE32.DLLが誤ったポインタを算出し,最終的にメモリー・アクセス違反を起こすことになる。

 筆者の調べたWord文書には,今回のバグとは無関係と思われる別の攻撃用フィールドも存在していた。こうした状況からみて,この文書は手当たり次第に複数の攻撃手法を実験することが目的の,「File Fuzzing」用ファイルであったのではないだろうか(関連記事:3月のPatch Tuesday ~受動的攻撃と「File Fuzzing法」による脆弱性の発見~)。ファイル形式とクライアント・アプリケーションを総当たり攻撃して新たなバグを見つけようとする行為のせいで,多くのセキュリティ研究者が仕事に追われている。一方,攻撃を企んでいる多くのハッカーも忙しい思いをしている。セキュリティ・ホールとスピア攻撃に興味があるなら,我々シマンテックの論文(PDF形式)を読むとよい。攻撃者は常に新たなバグを探している。というのは,クラッシュを起こす実験用サンプルのなかから,企業や組織を狙ったゼロデイ攻撃の道具に使える手口がよく見つかるからだ。

 以下のグラフは,ファイル形式のバグを悪用するトロイの木馬の数を2007年にまとめたものだ。Word文書(.docファイル)が攻撃対象によく選ばれるものの,最近はExcel文書(.xlsファイル)やPDF文書(.pdfファイル),そして日本でユーザーの多い一太郎文書(.jtd)といったほかのファイル形式に対する攻撃も増えてきた。もう一度アドバイスしておこう。メールの添付ファイルを開く場合は,どのような形式のファイルであっても,たとえ「安全」と思われる実行ファイルでないとしても,とにかく慎重になることだ。

参考資料:
Fuzzingの詳細:http://en.wikipedia.org/wiki/Fuzzing
セキュリティ・ホールの詳細:http://www.securityfocus.com/columnists/391


Copyrights (C) 2008 Symantec Corporation. All rights reserved.
本記事の内容は執筆時点のものであり,含まれている情報やリンクの正確性,完全性,妥当性について保証するものではありません。
◆この記事は,シマンテックの許可を得て,米国のセキュリティ・ラボの研究員が執筆するブログSecurity Response Weblogの記事を抜粋して日本語化したものです。オリジナルの記事は,「The Hunt for File Format Vulnerabilities」でお読みいただけます。