Internet Explorerのセキュリティホールと使用のポイントCyber Security Management 2004年4月号
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)。
このセキュリティホールを利用することにより、悪意のあるWebページは任意のスクリプトを他のドメインに属するWebページのセキュリティゾーンで実行することが可能となる。最悪のケースとしては、ローカルコンピュータゾーンでのスクリプト実行が考えられる。つまり、不正なWebページにアクセスすることを引き金として、ローカルコンピュータ上で任意のプログラムが実行させられてしまうわけだ(図1の「ドメインB」がローカルコンピュータ上のコンテンツであった場合)。 2) ドラッグ・アンド・ドロップ操作に関する脆弱性IEにはWebページ上のリンクをドラッグ・アンド・ドロップで他のウィンドウへコピーする機能があり、通常、ユーザはこの操作を意識的に行う。今回修正された脆弱性は、リンクをクリックするだけで、ユーザの意図に反して上記の一連の操作を自動的に実行するものである(図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セキュリティホール今回の修正プログラムにより、上記三つのセキュリティホールが修正されたわけだが、前述したとおり未だに修正されていないIEのセキュリティホールは多数存在する[5]。その中で主要なものを以下に示す。
1) Folder拡張子によるエクスプローラ上のアイコン偽装この問題はIEのセキュリティホールと言うよりも、アイコン表示上の仕様と言った方がよいだろう。だがユーザ心理を利用したソーシャルエンジニアリング的な攻撃を、より容易に行うことができる問題として最近報告されたため、ここで特に紹介したい。一般にWindowsでは、エクスプローラ等でファイルのアイコンを表示する際に、そのファイルの拡張子(.txt等)に関連づいたアイコンを用いて表示する。つまり拡張子が変更されれば、表示上のアイコンも変わるわけだ。図4はWindows XPのエクスプローラで、フォルダの内容を表示したものである。ここでは左からテキストファイル、HTMLファイル、フォルダの三つのアイコンが表示されているが、実はこれら三つはすべて同じ内容のHTMLファイルのコピーである。ただしそれぞれファイル拡張子が異なっている(左から.txt、.html、.folder)。同じフォルダの内容をコマンドプロンプト上で「dir」コマンドで表示した結果、およびtest3.folderの内容を「type」コマンドで表示した結果を図5に示す。
エクスプローラはデフォルトでは基本的なファイル拡張子を表示しないため、単純にエクスプローラ上に表示されるファイル名を見ただけでは拡張子が何であるかはわからない。エクスプローラの設定を変更することで、拡張子つきのファイル名を表示することはできるが、それでもよほど注意深いユーザでない限り、通常はアイコンの絵柄を信用してしまうだろう。 ここで問題になるのが.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ファイルを実行することによりさまざまなセキュリティ侵害を被る危険性がある。
3) ShowHelpによるCHMファイルの実行ShowHelpはHTMLスクリプトの中から呼ばれる、ヘルプファイル表示のためのモジュール(関数)なのだが、このShowHelp機能に問題が指摘されている。このShowHelp機能を巧みに利用することにより、ローカルのシステムディスク中に存在するCHMファイル(Windowsのコンパイルされたヘルプファイル)であればどのディレクトリにあろうと、またそのファイルにどのような拡張子が付いていようと、ヘルプファイルとして実行してしまう。CHMファイルは普通無害だが、不正な実行コードを埋め込んだCHMファイルを作成することも可能なため危険性は高い。攻撃者がこのセキュリティホールを利用するためには、何らかの方法を用いて不正なCHMファイルをユーザのコンピュータ上に転送する必要がある。この問題の報告者であるArman Nayyeri氏は、フリーで提供されるサードパーティ製のWinAmpという音楽再生ソフトが特定の拡張子を持つファイルを特定のディレクトリにコピーするという性質を利用し、CHMファイルをその拡張子でユーザのコンピュータに転送した後に攻撃するというデモを公開している[8](図7)。
セキュリティホールが組み合わさって危険度が増大さて前述のとおり、IEには修正されていないセキュリティホールが多数存在する。その中には任意のプログラムを起動してしまうものもあるが、これらは単体のセキュリティホールとしてはそれほど直接的な脅威ではない。なぜなら、そのセキュリティホールを利用するための前提条件が必要とされる場合が多いからだ。 例えば先に解説した「Shell.ApplicationによるLNKファイル作成と実行」問題や、「MHTMLリダイレクションによる任意ファイルのダウンロードと実行」、あるいは「CODEBASEを利用したローカルファイルの実行」といったものは、HTMLファイルをローカルゾーン(ローカルコンピュータ)で開いた場合でのみ有効となる。典型的なケースは、不正HTMLページをローカルコンピュータ上にコピーし、それをIEで開いた場合である。そのため、インターネットのWebサーバをアクセスすることでこれらのセキュリティホールのみを利用した攻撃を受けることは、基本的には考えられない。 しかし問題なのは、これらのさまざまなセキュリティホールが組み合わさった場合である。例えば1stCleanRCという攻撃方法[9]が公開されているが、これは次の三つのIEセキュリティホールを組み合わせている。
IEを安全に使用するためにIEに限らずソフトウェアにセキュリティホールは付き物であり、避けて通ることはできない。しかしセキュリティホールが顕在化した場合でも、次に述べるような対策を予め施しておくことにより、そのリスクを軽減させることはできる。
1) IEのゾーンセキュリティ設定を強化するIEでインターネット上のWebサーバにアクセスする場合、通常、インターネットゾーンのセキュリティ設定が適用される。インターネットゾーンのデフォルト設定は、他のゾーンよりは制限されているものの、それでも安全性より利便性が重視されており、そのため不正なWebサーバにアクセスした際にセキュリティ侵害が発生する危険性が高い。ゾーンのセキュリティ設定にはさまざまな項目があるが、特に以下の二点の設定をインターネットゾーンに適用することで、IEに対する多くの攻撃を未然に防ぐことが可能となる(図8)。
ただし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への攻撃のように利用者が意図しない不正プログラムの起動を防ぐためにも有効である。つまり一般ユーザは通常のシステムプログラムしか実行できないように設定しておくことで、不正に作成(あるいはコピー)された攻撃プログラムは起動できなくなる。もちろんシステムプログラムに対して一般ユーザが書き込めないように、ファイルシステムのアクセス権を適切に設定しなければならないことは言うまでもない。
[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月執筆 |