プロトコル自体にセッション固定攻撃の脆弱性

OAuthに脆弱性、TwitterやYahoo!がAPIを停止

2009/04/23

 APIベースでWebアプリケーションやローカルアプリケーションを連携させる技術として普及が期待されている認可プロトコル「OAuth」(オース)にセッション固定攻撃の脆弱性が発見された。OAuthに対応したAPIを公開しているYahoo!やTwitter、YammerがOAuth対応APIによるデータ提供を緊急停止する事態となっている(Yahoo!のコメントTwitterのコメントYammerのコメント)。一方、OpenSocialなどでOAuthを使っているグーグルはコメントで、問題が発見されたものと異なるOAuthを使っているため、現在提供中のサービスについて影響はないとしている。同様に、DVDレンタルサービスのNetflixも影響はないとしているなど、対応が分かれている。

 OAuthコミュニティは2009年4月23日に詳細な脆弱性の報告を掲載。問題は「OAuth Core 1.0」のプロトコル自体にあるため、OAuthによるサービス提供者は、直ちに攻撃を検知する適切な監視機構を実装するよう勧告している。OAuthコミュニティでは、今後、仕様改訂を予定しているほか、公開済みの実装についても新仕様に基づいてバージョンアップを行うという。また、現在のところ、この脆弱性を突いた攻撃は報告されていないとしている。

 OAuthはOpenIDと並んでオープンなプロトコルによるサイト間連携を行う仕組みで、それぞれユーザー認証・認可のプロトコルだ。OpenIDはログイン時の認証プロセスをサービスと切り分けることができる枠組みを提供し、OAuthはAPIを使ったデータアクセスをユーザーの明示的な許可に基づいて提供する枠組みを提供する(OAuth Core 1.0の仕様書)。

 例えば、OAuth対応の写真共有サービスを使っていて、この写真を年賀状サービスで使いたいとする。年賀状サービスからAPI経由で写真を取り込むためには、ユーザーは年賀状サービスに対して写真共有サービスのIDとパスワードを入力してもよいが、これはセキュリティ上、好ましくない。年賀状サービスのほうが十分信頼できるパスワード管理を行っていない可能性もあるし、フィッシングサイトである可能性もあるからだ。

 TwitterのAPIを利用したさまざまなサードパーティーアプリケーションが登場しているが、ユーザーとしては、できればTwitter側でユーザー認証を行い、その結果だけをトークンとして発行してもらうことで済ませたい。

 この問題を解決するのがOAuthだ。OAuthに対応していれば、次のような流れでユーザーは明示的に写真共有サイトと年賀状サービスを連携させられる。まず、ユーザーは年賀状サービスからいったん写真共有サービスにリダイレクトされ、「この年賀状サービスが写真データへのアクセス許可を求めているが、認めるか?」と提示される。ここでユーザーが「OK」ボタンなどを押すと、写真共有サイトは認可のトークンを発行する。年賀状サービスは、このトークンとともにAPIを叩くことで、ユーザーにIDやパスワードの入力を求めることなく写真共有サイトのデータにアクセスできるようになる。

【参考記事:APIアクセス権を委譲するプロトコル、OAuthを知る (@IT Security&Trust)】

 今回発見された脆弱性は、次の通り。攻撃者はまず一般ユーザーとして当該サービスにログイン。続いてOAuthによる認可を行うが、通常の流れと異なるのは、リクエスト・トークンとして発行されたURIを保存し、これをターゲットとなるユーザーにクリックさせるようにし向けるところだ。何らかの理由でURIをクリックしたターゲットユーザーは、正規のサービスへリダイレクトされ、データアクセスの許可を求められる。ここでターゲットのユーザーがもしOKボタンを押してしまうと、攻撃者はリクエスト・トークンを使ってOAuthの認可のプロセスを完了できてしまうという。

 今回の件では、脆弱性が公表される前にTwitterがAPIを事前通告なしに停止したことで開発者の間に動揺と反感が広がっていた。ただ、脆弱性に関する情報が公開され、ほかのOAuth対応サイトが十分に対応できるまでAPI停止の理由について伏せていたTwitterに対して、OAuthコミュニティは「公式に感謝の意を表明したい」としている。

(@IT 西村賢)

情報をお寄せください:



Security&Trust フォーラム 新着記事

注目のテーマ

Security & Trust 記事ランキング

本日 月間