Covert Redirect ? OAuth ????????? Heartbleed ????
Heartbleed 脆弱性をめぐる騒動が一段落したかと思う間もなく、今度は「Covert Redirect(隠しリダイレクト)」と呼ばれるセキュリティ上の欠陥が見つかり、その報告がメディアを賑わしています。なかには「第二の Heartbleed」と称している報道もあるほどですが、Covert Redirect が実際に Heartbleed ほど深刻かというと、そんなことはありません。
「第二の Heartbleed」という言い方は正しいか
いいえ。これは、サービスプロバイダによる OAuth の実装で発見されたセキュリティ上の欠陥です。
Covert Redirect が Heartbleed ほど深刻でないのはなぜか
Heartbleed は OpenSSL に存在する深刻な脆弱性です。OpenSSL は暗号プロトコル SSL と TLS のオープンソース実装であり、50 万以上もの Web サイトで使われています。Heartbleed 脆弱性は、パッチ未適用のサーバーに要求を送信するだけで悪用できてしまいますが、Covert Redirect の場合、攻撃者は影響を受けやすいアプリケーションを見つけたうえで、ユーザーからの応答と許可を得る必要があります。
Covert Redirect とは
Covert Redirect はセキュリティ上の欠陥であり、脆弱性ではありません。狙われるのは、オープンリダイレクトの影響を受けやすいサードパーティ製クライアントです。
たとえば、攻撃者は影響を受けやすいサイトのアプリケーションを使って、密かにサービスプロバイダの API に要求を送信し、redirect_uri パラメータを改ざんすることができます。改ざんされた悪質な redirect_uri パラメータは、認証に成功するとユーザーを悪質なサイトにリダイレクトします。
標準的な要求: [プロバイダ]/dialog/oauth?redirect_uri=[影響を受けやすいサイト]&scope=email&client_id=123&response_type=token
悪質な要求: [プロバイダ]/dialog/oauth?redirect_uri=[影響を受けやすいサイト]/redirectKeepParams?w=1dpoa&url=[攻撃者のサイト]&scope=email&client_id=123&response_type=token
悪質な要求では、承認されたアプリケーションではなく、攻撃者がユーザーのアクセストークンを受信します。
OAuth とは
OAuth は、Web、モバイル、デスクトップの各アプリケーションから安全な認可を取得できるオープンプロトコルです。[Facebook でログイン]ボタンなどで OAuth を使うと、OAuth が認可メカニズムとして機能し、サードパーティ製アプリケーションでユーザーアカウントへのアクセス権を取得できるようになります。
ユーザーにとってどのようなリスクがあるか
この欠陥を悪用するには、ユーザーからの応答が必要です。アクセストークンを侵害するには、影響を受けやすいアプリケーションに対する許可をユーザーから付与される必要があります。許可が付与されてようやく、攻撃者はユーザーアカウントデータを取得して、さらに悪質な目的に利用できるようになります。
アプリケーション開発者にはどのような影響があるか
Web サイトでオープンリダイレクトが使われている場合、攻撃者はそのアプリケーションを Covert Redirect の標的とする可能性があるので、Web サイトでオープンリダイレクトを停止する必要があります。サービスプロバイダ各社も、アプリケーション開発者が OAuth リダイレクト URL のホワイトリストを作成することを推奨しています。
次の手順は
Covert Redirect は注意すべきセキュリティ上の欠陥ですが、Heartbleed と同レベルというわけではありません。アクセスを許可するアプリケーションは慎重に判断すべきであり、Covert Redirect はそのことを再認識する格好のきっかけとなりました。
パッチの公開は期待できません。それぞれの実装を保護して Covert Redirect の欠陥に効果的に対処するかどうかはサービスプロバイダ次第です。
* 日本語版セキュリティレスポンスブログの RSS フィードを購読するには、http://www.symantec.com/connect/ja/item-feeds/blog/2261/feed/all/ja にアクセスしてください。