読者です 読者をやめる 読者になる 読者になる

like life lives

技術以外のことに興味が寄りすぎな技術ブログ

facebookアカウントのログインとtwitterの新型攻撃の関係

先日にtwitterで発生した新型攻撃の原因の一つに、Consumer Secret が外部に流出したというものがありました。

この鍵はpukkyuで実装しているfacebookのアカウントログインでも使用しており、流出すると同様の攻撃を受ける可能性があります。

これはtwitterと同じ"OAuth"という認証システムを使用しているからです。OAuthの仕組み上、Consumer Secretは基本的に外部に漏えいさせてはいけません。

pukkyuではアクセストークンの取得をサーバ内で完結させることで、Consumer Secret の漏えいを防いでいます。

詳しくはfacebokアカウントでのログイン実装その3:アクセストークンの取得で解説していますが、facebookでログインが実行されたあと、リダイレクトされたURLの処理でcodeという文字列を受け取ります。

facebookからデータを取得するために必要な「アクセストークン」を受け取るには、このcodeとSecret Keyをfacebook API に対して送信しなければなりません。

よってサーバの中でConsumer Secretを隠匿すれば、同様の手口での攻撃を回避することができます。

twitterで発生した新型攻撃で"プロキシサーバを構築する"と書いたのがこれにあたります。

簡単に図にすると下のようになります。

f:id:sugar_affordance:20130303225052p:plain

facebookの認証サーバがこんなに単純な構成とは限りませんが、なんとなくやっていることはつかんでもらえると思います。

pukkyuのサーバとfacebookの認証サーバ間のみでConsumer Secretを共有しており、twitterのアプリを実装する場合も、同様のサーバを介することでConsumer Secretを隠匿できます。

twitterのログインはpukkyuではまだ未実装ですが、いずれ実装したいと思っています。