New OAuth Attack Lets Hackers Bypass Microsoft Entra Authentication and Steal Keys
2026/01/08 gbhackers — サイバー・セキュリティ対策担当者にとって年末は忙しい時期であるが、Microsoft Entra ID を標的とする新たな攻撃ベクターが研究者たちにより発見された。この攻撃ベクターは、正規の OAuth 2.0 認証フローを武器化し、特権アクセス・トークンを収集するものだ。PushSecurity が ConsentFix と名付けた手法は、ClickFix ソーシャル・エンジニアリング・パラダイムの進化形である。ファーストパーティである Microsoft アプリケーションの認証コードフローを悪用する脅威アクターは、デバイスのコンプライアンス・チェックや条件付きアクセス・ポリシーを回避できるようになる。

Microsoft Azure CLI などのネイティブ・パブリック・アプリケーションのユーザー認証方式が、この攻撃手法により根本から覆される。
被害者が悪意の Web サイトにアクセスすると、攻撃者は “Microsoft Azure CLI” クライアント・アプリケーションと “Azure Resource Manager” リソースを対象とする、正規の Microsoft Entra ログイン URI を生成する。
これにより、標準的な OAuth 2.0 認証コード・フローが開始される。通常において、アプリケーションは認証レスポンスを受信するため、ランダムな高ポートを応答 URI としたリスナーが作成される。
正当なシナリオでは、認証が成功すると Entra ID は重要なパラメータである “code” (認証コード) と、オプションの “state” パラメータを指定して、ユーザーを “localhost” にリダイレクトする。
このリダイレクトを捕捉した Azure CLI アプリケーションは、認証コードをベアラー・トークンと引き換える。しかし ConsentFix 攻撃では、”localhost” をリッスンするアプリケーションが存在しない。そのためブラウザ・エラーが発生するが、URI には依然として機密性の高い認証コードが含まれている。結果として、攻撃者はドラッグ・アンド・ドロップ、またはコピー・アンド・ペースト操作を通じて、ユーザーに認証コードを入力させる。
セキュリティ研究者である John Hammond は、初めて情報を公開した日から数日後に、攻撃シナリオの改良版を実演した。この改良版では、手動によるコピー・アンド・ペーストが不要となり、ドラッグ・アンド・ドロップのみで認証コードを抽出できる。

認証コードを入手した攻撃者は、自身のインフラからコードを Redeem (引き換え) する。その結果、Azure Resource Manager などのクラウド・リソースへの自由なアクセスを許可するための、アクセストークン/ID トークン/リフレッシュ・トークンなどを取得できる。
異常相関による検出
フォレンジック分析により、Entra ID のサインイン・ログに特徴的なアーティファクトが確認された。この攻撃が成功した場合には、2件のイベントが生成される。1件目は被害者の認証を示す対話型サインインであり、2件目はトークン引き換え時に攻撃者のインフラから発生する非対話型サインインである。

認証コードの UTI (Unique Transaction Identifier) は、ベアラー・トークンの UTI とは異なるため、相関メカニズムに問題が生じる可能性がある。しかし SessionId は両イベントで一貫している。
効果的な検出において必要となるのは、同一の SessionId/ApplicationId/UserId を共有するイベントの関連付けと、1件目のイベントから約 10 分以内に、2件目のイベントが発生していることの確認である。
時間的な閾値が重要となる。GitHub Codespaces のような正当な自動化シナリオでは、認証コードは数秒以内にリデューム (引き換え) される。その一方で、ソーシャル・エンジニアリング攻撃では人為的な遅延が生じる。
さらに、正当な Azure CLI 利用では、両方のサインインが同一の IP アドレスから行われる傾向がある。しかし攻撃では、被害者と攻撃者インフラ間に地理的な分散が観測される。
当初の報告では、Microsoft Azure CLI (アプリケーション ID: 04b07795-8ddb-461a-bbee-02f9e1bf7b46) に焦点が当てられていた。しかし、この問題は “localhost” へのリダイレクトを受け入れる、事前同意済みの多数のファーストパーティ・アプリケーションにも及んでいる。
高リスク対象に含まれるのは、Microsoft Azure PowerShell/Visual Studio/Visual Studio Code/MS Teams PowerShell コマンドレットである。EntraScopes.com のセキュリティ研究者は、公開解決できない開発用およびテスト用 URL を含め、影響を受けるアプリケーションの全範囲をカタログ化している。
緩和策
ユーザー組織において、複数の防御策を検討する必要があるが、導入の複雑さと緩和効果のバランスも考慮しなければならない。
最も低コストなアプローチは、影響を受けるサービス・プリンシパルに対して明示的なユーザー割り当てを要求する方法である。これにより攻撃対象は限定される。ただし、正当な CLI 利用者を網羅的に特定する必要がある。
条件付きアクセス・ポリシーを用いれば、承認されたユーザー以外による CLI ツールへのアクセスを完全にブロックできる。しかし、レポート専用モードでの慎重なベースライン分析が前提となる。
最も堅牢な防御策は、Microsoft Entra ID のトークン保護機能を活用することである。Windows プラットフォーム上の Web Account Manager (WAM) ブローカーを介した所有証明を要求することで、攻撃シナリオにおけるコード・リデューム・チャネルが確立できなくなるため、ConsentFix 攻撃は無効化される。
ただし、この機能の対象範囲は特定の Microsoft 365 リソースに限定されている。Azure CLI/PowerShell の現行バージョンでは、クライアント側 WAM が利用可能であるが、Azure 管理シナリオに対する公式サポートは現時点で保留中である。
より広範な防御として、コンプライアンス・ネットワーク・チェックを備えたグローバル・セキュア・アクセスを導入すれば、盗難されたリフレッシュ・トークンを用いた後続のトークン発行を阻止できる。しかし、初期の認証コード・リデューム自体は防止できない。
デバイス管理における “鶏が先か卵が先か” という問題に対処するには、Intune などの管理サービスに対する慎重な除外ポリシー設計が必要となる。
これらの手法をレッドチームが急速に武器化し、脅威アクターがフィッシング・キャンペーンへ応用する状況において、防御側はサインイン・パターンを継続的に監査する必要がある。さらに、異常な SessionId 相関の有無を確認し、CLI アプリケーションへのユーザー割り当て制御を実装し、トークン保護機能の適用可否を評価することが求められる。
この問題の原因は、 Microsoft Entra ID の正規の OAuth 2.0 認証フローにおける、”localhost” へのリダイレクトの悪用にあります。具体的には、ブラウザ上で発生するエラーを利用して、本来はアプリケーションが自動で受け取るはずの認証コードを、攻撃者による誘導によりユーザーに手動で操作させることで、それらを盗み出すというシナリオが成立します。本来、この認証コードは、アプリケーション自動で受け取るものです。しかし、 ConsentFix 攻撃では、リダイレクト先のアプリを意図的に起動させないことでブラウザにエラーを出させ、アドレスバーに残った認証コードを盗むという手法が取られます。よろしければ、カテゴリー AuthN AuthZ を、ご利用ください。
You must be logged in to post a comment.