日向夏特殊応援部隊

俺様向けメモ

OpenIDとフィッシング

wiki.openid.netのOpenID Wiki / OpenID_Phishing_Brainstormから。

フィッシングの流れ

  1. ユーザーは悪意のあるRP(Consumer)サイトに行くとOpenIDっぽぃログインフォームがある
  2. ユーザーはそのログインフォームに自分のIdentifier URLを入力
  3. 悪意のあるRPはユーザーのOP(IdP)に良く似たFake OPにリダイレクトさせる
  4. Fake OPはユーザーにユーザー名とパスワードを求める
  5. ユーザーはいつものOPとの違いに気づかずパスワード入れちゃう
  6. Fake OPはユーザーのアカウント情報を入手出来る

これが基本的なフィッシングの流れと説明されてる。

OpenID Realm Spoofing

OpenIDで言うところのrealmはtrust_rootの事。(ソースから読むOpenID (1) - Yet Another Hackadelicで解説してます。)

このspoofingはどういう事かと言えば、

  1. 比較的信頼されているサイト
  2. オープンなリダイレクタを持ってるサイト

OpenIDのRP(Consumer)だった場合に成り立つ仕組みだと思う。

こういう条件を持つサイトのドメインがtrusted.comだとして、リダイレクタはhttp://trusted.com/redirect?url=http://foo.com/みたいな感じだとすると、悪意あるRPのドメインがmalicious.netだとして、

trust_root
http://trusted.com/
return_to
http://trusted.com/redirect?url=http://maricios.net/

のようにして認証リクエストを送ってあげると。

いざユーザーがOPでログインする際に、許可を与えるドメインとして表示されているのはtrusted.comに対してと言う風に表現されているだろうから、ついつい許可してしまうと言う具合。

リダイレクタには認証結果を伴ったデータが送られるので、内容によっては非常にまずいデータが悪意あるRPに盗まれかねない結果になる。

Attribute Exchangeなんかを使ってた場合だと、どんな属性情報をリクエストしてるか分からないし、仮にtrusted.comに相当センシティブな属性情報の読み取りを許可してたら、相当まずいですね。

対抗策って何があるんだろう。