XSS大王・さらなるホゥル
2003年6月23日(月曜日)
XSS大王・さらなるホゥル
「XSS大王」に対するコメントで y-Aki さんに指摘されて気づきましたが、Webフォーラムの Cookie には domain=.nifty.com という指定のものがあるのですね。
この Cookie は nifty.com ドメインのどこからでも読むことができてしまいます。その問題点については「SecurIT-Advisory: 2001-001 クロスサイトスクリプティング脆弱性蔓延の現状と解決策 III-7. 万が一に備えて:Cookieの有効ドメイン範囲を最小限にする (securit.etl.go.jp)」にありますが、Web フォーラムのケースでは、そこに書かれている以上に深刻な結果となります。なぜなら、このドメインの範囲には hpcgi*.nifty.com が含まれるからです。
※* は任意の自然数。実際には hpcgi1.nifty.com とか hpcgi2.nifty.com といった具合になります。
hpcgi*.nifty.com というのは、ニフティ@nifty のユーザ CGI のスペースです。つまり、ニフティ@nifty の会員であれば誰でも、hpcgi*.nifty.com に任意の CGI を置くことができます。当然、CGI には Cookie を読み取る機能を持たせることができますから、普通に Cookie を読み取ることができるのです。
実際、「Cookie操作装置 (hpcgi1.nifty.com)」という CGI を設置し、Web フォーラムログイン後にアクセスしてみたところ、Cookie の値が表示されました。実際にはこのような露骨なものである必要は全くないわけで、掲示板のスクリプトが背後でひっそり Cookie の値を取るとか、アクセスカウンターのようなものに仕込むとか、Webバグにするといった方法で、ユーザに気づかれないように Cookie の値を盗み出すことが可能です。
これはもはや、クロスサイトスクリプティング脆弱性があるとかないとかいう問題ではありません。Webフォーラムにログイン後、ブラウザを閉じずにそのまま別のサイトにアクセスすると、それだけで漏洩の危険があります。たとえば、Webフォーラムに書き込まれた URL をブラウザの URL 窓にコピーしてアクセスしても漏洩します。URL が hpcgi*.nifty.com でなくても、hpcgi*.nifty.com にリダイレクトしているかもしれませんし、hpcgi*.nifty.com の画像を参照しているだけで十分です。
はっきり言って、ユーザに自衛手段はありません。Cookie を無効にすれば漏洩は防げるでしょう。ただしその場合、Webフォーラムにログインすることもできなくなります。
困ったことに、システム側の対処も困難です。これは「nifty.com 以下全域で有効な Cookie」が必要になるようなシステム設計そのものの欠陥ですが、サイトをまたがってログイン情報を有効にするには他に方法がありません。対処するとなると、サイトのドメイン名を変更する必要があります。これは容易ではありません。
※でもニフティってころころドメイン名を変えたりするイメージがあります。意外に簡単にできたりするのかもしれません。
そんなわけで、処置なしです。結論としては、Webフォーラムには一切ログインしない、というのが唯一の対処となるでしょう。会員専用のサービスは全く利用できなくなりますが、オープンなサービスなら利用できます。この機会に「全掲示板をオープンにしてくれ」とマネジャーに要望を出してみるのも良いかも知れません。
- 「XSS大王・さらなるホゥル」へのコメント (9件)