メインコンテンツへスキップ
OAuth同意フィッシング ─ MFAをすり抜けるSaaS権限奪取
分析 中級

OAuth同意フィッシング ─ MFAをすり抜けるSaaS権限奪取

分析 中級

OAuth同意フィッシングは、MFAを破らずSaaSアプリ連携の権限を奪う。危険な同意画面、管理者同意、監査ログ、アプリ制御の実務対応を整理する。

OAuth同意フィッシングは「ログイン突破」ではなく「権限付与」を狙う

組織の認証を強化しても、SaaSのアプリ連携が無防備なら別の入口が残る。OAuth同意フィッシングは、ユーザーに偽アプリや悪意あるクラウドアプリへのアクセス許可を与えさせ、メール、ファイル、連絡先、カレンダーなどへ継続的にアクセスする攻撃だ。

厄介なのは、攻撃者が必ずしもパスワードやMFAコードを盗む必要がない点にある。ユーザーが正規の Microsoft Entra ID や Google Workspace の同意画面で「許可」を押すと、攻撃者のアプリにトークンや権限が渡る。見た目は正規のクラウド認可フローなので、従来の偽ログイン画面よりも違和感が小さい。

Microsoft はこの種の攻撃を「consent phishing」や「illicit consent grant」として整理しており、Microsoft 365環境ではパスワードリセットやMFA再要求だけでは不十分になり得ると説明している。つまり、これは「認証を強くする」だけでは閉じない、認証と認可の後段にある問題だ。

この記事で扱う範囲

この記事では、OAuth 2.0そのものの仕様解説ではなく、企業SaaS運用で発生する「同意画面を悪用した権限奪取」を扱う。基礎用語は OAuth 2.0OpenID Connect を先に確認すると読みやすい。


なぜMFAやパスキーだけでは止まらないのか

パスキー導入やFIDO2は、偽サイトにパスワードやワンタイムコードを入力させる攻撃に強い。AiTM型のフィッシングTycoon 2FA のようなMFA中継攻撃に対しても、有効な防御になる。

しかしOAuth同意フィッシングの焦点は、ログインフォームではない。ユーザーが本物のIdPにサインインしたあと、攻撃者が用意したアプリに「このアプリがあなたのメールを読んでもよいか」「ファイル一覧を見てもよいか」といった許可を与えさせる。認証自体は正規に成功しているため、MFAは期待通り動いている。それでも、許可されたアプリが危険ならデータは読まれる。

攻撃タイプ攻撃者が狙うものMFAの効き方
パスワードフィッシングID / パスワード強いMFAで被害を抑えやすい
AiTMフィッシングセッションCookie / MFAコードフィッシング耐性MFAが有効
インフォスティーラー保存済みCookie / トークン端末防御とトークン失効が必要
OAuth同意フィッシングアプリ権限 / 同意済みトークンMFAだけでは止めにくい

ここで重要なのは、MFAを軽視することではない。MFAは今も必須だ。ただし、SaaS時代の攻撃面はログイン画面の外側へ広がっている。認証を守った次に、アプリ権限、APIスコープ、管理者同意、トークン失効まで見なければならない。


危険な同意画面で見るべきポイント

OAuth同意画面では、アプリ名や発行者、要求する権限、対象データが表示される。問題は、多くの利用者がそれを「いつもの許可画面」として読み飛ばしてしまうことだ。

特に注意したいのは、次のような組み合わせだ。

観点危険な兆候確認する理由
アプリ名業務ツールに似た曖昧な名前偽の生産性ツールや文書ビューアを装いやすい
発行者未確認、見慣れない組織、個人名誰がアプリを管理しているか追えない
権限メール読取、ファイル読取、オフラインアクセス侵害後も継続的にデータへ触れる可能性がある
同意範囲組織全体、管理者同意1人の判断が全社影響に拡大する
利用状況少数ユーザーだけが利用標的型の入口になっている可能性がある

たとえば、PDF変換ツールを名乗るアプリが「すべてのメールを読む」「ファイルを読み書きする」「サインインしていないときもアクセスする」といった権限を要求していたら、業務上の必要性と釣り合っていない。これは脆弱性の悪用ではなく、権限設計のミスマッチを突く攻撃だ。

「許可した本人だけの問題」で終わらない

個人のメールボックスだけに見えても、共有メールボックス、共有ドライブ、TeamsやSharePoint上のファイル、取引先情報へ波及する場合がある。SaaS権限は、個人アカウントの境界よりも広く効くことがある。


Microsoft Entra IDで見るべき管理ポイント

Microsoft Entra ID では、ユーザー同意をどこまで許可するか、管理者同意ワークフローを使うか、アプリ同意ポリシーでどの条件なら許可できるかを制御できる。

まず確認したいのは、一般ユーザーが任意のアプリへ自由に同意できる状態になっていないかだ。Microsoft のドキュメントでは、リスク低減のため、検証済み発行者のアプリや選択した権限にユーザー同意を制限する考え方が示されている。業務上どうしても必要なアプリは、管理者同意の申請フローに乗せる方が追跡しやすい。

実務では、次の順に棚卸しする。

  1. エンタープライズアプリケーションの一覧を取得する
  2. 高権限スコープ、オフラインアクセス、メール・ファイル系API権限を抽出する
  3. 発行者確認、所有者、利用ユーザー数、最終利用日時を見る
  4. 不明アプリは所有部門へ確認し、説明できないものは無効化候補にする
  5. 管理者同意のルールを文書化し、申請と承認の履歴を残す

ここで見落としやすいのは、使われていないアプリだ。過去に検証目的で入れたSaaS連携、退職者が作った社内アプリ、放置された自動化ツールは、攻撃者にとって「誰も見ていない権限」になる。


Google Workspaceではアプリアクセス制御を確認する

Google Workspace でも、OAuth 2.0スコープを使うサードパーティアプリのアクセスを管理できる。Google 管理コンソールのアプリアクセス制御では、アプリを Trusted、Limited、Blocked などに分類し、どのGoogleサービスやスコープへアクセスできるかを制御する。

特に、Gmail、Drive、Calendar、Admin SDK などのデータへ触れるアプリは、ユーザー利便性だけで判断しない方がよい。業務部門が便利なツールを導入したつもりでも、そのツールが広いスコープを要求していれば、組織データの出口になる。

管理対象確認すること
Configured apps管理者が明示的に許可・制限したアプリ
Accessed apps実際にユーザーが利用したアプリ
OAuth client ID同名アプリのなりすましや別クライアントを区別する
Requested services / scopesGmail、Driveなど機微データへのアクセス有無
Access levelTrusted、Limited、Blocked の妥当性

Google Workspaceでは、アプリ名だけでなくOAuth client ID単位で確認することが大切だ。同じような名前のアプリでも、実体が異なる場合がある。ユーザー数が少ないのに高権限スコープを持つアプリは、優先的に確認したい。


インシデント時の初動:パスワード変更だけで終わらせない

OAuth同意フィッシングが疑われる場合、パスワード変更やMFA再登録だけで安心してはいけない。攻撃者のアプリに同意済みの権限が残っていれば、認証情報を変えてもアクセスが続く可能性がある。

初動では、次の順で見る。

手順やること目的
1不審なアプリとサービスプリンシパルを特定する攻撃の入口を見つける
2対象ユーザー、同意日時、要求権限を確認する影響範囲を確定する
3アプリの権限を取り消す継続アクセスを止める
4トークン失効、セッション無効化を行う既存セッションを切る
5メール転送、受信ルール、外部共有を確認する二次被害を探す
6監査ログとファイルアクセス履歴を保全する事後調査に備える

インフォスティーラーとAI時代の認証情報危機でも触れた通り、現代の侵害対応では「パスワードを変えたから終わり」では足りない。Cookie、トークン、APIキー、SaaS連携まで含めて失効させる必要がある。

高権限アプリは即時判断が必要

メール読取、ファイル読取、管理API、オフラインアクセスを持つ不明アプリは、通常のヘルプデスク対応ではなくインシデントとして扱うべきだ。業務影響を恐れて放置すると、調査中にもデータ閲覧が続く。


平時の防御:同意を「ユーザー任せ」にしない

OAuth同意フィッシングの防御は、ユーザー教育だけでは弱い。許可画面を見抜ける人を増やすことは重要だが、最終的には管理側で「危険な同意を成立させない」設計が必要になる。

まず、一般ユーザーが高リスク権限へ自由に同意できないようにする。次に、業務上必要なSaaS連携をホワイトリスト化し、申請・審査・期限・所有者を決める。最後に、監査ログで新規アプリ追加や権限変更を検知する。

対策実装の考え方
ユーザー同意の制限低リスク権限のみ許可し、高リスク権限は管理者承認へ回す
管理者同意ワークフロー申請者、業務目的、要求スコープ、期限を記録する
アプリ棚卸し月次または四半期で未利用・所有者不明アプリを削除する
高リスクスコープ監視メール、ファイル、管理API、オフラインアクセスを重点監視する
条件付きアクセス危険な場所、未管理端末、異常サインインと組み合わせて判断する

これは ゼロトラストアーキテクチャ の「決して信頼せず、常に検証する」という考え方と同じだ。ユーザーが一度許可したアプリを永続的に信頼するのではなく、誰が、何のために、どのデータへ、いつまでアクセスするのかを継続的に検証する。


まとめ:認証強化の次はアプリ権限の統制へ

OAuth同意フィッシングは、MFAやパスキーの価値を否定する攻撃ではない。むしろ、認証が強くなったことで、攻撃者が「ログインを破る」から「正規の同意を悪用する」方向へ回り込んでいると見るべきだ。

組織がまず確認すべきなのは、一般ユーザーがどこまでアプリ同意できるか、誰が管理者同意を承認しているか、そして高権限アプリを定期的に棚卸ししているかだ。SaaSの便利な連携は止めるものではなく、見える化して管理するものだ。

次に読むなら、認証の基礎として 認証と認可、フィッシング耐性MFAの実装課題として パスキー導入の落とし穴、攻撃側の文脈として AIフィッシング を合わせて確認すると、クラウドID防御の全体像がつかみやすい。


参考情報

ESC