Azure AD Vulnerability Leaks Credentials, Lets Attackers Deploy Malicious Apps
2025/09/02 gbhackers — Azure Active Directory (Azure AD) の認証情報を取り込んだ ASP.NET Core の “appsettings.json” ファイルが公開されると、深刻な攻撃ベクターが発生し、ユーザー組織のクラウド環境への鍵を攻撃者に渡すことになり得る。先日に実施された、Resecurity HUNTER チームによるサイバー・セキュリティ評価において、公開されている “appsettings.json” ファイルにより、Azure AD アプリケーションの ClientId と ClientSecret が公開されていることが判明した。したがって、Microsoft の OAuth 2.0 エンドポイントに対して直接認証を行う攻撃者は、信頼されたアプリケーションとして振る舞えるようになる。

重大度の高い影響
漏洩した ClientId と ClientSecret を悪用する攻撃者は、クライアント認証情報フローを介して OAuth 2.0 トークンを要求し、Bearer トークンを取得することで、Microsoft Graph API へのアクセス許可を取得する。したがって、それぞれのアプリケーションに割り当てられた Graph 権限に基づくトークンにより、攻撃者は以下の不正なアクションを可能にする。
- SharePoint/OneDrive/Exchange Online からの機密データの窃取。
- Azure AD におけるユーザー/グループ/ディレクトリなどのロールの列挙。
- 権限昇格または永続化を目的とした Graph API 呼び出しの悪用。
- テナント内における悪意のアプリケーションのデプロイ。
このファイルは、アクセス制御なしで提供されていたので、脅威アクターによる自動スキャンなどでシークレットが収集され、クラウド・アカウントへの侵害やデータ窃取に加えて、本番環境サービスでの横展開などが可能だった。

この脆弱性は、クラウド・ネイティブ・アプリの典型的な不備である、ミスコンフィグレーションや不適切なシークレット管理に起因する。ローカルの開発においては、ClientId/ClientSecret/ストレージキー/データベースパスワードなどの機密値が、プレーンなコンフィグ・ファイルに保存されることが多い。このような問題は、以下の場合に発生する。
- サーバが静的ファイルを提供するようにミスコンフィグレーションされ、誤って JSON コンフィグが公開される。
- デプロイ・パイプラインの内部コンフィグ・ファイルが、アクセス制限なしの状態で、本番環境にプッシュされる。
- 安全な保管庫である Azure Key Vault/AWS Secrets Manager を回避する開発チームにより、シークレットがハードコードされる。
- 定期的なセキュリティ・テストやコード・レビューが実施されないため、誤って公開されたファイルが見過ごされる。
- 内部ファイルは “誰にも見つからない”という、前提に基づく機密性への過度の依存があり、自動クロール・ツールの存在を無視している。
漏洩の分析
ASP.NET Core アプリケーションでは、”appsettings.json” が主要なコンフィグ・ファイルであり、接続文字列/API キー/クラウド認証情報/ログ設定/機能フラグなどが取り込まれている。そして AzureAd セクションには、Instance/TenantId/ClientId/RedirectUri/ClientSecret などのフィールドが格納されている。

これらの値が公開されてしまうと、それらを足掛かりとする攻撃者が、正規のアプリケーションに成りすますようになる。
- トークンの取得:漏洩した ClientId と ClientSecret を悪用する攻撃者は、Azure AD の /oauth2/v2.0/token エンドポイントに POST を送信し、Bearer トークンを取得する。
- ユーザーの列挙:それらのトークンを悪用する攻撃者は、GET https://graph.microsoft.com/v1.0/users を呼び出し、すべてのテナント・ユーザーを一覧表示した上で、名前/メールアドレス/オブジェクト ID を収集する。
- 権限の付与:後続の GET https://graph.microsoft.com/v1.0/oauth2PermissionGrants により、侵害したアプリが保持する権限が明らかになる。
- グループの列挙:GET https://graph.microsoft.com/v1.0/groups を呼び出すと、組織グループが公開され、高権限クラスター内のターゲットとして、グローバル管理者などが浮かび上がる。
これらの機能により、攻撃者が可能にするものには、データ窃取/権限昇格に加えて、永続アクセスのための不正アプリケーション登録や、クラウド・リソースの改竄などがある。
ユーザー組織にとって必要なことは、厳格なファイル・アクセス制御の実施/公開ホスティングからのコンフィグ・ファイルの除外/堅牢なシークレット管理プラクティスの導入である。
さらに、シークレットの安全な保管庫への移行/漏洩した資格情報に対する自動スキャンの統合/定期的なペンテストの実施/Graph への最小限の権限の適用などにより、このような漏洩のリスクを大幅に軽減できる。
ASP.NET Core の “appsettings.json” に、Azure AD 認証情報が誤って公開されると、深刻な脆弱性が生じるようです。原因は、ミスコンフィグや不適切なシークレット管理にあります。本来なら安全に保管すべき ClientId や ClientSecret が平文のまま格納され、公開環境に配置されることで攻撃者に利用されてしまいます。クラウド・アプリの便利さの裏で、基本的な秘密情報管理の欠如が、深刻なリスクにつながると、この記事は指摘しています。ご利用のチームは、ご注意ください。よろしければ、Azure AD で検索も、ご参照ください。
You must be logged in to post a comment.