検索
連載

図解:OAuth 2.0に潜む「5つの脆弱性」と解決法デジタルID最新動向(2)(3/4 ページ)

SNSなど複数のWebサービスが連携して動くサービスは広く使われている。連携に必要不可欠なのが、アクセス権限をセキュアに受け渡すための「OAuth 2.0」といった仕組みだ。今回はOAuth 2.0に関連する代表的な5つの脆弱(ぜいじゃく)性と攻撃手法、対策についてシーケンス図を使って解説する。

Share
Tweet
LINE
Hatena

【攻撃手法3】Covert Redirect

 次に紹介する「Covert Redirect」もImplicit Grant Flowに関する脆弱性を突く攻撃です。

 攻撃について説明する前に、図2で登場したものの、詳細には触れていなかったAuthorization Responseについて触れておきましょう。Implicit Grant FlowではAuthorization Responseの形式が、例えば以下のようなURLになります*3)

 http://example.com/cb#access_token=2YotnFZFEjr1zCsicMWpAA&state=xyz&token_type=example&expires_in=3600

*3) RFC 6749(The OAuth 2.0 Authorization Framework)の「4.2.2. Access Token Response」より引用

 パラメーターを後ろに従えた「http://example.com/cb」という部分を「Redirection Endpoint」と呼びます。Authorization Requestのためのredirect_uriパラメーターはClientが指定します。Redirection Endpointの後半にある「access_token」や「state」などがこのパラメーターで、Fragment identifier(フラグメント識別子)として指定されています。

 問題となるのは、次のようなケースです。

  • Redirection Endpointが任意のドメインにリダイレクトできるオープンリダイレクターになっている
  • Implicit Grant Flowが利用可能であり、フラグメント識別子にAccess Tokenが含まれる
  • UserAgent(Webブラウザ)の実装により、リダイレクト時にフラグメント識別子の値を引き継ぐ

 攻撃者はオープンリダイレクターを利用して任意のURLに遷移するようなRedirection Endpointを作成、Authorization Request(URL)を作り上げます(図6中の青い矢印)。標的となるユーザーがこのURLにアクセスしてOAuth 2.0の処理を続けると、ユーザーのAccess Tokenの値を攻撃者が取得できてしまいます。

図6
図6 Covert Redirect攻撃の流れ

 この攻撃への対策は、Redirection Endpointの実装にあります。

 Client側ではOAuth 2.0の処理が終わった後に同一サービス内で前にいたページに戻るように実装することがあるでしょう。このとき、外部の任意のURLにリダイレクトされないように気を付ける、つまり一般的なオープンリダイレクター対策を行う必要があります(図6中の赤丸部分)。加えて、早めにフラグメント識別子の値を削除する対応も必要でしょう。

 Authorization Server側では、併せてAuthorization Requestのredirect_uriパラメーターのチェックを厳密に行う必要があります(青丸部分)。ドメインによる一致のみで検証すると、正しいRedirection Endpointと同一ドメイン内にオープンリダイレクターが存在した場合、そのURLが悪用されるリスクが大きくなります。

 CSRF対策と同様に、一般的なWebアプリケーションのセキュリティ対策の一環としてオープンリダイレクターが存在しないように気を付けて実装する必要があります。

【攻撃手法4】Authorization Code Interception Attack

 次にAuthorization Code Flowの利用時に起こりうる脆弱性「Authorization Code Interception Attack」について紹介します。Authorization Code FlowはToken Replace Attack(攻撃手法2)の対策として先ほど紹介しました。

 Authorization Code Flowでは、Authorization ResponseのURLにAccess Tokenではなく、Authorization Codeの値を含めます(図7中の青い矢印)。ClientはこれをAuthorization ServerのToken Endpointに送ることでAccess Tokenを取得します。

 ClientがWebサーバ上で動作するアプリケーションの場合は対策が容易です。Access Tokenを取得する際にClientを認証するための(例えば)秘密鍵を安全に管理すればよいのです。攻撃者は第三者のAuthorization Codeを取得しても悪用が難しくなります。

 攻撃が成功するのは、次のようなケースです。

  1. モバイルアプリケーションのカスタムURIスキームのように、標的となるClientと同一のRedirection Endpointによって起動するアプリケーションを攻撃者が作成する。その後、標的ユーザーの端末にインストールさせる(図7で赤い下線を引いたAttacker's Client)
  2. 標的ユーザーは標的となるClientを利用しようとして、Authorization Server上でアクセス許可を行う
  3. Authorization ServerはAuthorization ResponseをClientに送ろうとするが、攻撃者のアプリケーションが起動してしまい、Authorization Codeを横取りする(赤丸)。

 モバイルアプリケーションの場合は、攻撃者のアプリケーションが標的となるClientになりすまして、Authorization CodeからAccess Tokenを取得できてしまいます。

図7
図7 Authorization Code Interception Attackの攻撃内容

 困ったことに、RFC 6749に忠実に従って実装しても、この攻撃を防止できません。

 対策はこうです。Authorization Requestを作成したClientのみが、Authorization Responseに含まれるAuthorization CodeからAccess Tokenを取得できるようにします。そのための拡張仕様がRFC 7636(Proof Key for Code Exchange by OAuth Public Clients)としてRFC化されています*4)。RFC 7636では、Authorization RequestとAccess Token Requestに新たなパラメーターを追加しています(仕様の詳細説明は省略)。

 Clientが動作する環境により、Redirection Endpointへの遷移が保証されていない状況が考えられる場合、この攻撃を想定して対策が取られているかどうか、確認する必要があるでしょう。

*4) RFC 7636

Copyright © ITmedia, Inc. All Rights Reserved.

Security & Trust 記事ランキング

  1. AWS、組織のセキュリティインシデント対応を支援する「AWS Security Incident Response」を発表 アラートに圧倒されるセキュリティチームをどう支援?
  2. 「生成AIのサイバー攻撃への悪用」は増加する? 徳丸浩氏が予測する2025年のセキュリティ
  3. 中小企業の20%の経営層は「自社はサイバー攻撃に遭わない」と信じている バラクーダネットワークス調査
  4. 商用国家安全保障アルゴリズム(CNSA)の期限となる2030年までに暗号化/キー管理サービス市場が60億ドルに達するとABI Researchが予測 急成長の要因とは?
  5. 高度なAIでAIをテスト OpenAIが実践するAIモデルのレッドチーム演習とは
  6. ChatGPTやClaudeのAPIアクセスをかたってマルウェアを配布するPython用パッケージ確認 Kasperskyが注意喚起
  7. 「このままゼロトラストへ進んでいいの?」と迷う企業やこれから入門する企業も必見、ゼロトラストの本質、始め方/進め方が分かる無料の電子書籍
  8. NIST、3つのポスト量子暗号(PQC)標準(FIPS 203〜205)を発表 量子コンピュータ悪用に耐える暗号化アルゴリズム、どう決めた?
  9. Google、オープンソースのセキュリティパッチ検証ツール「Vanir」を公開 多種多様なAndroidデバイスの脆弱性対応を支援するアプローチとは
  10. 堅調なID管理や認証、脅威インテリジェンスなどを抑え、2024年上半期で最も成長したセキュリティ分野は?
ページトップに戻る