先月の15日、ヤフージャパンのWebメールユーザをターゲットにした、 日本語フィッシング事件が起きているのが確認された。 そこでは、Yahoo! Mailのクロスサイトスクリプティング脆弱性 (XSS脆弱性)を突いて、偽メールと見破られにくくする手口が使われていた。 さらに驚くべき仕掛けも潜んでいた。
フィッシング詐欺を防止するには、どんな事例が発生しているのかを、 具体的に包み隠さず公開して、消費者や事業者に周知していくことが必要だと 考える。丸山さんからもリクエストがあったので、 何があったのかを以下に詳細に示すことにする。
図1は、あるYahoo! Mailのユーザ宛に送られてきたフィッシングメールである。 実物を受信した方から転送して頂いたものを、自分で自分のYahoo! Mail アカウントに送信したもので、Subject:が「TEST」になっているのは、転送の ときに付け替えたものだ。オリジナルのSubject:とFrom:は以下のようになっ ていた。
From: "Yahoo! JAPAN " <wallet-help@yahoo.co.jp> Subject: Yahoo! JAPAN - 有料コンテンツご利用停止に関するお知らせ
ここで、矢印部分にあるリンク「Yahoo!ウォレット登録情報の確認・変更」を クリックしたところ、図2の画面が現れた。
さて、これは偽サイトに設置された偽のログイン画面なのだが、これが偽だと 見抜けるだろうか?
まず、アドレスバーのURLのホスト名が、「jp.f25.mail.yahoo.co.jp」となっ ている。そして、パスワード入力欄の上には既に自分のIDが示されている。右 の方には「もし takagi_hiromistu さんではない場合は」などとも書かれてい て、もっともらしい。
偽だということは、画面の中央部分で右クリックしてプロパティを調べるとす ぐに判明する。プロパティで確認したこの画面の中央部分のURLは、
http://yahoo-com-jp.mine.nu:1649/jp/...
というものだった。
Windows XP SP2のInternet Explorerを使用しているので、アドレスバーが 偽装されているわけではないはずだ(未知の脆弱性が悪用されているのでない 限り)。
なぜこのようなこと、つまり、yahoo.co.jpドメインの画面上に偽サイトの 画面を表示させることができたのか。この画面全体のHTMLソースを見てみた (表示メニューから「ソース」)ところ、次のようになっていた。
<frameset row="*"> <frame src="http://yahoo-com-jp.mine.nu:1649/(略)&user=takagi_hiromitsu"> </frameset>
つまり、画面全域が1つのフレームになっていて、フレームとして偽サイトが 表示されているということだ。ファイルメニューからプロパティを確認すると、 「jp.f25.mail.yahoo.co.jp」となっており、アドレスバーが偽装されている わけではないことがわかる。
答えはというと、これは、メール中に書かれていたJavaScriptの実行によって 実現されていたのである。
JavaScriptを実行させられるならば、そのページのHTMLを自由に差し替えるこ とができる。たとえば、
document.write('<frameset row="*"> ...');
といった文を実行させることができれば、そのページは、フレームセットに差 し替えられることになる*1。
本来ならば、HTMLメール中に書かれたJavaScriptが実行されるようなことがあっ てはならない。なぜなら、Webメールのほとんどは、cookieによりセッション 追跡(同じ人からのアクセスであることを判別)しているため、もし、 メールに書かれたJavaScriptが実行されるなら、cookieを盗み出すことができ てしまうため、セッションハイジャック攻撃により、メールを盗み読まれる 危険があることになる。したがって、Webメールサービスのほとんどは、 JavaScript(や VBScript)が動かないように対策をしているはずである。
その対策に漏れがあって、何らかの方法でスクリプトが動いてしまうならば、 それは「クロスサイトスクリプティング脆弱性」と呼ばれる。HotmailやYahoo! Mailに、1999年ごろからたびたびセキュリティホールが発見されては 修正が繰り返されてきたのは、 そのほとんどがこのXSS脆弱性が原因であった。
「HotmailとYahooは、あらゆる手段を用いて電子メールのなかにあるスクリプトの実行を阻止しており、両サービスでは受信メッセージに含まれるHTMLコンテンツにフィルタをかけている。我々は、スクリプトを実行させるためにフィルタを回避する方法を発見した」(Dagon)
この脆弱性は、技術的にはクロスサイトスクリプトの欠陥に分類される問題だ。(略)
...(略)...
今回のヤフーをターゲットにしたフィッシングメールで使われていた、 JavaScriptを実行させる方法は、次のものだった。
<style onload="スクリプト文"></style>
スクリプト実行の防止において、「onload」に対策をするのは基本中の基本と 思われるのだが、これがフィルタリングされない穴が残っていたというのは 意外だった。
調べてみたところ、米 yahoo.com のWebメールにおいても同じ脆弱性が存在 していた。
これはまずいと思ったので、急ぎ、15日の深夜から16日にかけて、ヤフージャ パンと米Yahoo!の一般向け質問窓口に対して、この脆弱性の存在を伝えるメッ セージを送った。ヤフージャパンでは16日のうちに修正され、米Yahoo!では 数日後には修正されていた。
このフィッシング事例が巧妙だったのは、それだけではなかった。図2の画面 で、わざと間違ったパスワードを入力してみたところ、図3の画面が現れた。
10回ほど、自分のIDに対して間違ったパスワードを入れてみたところ、 10回とも「パスワードが正しくありません」というエラーになった。 そして11回目に、正しいパスワードを入れてみたところ、 図4の画面に進んだ。
こうした挙動を示したのは、偽サイトが、入力されたパスワードを本物サイト に中継送信して、パスワードが本物かどうかを確認する仕掛けになっていたと しか考えられない。
何気なくパスワードを間違えたりして、このような挙動を見た人は、正しいパ スワードを入れたとき、本物サイトにログインしている錯覚に陥るだろう。
暗証番号(セキュリティキー)には何を入れても通過するようだったが、 この後現れる画面は、図5のようになっており、 すっかり本物サイトにログインしていると錯覚した人は、疑いもなく、 これらの情報を入力してしまうのだろう。
図2〜4の画面は、本物のヤフーのサイトに実在する画面とそっくりだが、図5 のように、カードの暗証番号(ATMでのキャッシングに使用するもの)を求め る画面は存在しないようだ。冷静に考えれば、そんな情報をWebに登録するの は変なのだが、ログインしていると錯覚していれば入れてしまうのだろう。
ちなみに、図4の画面をサブフレームだけ表示させたのが図6である。偽サイト のURLで動いていることがわかる。URLのパラメータ部分には、ユーザIDと、 入力したパスワード*2が渡されているのが見える。
この事例は、その後以下のように報道された。
日本語で書かれたフィッシングメールとしては、先週、VISAをかたるものが登場 したばかりだ。これに続いて、 別のテクニックを用いた手法が登場したことになる。しかも、 Webメールのユーザーに対しHTML形式のメールを送り付けるという点で、さら に巧妙だ。
なお、Yahoo! JAPANと同様、JavaScriptを悪用され、 「それらしき」Webサイトを偽造されるという脆弱性を残したWebサイトは、 他にも存在すると考えられる。自衛手段としては、
今回のフィッシングでは、手口が悪質化している。JavaScriptを悪用し、アド レスバーには正規のYahoo! JAPANのURLを表示したままで、Webページ部分だけ を偽のページに置き換えているという。
このフィッシングの特徴は,メールで誘導した偽サイトのアドレス・バーを “偽装”すること。JavaScriptやフレームを使って,アドレス・バーにはヤフー のURLを表示させ,ページの中身にだけ偽サイトのページ(フレーム)を表示 させる。同社では詳細は明らかにしていないものの,Yahoo! Japan (Yahoo!メール)サイトの不具合を悪用しているようだ。
(略)
ヤフーによると,11月15日に上記の不具合を修正したという。このため, 現在では全く同じ手口は使えなくなっている。
(略)
ユーザーばかりではなく,サイトの開発者/運用者も注意が必要だ。 フィッシングに悪用される不具合——例えば,クロスサイト・スクリプティング の脆弱性など——がないことを改めて確認したい。
マスメディアは、今回の原因が、ヤフーのXSS脆弱性にあったということを、 ズバリ書いてはくれなかった*3。 日経IT Proの記事も、ITmediaの記事も、わかっていながらぼかして書かれて いる様子が見て取れる。とくにITmediaの記事は、本当のことを書きたくてた まらないが、クロスサイトスクリプティングという言葉だけは避けて書かれて いるように見える。
11月15日に、セキュリティホールmemo メーリングリストに、 このフィッシングにひっかかってしまったという報告が流れたことをきっかけ として、ある方が私に、フィッシングメールの実物を提供してくださったこと から、原因がXSS脆弱性にあることがわかり、 memoメーリングリストでその事実を広く伝えると同時に、ヤフーに対して 脆弱性の存在を通知した。タイミング的には、それによってヤフーが対策を とったように見える。
一方、「有料コンテンツのご利用を停止」でGoogle検索してみたところ、 2ちゃんねるの「Yahoo!オークションをかたるメールにご注意」というスレッドで、同じ文面のフィッシング メールが9月29日の時点で既に出回っていたことが記録されているのが見つかった。
8 :名無しさん(新規) :04/09/29 22:10:43 ID:fA+H10Jx きたきた!! 題名:Yahoo! JAPAN -- 有料コンテ ンツご利用停止に関するお 知らせ 発信先:wallet-support@yahoo-inc.co.jp←これ自体おかしい いつもYahoo! JAPANをご利用いただきありがとうございます。
このたび、お客様がご利用のYahoo! JAPAN 有料コンテンツのご利用 を停止させていただきましたことをご連絡いたします。 現在お客様がYahoo!ウォレットでYahoo!プレミアム会員費などのお支 払いにご利用中のクレジットカードにつきまして、カード発行会社よ り、弊社へご登録のクレジットカード情報では請求が行えないとの連 絡をいただきました。 そのため、ご利用になられていたYahoo!プレミアム会員費など、お支 払いが必要なサービスについてご利用停止処理を行わせていただきま した次第です。 なお、お客様にはご利用になられていた有料コンテンツを、再度ぜひ ご利用いただきたいと存じます。その際にはお手数ではございますが、 お客様のYahoo!ウォレット登録お支払い方法のご変更手続きをお願い いたします。 お客様のYahoo!ウォレットご登録内容の変更については、以下の確認 画面右側に表示されます「お支払い情報の変更」をクリックして表示 される画面よりお手続きいただけます。
とび先アドレスはここです。 http://yah-jp.ath.cx:1666/yahoo.co.jp/step1.php
他にも、ここ のブログの9月30日のエントリに、同じ文面のフィッシングメールの引用 とともに、次のように書かれている。
ほんと一見Yahoo!そのまんま。でさらにすごいことに、ここで間違ったパスワードを入れても認証されない!どうもパスワードが入力された際に、偽サイトのプログラムで本物のYahoo!にログインできるかチェックしているようだ。
このことからして、9月30日の時点で既に、パスワードの本物サイトへの中継 が行われていたように読める。このときからXSS脆弱性が突かれていた確証は ないが、その可能性は高いのではなかろうか。
もしそうなのならば、ヤフーは、このフィッシングメールの実物を見ることに よって、原因を突き止め、11月16日にとったのと同じ対策をとることで、 早い段階でこの詐欺をやめさせることができたのではないだろうか。INTERNET Watchの記事によれば、「千数百件の報告がヤフーに寄せられている」 といい、被害をもっと小さくできた可能性があるのではないか。
XSS脆弱性を修正せずにいると、詐欺師にナメられて、いつまでも格好の餌食 にされてしまうことになる。
最近、フィッシング詐欺に注意を呼びかける事業者が増えてきているが、
お客さまの個人情報をEメールでお伺いすることはありません。
といったフレーズがテンプレート化して、考えなしにただ同じ文章を掲載する だけで満足してしまう事業者が現れてきているように思える。
フィッシングで詐称された事業者の広報担当者からすれば、「こんなの防ぎよ うがない」と思うのかもしれない。
しかし、Yahoo! Mailの事例のように、サイトの脆弱性が突かれたことが原因 で、騙されやすい偽サイトを作られてしまう可能性があるのだから、 「防ぎようがない」で思考を止めてしまってはならない。
マスメディアは、高度な手口に対して防ぎようがないかのような印象を抱かせ る報道を避けるべきである。過去にも、ウイルスが自力で防げないものである かのような報道をして、ウイルス対策ソフトの売り上げに貢献したことが あったが、まずやるべきことは脆弱性の修正であるということを、常に基本と しておさえておくべきだ。
2000年2月にCERT/CCからCA-2000-02 として発表されたXSS脆弱性。SecurIT-Advisory 2001-001で注意を呼びかけたときは、 cookieの漏洩によるセッションハイジャックの危険性に焦点を当てて、軽微な 問題ではないことを訴えた。
その後、多くの人たちによって、この脆弱性があちこちのサイトで発見される こととなったが、cookieを使っていないサイトでは、「たいした問題ではない」 とされることが多かった。 そうしたとき、「偽の情報を本物ドメインの画面に表示させられる」という 危険性があると訴えられていたが、「そんな罠をしかける人、本当にいるの?」 とか、「そんな罠に騙される人いるの?」という反応が少なくなかった。
しかし、図らずも、「フィッシング詐欺」という名前まで付く攻撃手法が 蔓延してしまい、そのときの危惧が現実のものとなってしまった。
クロスサイトスクリプティングは、フィッシング詐欺に悪用される脆弱性であり、 顧客をフィッシング詐欺から守りたい事業者が自社のサイトから排除せねば ならない脆弱性である。このことを広く周知するべきであろう。
今回の件があきらかになる少し前に、次の報道が出ていた。
記事中には「検索スクリプトの欠陥を悪用」「検索スクリプトの脆弱性を悪用」 「検索サーバの脆弱性」とあるが、これは、検索のキーワード入力欄に存在す るクロスサイトスクリプティング脆弱性のことを言っているのだと思われる。
イーバンク銀行がフィッシング詐欺対策と銘打って導入したキーワード確認 機能が、対策になっていないことは、10月11日の日記「素人がやってはいけないセキュリティの「大発明」」で書いた。
つまり、イーバンク銀行のこのシステムは、パスワードの前半分だけを入力し たときに、自分だけが知っているはずのキーワードが画面に現れれば、「本物 サイトだと信じてよい」という趣旨なのだが、偽サイトが、入力されたパスワー ドを本物サイトに中継するようになっていたら、偽サイト上にキーワードが 表示されてしまうだろうというものだった。
今回の、Yahoo! Mailで起きたフィッシングの事例では、まさに、入力した パスワードを本物サイトに中継することによって、本物のログイン画面である かのような信憑性を作り出していた。間違ったパスワードで入れず、正しい パスワードで入れたからといって、本物サイトとは限らないのである。
このような事実があるのだから、イーバンク銀行のキーワード確認機能を普段 から使わせることは、騙されやすい消費者を育成することになりかねない。
今回の事例の原因がはっきりするより前の段階で、ヤフーは「Yahoo! JAPAN IDとパ スワードを不正に盗み取る悪質なメールに関するご注意」という文書を 出していたのだが、この文書があまりにも拙すぎた。
■「有料コンテンツご利用停止に関するお知らせ」
このメールには個人情報と取得する悪質なウェブページが記載されております。
悪質なウェブページのURL:
http://edit.payment.yahoo.co.jp/config/wallet_confirm
と書かれているのだが、そのURLは、本物のヤフーサイトに実在するアドレス じゃないか。
そのアドレスにジャンプするかのように装って、違うところへアクセスさせて いるのに、「悪質なウェブページのURL」としてそれを書いてどうするのだ?
ようするに、過去の別の注意文の
Yahoo! JAPANのページを騙り、お客様のYahoo! JAPAN IDとパスワードを不正に盗み取る悪質なウェブページが報告されました。
該当の悪質なウェブページのURLは次のとおりです。
Yahoo! JAPANとは無関係の悪質なウェブページ
http://free.frss1.net/‾auction/yahoo/
をテンプレートにして、URLのところだけ書き換えたわけだ。
惰性で仕事をしているか、そうでなければ、本当に何もわからない素人さんが 書いたとしか思えない。
また、ヤフーは、これまでにフィッシングに対する注意文を多数掲載してき ているが、いずれにも日付が書かれていないので、今起きている話なのか、 既に終わった話になっているのかが判別できない。 日付を書かない理由がわからないのだが、何か意味があるのだろうか。
一方、イーバンク銀行では、別のフィッシング事例が発生していた。
今回のメールは、件名が「イーバンク銀行からのお知らせ[入金がありました]」となっており、テキスト形式で送信される。同銀行では、メールアドレスを登録している利用者に対し、入金時や出金時などに通知メールを送信しているが、今回のフィッシング詐欺メールは実際に入金時に送られるメールと同じ件名が使われていた。
メール内にはURLが記載されており、そこにアクセスするとログイン画面が表示され、支店番号・口座番号・ログインパスワードの入力が促され、さらに「システム上の確認」と称して暗証番号を入力させようとする。メールアドレスやメール記載のURLがイーバンク銀行のものではなかったほか、同銀行はメールからログインパスワード・暗証番号を入力させるようなことはしていないという。
イーバンク銀行では、「そもそも、利用者のログインパスワードや暗証番号 をメールで尋ねることはしていない」。その上で、フィッシング詐欺メールに 騙されないようにするには、「不審なメールに記載されたURLを直接クリック するのではなく、あらかじめお気に入りなどに登録したイーバンク銀行のWeb サイトからアクセスすること」などを利用者側の対策として挙げた。
しかし、イーバンク銀行から「メルマネ」で送金があると、次のようなメール が来る仕組みになっている。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ タカギ ヒロミツ様 (takagi@mail1.accsnet.ne.jp) から 送金がありました。 (No.20040921XXXXXXXXXXXX-XXX)
送金内容:送金のテスト 送金日時: 2004/09/21 XX:XX:XX ※送金の受取手続きは45日以内に行ってください。 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ (略) ▼▼ タカギ ヒロミツ様からの送金の受取手続きは 下記URLを押してください ▼▼ http://merumane.ebank.co.jp/ebk/ebs?RECV=OK&ESCROW_NUM=20040921XXXXXXXXXXXX (以下略)
これでも、「メールからログインパスワード・暗証番号を入力させるようなこ とはしていない」というのだろうか。
やはり、こういうサービスを提供するのなら、通知メールにS/MIME署名するよ うにするしかないだろう。