OpenIDとフィッシング
wiki.openid.netのOpenID Wiki / OpenID_Phishing_Brainstormから。
フィッシングの流れ
- ユーザーは悪意のあるRP(Consumer)サイトに行くとOpenIDっぽぃログインフォームがある
- ユーザーはそのログインフォームに自分のIdentifier URLを入力
- 悪意のあるRPはユーザーのOP(IdP)に良く似たFake OPにリダイレクトさせる
- Fake OPはユーザーにユーザー名とパスワードを求める
- ユーザーはいつものOPとの違いに気づかずパスワード入れちゃう
- Fake OPはユーザーのアカウント情報を入手出来る
これが基本的なフィッシングの流れと説明されてる。
OpenID Realm Spoofing
OpenIDで言うところのrealmはtrust_rootの事。(ソースから読むOpenID (1) - Yet Another Hackadelicで解説してます。)
このspoofingはどういう事かと言えば、
- 比較的信頼されているサイト
- オープンなリダイレクタを持ってるサイト
が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に相当センシティブな属性情報の読み取りを許可してたら、相当まずいですね。
対抗策って何があるんだろう。