Download.Jectに関連するInternet Explorer脆弱性


Cyber Security Management 2004年8月号


本文書は、Cyber Security Management誌に寄稿した記事の原稿を、CSM編集部殿の許可を得た上で掲載したものです。




今年の6月、Download.Jectと呼ばれるトロイの木馬が報告された。今回はこのDownload.Jectが利用したInternet Explorer(IE)の脆弱性について解説する。




Download.Jectが利用したIE脆弱性


Download.Ject[1]とは、Windowsの標準WebサービスであるIIS(Internet Information Services)が稼動するWebサーバに不正に設置される、トロイの木馬型の不正ソフトウェアである。

Download.Jectは、今年の4月に公開された「Microsoft Windows のセキュリティ修正プログラム(MS04-011)」で修正された脆弱性(セキュリティホール)を利用し、パッチが適用されていないIISに埋め込まれる。Download.Jectが埋め込まれたIISのサイトに、IEでアクセスしたユーザは、攻撃者の不正Webサーバに強制的にアクセス(リダイレクト)させられ、その結果、IEの脆弱性を利用してクライアントマシン自体が攻撃される。

Download.JectのIEに対する攻撃は、次のような手順で行われている[2]。

    1) 不正なWebページはページ内にフレームを作成し、そのフレーム上でモーダルダイアログを表示させる。
    2) モーダルダイアログ表示中に、フレームのコンテンツはHTTPリダイレクトを用いてローカルファイルをフレーム上に表示させる。
    3) モーダルダイアログが自動的にクローズすると同時に、ダイアログ表示の際に指定したスクリプトがマイコンピュータゾーンのセキュリティ設定で実行される。
    4) スクリプトにて、ADODB.Streamオブジェクトを用いて不正プログラムをダウンロード、実行させる。
このDownload.Jectの攻撃方法でポイントとなっているのは、次の二つの点である。

  • マイコンピュータゾーンに属するローカルファイルを表示させる
  • クロスドメインセキュリティを回避して、マイコンピュータゾーンでスクリプトを起動する
一般論としてこの二点を実現することができれば、IEが動作するクライアントマシンに対して、任意の不正プログラムをダウンロードさせたり、それを実行させたりすることが可能になる。なぜならIEのマイコンピュータゾーンはデフォルトで非常に緩いセキュリティ設定になっており、そのためスクリプトからのファイルのダウンロードや実行は比較的容易に行うことができるからだ。

Download.Jectはこれらの二つの点に関して、今回新たに明らかとなった以下のIEに関する脆弱性を利用している。

  • HTTPリダイレクトによるローカルファイルの表示
  • モーダルダイアログを利用したクロスドメインセキュリティの回避
これらの脆弱性はいずれも、現時点ではまだマイクロソフトからパッチが提供されていない。




HTTPリダイレクトによるローカルファイルの表示


この脆弱性は、HTTPリダイレクトを利用することにより、ローカルのリソース(HTMLファイル等)にアクセスすることができるというものだ。

HTTPリダイレクトとは、通常、アクセスしようとしたコンテンツのリンク先が変更になった場合などに、Webサーバが変更先のURLをWebブラウザに通知する目的で使用されるHTTP応答のことをいう。

WebサーバはHTTPリダイレクトの応答を行う場合、

    HTTP/1.1 302 Object moved
    Location: 変更先のURL
    
といったようなレスポンスをWebブラウザに返す。

このレスポンスを受け取ったWebブラウザは、Locationヘッダに指定されている「変更先のURL」に対して自動的にアクセスする。これが一般的なHTTPリダイレクトの仕組みである(図1)。


図1 一般的なHTTPリダイレクトの仕組み


通常はHTTPリダイレクトでローカルのファイルにアクセスすることはできない。ところがこのLocationヘッダに、

のように「URL:」を先頭につけてWebブラウザが稼動しているコンピュータ上のリソースを指定することにより、ローカル上の該当ファイルをブラウザに表示させることが可能になる。ちなみに「iexplore.chm」はIEのヘルプファイルで、「iegetsrt.htm」はそのヘルプファイル内の「Internet Explorer入門」のページを指している。

図2は、HTTPリダイレクトを利用してフレーム内に「Internet Explorer入門」のページを表示させた様子を表している。


図2 フレーム内にローカルファイル「Internet Explorer入門」を表示させたところ


ブラウザ上のフレーム内にローカルファイルを表示させた場合、フレームの外側はアクセス先ドメインのゾーン、つまり一般的にはインターネットゾーンに属しているが、フレーム内はローカルファイルのゾーンすなわちマイコンピュータゾーンに属することになる。




モーダルダイアログを利用したクロスドメインセキュリティの回避


本連載の第一回「Internet Explorerのセキュリティホールと使用のポイント」でも述べたとおり、IEは異なるドメインのウィンドウ同士が情報を共有したり、干渉したりすることができない仕様になっている。これはクロスドメインセキュリティと呼ばれ、IEが稼動するコンピュータを不正なWebコンテンツから保護する、重要なセキュリティ機能の一つとして実装されている。

だが過去においてしばしば、このIEのクロスドメインセキュリティを回避し、IEが表示する他のドメインのウィンドウやフレーム上でJavascript等のスクリプトを実行させることができるような脆弱性が報告されてきた。

今回のこの脆弱性は、IEのモーダルダイアログ機能を巧妙に利用することで、クロスドメインセキュリティ機能を回避できるというものである。

モーダルダイアログとはIEが表示するウィンドウの一種で、通常、ユーザに操作の確認を行う際に使用される。そのダイアログ・ウィンドウが表示されている間は、IE上の他のウィンドウをアクティブにできないという特徴を持つ。

Download.Jectでは、まず初めにWebページ内にフレームを作成するのだが、その際に前述のHTTPリダイレクト脆弱性を利用してそのフレームにローカルファイルを表示させるようなコンテンツを指定している。ただしここが重要なのだが、フレーム中にローカルファイルを表示させるタイミングを少し遅らせることを行っている。つまり、フレームは最初はインターネットゾーンとして表示されるが、リダイレクトされた後にマイコンピュータゾーンとなるわけである(図3の@)。

次にこのフレームに対してモーダルダイアログを表示させる。モーダルダイアログが表示された当初は、当該フレームはインターネットゾーンとなっている。モーダルダイアログの中のコンテンツには、フレームがリダイレクトされた直後にモーダルダイアログを閉じるようなスクリプトが記述されているため、HTTPリダイレクトでフレームにローカルファイルが表示された(つまりマイコンピュータゾーンに変更された)直後にダイアログは自動的に終了する(図3のA)。

モーダルダイアログを表示させる際に、ダイアログ終了後にフレーム内で実行するスクリプトを記述しておく。このスクリプトはダイアログ終了時のフレームのセキュリティゾーン、つまりマイコンピュータゾーンで実行することになる(図3のB)。


図3 Download.Jectで使われているIE攻撃コードの概要


この脆弱性を利用するためには、フレームの内容をリダイレクトさせるタイミングが重要となる。リダイレクトのタイミングが早すぎると、スクリプトエラーとなってモーダルダイアログは表示されない。




不正プログラムのダウンロードと起動


IEの脆弱性を利用してマイコンピュータゾーンでスクリプトの実行ができた場合、IEに対する攻撃の次なるステップは、多くの場合、不正プログラムのダウンロードと起動である。

Download.Jectにおいては、ADODB.Streamオブジェクトを利用することで不正プログラムをダウンロードし、ローカルハードディスクのメディアプレーヤーの実行ファイル(wmplayer.exe)としてコピーした後、メディアプレーヤーを起動させる特別なURL(mms://)にアクセスすることでその不正プログラムを実行させている。

ADODB.Streamオブジェクトは、Webコンテンツのスクリプトで用いることにより、IEにローカルハードディスク上のファイルを読んだり書いたりする機能を提供する。通常はローカル上のWebコンテンツで使用されることが想定されているが、前述のようなIEの脆弱性により、インターネット上のWebコンテンツからマイコンピュータゾーンで実行させられることで、任意のファイルをインターネット上の任意のサイトからダウンロードさせられてしまう。

このADODB.Streamによるファイルダウンロードの危険性については、昨年の8月から指摘されていた。この機能自体は「仕様」であり「脆弱性」ではないが、今回のように他の脆弱性を利用してマイコンピュータゾーンでのスクリプト実行が可能になった場合、このような機能はIEのユーザにとって大きな脅威となる。

マイクロソフトは「Internet ExplorerでADODB.Streamオブジェクトを無効にする方法」という文書およびツールを公開し、ADODB.Streamオブジェクトを無効化する手段を提供している[3]。

だが注意しなければならないのは、マイコンピュータゾーンでスクリプトの実行が可能な場合、不正プログラムのダウンロードや起動を実現する方法はADODB.Streamを用いる以外にも複数存在することだ[4]。つまりADODB.Streamオブジェクトの無効化では、根本的な問題の解決にはならないのである。




マイコンピュータゾーンのセキュリティ設定を強化する


マイコンピュータゾーンでスクリプト実行ができた場合、さまざまなセキュリティ侵害の危険性が生じるのは、前述のとおりマイコンピュータゾーンのセキュリティ設定が緩いからである。

そのため、マイコンピュータゾーンの以下のセキュリティ設定を強化する方法が、マイクロソフトのWebサイトで提供されている[5]。

  • ActiveXコントロールとプラグインの実行
  • スクリプトを実行しても安全だとマークされていないActiveXコントロールの初期化とスクリプトの実行
  • アクティブスクリプト
  • ドメイン間でのデータソースのアクセス
  • Javaのアクセス許可
詳細については参考URLを参照してもらいたいが、レジストリを直接編集する必要があるため、必ずしも一般ユーザ向けではない。

またマイコンピュータゾーンのセキュリティ設定を強化した場合、Windowsの標準的な機能を含む各種の機能が制限されてしまう可能性がある。

マイコンピュータゾーンのセキュリティ設定強化については、マイクロソフトも「最終手段」という表現を使っているように、利便性とリスクとを秤にかけた上で慎重に行う必要があるだろう。

本連載第一回「Internet Explorerのセキュリティホールと使用のポイント」で既に述べたため、改めて詳しくは書かないが、IEを安全に使用するためには次の対策が有効であると考える。

  • IEのインターネットゾーンのセキュリティ設定を強化する
  • 権限の少ないユーザでログオンして使用する
  • ファイルシステムのアクセス権設定を強化する
  • 「ソフトウェア制限のポリシー」を有効に使う(XP)
特に二つ目以降の対策は、IEに限らず、PC上で使用するさまざまなソフトウェアの脆弱性や、トロイの木馬、ウィルスなどの不正プログラムから身を守るために、最低限必要な対策であると言っても過言ではない。




[1]  Download.Ject
     http://securityresponse.symantec.com/avcenter/venc/data/download.ject.html

[2]  An analysis of the Ilookup Trojan
     http://62.131.86.111/analysis.htm

[3]  Internet ExplorerでADODB.Stream オブジェクトを無効にする方法
     http://www.microsoft.com/japan/security/incident/adostream.mspx

[4]  Unpatched Internet Explorer Bugs
     http://www.safecenter.net/UMBRELLAWEBV4/ie_unpatched/index.html

[5]  Internet Explorerのマイコンピュータゾーンのセキュリティ設定を強化する方法
     hhttp://support.microsoft.com/?kbid=833633



2004年6月執筆
塩月 誠人
ネットワークセキュリティコンサルタント