JavaScriptとかんたんログインのセキュリティについて解説した記事「携帯JavaScriptとXSSの組み合わせによるかんたんログインなりすましの可能性 」
Tweet
昨日に続きセキュリティ関連の話題です。
下記のブログ記事が大変面白く、参考になる良エントリーでしたのでご紹介させていただきます。
→ 徳丸浩の日記 携帯JavaScriptとXSSの組み合わせによる「かんたんログイン」なりすましの可能性 [www.tokumaru.org]
今年の5月にドコモから発売されたJavaScript対応端末ですが、販売開始後すぐにソフトウェアアップデートによりJavaScript機能が停止されてしまいました。
上記エントリーでは、この停止の原因となった脆弱性について仮説を立てて検証しています。
詳しい内容は上記ブログを読んでいただくとして、概要としては、XMLHttpRequestのsetRequestHeaderメソッドとXSS脆弱性とを組み合わせて、ユーザエージェントやiモードIDなどのリクエストヘッダを改ざんし、かんたんログインのなりすましを行うことができたのではないか、というものとなっています。
iモードIDは、ドコモサーバ側で付与されるヘッダ情報「X-DCMGUID」から取得します。
通常この情報はケータイ上からは改ざんできませんし、もし万が一改ざんできたとしてもドコモのサーバ側で上書きされるはずです。(現状改ざんできないので実際に試したわけではないですが)
もちろんPCからのアクセスであれば、容易にIDを騙ることができますが、通常ケータイサイトでは、Firewallや.htaccessなどによるIPアドレス帯域による制限を行うため、ケータイ以外からはアクセスできません。
しかしながら、ドコモ以外のキャリアを名乗ることによって、サーバ側で上書きされないX-UP-SUBNOやX-JPHONE-UIDを変更し、かんたんログインを突破できたのではないか、という仮説となっています。
ドコモからは、販売停止やJavaScript機能の停止の理由は公表されていないため、あくまで仮説ではあるものの、かなり興味深い内容ですね。
他にもソフトバンクに関しては、昨日ご紹介した記事「SoftBank Mobileの携帯用GatewayをPCで通る方法のメモ [d.hatena.ne.jp]」で示されたような、かんたんログイン機能への脅威についても言及しています。
よく「かんたんログインは使うな」「かんたんログインの利用を推奨するような記事を書くな」というご意見をいただくことがあります。
もちろんごもっともな意見ではあるのですが、セキュリティと利便性は裏表な部分もあり、キャリアが代替手段を出すまでは、サイトの内容やクライアントの意向によっては導入せざるを得ない場合も多々あると思います。
我々に出来ることは、できる限り正しい情報を把握し、より安全に使える保険を一つ一つ積み重ねていくことが大事なのではないかと思っています。
セキュリティに関する記事の場合は特に、はてなブックマーク上からの突っ込みコメントが多くなる傾向があります。
ご指摘いただいた内容に関しては、可能な限り再チェックし、記事に不適切な部分があるのであれば修正していきたいと思っています。
突っ込みをいただく場合は、出来ればはてなブックマークからのコメントだけではなく、コメント欄やフォーラムもご利用いただけると、内容の確認が行いやすく助かります。
ぜひご協力をお願いいたします。
関連:
- ソフトバンクの携帯用GatewayをPCで通る方法があるようです
- 実際に動いてすぐ使える「PHPによるかんたんログインサンプル」を作ってみました
- ケータイの認証用IDの現状をまとめたブログ記事「携帯各キャリアの固有IDについて (全キャリア対応)」
8月 6th, 2009 at 7:02:26
[…] ke-tai.org > Blog Archive > JavaScriptとかんたんログインのセキュリティについて解説した記事「携帯JavaScriptとXSSの組み合わせによるかんたんログインなりすましの可能性 」 ke-tai.org > Blog Archive > JavaScriptとかんたんログインのセキュリティにつ
8月 6th, 2009 at 8:59:50
[…] ke-tai.org > Blog Archive > JavaScriptとかんたんログインのセキュリティについて解説した記事「携帯JavaScriptとXSSの組み合わせによるかんたんログインなりすましの可能性 」 ke-tai.org > […]
8月 6th, 2009 at 10:19:49
ちょっと良いかもしれない案を思いつきました。
「X-DCMGUID、X-UP-SUBNO、X-JPHONE-UIDのうち2つ以上に値がセットされていた場合は接続を弾く」とするだけで、安全度が結構あがる気がします。
どうでしょうか?
8月 7th, 2009 at 16:55:54
上記ですが、「guid=ONを付けなければそれまで」ということでダメですね ><