[緊急寄稿] Internet Explorer 0-day脆弱性に関する調査レポート

2012年10月2日(火) 08時00分
このエントリーをはてなブックマークに追加
実証コード例の画像
実証コード例
FFR yarai による防御の画像
FFR yarai による防御
9月17日、Internet Explorer(IE)に新たな脆弱性が報告されました。米Microsoftは9月21日(日本時間22日)、予告通りにIEのセキュリティ更新プログラムを緊急公開しましたが、この間はいわゆる0-dayの脆弱性となっており、IE7やIE8を標的とした攻撃が発生していたことが報告されています。

影響を受けるInternet Explorerのバージョンは6、7、8、9であり、Webサイトの閲覧のみで被害に遭う可能性があります。

FFRIでは本件に関して調査を行い、独自にIn the wildの検体を入手し、その検体と攻撃に利用された脆弱性について以下に報告いたします。なお、検体は以下のブログで報告されているものです。

Zero-Day Season Is Really Not Over Yet
http://eromang.zataz.com/2012/09/16/zero-day-season-is-really-not-over-yet/

このブログの筆者によれば、先日のJava Runtimeの脆弱性について調査を行っていたときにこの検体を発見したとのことです。

この検体はIEの脆弱性を突くもので、2つのJavaScriptコードとAdobe Flashのオブジェクトを組み合わせたものでした。

この脆弱性はuse-after-free脆弱性と呼ばれるもので、プログラマとしての視点からすると、このタイプの脆弱性を完全になくすのは非常に難しいと言えます。

エラーチェックなどはありませんが、今回の問題を理解するための簡単なコードを書いてみました。

MyApp::WorkWithObjメソッドは_myObjを利用して2つの仕事を行っています。_myObj->method1()を呼び出したとき、その先でどこかのコン ポーネントが

MyApp::DeleteObjを呼び出してしまった場合、_myObj->method2()呼出しの結果は不定となってしまいます。

さらに、C++のオ ブジェクト内にそのオブジェクトの関数テーブル(vtable)へのポインタ(vptr)が配置されていることを考慮した場合、_myObjのあった領域 にユーザー入力のデータが配置され、

その結果、任意のアドレスにある関数テーブルを参照させることができてしまいます。

他にもユーザーからの入力をメモリ上に配置するコードが存在すれば、その場所ポイントすることで任意のアドレスの実行が可能となって しまいます。

この例の場合、単純なため、このような間違いを組み込むことは少ないかもしれませんが、コンポーネントや関係するプログラマの増加により複雑さが増していけば、このような間違いが起きる可能性はかなり高いと思います。

今回のIEの場合、JavaScriptの処理に問題があり、これからメソッドを呼び出そうとしているオブジェクトをその前の処理で削除してしまうというものでした。

また、9月19日のFFRIブログにおいて弊社FFR yaraiにてMetasploitの検証モジュールによる攻撃を防御できることをお伝えしましたが、今回、この検体についても同様に防御できることを確認しました(本脆弱性に対する対応を行い、事後による防御が可能となったのではなく、既リリースのもので「事前に」防御可能であった)。

Internet Exploer脆弱性検証結果
http://www.fourteenforty.jp/blog/2012/09/2012-09-19.htm

・Windows XP SP3
・Internet Explorer 8 (英語版)
・FFR yarai 2.1.850(2012年3月30日リリース)

なお、この検体はIE8の日本語版では動作しませんでした。プログラムの挙動のログからの推測になりますが、この検体が利用している Adobe Flashのファイルが日本語版の場合には意図通り動作していないようです。

FFR yaraiのインストールされていない環境で確認した結果、細工されたWebサイトの閲覧だけで、サーバーに接続しファイル(EXE形式の 実行ファイル)をダウンロードしようとするコードが実行されました。

現在はそのファイルは存在せずダウンロードに失敗しますが、そのまま動作すればそのユーザー権限で任意のファイルの実行が可能です。
つまり、メール本文等に書かれたURLリンクをクリックしただけで攻撃が成立してしまい、PCを乗っ取られてしまう可能性があるということになります。

バッファオーバーフロー系の脆弱性に関しては、危険な個所を開発環境やコンパイラが指摘するなどの機能も備わってきていますが、use- after-freeはコードの流れ全体を把握しないと判断できないという特性上、すべて見つけるのは困難だと言えます。そういう意味では、このような脆弱性は今後も発見され得ると思われます。

本脆弱性のパッチは出るまでの間、この検体は0-day攻撃となっていました。修正パッチが出るまでは攻撃対象となるIEの利用を避ける、怪しいURLを閲覧しないといった対策が必要となっていましたが、修正パッチがリリースされた現在では速やかなパッチ適用が必要となります。

(鈴木 秀一郎)

筆者略歴:株式会社フォティーンフォティ技術研究所 技術戦略室 シニア・リサーチ・エンジニア
《ScanNetSecurity》

注目ニュース

icon
GoogleChromeがIEを抜いて初のトップに、シェアは32.76%(StatCounter)

 アイルランドのネットアクセス解析サービス企業のStatCounterは22日(現地時間)、最新の世界ブラウザ市場調査の結果を発表した。米GoogleのブラウザGoogleChromeが米マイクロソフトのブラウザ「Internet Explo...

icon

Microsoft Internet Explorer (IE) に解放済みメモリを使用してしてしまう脆弱性が報告されました。

icon

Internet Explorer の脆弱性に対するアップデート(JVN)他

icon

日本マイクロソフトは、2012年9月の定例外セキュリティ情報「MS12-063:Internet Explorer 用の累積的なセキュリティ更新プログラム(2744842)」を公開した。

icon

日本マイクロソフトは、定例外のセキュリティ情報の事前通知を発表した。

icon

IPAおよびJPCERT/CCは、Microsoftが提供するWebブラウザ「Internet Explorer」にリモートから任意のコードを実行される脆弱性が存在すると「JVN」で発表した。

icon
Internet Explorerの任意のコードが実行される脆弱性の検証レポート(NTTデータ先端技術)

NTTデータ先端技術は、「Microsoft Internet Explorer」において発見された、リモートから任意のコードが実行される脆弱性に関する検証レポートを公開した。

RSS

特集・連載

ピックアップフォト