概要
- Microsoftの 内部サービス22件以上 に不正アクセスできた経緯と脆弱性の内容
- Entra IDのマルチテナントアプリ 設定ミスに起因するリスクの解説
- 実際にアクセスできた 機密データやシステム の具体例
- 攻撃面の調査方法 と再現性、他のサービスも同様に脆弱な可能性
- 対策方法 とPowerShellによる脆弱性チェックの案内
Microsoft内部サービスへの不正アクセス体験記
- aka.ms はMicrosoftの公式URL短縮サービス
- 単なる興味から https://aka.ms へアクセスし、ログイン画面を発見
- 一般ユーザーではログイン不可、Microsoftテナントアカウントが必要
- eng.ms という新たなドメインを発見し、サブドメイン列挙を実施
- rescue.eng.ms で自分のMicrosoft 365アカウントでログイン成功
- 表示された Engineering Hub はMicrosoftエンジニア向けポータル
- 内部手続きや製品グループの パスワード情報13,252件 にアクセス可能
- すぐにアクセスを停止し、 Microsoft Security Response Centre (MSRC) に報告
Entra IDの認証・認可の仕組みと問題点
- Entra ID でWebアプリを認証する場合、まずアプリ登録が必要
- アプリは シングルテナント または マルチテナント として設定可能
- マルチテナントアプリは personal Microsoft accounts も許可可能
- 認証エンドポイントURL: ・シングルテナント: /tenantid または /domain ・マルチテナント: /common
- Engineering Hubは マルチテナントアプリ として /common エンドポイントを利用
- ユーザーが初回アクセス時に Consent(同意)画面 が表示され、同意後は自分のテナントで Service Principal が作成される
- 発行された アクセストークン は自分のテナント由来、 認可の主体が誤っている 状態
- アプリロジックで トークンのissやtidを未検証 だったため、内部サービスへ不正アクセス可能
Microsoft攻撃面の調査方法
-
microsoft.com、azure.com、office.com、.msドメイン のサブドメインを列挙
-
102,672件 の(サブ)ドメインをリストアップし、うち 1,406件 がEntra ID認証を利用
-
各アプリの client_id からApplication IDを抽出し、Azure AD Graph APIでマルチテナントか判別
-
1,406件中176件 がマルチテナント設定
-
多くのアプリが /tenantidエンドポイント を利用していたが、これは本来シングルテナント用
-
認証時に /tenantid→/common へ書き換えることで、攻撃側テナントで認証可能
- Burp Suite等で マッチ&リプレースルール を用い、認証エンドポイントを書き換え
- 一部アプリはユーザー割り当てやConsentが必要だが、自テナントなので容易に設定可能
-
必要に応じてPowerShellで Service Principalを直接作成 し、Consentフローをスキップ
実際にアクセスできた内部Microsoftアプリの例
- Risk Register (内容はMicrosoftの要請で非公開)
- Security Intelligence Platform (セキュリティインテリジェンスデータセット)
- Media Creation Service (Windows等のメディア生成・ライセンスキーAPI・ビルド基盤へのRCE)
- Engage ACE Hub
- Responsible AI Ops Platform
- Billing Account of Microsoft Internal (BAMI) portal
- CPET webservice
- Electronic Label Management
- Bing ads SA Diagnostic Tool
- Secure Devices Portal など多数
脆弱性の本質と組織的リスク
- アプリ開発者とEntra登録担当の責任分担の曖昧さ が原因
- アプリ開発者は認証周りの設定を十分に理解せず、登録担当も細部まで把握していないケースが多い
- 結果として 意図せずマルチテナント化 し、外部からアクセス可能に
検証・対策方法
-
マルチテナントアプリの利用は必要最小限に限定
-
アプリロジックで アクセストークンのissまたはtidクレームを必ず検証
-
PowerShellスクリプトで 自組織のマルチテナントアプリとリダイレクトURI を一覧化
- 例:
.\ListMultiTenantApplications.ps1 - 出力例:
DisplayName AppId RedirectUris ----------- ----- ------------ Eye Security Secret App 8123db1e-3ae6-4068-abcd-f45acafee99c https://somepath.eye.security Eye Security Research Blog 74561b55-4eee-4db9-dead-c80ababee56d https://research.eye.security/rest/oauth2-credential/callback - 各アプリのリダイレクトURIが インターネット経由で到達可能か確認 し、 iss/tidチェック が実装されているか精査
- 例:
報告・報奨・その後
- 2024年11月 に最初の4件をMSRCへ報告
- Microsoft側が Azure Security Variant Hunting Team を立ち上げ、報告合戦に
- 2025年1月に18件中17件 で報告勝利、ほぼ全件が2ヶ月以内に修正
- MSRC Q1リーダーボード第3位 を獲得
- バグバウンティ報酬は…(YouTubeコメントの通り、期待外れ?)
- 最後に“Rewards Support Tool”アプリにアクセス、「自分にご褒美を…」で締め
まとめ・教訓
- 大規模環境では設定ミス1つで甚大なリスク が発生
- アプリの認証・認可設計は 必ず多重で検証
- 自組織のEntra環境を定期的に監査 し、不要なマルチテナント設定や認可ミスを排除
- バグハンティングは 知識と好奇心が成果に直結