水無月ばけらのえび日記

bakera.jp > 水無月ばけらのえび日記 > XSS大王Q&A

XSS大王Q&A

2003年6月25日(水曜日)

XSS大王Q&A

更新: 2003年6月27日

各所で話題になっているようですが、それなりに勘違いされている人もいるようなので、 Q&A を少し。何のことか分からない方は日経 BP の「ITPro ニュース:@niftyの電子掲示板に「クロスサイト・スクリプティングぜい弱性」,緊急メンテナンスを実施 (itpro.nikkeibp.co.jp)」を読んだ上で、話題「ニフティ」を含むえび日記を一通り読んでみてください。

Q1. この脆弱性を利用できるのはニフティ会員だけなんだろ?

NO。マネジャーなどから「ログインした人だけにしか悪用できないので、悪用されても発覚する」という説明がなされていることもあるようですが、それは違います。そもそも、内部の書き込みによる XSS は多数ある問題のうちのひとつに過ぎません。また、掲示板によってはログインしないで書き込みできるものも存在していました。日経 BP の記事にもそのような誤解を招く書き方がありますが、ニフティ会員にしか悪用できない性質のものではないのです。

特に今回のケースでは、問題が一点だけではないことに注意してください。

Q2. 結局どんな脆弱性があったんだ?

当初公開されたのは以下の 4点です。

  • 検索フォームの脆弱性によるセッション Cookie 漏洩 (修正済み)
  • Webフォーラム書き込みの脆弱性によるセッション Cookie 漏洩 (タグ書き込み機能一時停止により対処、現在修正中)
  • https://com.nifty.com/forum/login.go のログインフォーム改竄による ID ・パスワード漏洩 (修正済み)
  • https://com.nifty.com/forum/login.go ログインフォームの脆弱性によるセッション Cookie漏洩 (修正済み)

セッション Cookie が漏洩すると、成りすましログインができてしまいます。誰かに成りすまして投稿したり、プロフィールを閲覧、修正したりすることができます。ID・パスワードが漏洩するとどうなるのかは、まあ説明するまでもないでしょう。

さらに、以下の問題が公になっています。これはニフティも把握していますが、対応予定は未定です。

  • セッション Cookie のドメイン設定の問題により、nifty.com 以下の任意のサイトでセッション Cookie の値を読み取れてしまう。セッション Cookie 漏洩。

また、別の様々な場所にクロスサイトスクリプティング脆弱性が存在することが報告されています。これは私が個人的につかんでいる情報で、まだ公にはなっていません。exploit コードが実際に動作することは確認しています。

※2003-06-26 追記: 私が把握したものについては全て報告済みですので、修正されることが期待されます。情報を提供してくださった方に感謝いたします。

※2003-06-27 追記: 25日に追加で報告した 3ヶ所のクロスサイトスクリプティング脆弱性は、27日のメンテナンスで修正されました。予想以上に素早い対応で、これは高く評価したいと思います。ただし、Cookie ドメインの問題はまだ残っていますので注意が必要です。

Q3. そんな捏造フォームには誰もだまされないだろ?

単に「似たようなフォームを持つページを別途作る」という話だと誤解していませんか?

クロスサイトスクリプティング脆弱性によるフォーム捏造の場合、本物と同じ URL を持ち、本物と同じ SSL の保護が付き、本物と同じサーバ証明書がついたフォームが作れます。もちろん見た目にも全く本物と同じにできます。怪しいパラメータがつくことがありますが、本物のフォームにも長いパラメータがつきますので判別は困難ですし、パラメータを隠蔽したければ POST メソッドを使って渡してやっても問題なく動作することを確認しています。正直、私はこれにだまされない自信はありません。

具体例が想像できない方は、フォームの送り先だけがひそかに改竄されている、というイメージで捉えると良いと思います。本物と全く同じところに入力して、しかしながら送り先が攻撃者のサーバというわけです。もちろん攻撃者のサーバは、ID とパスワードを記録したらちゃんと正しい場所へリダイレクトしてくれるでしょうから、ログインは成功します (失敗したってパスワード間違えたか、くらいにしか思わないでしょうが)。

※2003-06-27 追記: ログインフォームに存在していたクロスサイトスクリプティング脆弱性は、27日のメンテナンスで修正されました。私が知る限りの範囲では、この脆弱性が利用される余地はなくなりました。……あくまで、私の知る限りの範囲に限った話ですが。

Q4. サーバに侵入することはできなかったんだろ?

ええと、クロスサイトスクリプティング脆弱性の問題を理解していますか? これはそもそも侵入するとかしないとかいう問題ではありません。答えとしては YES になりますが、だからといって問題ないというわけではありません。そもそも私はサーバに侵入なんて試みてさえいませんので、そこのところ一つ。

Q5. そういうことは実際他人の ID を盗んでから言え!

私はいちおう exploit コードを実際にテストして動作確認しています。私もニフティの会員ですので、自分自身のセッション Cookie や ID、パスワードが盗めるかどうかテストしました。結果、盗めました。私はこれで十分だと思うのですが……実際に他人のを盗んでしまったら犯罪になりますんで、勘弁してください。

※……なんか、手元のログに私のテストじゃないのも残ってたりするんですが、これはテストだと信じたいなぁ。

Q6. スクリプト無効で対処できる?

残念ながら NO です。これで対処できるのなら私などは安心なのですが……。

ただし、攻撃手法によってはスクリプト無効で防ぐことができる場合もありますので、効果が全くないわけではありません。

Q7. 実際に被害は発生していないんだろ?

ニフティはそう主張しているようですが、何とも言えません。少なくともニフティには exploit の形跡が残っており、しかしながらその追跡調査は行われていません。つまり、被害が発生したかどうかについての調査は行われていないのです。

また、そもそもこれによる被害は明るみに出ない性質のものです。ひそかに個人情報が盗まれて売却されていたとして、その被害に気づきますか? 被害報告がないことをもって被害が発生していないと判断するのは早計に過ぎます。

Q8. 今は問題は修正されてるんだろ?

残念ながらされていません。前の回答と重複しますが、対応されたのは Web フォーラム内部の書き込みで、これは問題の一つに過ぎません。未対応の問題がいくつも残っています。

Q9. 俺がやってみるから exploit 教えてくれ!

やらないでください。自分でテストするだけなら良いですが、人を罠にはめると犯罪なので……。そもそも、普通の Web 制作の知識があれば、教えるまでもなく普通に思いつくと思います。って、自分で思いついても自分でテストするだけにしてくださいね。

Q10. ていうか、exploit 公開してたんでしょ?

していました。その exploit が実際に機能し、それに脅威を感じたからこそこれだけ素早く動いたのではないかと思います。そんなわけで、公開していた exploit は今は通らなくなっています。……公開していた分は、ですが。

Q11. 騒ぎすぎだろ。

ええと、まず日経 BP の記事を書いたのは私ではないので、その点ご理解ください。

それから、私が Web フォーラムに初めてログインしたのは 6月18日です。初めてログインしたときには、既に脆弱性の存在に気づいていました。ですから私などは最初から用心していたわけで、被害にはまず遭っていないだろうと思われます。特にあわてる必要もないわけです。

ただ、何も知らずに以前から Web フォーラムを利用していた方は、それは心配になるでしょう。何しろ自分の知らないうちに ID やパスワードが盗まれていて、密かに個人情報が盗まれているかも知れないわけですから。騒ぎすぎ、と言うことはないと思います。

Q12. 個人情報が盗まれたってどうってことないだろ。

そう考える人がいてもおかしくはないですね。しかし、そうは考えない人も多いはずです。ID とパスワードが盗まれると、個人情報が盗まれるだけでは済みませんしね。

Q13. システム側の対処としては入力値をサニタイズすれば OK?

クロスサイトスクリプティング脆弱性にはそれで対処できます。サニタイズが適切ならば、の話ですが。

しかし困ったことに、クロスサイトスクリプティング脆弱性とは関係のないセキュリティホールも存在しています。それは「Cookie のドメイン範囲の問題によって nifty.com 以下どこでもセッション Cookie が読める」という問題です。この問題の詳細は「XSS大王・さらなるホゥル」を参照していただきたいと思いますが、これはサニタイズの有無とは全く関係ない問題なので、すぐに修正することは難しいと思います。もちろん現時点では未修正です。

Q14. Cookieのドメイン問題が修正されているかどうかはどうすれば分かりますか?

Web フォーラム (や、@niftyコミュニティ) にログイン後に Cookie操作装置 (http://hpcgi1.nifty.com/bakera/set-cookie.cgi ※現在 NOT Found です) のようなものにアクセスしてみて、PARAMD という Cookie の値が表示されるかどうか見てください。表示されていれば、セッション Cookie は簡単に盗める状態です。

Q15. 大手がやってたから問題になっただけで、掲示板にタグが書けるなんてどこにでもある話なのでは?

どこにでもある、というご意見には同意します。クロスサイトスクリプティング脆弱性は、もういたるところに存在していて、もううんざりするほど見てきました。

ただ、今回の件で特に問題なのは、そこが会員のログインを要する場所であり、そのセッション Cookie が漏洩する問題があった点でしょう。同様に ID・パスワード漏洩の危険性もありましたが、これは @nifty のダイヤルアップ PPP 接続に使える他、もうありとあらゆることに使えてしまいます。

そんなわけで、ログイン機能を持たない掲示板とは少々事情が異なるものと思います。まあ、ログイン機能がなければ脆弱でも問題ない、というわけではないのですが……。

とりあえず、こんなところですか。

他にも質問がありましたら随時答えたいと思いますので、質問のある方はコメントとして書いてみてください。

関連する話題: Web / セキュリティ / ニフティ / XSS大王

人気のページ

最近の日記

関わった本など

デザイニングWebアクセシビリティ - アクセシブルな設計やコンテンツ制作のアプローチコーディングWebアクセシビリティ - WAI-ARIAで実現するマルチデバイス環境のWebアプリケーション体系的に学ぶ 安全なWebアプリケーションの作り方 脆弱性が生まれる原理と対策の実践ウェブの仕事力が上がる標準ガイドブック 5 WebプログラミングWeb Site Expert #13Dreamweaver プロフェッショナル・スタイル [CS3対応] (Style for professional)

その他サイト