サイバーセキュリティ評価により、Azure Active Directory(Azure AD)に関わる深刻な脆弱性が明らかになりました。
ResecurityのHUNTERチームは、アプリケーションの資格情報、具体的にはClientIdとClientSecretが、公開アクセス可能なappsettings.jsonファイル内に露出したままになっていたことを発見しました。
侵害への直接ルート
これらの資格情報により、MicrosoftのOAuth 2.0エンドポイントに対して直接認証が可能になります。実際には、これは攻撃者が信頼されたアプリケーションになりすまし、機密性の高いMicrosoft 365リソースへアクセスできることを意味します。
侵害されたアプリに付与されている権限によっては、攻撃者は次のようなことが可能になります。
-
SharePoint、OneDrive、またはExchange Onlineからファイルやメールを取得する
-
Azure AD内のユーザー、グループ、ディレクトリロールを列挙する
-
Microsoft Graph APIを悪用して権限を昇格させたり永続化を維持したりする
-
組織のテナント配下に悪意のあるアプリケーションを展開する
ファイルが公開されていたため、資格情報は自動化ボットと高度な攻撃者の双方によって収集され得ました。
設定ミスが漏えいにつながる理由
研究者らは、この問題を一般的なクラウド設定ミスに起因するとしました。
開発者はしばしば、appsettings.jsonのような設定ファイルにシークレットを直接埋め込みます。これらのファイルが適切な制限なしに誤って本番環境へ投入されると、リスクが顕在化します。
問題は通常、次のような点に起因します。
-
静的ファイルを公開してしまうサーバーの誤設定
-
設定データを保護しない不適切なデプロイ運用
-
Azure Key Vaultのようなシークレット管理ツールの不在
-
セキュリティテストやコードレビューの不足
-
実際の保護メカニズムではなく「秘匿」に依存すること
クラウド設定ミスについて詳しく読む:クラウド設定ミスの理解:原因、是正、予防
ASP.NET Coreアプリケーションでは、appsettings.jsonは中核となる設定ファイルです。通常、データベース接続文字列、APIキー、クラウドサービスの資格情報を保存します。ClientId、TenantId、ClientSecretといったAzure ADの詳細が含まれると、このファイルはアプリケーションの動作方法の設計図であるだけでなく、攻撃者が侵入する方法の設計図にもなってしまいます。
緩和策と得られた教訓
Resecurityの研究者は、このような形でシークレットを露出させることは無害な見落としではなく、直接的な攻撃経路であると警告しました。
「端的に言えば、Azure ADのシークレットを含むappsettings.jsonを露出させることは、単なる設定ミスではありません。攻撃者にクラウドの鍵を直接手渡す攻撃経路です」とチームは説明しました。
「これは単なる設定ミスではなく、起こるのを待っているクラウド侵害です。組織は、クラウドセキュリティは露出した最も弱いファイルと同じ強度にしかならないことを認識しなければなりません。」
緩和には即時の対応が必要です。管理者には、設定ファイルへの公開アクセスを制限し、ハードコードされたシークレットを削除し、侵害された資格情報をローテーションし、最小権限アクセスを徹底し、異常な資格情報の使用を監視することが推奨されます。
画像クレジット:jackpress / Shutterstock.com
翻訳元: https://www.infosecurity-magazine.com/news/azure-ad-credentials-exposed/