水無月ばけらのえび日記

bakera.jp > 水無月ばけらのえび日記 > 2003年のえび日記 > 2003年6月 > 2003年6月25日(水曜日)

2003年6月25日(水曜日)

バス停にて

昨日の夜は湿度が高く、駅前には薄靄(うすもや)が立ちこめていました。そんな中での出来事。

とまあ、ここまではひたすら良くある日常の一光景ですが、この後に興味深い出来事が。

問題の人が煙草を吸い終わる前にバスが来て、列が進み始めました。それに合わせてその人も足を進めたのですが、その人、バスに乗る手前で一瞬、ピタリと硬直したのですね。その後、煙草を足下にポイと捨てて踏みにじり、何事もなかったかのようにバスに乗られました。

この硬直は何だったのか、私にはすぐ分かりました。実は少し前まで、その場所には灰皿があったのです。その人はいつも、その灰皿に煙草を捨てていたのでしょう。しかし今日はそれがなかったので一瞬戸惑い、足下に捨てたというわけです。

何故そこに灰皿がなかったのかというと、それは健康増進法に伴ってバス停が禁煙になったためなのですね。……なのですが、バス停には禁煙の表示も何もなくて、バスの車内にちょっと広告がでているだけだったりします。これはわかりにくい。実際、知らないで思いっきり吸っている人がいたわけで、それでは意味がありません。駅の全面禁煙はちゃんと周知されている感じですし、もっとしっかり告知すれば何とかなると思うのですが……。

そして翌日の今日。朝から土砂降りでした。降雨量が道路の排水能力を上回っているらしく、道路の脇には水がたまっていました。

私はいつも、屋根のあるバス停でバスを待ちます。当然今日も、傘をたたんでバスを待っていました。待っていたのは私を含めて 3人。

やがて、派手に水しぶきを上げて、バスが来ました。ここで微妙なのは、バス停の屋根が路上までは達していないという点です。当たり前と言えば当たり前なのですが、バスに乗るためには、屋根のない 1メートル弱の空間を通過しなければなりません。とはいえ、一歩で通過できる距離ですから、素早く通過すればわざわざ傘を開く必要もないでしょう。

まず、最初から待っていた年配の女性が駆け足で乗り込みます。間髪入れずに、もう一人女性が乗り――実は私の方が先に待っていたような気もしたのですが、こだわりません――間を置かずに私が乗り込もうとしました。その時です。

不意に、前の人が立ち止まりました。それがちょうどバスの入り口を塞ぐ形で……その時私は、問題の 1メートル弱の空間に位置していたわけで。

ぎゃー。

そのまま数秒、前の人は止まっていました。そして私も。……まあ、とりあえず、持っていた本は濡れなかったので、良しとしましょう。

で、問題は何故こうなったかなのですが、前の人も好きで止まったわけではなくて、そのさらに前の人が止まったので仕方なく立ち止まったようなのですね。では、その人はどうして止まったのかというと、バス共通カードを乗車口カードリーダーに通そうとしていたのです。

非定額料金のバスをカードで利用する場合、乗るときと降りるときに一度ずつ、カードをリーダーに通す必要があります (これは会社によって異なり、乗車時に行き先を申告して一度だけ通すタイプもあります)。降りるときのインターフェイスは電車の自動改札に似ていて、これは問題ないのですが……乗車口のカードリーダーは微妙に使いにくいのです。何と言いますか、高さをぴったり合わせて水平に挿入しないといけないのですね。これが意外に難しい。私も昔バス共通カードを使っていましたが、乗るときにリーダーに挿入するのを失敗することが何度もありました。

※参考:「ひと味違う 青梅支所のバス 2」(http://www.yamahiro.net/jubako72.htm) の二番目の写真。

一番酷かったときは、一度失敗してやり直そうとしたとき、急に身体がぐらりと揺れて、倒れそうになって……何かと思ったら、バスが発進してたんですね。おーい、まだカード通してないよ……。

※せっかくなのではっきり書いておくと、これに遭ったのは都営バスの「梅70」という路線です。私は西武バスではこういう目に遭ったことはなく、むしろ運転手さんが「座ってください」と注意を促す場面を良く目にします。

※なお、乗るときにカードを通せなかった場合、降りるときに乗ったバス停の名前を告げれば OK。それを怠ると始発からの料金が引かれます。

話を戻すと、おそらくはその人も、すらっとカードを通して素早く乗り込むつもりが、カードの挿入に失敗して戸惑ったのでしょう。そこで立ち止まり、次の人が入り口で立ち往生し、私は雨の中で立ち往生したと。やっぱり乗るときのカードが通しにくいのが問題だと思うのですが、あれはもう少し何とかならないのでしょうか。あるいは Suica みたいなもの導入希望……。

関連する話題: 出来事 / バス / ユーザビリティ / たばこ

ロックする?

何かたまにこんな感じの例外が発生してるんですが……。

Type: System.IO.IOException
Message: プロセスはファイル "index.xml" にアクセスできません。このファイルは別のプロセスが使用中です。

こういうのは単に catch してリトライすれば良いのでしょうけれど、そもそもどうして発生するのでしょうね。基本的には読み取りだけしかしていないはずなんですが。

可能性としては、とりあえず

の二通りが考えられますが。IIS の FTP って転送中ずっとターゲットのファイルをロックしたりするんでしょうか?

あと、Last-Modified 関係もやっぱり怪しいようです。hatomaru.dll 側ではキャッシュとか難しいことはしないようにして、リバースプロキシでも入れてやるとかした方が良い……のかしら?

関連する話題: hatomaru.dll / えび日記

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大王

長いフィールド

まあ、間違ってないんですけど……。

Accept-Language : ja-jp, ja;q=0.98, en-gb;q=0.97, en;q=0.95, de-de;q=0.93, de;q=0.92, fr;q=0.90, it-it;q=0.88, it;q=0.86, nl-nl;q=0.85, nl;q=0.83, el-gr;q=0.81, el;q=0.80, es;q=0.78, da-dk;q=0.76, da;q=0.75, ga-ie;q=0.73, ga;q=0.71, no-no;q=0.69, no;q=0.68, sv-se;q=0.66, sv;q=0.64, pt-pt;q=0.63, pt;q=0.61, eo;q=0.59, tr-tr;q=0.58, tr;q=0.56, ru-ru;q=0.54, ru;q=0.53, vi-vn;q=0.51, vi;q=0.49, cs-cz;q=0.47, cs;q=0.46, hr-hr;q=0.44, hr;q=0.42, hu-hu;q=0.41, hu;q=0.39, pl-pl;q=0.37, pl;q=0.36, fi-fi;q=0.34, fi;q=0.32, ro-ro;q=0.31, ro;q=0.29, sk-sk;q=0.27, sk;q=0.25, sr-yu;q=0.24, sr;q=0.22, bg-bg;q=0.20, bg;q=0.19, mk-mk;q=0.17, mk;q=0.15, uk-ua;q=0.14, uk;q=0.12, yi;q=0.10, he-il;q=0.08, he;q=0.07, ar;q=0.05, th-th;q=0.03, th;q=0.02

ものすごく国際的な方がいらっしゃるんですね……。

※いっそ * で良いのではないかと思いますが、* を使うと Netscape Enterprise で謎の Not Found が発生したりするのであえてこうしているのかしら。

関連する話題: HTTP / Netscape-Enterprise

最近の日記

関わった本など