« 秘密鍵を後置している MAC の危険性 | メイン | Re: 攻撃してください→はてな認証の仮想セッション »

2006年05月09日

はてな認証 API への攻撃シナリオ

 少し方向を変えて、 cert の漏洩に関する話です。

 はてな認証 API における cert の使用法においては、

条件A) cert が第三者に漏洩しない
条件B) cert を最初に使うのがサードパーティアプリケーションである

のいずれかが満たされれば良いです。

 しかし、実際のところ cert が漏洩した場合に条件 B を破る (攻撃者の ?cert=... リクエストが、正規ユーザーのリクエストよりも先に処理されるようにする) ような攻撃を構築することは可能なので cert が漏洩する=セッションハイジャックが可能注3になる、と考えなければなりません。

 じゃあ、どういう場合に、cert が漏れるか、ということですが、

・ブラウザの脆弱性 (ドメイン間の分離に不具合があるようなケース)
・ツールバーの類が (URL の ? 以降を) を別サイトに送信している

といったケースが考えられるでしょうか。

 (ブラウザの脆弱性のような) クライアント側の問題には対応しない、というスタンスも、もちろんアリだと思いますが、個人的には、プロトコルレベルで改善できる問題は直しておいた方がいいんじゃないか、と思います。とりあえずは、 POST に変えるべきなんじゃないかな、と思います注2

2006/5/10 追記:
 サードパーティアプリケーション側で認証リンクを生成する前にセッションを開始することは、この攻撃に対する回避策になりません。セッションの発行対象が正規ユーザーなのか、攻撃者なのか、サードパーティアプリケーションからは判別できないからです。


注1: cert がワンタイムだから問題ないよ、という主張は間違いだということです
注2: 暗号化して送るようにする、というのがよりベターでしょうか
注3: サードパーティアプリケーションがセッションハイジャックされる (攻撃者がサードパーティアプリケーションにログインできてしまう) という意味です

元原稿がぐちゃぐちゃだったので、書き直しました。すいません。↓が元記事です。

 少し方向を変えて、 cert が漏洩する場合の話です。これまで書いてきたように、はてな認証API の仕様では、認証リンクを悪用して、 auth.json にアクセスするための api_sig を作成することが可能です。では、この点を利用した攻撃シナリオとしてどのようなものがあるか、少し考えてみました。

 サードパーティアプリケーションについて

・サードパーティアプリケーションには脆弱性は無い
・パラメータつきの認証リンクを悪用した api_sig の生成が可能

というケースにおいては、

条件A) cert が第三者に漏洩しない
条件B) cert を最初に使うのがサードパーティアプリケーションである

のいずれかが保証されない限り、cert を得た攻撃者が他人に成りすましてサードパーティアプリケーションにログインできるような受動的攻撃が可能になります。

 で、条件 B を破る (サードパーティアプリケーションに api_sig を計算させている間、そのアプリケーションに cert の値を使わせない) ような攻撃を構築することは、可能です注1

 じゃあ、どういう場合に、最後の砦である cert が漏れるか、ということですが、

・ブラウザの脆弱性 (ドメイン間の分離に不具合があるようなケース)
・ツールバーの類が (URL の ? 以降を) を別サイトに送信している

といったケースが考えられるでしょうか。

 (ブラウザの脆弱性のような) クライアント側の問題には対応しない、というスタンスも、もちろんアリだと思いますが、個人的には、プロトコルレベルで改善できる問題は直しておいた方がいいんじゃないか、と思います注2

14:55 追記: 関係ない api_sig の話が混じっていたので取り消し線を入れました。


注1: 詳しくは書きませんが、cert がワンタイムだから問題ないよ、という主張は間違いだということです
注2: cert を暗号化して送るようにする、というのはひとつの改善策だと思います (14:44 追記 POST に変えるだけでもマシになるかな)

投稿者 kazuho : 2006年05月09日 14:12 このエントリーを含むはてなブックマーク このエントリーを含むはてなブックマーク

トラックバック

このエントリーのトラックバックURL:
http://labs.cybozu.co.jp/cgi-bin/mt-admin/mt-tbp.cgi/585

このリストは、次のエントリーを参照しています: はてな認証 API への攻撃シナリオ:

» 認証API(auth.json,auth.xml)への送信元IPをコールバックURLのものに限定したらどうでしょうか? from ナンセンス不定記
下記の文章を読んで思いついたこと。ちょっと小細工的ですが: Kazuho@Cybozu Labs: はてな認証 API への攻撃シナリオ 結城浩のはてな... [続きを読む]

トラックバック時刻: 2006年05月09日 21:32