<前の日記(2010年02月20日) 次の日記(2010年02月23日)> 最新 編集

高木浩光@自宅の日記

目次 はじめに 連絡先:blog@takagi-hiromitsu.jp
訪問者数 本日: 1943   昨日: 1295

2010年02月21日

はてなのかんたんログインがオッピロゲだった件

といった問題が指摘されているところだが、それ以前の話があるので書いておかねばならない。

昨年夏の話。

2009年8月初め、はてなブックマーク界隈では、ケータイサイトの「iモードID」などの契約者固有IDを用いた、いわゆる「かんたんログイン」機能の実装が危ういという話題で持ち切りだった。かんたんログイン実装のために必須の、IPアドレス制限*1を突破できてしまうのではないかという話だ。

「実際に動いてすぐ使える」などと無責任なライブラリを出した ke-tai.org の著者に対して、「絶望的にわかってない」といったコメントが寄せられていた。

この一連の流れを読んで、私はやっと理解した。ここで指摘されていた方法で突破されてしまう実装は少ないのではないかと思ったのと同時に、何がいけないのかを理解し、ここには出てこなかったもっと別の方法(X)で、IPアドレス制限を突破できてしまう駄目な実装があり得ると思った。ならば、その実例を探して(修正を促した後)、それを広く周知すればよいと、そう考えたのだった。

まず最初に調べたのは「ポケットはてな」だった。最も身近なサイトであるのと同時に、「はてなならやりかねない」と、そう思ったからだ。

さっそく、その方法(X)で接続し、ポケットはてなの「かんたんログイン」ボタンに、携帯電話からではなく、通常のインターネット回線経由でパソコンから telnet でアクセスした。事前に、自分の携帯電話でポケットはてなに「かんたんログイン」の設定をしておき、自分の携帯電話の契約者固有IDを、HTTPリクエストのヘッダとして、telnet で手作業で送信した。

すると、思った通り、突破できてしまった。ログイン済みとして紐付けられたセッションIDが発行され、そのセッションIDでアクセスすれば、私のアカウント HiromitsuTakagi でのログイン状態となった。

ところが、テストしているうちに、何だかおかしいことに気づいた。(X)の方法を使っていないときでも、ログインできているようなのだ……。

半信半疑ながら、検査手順を整理して改めてテストしてみると、やっぱりログイン状態になる。つまり、なんと、ポケットはてなは、はじめっからIPアドレス制限なんぞ、まったくしていなかったのだ。

これにはぶったまげた。いくらなんでもそれはないわ。あれだけ度々、はてなブックマークのセキュリティタグ界隈で、契約者固有IDによる「かんたんログイン」の危うさが話題にのぼっていたのに、はてなの人らは、見てないのか?

急ぎ、脆弱性報告書を作成し、はてなに送付すると同時に、IPAの脆弱性届出窓口に通報した。はてなに送付した文面は以下の通りである(一部伏せ字)。

株式会社はてな 情報セキュリティ対応係 御中

2009年8月9日(第2版)

はてなの「かんたんログイン」が何の対策もされておらず
どこからでもなりすましログインされる欠陥について

携帯電話向けWebアプリケーションの「かんたんログイン」方式の危険性について調査する過程で、はてなの「かんたんログイン」機能を調べたところ、何ら、なりすまし対策がなされておらず、どこのIPアドレスからでもいつでも誰にでもなりすまして不正ログインされてしまうという、致命的でこれ以上なく初歩的な欠陥があることに、ついさきほど気づきましたので、以下の通り、取り急ぎお知らせします。

1. はてなの「かんたんログイン」機能の挙動

私のはてなアカウント「HiromitsuTakagi」は、「かんたんログイン」機能を有効にする設定を、私の所有するauの携帯電話にて行っています。そして、はてなの「かんたんログイン」機能は、たとえば、http://mobile.hatena.ne.jp/ に「ログイン」というリンクで案内されており、そのリンク先のURLは以下のものになっています。

http://www.hatena.ne.jp/mobile/easylogin?uid=NULLGWDOCOMO&(略)

そこで、以下のHTTPリクエストを、直接 www.hatena.ne.jp の80番ポートにTCP接続することによって、手作業で送信しました。ここで、「X-Up-Subno:」フィールドの値は、私のau携帯電話の契約者固有ID(EZ番号)です。

GET /mobile/easylogin HTTP/1.1
Host: www.hatena.ne.jp
User-Agent: KDDI-ST33 UP.Browser/6.2.0.13.2 (GUI) MMP/2.0
X-Up-Subno: 0500XXXXXXXXXX_mg.ezweb.ne.jp

この接続は通常のインターネット回線から行いましたが、正常に送信することができ、以下のHTTPレスポンスが返ってきました。

HTTP/1.1 302 Found
Date: Sat, 08 Aug 2009 14:11:11 GMT
Server: Apache/2.2.3 (CentOS)
Cache-Control: no-cache
Pragma: no-cache
Location: http://mobile.hatena.ne.jp/?sid=1eaeXXXXXXXXXXXX
(略)

ここでリダイレクト先として指定されているURLに、セッションIDらしきものが含まれています。このURLに、初期状態のWebブラウザ(cookieを消去した通常のWebブラウザで、はてなにログインしていない状態)で、通常のインターネット回線からアクセスしてみたところ、「ようこそHiromitsuTakagiさん」と表示され、私のアカウントでログインした状態となりました。つまり、パスワードを入力していないのに、私のアカウントでログインした状態となりました。

2. セキュリティ上の問題点

上記の挙動から、他人の携帯電話の契約者固有IDを知り得る立場の者であれば、「かんたんログイン」設定を有効にしているはてなユーザに対して、なりすまして不正ログインできてしまうと推察されます。

携帯電話の契約者固有ID(EZ番号等)は、Webサイト運営者であえれば誰でも他人のIDを入手することのできるものですから、事実上、誰でもはてなに不正ログインができてしまう、極めて危険な状態にあると考えます。

3. 生じ得る被害

なりすましログインによって、たとえば、はてなダイアリーへ偽の投稿をされたり、既存のダイアリーを改竄される危険性があるようです。その他にも、パスワードなしに操作可能な機能によって、何らかの被害が生じ得るかもしれませんが、確認していません。

以上

この文書を8月10日にはてなにメールで送付した。すぐに「修正対応を検討している」との返事があり、その後、「8月31日に脆弱性への対策を行った」との連絡があった。

当時のテストの様子(不正アクセス行為を伴わない寸止めテスト手法の様子)は、以下の図のとおりである。

画面キャプチャ
図1: ポケットはてなの画面(ログイン前)

画面キャプチャ
図2: かんたんログインのリンクを telnet でアクセスした様子
(X-Up-Subno には自分の契約者固有IDをセットしている)

画面キャプチャ
図3: 図2のリダイレクト先URLに図1のブラウザでアクセスした様子
(「ようこそ HiromitsuTakagi さん」とログイン状態になっている)

画面キャプチャ
図4: リンクを辿って日記の編集画面に進んだ様子

私のEZ番号を知っている人なら、誰でも私の日記を改竄等できてしまう状態だった。

正直、げんなりした。これがケータイWeb業界の実情なのか……と。

心配になったので、「かんたんログイン」でWeb検索して、かんたんログインを提供しているサイトを探し、見つかったところから手当たりしだいに、自分用のアカウントを登録して、自分のアカウントでテストしてまわった。

そうしたところ、他に4か所のサイトで同様の事例が見つかった。(そのうち3か所は、同じところが作った同一のWebアプリケーションだった。)これらについて、Webサイト運営者に脆弱性報告書を送付すると同時に、IPAの脆弱性届出窓口に通報して、修正を促した。

ただ、全部を調べたわけではない。数日間しか探さなかったし、アカウントを自由に登録させてもらえないサイトは調査していないし、マイナーすぎるサイトもスキップした。

こんな事態になっているのは、携帯電話会社が、どうやったら「かんたんログイン」なるものが実現できるのか、ちゃんとした実装方法の公式解説を出さないからだろう。もっとも、契約者固有IDを「かんたんログイン」の用途で使えると公式に認めているのは、NTTドコモだけだったかもしれない。

画面キャプチャ
図5: iモードIDが「かんたんログイン」用途に使えるものであると
NTTドコモが公式に主張している様子
『iモードID』の提供開始について, NTTドコモ, 2008年2月28日

これだけ明確にこの用途を公式に掲げたのだから、NTTドコモの責任で問題解決にあたるべきだろう。*2

はてなは、その後、10月21日に「かんたんログインがよりかんたんになりました」というリニューアルを発表した。リニューアル後の構成についても調べたところ、修正後のポケットはてなの実装では、(X)の手法の影響は受けないものになっていた。

では、(X)の手法の影響を受けるサイトはあったのか。(X)の手法とは何か。これについては、JVNでの公表を待って、近々、公表して注意喚起したい。

*1 携帯電話キャリアのゲートウェイのIPアドレスからのアクセスに限定する処置。

*2 もっとも、それ以前に、iモードID等の契約者固有IDは廃止されるべきなのだが。

本日のTrackBacks(全4件) [TrackBack URL: http://takagi-hiromitsu.jp/diary/tb.rb/20100221]

はてなのかんたんログインがオッピロゲだった件


ほほう。

契約者固有IDは、結構いろんな携帯サイトで求められて、それが自分認証に..

高木浩光@自宅の日記 - はてなのかんたんログインがオッピロゲだった件

検索

<前の日記(2010年02月20日) 次の日記(2010年02月23日)> 最新 編集

最近のタイトル

2024年11月11日

2024年07月28日

2024年07月27日

2024年07月07日

2024年04月07日

2024年04月01日

2024年03月23日

2024年03月19日

2024年03月16日

2024年03月13日

2024年03月11日

2023年03月27日

2022年12月30日

2022年12月25日

2022年06月09日

2022年04月01日

2022年01月19日

2021年12月26日

2021年10月06日

2021年08月23日

2021年07月12日

2020年09月14日

2020年08月01日

2019年10月05日

2019年08月03日

2019年07月08日

2019年06月25日

2019年06月09日

2019年05月19日

2019年05月12日

2019年03月19日

2019年03月16日

2019年03月09日

2019年03月07日

2019年02月19日

2019年02月11日

2018年12月26日

2018年10月31日

2018年06月17日

2018年06月10日

2018年05月19日

2018年05月04日

2018年03月07日

2017年12月29日

2017年10月29日

2017年10月22日

2017年07月22日

2017年06月04日

2017年05月13日

2017年05月05日

2017年04月08日

2017年03月10日

2017年03月05日

2017年02月18日

2017年01月08日

2017年01月04日

2016年12月30日

2016年12月04日

2016年11月29日

2016年11月23日

2016年11月05日

2016年10月25日

2016年10月10日

2016年08月23日

2016年07月23日

2016年07月16日

2016年07月02日

2016年06月12日

2016年06月03日

2016年04月23日

2016年04月06日

2016年03月27日

2016年03月14日

2016年03月06日

2016年02月24日

2016年02月20日

2016年02月11日

2016年02月05日

2016年01月31日

2015年12月12日

2015年12月06日

2015年11月23日

2015年11月21日

2015年11月07日

2015年10月20日

2015年07月02日

2015年06月14日

2015年03月15日

2015年03月10日

2015年03月08日

2015年01月05日

2014年12月27日

2014年11月12日

2014年09月07日

2014年07月18日

2014年04月23日

2014年04月22日

2000|01|
2003|05|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|05|06|07|08|09|10|11|12|
2012|02|03|04|05|06|07|08|09|
2013|01|02|03|04|05|06|07|
2014|01|04|07|09|11|12|
2015|01|03|06|07|10|11|12|
2016|01|02|03|04|06|07|08|10|11|12|
2017|01|02|03|04|05|06|07|10|12|
2018|03|05|06|10|12|
2019|02|03|05|06|07|08|10|
2020|08|09|
2021|07|08|10|12|
2022|01|04|06|12|
2023|03|
2024|03|04|07|11|
<前の日記(2010年02月20日) 次の日記(2010年02月23日)> 最新 編集