Azure Cosmos DBデータベースサービスに存在した重大な脆弱性により、攻撃者がサービス上のすべてのデータベースを侵害できる状態にあったことを、サイバーセキュリティ企業Wizが報告しました。
CosmosEscapeと名付けられたこのセキュリティ上の欠陥は、攻撃者がプラットフォーム全体で通用するキーを取得し、任意のCosmos DBアカウントのプライマリキーを取り出すことを可能にするものでした。これにより、サービス全体にわたる完全な読み書きアクセスが可能になっていました。
このキーを手にした攻撃者は、サブスクリプションIDやテナントIDといった特定の組織識別子でフィルタリングしながら、サービス上のすべてのデータベースを一覧表示できたとみられます。
Wizは「これらの機能を連鎖させることで、特定の組織のデータベースを特定するところから、それらを侵害するところまで、プラットフォーム規模での精密なターゲティングが可能になっていた可能性があります。しかもそのすべてが、公開されているエンドポイントから実行できてしまうのです」と述べています。
同社によると、MicrosoftはEntra ID、Teams、Copilot全体にわたるデータをCosmos DBに保存しているため、この脆弱性は同社のデータベースを不正アクセスにさらす恐れがあったといいます。
この問題は、Gremlin APIを通じて悪用可能でした。Gremlinは広く使われているグラフクエリ言語で、独自のGremlinエンジンに依存しており、クエリを.NETコードにコンパイルしてサンドボックス内で実行する仕組みになっています。
サンドボックスの突破
このエンジンはGremlin操作の範囲を超えないよう制限を課していましたが、.NETのリフレクション機能については考慮されていませんでした。Wizはこのリフレクションを利用し、任意のコードを実行できるプリミティブを構築しました。
Wizは「Gremlinのサンドボックスを回避することで、DB Gatewayでのコード実行に成功しました。これは顧客のクエリを代行実行するサービスで、マルチテナントのService Fabricクラスタ上で稼働しています」と説明しています。
続いて同社は、このゲートウェイが署名キーを使って顧客アカウントのプライマリキーを取得し、そのデータベースにアクセスしていること、そしてこの署名キーがテナント、リージョン、さらにはAPIをまたいで通用することを発見しました。
Wizは「これはプラットフォーム全体で通用するキーであり、サービス上の任意のCosmos DBアカウントのプライマリキーを、すべて公開エンドポイント経由で取得できてしまうものでした。私たちはこれを『Cosmos Master Key』と名付けました」と述べています。
このマスターキーを通じて、同社の研究者たちは、名前、サブスクリプションID、テナントIDなど、すべてのCosmos DBアカウントに関する詳細情報を含む構成ストアにアクセスできました。
データベースの乗っ取り
同社は「この構成ストア自体もCosmos DBデータベースであったため、Cosmos DBのSQLエンジンが持つ柔軟性をフルに活用してクエリを実行できました。つまり、Cosmos Master Keyを使えばこの構成ストアのプライマリキーも取得できてしまうということです。これにより、CosmosEscapeを悪用した攻撃者は、あるリージョン内の全アカウントを一覧表示したり、特定のテナントIDでクエリして特定の組織のデータベースを特定したりできる状態にありました」と説明しています。
マスターキーと構成ストアへのアクセス権を持つ攻撃者は、すべてのCosmos DBアカウントを列挙し、絞り込んだうえで、標的のプライマリキーを取得することで、そのすべてのデータベースに対する完全な読み書きアクセス権を得ることができました。
Wizによると、この攻撃はプライベートかつネットワーク的に隔離されたCosmos DBアカウントに対しても、さらにはMicrosoft自身のデータベースに対しても仕掛けることが可能だったといいます。
Wizは2025年11月にこの脆弱性をMicrosoftに報告しました。Microsoftは2日以内に、この攻撃経路を塞ぐホットフィックスを展開しました。そして7月には、全リージョンにわたって長期的なアーキテクチャ上の修正の展開を完了しています。
Microsoftは「当社はアクセスログの徹底的な調査を行いましたが、研究者によるテスト活動以外に不正な活動が行われた形跡は見つかっておらず、顧客データへのアクセスもありませんでした。顧客側で対応が必要な事項はありません」とコメントしています。
翻訳元: https://www.securityweek.com/critical-flaw-led-to-azure-cosmos-db-pwnage/