Google は特にアクセストークンについて言及しています。
OAuth 2.0 のコンテキストでは、混乱した代理人の問題は、認証に使用される場合のImplicit Grant プロトコル フローに適用されます。Google が「クライアント側アプリケーションの OAuth 2.0」と呼んでいるものは、暗黙的な付与プロトコル フローに基づいています。
暗黙的なフローは URI フラグメントを介してアクセス トークンをエンド ユーザーに公開するため、アクセス トークンが改ざんされる可能性が生じます。正当なアプリ (OAuth クライアント) は、別の (悪意のある) アプリに発行されたアクセス トークンを受け入れることで混乱した代理人になり、攻撃者が被害者のアカウントにアクセスできるようになります。
アクセス トークンを検証する際の重要なステップは、アクセス トークンが最初に別のアプリに発行されたものではないことをアプリが検証することです。Google は次のように言うと、これに注意を促します。
注: トークンを検証するときは、応答の対象者フィールドが API コンソールに登録されている client_id と正確に一致することを確認することが重要です。これは、混乱した代理人の問題を緩和するものであり、この手順を実行することは絶対に不可欠です。
簡単な例として、(1) 正規のファイル ストレージ アプリである FileStore と (2) EvilApp の 2 つのアプリがあるとします。どちらのアプリも、クライアント側アプリに Google の認証プロセスを使用します。Alice は罪のないエンド ユーザーであり、彼女の Google ユーザー ID は XYZ です。
- Alice は、Google を使用して FileStore にサインインします。
- 認証プロセスの後、FileStore は Alice のアカウントを作成し、それを Google ユーザー ID XYZ に関連付けます。
- Alice は、いくつかのファイルを自分の FileStore アカウントにアップロードします。これまでのところ、すべて問題ありません。
- その後、Alice は EvilApp にサインインします。EvilApp は、楽しそうなゲームを提供しています。
- その結果、EvilApp は Google ユーザー ID XYZ に関連付けられたアクセス トークンを取得します。
- EvilApp の所有者は、Alice の Google アカウント用に発行されたアクセス トークンを挿入して、FileStore のリダイレクト URI を作成できるようになりました。
- 攻撃者は FileStore に接続します。FileStore はアクセス トークンを取得し、Google に確認して、それがどのユーザー向けであるかを確認します。Google はそれがユーザー XYZ であると言います。
- 攻撃者は Google ユーザー XYZ のアクセス トークンを持っているため、FileStore は攻撃者に Alice のファイルへのアクセスを許可します。
FileStore の間違いは、与えられたアクセス トークンが実際に FileStore に発行されたものであることを Google に確認しなかったことです。トークンは実際に EvilApp に発行されました。
他の人はこれを私よりもはるかにエレガントに説明しています:
これで、クライアント側アプリでのアクセス トークンの検証の一部と、それが混乱した代理人の問題にどのように関連するかが説明されることを願っています。