Internet Explorerのセキュリティホールと使用のポイント


Cyber Security Management 2004年4月号


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




Internet Explorer(以下、IEという)は、マイクロソフト社製のWebブラウザソフトウェアである。Windows製品に標準で組み込まれていることもあり、各種のWebブラウザシェア調査結果を見ても、最近のIEのシェアはダントツ(90%以上)の数字を示している。このように非常にポピュラーなIEであるが、過去に報告されたセキュリティホールの数も半端ではない。もちろんマイクロソフト社はそのようなセキュリティホールに対して、セキュリティパッチを提供することにより、IEのセキュリティ問題の修正を日々行ってきているが、必ずしもそのすべてが修正されているわけではなく、IEをより安全に使い続けるためにはそれなりの心構えが必要とされる。

今回は今年の2月に修正されたIEのセキュリティホール、および、本稿執筆時点で未だ修正されていないいくつかのIEセキュリティホールを解説するとともに、IEを安全に使用するためのポイントを紹介しよう。




MS04-004で修正されたセキュリティホール


マイクロソフト社は今年の2月、IEの累積的なセキュリティ修正プログラム(MS04-004)を発行した[1]。このセキュリティ修正プログラム(いわゆるセキュリティパッチ)は、過去に発行したIEに関するパッチすべてを累積的に含み、かつ、今まで修正されていなかった以下の三つのIEセキュリティホールのパッチを含んだものである。

    1) クロスドメイン・セキュリティモデルに関する脆弱性

    IEは、異なるドメインのウィンドウが相互に情報を共有したり、干渉したりすることができないように設計されている。このセキュリティモデルにより、悪意のあるWebページが他のWebページとの通信に干渉したり、クッキー情報を取得したりすることを防いでいるわけだが、今回修正されたセキュリティホールの一つは、このクロスドメイン・セキュリティモデルを回避できる脆弱性である[2](図1)。


    図1 クロスドメイン・セキュリティモデルを回避して、他のドメインのWebページにスクリプトを挿入・実行する


    このセキュリティホールを利用することにより、悪意のあるWebページは任意のスクリプトを他のドメインに属するWebページのセキュリティゾーンで実行することが可能となる。最悪のケースとしては、ローカルコンピュータゾーンでのスクリプト実行が考えられる。つまり、不正なWebページにアクセスすることを引き金として、ローカルコンピュータ上で任意のプログラムが実行させられてしまうわけだ(図1の「ドメインB」がローカルコンピュータ上のコンテンツであった場合)。

    2) ドラッグ・アンド・ドロップ操作に関する脆弱性

    IEにはWebページ上のリンクをドラッグ・アンド・ドロップで他のウィンドウへコピーする機能があり、通常、ユーザはこの操作を意識的に行う。今回修正された脆弱性は、リンクをクリックするだけで、ユーザの意図に反して上記の一連の操作を自動的に実行するものである(図2)。


    図2 ドラッグ・アンド・ドロップを自動的に実行することで、不正なコードをローカルディスクにコピー


    このセキュリティホールの報告者のWebサイト[3]では、脆弱性を利用して「お気に入り」にリンクを追加するデモWebページを公開しているが、マイクロソフトによるとこの脆弱性により任意の不正コードをユーザのコンピュータへコピーすることができるとのことである。例えば不正なWebページにアクセスし、リンクをクリックすることで、「スタートアップ」フォルダに悪意のあるコードをコピーさせられてしまうことも考えられる。「スタートアップ」フォルダ内のファイルはユーザログオン時に自動実行するため、このような不正コードが勝手に起動してしまう可能性もある。

    3) URLの不適切な解析に関する脆弱性

    一般的にWebアクセスにおけるURLは、以下のようにユーザ名(username)およびパスワード(password)を含むことが許されている。

      http://username:password@hostname.domain
      
    ここで指定したユーザ名やパスワードは、Webサーバに対する認証情報としてWebブラウザに利用されるのだが、この「username:password@」の部分に不正なコードを与えることにより、IEのアドレスバー等に誤ったURL情報が表示されるというのがこのセキュリティホールである[4]。

    例えば次のような記述があるWebページにIEでアクセスしたとしよう。

    このリンクをクリックすると、IEのアドレスバーやプロパティの表示上はあたかもwww.microsoft.comにアクセスしているように見えるが、実は192.168.183.130というホストにアクセスしている(図3)。このように見かけ上、別のサイトにアクセスしているように見せかけることをサイト・スプーフィングあるいはURLスプーフィングと呼ぶ。ユーザの秘密情報(認証情報、個人情報、等)を狙う者は、自らの不正なWebサイトを信頼できるサイトのように詐称するために、このような脆弱性を利用する場合があるので注意が必要とされる。


    図3 www.microsoft.comに見せかけたWebサイト。アドレスバーのURLが詐称されている





未だに修正されていないIEセキュリティホール


今回の修正プログラムにより、上記三つのセキュリティホールが修正されたわけだが、前述したとおり未だに修正されていないIEのセキュリティホールは多数存在する[5]。その中で主要なものを以下に示す。

  • Folder拡張子によるエクスプローラ上のアイコン偽装
  • Shell.ApplicationによるLNKファイル作成と実行
  • ShowHelpによるCHMファイルの実行
  • 不正なContentTypeによるキャッシュディレクトリパスの暴露
  • MHTMLリダイレクションによる任意ファイルのダウンロードと実行
  • MHTMLリダイレクションによるローカルファイルのパース
  • CODEBASEを利用したローカルファイルの実行
  • ADODB.Streamによるローカルファイル書き込み
  • NOTEPAD.EXE書き換えによるview-sourceでの任意プログラム実行
  • IEキャッシュディレクトリにおけるローカルゾーン適用
  • RedirectionとRefreshによるローカルファイルのパース
ここではこれらの内から三つを取り上げ、簡単に解説しよう。

    1) Folder拡張子によるエクスプローラ上のアイコン偽装

    この問題はIEのセキュリティホールと言うよりも、アイコン表示上の仕様と言った方がよいだろう。だがユーザ心理を利用したソーシャルエンジニアリング的な攻撃を、より容易に行うことができる問題として最近報告されたため、ここで特に紹介したい。

    一般にWindowsでは、エクスプローラ等でファイルのアイコンを表示する際に、そのファイルの拡張子(.txt等)に関連づいたアイコンを用いて表示する。つまり拡張子が変更されれば、表示上のアイコンも変わるわけだ。図4はWindows XPのエクスプローラで、フォルダの内容を表示したものである。ここでは左からテキストファイル、HTMLファイル、フォルダの三つのアイコンが表示されているが、実はこれら三つはすべて同じ内容のHTMLファイルのコピーである。ただしそれぞれファイル拡張子が異なっている(左から.txt、.html、.folder)。同じフォルダの内容をコマンドプロンプト上で「dir」コマンドで表示した結果、およびtest3.folderの内容を「type」コマンドで表示した結果を図5に示す。


    図4 3つの異なるアイコンだが、中身はいずれも同じHTMLファイル


    図5 各ファイルの拡張子、およびtest3.folderファイルの内容


    エクスプローラはデフォルトでは基本的なファイル拡張子を表示しないため、単純にエクスプローラ上に表示されるファイル名を見ただけでは拡張子が何であるかはわからない。エクスプローラの設定を変更することで、拡張子つきのファイル名を表示することはできるが、それでもよほど注意深いユーザでない限り、通常はアイコンの絵柄を信用してしまうだろう。

    ここで問題になるのが.folder拡張子を持つファイルである。見た目のアイコンは「フォルダ」なのだが、前述のとおり中身は「HTMLファイル」からなっており、そのためこのアイコンをダブルクリックすると、Windows XPはこれをHTMLファイルとして処理する。つまりIEが起動してファイルの内容を通常のWebページのように表示するわけだ。ローカルディスクに保存されているHTMLファイルを実行(IEで表示)することは、実は非常に大きな危険性を含んでいる。例えば攻撃者がメールの添付ファイルで送ってきた、.folder拡張子を持つ不正なHTMLファイルを、フォルダと勘違いしてダブルクリックしてしまった場合、IEがその不正なHTMLファイルを処理することによりPC上でさまざまなセキュリティ侵害が発生することになる[6]。

    2) Shell.ApplicationによるLNKファイル作成と実行

    このセキュリティホールは、不正に記述されたHTMLファイルをローカルディスク上でオープンした際に、任意のプログラムを起動することができてしまうものだ。IEはHTML文に書かれたスクリプト(VBScriptやJavaScript)を処理する機能があるが、そのスクリプトの中でShell.Applicationオブジェクト(Windowsのシェル)を作成することにより、既存のショートカットファイル(.lnk拡張子のファイル)を自動的に編集、別ショートカットとして保存し、それを実行することができる。

    このセキュリティホールを報告したhttp-equiv氏が公開しているデモHTMLページ[7]では、ショートカットのリンク先にmshta.exeというローカルディスク上に標準的に存在するプログラムを指定し、その引数としてリモートWebサイトのHTAファイルを指し示すURLを与えている(図6)。このショートカットが自動的に実行されることで、リモートWebサイト上の悪意のあるHTAファイルがダウンロードされ、起動してしまうわけだ。ちなみにHTAとはHTMLアプリケーション(HTMLで記述されたスタンドアローンプログラム)のことで、中身はHTMLで記述されているのだが実行時にブラウザのセキュリティ設定による制限を受けないため、不正なHTAファイルを実行することによりさまざまなセキュリティ侵害を被る危険性がある。


    図6 攻撃により作成されたリンクファイルのプロパティ。リンク先にmshta.exeおよびリモートホストのHTAファイルが指定されている


    3) ShowHelpによるCHMファイルの実行

    ShowHelpはHTMLスクリプトの中から呼ばれる、ヘルプファイル表示のためのモジュール(関数)なのだが、このShowHelp機能に問題が指摘されている。このShowHelp機能を巧みに利用することにより、ローカルのシステムディスク中に存在するCHMファイル(Windowsのコンパイルされたヘルプファイル)であればどのディレクトリにあろうと、またそのファイルにどのような拡張子が付いていようと、ヘルプファイルとして実行してしまう。CHMファイルは普通無害だが、不正な実行コードを埋め込んだCHMファイルを作成することも可能なため危険性は高い。

    攻撃者がこのセキュリティホールを利用するためには、何らかの方法を用いて不正なCHMファイルをユーザのコンピュータ上に転送する必要がある。この問題の報告者であるArman Nayyeri氏は、フリーで提供されるサードパーティ製のWinAmpという音楽再生ソフトが特定の拡張子を持つファイルを特定のディレクトリにコピーするという性質を利用し、CHMファイルをその拡張子でユーザのコンピュータに転送した後に攻撃するというデモを公開している[8](図7)。


    図7 ShowHelp攻撃のデモページ。「Go!」をクリックすると攻撃が始まるが、成功するとNotepad.exeが書き換わるので注意が必要





セキュリティホールが組み合わさって危険度が増大


さて前述のとおり、IEには修正されていないセキュリティホールが多数存在する。その中には任意のプログラムを起動してしまうものもあるが、これらは単体のセキュリティホールとしてはそれほど直接的な脅威ではない。なぜなら、そのセキュリティホールを利用するための前提条件が必要とされる場合が多いからだ。

例えば先に解説した「Shell.ApplicationによるLNKファイル作成と実行」問題や、「MHTMLリダイレクションによる任意ファイルのダウンロードと実行」、あるいは「CODEBASEを利用したローカルファイルの実行」といったものは、HTMLファイルをローカルゾーン(ローカルコンピュータ)で開いた場合でのみ有効となる。典型的なケースは、不正HTMLページをローカルコンピュータ上にコピーし、それをIEで開いた場合である。そのため、インターネットのWebサーバをアクセスすることでこれらのセキュリティホールのみを利用した攻撃を受けることは、基本的には考えられない。

しかし問題なのは、これらのさまざまなセキュリティホールが組み合わさった場合である。例えば1stCleanRCという攻撃方法[9]が公開されているが、これは次の三つのIEセキュリティホールを組み合わせている。

  • MHTMLリダイレクションによるローカルファイルのパース
  • クロスドメイン・セキュリティモデルに関する脆弱性
  • MHTMLリダイレクションによる任意ファイルのダウンロードと実行
このように性質の異なるセキュリティホールを巧みに組み合わせることにより、インターネット上にある不正Webサーバにアクセスするだけで任意のプログラムが実行するような攻撃を行うことが可能となる。先に述べたとおり、上記のクロスドメイン脆弱性は今回修正されたため、最新のパッチが適用された環境ではこの1stCleanRC攻撃が成功することはない。だが今後、新たなクロスドメイン問題が発生した際に、それを組み合わせて同じような攻撃が行われることは、容易に想像される。さらにこの後、単体でプログラム実行を引き起こすような重大なセキュリティホールが発生しないと、誰が言い切れよう。




IEを安全に使用するために


IEに限らずソフトウェアにセキュリティホールは付き物であり、避けて通ることはできない。しかしセキュリティホールが顕在化した場合でも、次に述べるような対策を予め施しておくことにより、そのリスクを軽減させることはできる。

    1) IEのゾーンセキュリティ設定を強化する

    IEでインターネット上のWebサーバにアクセスする場合、通常、インターネットゾーンのセキュリティ設定が適用される。インターネットゾーンのデフォルト設定は、他のゾーンよりは制限されているものの、それでも安全性より利便性が重視されており、そのため不正なWebサーバにアクセスした際にセキュリティ侵害が発生する危険性が高い。ゾーンのセキュリティ設定にはさまざまな項目があるが、特に以下の二点の設定をインターネットゾーンに適用することで、IEに対する多くの攻撃を未然に防ぐことが可能となる(図8)。

    • ActiveXコントロールとプラグインの実行 → ダイアログを表示する
    • アクティブスクリプト → 無効にする

    図8 IEのインターネットゾーンセキュリティで、各種スクリプト機能を無効に設定する


    ただしWebサイトによっては、この設定を行うことで正しく表示されなくなる場合がある。そのようなWebサイトは、十分信頼できるサイトであることを確認した後、よりセキュリティ設定の緩いゾーン(例えば「信頼済みサイトゾーン」)に明示的に登録すればよい。

    2) 権限の少ないユーザでログオンして使用する

    日常的にシステム管理者権限でログオンしてPCを使用している人は意外と多いが、これは非常に危険である。そのような環境下でIEのセキュリティホールにより不正なプログラムが実行した際、この不正プログラムはシステム管理者権限で動作を行うため、システムに対する影響が大きくなってしまうからだ。また基本的にシステム管理者権限を持つユーザでないと成功しないような攻撃も存在する。そのような攻撃から身を守り、影響を最小限に抑えるためには、日ごろから権限の少ないユーザ(一般ユーザ)でログオンして操作することが重要である。もちろんそれにはWindows 2000やXPのような、適切なユーザ管理が可能なOSを使用することが前提となる。

    3) ファイルシステムのアクセス権設定を強化する

    IEに対する攻撃では、何らかの手法を用いて不正なファイルをローカルコンピュータ上に作成させ、さらにそれを実行させるケースが多い。このような攻撃は、ローカルコンピュータ上でファイルが作成できないと失敗する。つまりログオンユーザの権限で書き込めるディレクトリを限定することにより、IEへの攻撃をある程度防ぐことができるわけだ。

    Windows 2000以降、ディレクトリやファイルに対するアクセス権のデフォルト設定はかなり改善されたが、Windows 2000ではシステムドライブのルートディレクトリ(通常はC:\)のアクセス権がデフォルトで「Everyone:フルコントロール」、すなわち誰でも読み書きできるようになっている。この場所は不正ファイル作成に利用されやすいので、システム管理者以外は書き込めないように設定しておくべきだろう。またシステムインストールの方法によっては、デフォルトのアクセス権が設定されていない場合もあることを注意されたい。

    4) 「ソフトウェア制限のポリシー」を有効に使う(XP)

    Windows XP以降、「ソフトウェア制限のポリシー」という機能が導入された(図9)。これはシステム管理上、コンピュータの利用者がよからぬプログラムを実行することを制限したい場合に用いられる機能である[10]が、それと同時に、IEへの攻撃のように利用者が意図しない不正プログラムの起動を防ぐためにも有効である。つまり一般ユーザは通常のシステムプログラムしか実行できないように設定しておくことで、不正に作成(あるいはコピー)された攻撃プログラムは起動できなくなる。もちろんシステムプログラムに対して一般ユーザが書き込めないように、ファイルシステムのアクセス権を適切に設定しなければならないことは言うまでもない。


    図9 Windows XPの「ソフトウェア制限のポリシー」の設定ウィンドウ


ここで述べたセキュリティ対策は、完璧ではないものの、IEのセキュリティホールを利用した攻撃に対して非常に有効である。セキュリティパッチの適用や、ウイルススキャンといった他のセキュリティ対策と併せて、これらの対策を実施することをお勧めしたい。



[1]  Internet Explorer用の累積的なセキュリティ修正プログラム(MS04-004)
     http://www.microsoft.com/japan/technet/security/bulletin/MS04-004.asp

[2]  BackToFramedJpu - a successor of BackToJpu attack
     http://www.safecenter.net/UMBRELLAWEBV4/BackToFramedJpu/BackToFramedJpu-Content.htm

[3]  HijackClickV2 - a successor of HijackClick attack
     http://www.safecenter.net/UMBRELLAWEBV4/HijackClickV2/HijackClickV2-Content.htm

[4]  Internet Explorer URL parsing vulnerability
     http://www.securityfocus.com/archive/1/346948

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

[6]  Self-Executing FOLDERS: Windows XP Explorer Part V
     http://www.securityfocus.com/archive/1/351234

[7]  exe-cute-html.zip
     http://www.malware.com/exe-cute-html.zip

[8]  IE 5.x-6.0 allows executing arbitrary programs using showHelp()
     http://www.freewebs.com/arman2/showamp.htm

[9]  1stCleanRC
     http://www.safecenter.net/UMBRELLAWEBV4/1stCleanRc/1stCleanRc-Content.htm

[10] 特集「社内不正ユーザ撃退法」
     http://www.st.rim.or.jp/~shio/wsvworld/maluser/


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