Internet Explorer 6のセキュリティホールが報告されている。悪用が簡単にでき、危険性の高いセキュリティホールなので、INTERNET Watchでもニュースとしてすでに掲載されているが、何がどう危険なのか、防ぐにはどうすればいいかを、改めてここで解説しておきたい。
利用が簡単なInternet Explorerのアドレス詐称
先週11日の記事にあるように、デンマークのセキュリティ企業Secunia社が9日、Internet Explorer(IE)6に、アドレス欄に表示されるURLを偽装できる脆弱性を発表した。
◇IEにURLを偽装できるパッチ未公開の脆弱性が発見される
http://internet.watch.impress.co.jp/cda/news/2003/12/11/1451.html
では、上の記事中にあるように、Internet Explorerのアドレス欄で以下のようなURLを指定してみよう。
http://www.mdn.co.jp%01@www.impress.co.jp/
|
実際に表示されるのは「http://www.impress.co.jp/」なのにも関わらず、Internet Explorerのアドレス欄には「http://www.mdn.co.jp」を表示してしまう。
|
今回、発表されたIEのバグを検証した例。ページの内容は「www.impress.co.jp」だが、アドレス欄には「http://www.mdn.co.jp」と別のサイトが表示されてしまう
|
ただし、上の例でURL中「%01」と記述した部分は、実際に「%」「0」「1」の3文字で書くのではなく、キャラクタ番号01番にあたる制御用の文字(コントロールコード)を示す。
コンピュータで表示される文字には、1文字1文字に「キャラクタ番号」と呼ばれる番号が振られている。ASCII文字の場合、0番から1F番までは、文字を削除したり、カーソルを動かしたり……といったコントロールコードに割り振られている。
そのため、Internet Explorerのアドレス欄に直接キーボードからこの制御コードを入力するのは難しいが、たとえば、制御コードをキーボードから入力できるテキストエディタ(秀丸など)で以下のように入力し、これをInternet Explorerのアドレス欄にコピーすることで、この問題が再現できる。
(編集部注:日本ネットワークアソシエイツ社のウイルス対策ソフト「NAI VirusScan」の定義ファイル「NAI VirusScanのウイルス定義ファイル4311以降」を利用している場合、上記の問題を再現するとウイルスとして検出される可能性がございますので、あらかじめご了承ください)
◇NAC、ウイルス対策ソフトでIEのURLを偽装できる脆弱性に対応
http://internet.watch.impress.co.jp/cda/news/2004/01/05/1649.html
この現象はリンク先として指定されていた場合も同様に再現できる。たとえば、上の行の「http://www.mdn.co.jp^A@www.impress.co.jp/」と書かれた部分をクリックすると、「http://www.impress.co.jp/」のページを表示しながら、アドレス欄には「http://www.mdn.co.jp」を表示するという現象が確認できるはずだ。
(編集部注:上の例および本文中では、コントロールコードがHTMLページにそのまま表示できないため、「^」および「A」の2文字をコントロールコードの代わりに表示しています。このため、文字列をコピー&ペーストしていただいても上記通りには動作しませんが、リンクはコントロールコードで設定してありますので、リンクをクリックしていただければご確認いただけます。)
また、このバグでは、Internet Explorer内で表示されたページ内のリンクでジャンプした時だけでなく、たとえばメーラー(Outlook、Outlook Expressや、その他のメーラー)を利用したとき、メール中にあるリンクをクリックして、ブラウザにページを表示させても同じことが起こる。
JavaScriptの併用で見分けがつかない偽装も可能
WebのブラウズとメールでURLの偽装が可能となるこの脆弱性に関して、さらに危険なのは、JavaScriptも併用された場合だ。
実は、リンク内に偽装用のアドレスを埋め込んでも、ブラウザ下部のステータスバーには、本来リンク中に指定したURLそのもの(上の例では、「http://www.mdn.co.jp @www.impress.co.jp/」)が表示される。
しかし、擬装用のURLをリンク先に指定して、さらにJavaScriptを使って、ステータスバーに偽装したいアドレスを表示するスクリプトをリンクを指定する部分に書き加えてしまうと、ステータスバーの偽装までできてしまうのだ。
ちなみに、これまでに紹介した方法でアドレスを詐称しても、表示した先のページにおいて「ページのプロパティ」でアドレスを確認した場合には、「http://~%01@~」の@以前も含めたすべてのURLが表示されるため、アドレス詐称を見破ることができる。しかし、このプロパティの確認においても、URLの@以前にNULL文字を現すコード(%00)を利用すると、それ以降が表示されないというバグが発見されている。つまり、URLを「http://~%00%01@~」とすると、プロパティ表示も詐称できてしまうのだ。したがって、(%00)を悪用された場合には、プロパティの確認においてもアドレス詐取を見破ることができないことになる。
なお、アドレス欄に「@」が入る表現は、よくユーザー名、パスワードを要求するページアクセスなどに利用されている。たとえば、「http://user:password@host.domain」という形式でURLを記入した場合、そのユーザー名(user)、パスワード(password)で、「host.domain」というサーバーに、httpという転送方法でアクセスする、というのがブラウザとしては正しい動作だ。もちろん、このようなURLを入力してWebページをブラウザで表示させたときには、アドレス欄には「@」までの部分は削除されて、以下のように表示されるのが正しい。
サイト詐称で、このような悪用が考えられる
この脆弱性は、Internet Explorerのアドレス欄に、前述のような文字列を入れるとブラウザが誤動作するというバグで、悪用するために特に攻撃コード(exploit code)などは必要ない。したがって、攻撃コードが発見されていないから危険性はさほど高くない、とは言えないのだ。
筆者がこのサイト詐称が可能な脆弱性の悪用を懸念するのは、最近話題になっている、メールによる「ポータルサイトやオークションサイトなどのサポートを騙った、IDやクレジットカード番号詐取」だ。
たとえば、イギリスのオークションユーザー向け情報サイト「MILLERSMILES」では、eBayのサポートを騙って「クレジットカードの認証ができない、ユーザーIDとパスワードを再度入力してほしい」というメールを送りつける、という詐欺が最近横行しているという記事が掲載されている。
|
MILLERSMILESに掲載されていたeBayを騙るID詐取サイトの画面。本来のサイトそっくりの体裁で、IDパスワードやカード番号の詐取を狙う
|
この記事で取り上げられている問題のメールは、メールソフトで「https://scgi.ebay.com」をクリックすると、セキュリティ保護された本物のebayサイトへジャンプして情報を入力できるかのように見える。しかし実際には、このメールはHTML形式のメールになっていて、このリンク先の部分には「http://211.33.209.145:4972/」と全く関係のないアドレスが指定されているというものだ。
飛び先の「http://211.33.209.145:4972/」には、MILLERSMILESの記事にあるように、eBayそっくりの画像と本人のID、パスワード、氏名、クレジットカード番号を入力するフォームがあるのだが、ここでこれらの情報を入力してしまうと、この悪意の詐取ページ作者に、入力した情報が渡ってしまうことになるのだ(そして、おそらくeBayや他のサイトでIDやカード番号を悪用されてしまうなどの損害を被ることになるだろう)。
このカードID詐取サイトのケースでは、最大の弱点はメール内に「ebay.com」というアドレスが指定されているのに、実際にメール内のリンクからページを表示させると、ブラウザのアドレス欄にはID詐取サイトの「211.33.209.145」といった怪しげなアドレスが表示されてしまい、ここでURL詐称を見破ることが可能だった。
今回のInternet Explorerのバグが問題なのは、このような詐欺にこのバグが悪用されると、これまでは有効だった「アドレス欄を一見して詐欺を見破る」という方法が通用しなくなってしまう点だ。
今回発表されたURL詐称可能な脆弱性が悪用された結果、URL詐称サイトにおいて、アドレス欄にはオークションサイトやポータルサイトのアドレスが表示され、ページのプロパティをチェックしてもURL詐称が見破れないということになると、かなり危険な状況と言わざるを得ないだろう。
悪用を見分けるには
この手のバグの悪用の被害に遭わないためには、用心深く対処するしかないだろう。
たとえば、セキュリティ保護されたサイトを詐称するサイトの場合、詐称サイトではセキュリティ保護されていないとしたら、詐称サイトではセキュリティ保護を表わす「鍵のアイコン」がブラウザに表示されないので、そこを確認してみるという手もある。
また、ブラウザで詐称アドレスが表示されていても、JavaScriptなどからは今現在どのサーバーのページを見ているかが正確にわかるようだ。そこで、表示しているページが怪しいと思ったら、ブラウザのアドレス欄に以下のように入力してみるのもひとつの手段だろう。
javascript:document.domain
|
冒頭で挙げた例でも、「javascript:document.domain」とアドレス欄に入力してみると、アドレス欄に表示されている「www.mdn.co.jp」ではなく、本当に現在見ている「www.impress.co.jp」がアドレス欄ではなく、HTMLページ表示部分に表示される。
|
IEのアドレス欄に「javascript:document.domain」と入力すると、現在閲覧しているページの本当のサーバー名が表示される
|
「javascript:document.domain」をお気に入り(ブックマーク)に入れておき、どこかページを表示したときに「?」と思ったら、このお気に入りを呼び出すのが手軽でいいだろう。ただし、これをお気に入りに登録しようとすると、「追加しようとしているお気に入りは、安全でない可能性があります。続行しますか?」という確認ウィンドウが出るので、これが気になる人はIMEに単語登録してもいいだろう。
さて、上でご紹介したような回避手段があるにしても、このセキュリティホールに関するパッチがリリースされるまでは、「現在、Internet Explorer(特にIE6)にはバグがある」という認識をもって慎重に行動してほしい。怪しげなリンクはクリックしない、お金が絡む個人情報などを入力しなければならないときは慎重に行なうなど、常に意識しておくべきだろう。
上でご紹介した以外の対処方法としては、Secunia社からの解決法にあるように、プロキシサーバーを利用していて、設定でアクセス制限を加えることが可能ならば「URLに制御コードが含まれている時はアクセスを無効にする」などの処置ができるといいかもしれない。
ちなみに、アクセス制限としては、Internet Explorerユーザーなら誰でも使えるものに「制限つきサイト」を設定する方法がある。しかしこの場合、入力欄に制御コードを入力すると化けてしまうという制約があるようで、筆者が試した範囲では利用できなかった。
なお、原稿執筆中にマイクロソフトから筆者が紹介した方法とほぼ同様の「なりすまし回避策」が発表された。こちらもあわせて確認してほしい。
■URL
成りすました Web サイトか見分ける手順について(マイクロソフト)
http://support.microsoft.com/?id=833786
・ MS、IEのURLを偽装できる脆弱性の回避策を公開、ただしパッチは未提供(2003/12/17)
( 大和 哲 )
2003/12/16 18:14
- ページの先頭へ-
|