Twitter

Twitterが'Sign in with Twitter'フローの変更を発表 – 話題のセキュリティ脆弱性を回避

Twitterが開発者向けブログにてSign in with Twitterのフローの変更をアナウンスしました。
Changes to the ‘Sign in with Twitter’ flow | Twitter Developers


Sign in with Twitterは
1. twitter.comでログインしている
2. アプリケーションのOAuth連携を許可している
状態だと認証画面をスキップしてアプリケーションでTwitterアカウントにてサインインした状態にできる便利な機能で、日本の有名どころではトゥギャッターなどが採用しています。
認証画面をスキップしてアプリケーションに戻る先のURLはAPI呼び出し時に上書き可能で、アプリケーションの秘密鍵(コンシューマシークレット)が漏洩していると意図していない第三者のサービスでログイン状態になってしまうという脆弱性がありました。
通常Sign in with TwitterはWebサービスで使われます。サービスを提供しているサーバに侵入されない限り秘密鍵は漏れないのですが、モバイルアプリやデスクトップアプリについてはクライアントサイドに秘密鍵が置かれている以上技術上本質的にそれを秘密にすることはできません。
そこで今回、Twitter連携アプリケーションのSign in with Twitterは明示的に有効にしないと使えないようになりました。
Sigh in With Twitterを使って連携しているアプリケーションを提供している場合はdev.twitter.comにアクセスして有効化する必要があります。
モバイルアプリやデスクトップアプリについてはデフォルトのままで大丈夫です。
以下抄訳

・’Sign in with Twitter’ フローの変更
たった今OAuth 1.0Aのフローに変更を加え、”Sign in with Twitter”フローの自動リダイレクトの挙動をよりコントロール出来るようにしました。この変更により、我々はdev.twitter.comにログインしていたきアプリケーションの設定の見直しをして頂くことをおすすめします。

我々は”Sign in with Twitter”のオプションを復帰させました。覚えている方もいるかも知れませんが数年前にもこのオプションがありましたが、実質的に意味をなさないオプションであったため削除したという経緯があります。復帰させたのはアプリケーションが明示的に意図した認証挙動を指定出来るようにするためです。

この変更により、自動リダイレクションは明示的に有効化したアプリケーションにしか働かなくなります。具体的に言うと、/oauth/authenticateを使っており自動リダイレクトしてくれることを期待しているアプリケーションでは”Sign in with Twitter”を明示的に有効にしていただく必要があります。有効化していないと、変わりに/oauth/authorizeへリダイレクトされアプリケーションの認証フローを完了させるよう促されます。

アプリケーションの設定を見直す際、あわせて確認して頂きたいのはひも付けられているアカウントやコンタクトインフォメーションに正しく、最新のものが入力されているかどうかです。(注意: 変更を加えた際、反映に時間を要する場合があります)

ユーザーがどのように、どこで使うかに関わらずTwitterがよりセキュアな体験を提供できるよう協力していただけることに感謝いたします。

2013-02-28_23-23-37
新たに加わった(正確には数年ぶりに復帰した)設定項目

関連記事:
【拡散希望】twitterの新型ウイルスがヤバい URL踏んだだけでアウト – uinyan. com
特定のクライアントを許可している Twitter ユーザーの Token Credentials を入手する攻撃 – ひだまりソケットは壊れない
TwitterのOAuthの問題まとめ