パスワードを忘れた? アカウント作成
383581 journal

jbeefの日記: slashcodeが一部ユーザのパスワードを漏らす(2)

日記 by jbeef
タレコミでは紙面の都合上簡潔に書かざるを得なかったので、ここではもう少し具体的に説明をしてみる。

まずは、スラッシュドットにログインした状態でパスワードの変更の画面に行ってみてほしい。「jbeef (1278)のパスワード変更」のタイトルの下に以下のメッセージがあるはずだ。

このリンク をクリックすると,自動的にログインすることができます.クリックした先のページをブックマークしてください.全く安全ではないですが,とても便利です.

リンク」の部分のリンク先は以下のようなURLとなっているはずだ。

http://srad.jp/index.pl?op=userlogin&upasswd=05a671c66aefea124cc08b76ea6d30bb&unickname=jbeef

「upasswd=」の右側はパスワードのハッシュ値(MD5)となっている。上の例はデモとしてパスワードを仮に「testtest」とした場合の値で、もちろん今は別のパスワードにしている。 このURLには、ユーザ名とパスワード(のハッシュ値)が両方含まれているので、このURLにアクセスするだけでログインができる。これをブックマークとして登録しておけば、メニューからそれを選ぶだけでログインできるので「とても便利です」というわけだ。

説明には「クリックした先のページをブックマークして」とあるが、実際にやってみると、クリックした先のページは、

http://srad.jp/index.pl

となることが観察されることと思う。これは、ログイン手続きが完了した後に、このURLにリダイレクト(自動ジャンプ)しているためだ。「クリックした先のページをブックマークして」(本家の原文では「You can automatically log in by clicking This Link and Bookmarking the resulting page」)という指示に単純に従うと、

http://srad.jp/index.pl

をブックマーク登録することになるので、この説明は正しくない。 正しくない説明となっているのはなぜだろうか。考えられるのは、古いバージョンのslashcodeではリダイレクトされなかった可能性だ。説明文だけ元のまま残ったものなのかもしれない。

何が問題かというと、表示中のページのURLは容易に第三者に漏れてしまうものであり、URLにパスワードやユーザ名を含めることは危険だという点である。具体的には、上の方法でログインした直後に、トップページにあるストーリーのリンクをクリックして、リンク先にジャンプすると、リンク先のサーバに対して、リンク元のURL、すわなち、

http://srad.jp/index.pl?op=userlogin&upasswd=...

が、リンク先のサーバに送信されてしまう。これは、Webブラウザの機能であり、アクセスのリクエストデータの中に

Referer: http://srad.jp/index.pl?op=userlogin&upasswd=...

という形式で挿入されて送信される。これは、サーバ側では、(サーバがApacheの場合)「referer_log」ないし「access_log」に記録されるようになっていることが多い。

先に述べたように、ログイン後のURLは

http://srad.jp/index.pl

にリダイレクトされるのだから、Refererでユーザ名やパスワードが漏れることはないはずである。ところが、私のサーバのアクセスログを調べてみたところ、昨年11月のログに、1件だけだが

http://srad.jp/index.pl?op=userlogin&upasswd=...

の形式で、あるユーザのログイン用URLが記録されているのが見つかった。なぜ漏れてきたのだろうか?また、なぜ1件だけと少ないのか?

この疑問には、18日のJamie McCarthy氏の報告で、ある程度納得することができる。これについては次のエントリで。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
typodupeerror

私はプログラマです。1040 formに私の職業としてそう書いています -- Ken Thompson

読み込み中...