ニックネーム:   パスワード:
| MyDoblogトップ | Doblogポータル | Doblogガイド | ユーザ登録 | 使い方 | よくある質問 | ツールバー | サポート |
ひまじゃのう
Blog
[ 総Blog数:692件 ] [ このMyDoblogをブックマークする ] [ RSS0.91   RSS1.0   RSS2.0 ] [ ATOM ]
2006/06/25のBlog
[ 15:40 ] [ ブログの話題 ]
これは、「一部分を隠して、全部を隠したつもりでいるとき」よく使われることわざだ。こういう事例がある。

「ある」ブログにログインするとき、ニックネームとパスワードを入力する。ニックネームは公開データであり、誰でも知ることができる。これに対してパスワードは、本人しか知らない秘密データだ。

入力したニックネームとパスワードは、HTTPSという手順でサーバーに送られる。HTTPSとは、セキュアなHTTPという意味で、データはサーバーまでの通信経路上を暗号化して送られる。

なぜ暗号化して送るのか。それは、データが相手に届くまでの間に、「盗み読み」される恐れがあるからだ。そういう脅威があると想定しているから、その脅威から秘密データを守るために暗号化する。盗まれて困るデータとは、本人しか知らないはずの「パスワード」である。これを守るために、わざわざ暗号化して送っているのだ。

一般にシステムのセキュリティは、そこにどんな脅威が考えられるかという「脅威モデル」をまず想定し、その脅威に対してどのように防衛するかということを考える。
-------------------
さて、ログインのために入力したパスワードは、こうして安全にシステムに送られた。そこで、ログイン後に使える「マイプロフィール設定」という機能を使い、自分のプロフィールを変更してみよう。変更できるプロフィールには、
ニックネーム、メールアドレス、性別、誕生日、住まい、そして「パスワード」
などがある。

「マイプロフィール設定」をクリックすると、すでに設定してあるニックネームやメールアドレスなどが表示される。そして、「パスワード」は、●●●●●●で表示されている。

●●●●●●の下に何が埋まっているのか、ちょっとHTMLのソースを覗いてみよう。パスワードのところは、このようになっている。<input type="password" name="password" size="26" maxlength="22"
value="xxxxxxxxxxxxxxx" AUTOCOMPLETE="off" id="idPassword"
class="profile-textbox0001">

value="xxxxxxxxxxxxxxx"というところに注目してみよう。このxxxxxにあなたのパスワードが入っているはずだ。

何故か。「マイプロフィール設定」をクリックしたとき、ニックネームやメールアドレスなどの他のデータとともに、サーバーがパスワードを送ってきたからだ。そのとき、これらのデータは暗号化されていただろうか。いいや、暗号化されてはいない。通常のHTTP手順で、通信経路上を平文のまま、可読可能なそのままの形で送られている。秘密のデータであるべき「パスワード」がだ。

ここで「設定保存」ボタンを押すとどうなるか。今度は、HTTPSで暗号化されて送信される。

つまりこのシステムは、行き(クライアント->サーバー)は盗聴されるが、帰り(サーバー->クライアント)は盗聴されない、という脅威モデルを持っていると考えられる。それは無いだろう。行きも帰りも盗聴されていると考えるのが普通だ。
-------------------
行きも帰りも盗聴されていると考えると、「マイプロフィール設定」をクリックした時点で、「パスワード」は、危険にさらされてしまう。そのため、このシステムを安全に使うためには、「マイプロフィール設定」をクリックした時は、必ず、パスワードを変更しないといけない。
-------------------
そもそも秘密データであるパスワードの変更は、他の項目の変更とは別に処理すべきであるし、サーバーから生のパスワードを返す必要はない。チェックが必要ならダイジェストで可能だ。
また、変更後のパスワード入力だけでパスワード変更を可能にしてしまうのも危険だ。もしセッションが乗っ取られている場合は、パスワードを変更され、他人に永遠にブログごと乗っ取られてしまうだろう。他にもいろいろある。。。。。
このブログは、研究すればするほど「すばらしい」システムのようだ。

----追記(7/29)------------------------------------------------
7/29日、途中非公開にしていたこの記事を公開にした。
非公開にしていた間に、Doblogでの「マイプロフィール設定」の動作が変化したようだ。
以前は、httpでデータを取得し、httpsで書き込んでいたようだが、いまは、両方ともhttpsになっている。だが、httpsがhttpにリダイレクトされるため、パスワードは相変わらず平文で送られてくる。何をしているのか。
2006/06/22のBlog
Doblog 編集部へ
「[ 2006/06/21 ]新バージョンの不具合に関しまして 」へのTB

Doblogバージョンアップ後、Doblogへの初期アクセスでレイアウトが崩れる件を6/21に修正していただきました。修正箇所は、異常に長くなってしまうトラックバックURLでした。確かに、レイアウトが崩れる不具合は、無くなりました。しかし、この修正で当然直ると思っていたところが直っていないため、少しきつい苦情を書きます。

この問題の本当の原因=問題の根源は、TomcatのセッションIDが漏れていることにあったんじゃないでしょうか。修正以前のトラックバックURLは、CookieにセットされていたセッションIDと同じ値が付加された異常に長いURLになっていました。このセッションIDは、普通なら表に出すべきものではなく、内緒にしておかなければならないものですね。ですので、この問題は、見た目のレイアウトの崩れだけでなく、もっと深刻な問題だったのではないでしょうか?

そして、現在も、このセッションIDの漏れは、いたるところにあります。ソースを見てください。百数十箇所みつかります。だだ漏れなのです。どんなコードを書けばこれほどだだ漏れになるのか不思議なくらいです。しかも悪いことに、Googleは、この漏れたセッションIDをすでに万の単位でキャッシュしています。恥の上塗り、一目瞭然です。

世の中には、セッションIDが漏れたくらいでは、どうということも無いシステムもあります。でもこのDoblogは違うでしょう。セキュリティに関する問題なので詳しくは書きませんが、このセッションIDが、どうでもいいIDで無いことはご存知のとおりです。Doblogは、認証前後で、本来なら=常識的には、こういう実装をしてはいけないという方式でセッション管理をしていますね。セッション情報には、ログインを認証したという情報も含まれているでしょう。ですからそのセッション情報が事前に漏れることは余計にまずいんじゃないでしょうか。

もし私がこのプロジェクトに関係していれば、何よりも何よりも真っ先に、このセッションIDの漏れを直すと思います。それが、プロとしての責任じゃないでしょうか。