Azure Cosmos DB 漏洞暴露平台级密钥,可访问任何数据库
- 浏览次数 2680
- 喜欢 0
根据 Wiz 的说法,Azure Cosmos DB 中一个现已修复的漏洞可能允许攻击者逃离该服务的 Gremlin 查询沙箱,并获得跨客户租户数据库的完全读写访问权限。
Wiz 将该利用链代号命名为 CosmosEscape,表示该利用链始于针对攻击者控制的 Gremlin 数据库精心构造的查询。从那里开始,在多租户网关上的代码执行暴露了一个平台级签名密钥和一个区域账户目录,使研究人员能够定位目标并检索其主账户密钥。
微软在收到 2025 年 11 月的报告后 48 小时内阻止了易受攻击的 Gremlin 入口点。Wiz 表示,微软于 2026 年 7 月完成了所有区域的长期修复,并消除了该平台级密钥。
"我们感谢 Wiz 通过协调漏洞披露识别并报告此问题,"微软发言人告诉 The Hacker News。"我们已完全解决该问题,并根据我们的调查未发现客户受到影响的证据。我们将继续在整个平台上投入额外的安全增强措施。"
微软表示,其审查未发现研究人员测试之外的任何未授权活动。它表示没有客户数据被访问,也无需客户采取任何行动。
The Hacker News 也已联系 Wiz 以澄清利用前提条件和测试范围。本文将根据任何回复进行更新。
已公布的利用链始于攻击者控制的 Gremlin 数据库以及该账户的凭据,而非对受害者数据库的访问。
微软当前的连接指南要求客户端在提交 Gremlin 查询之前,需要提供账户主机、数据库、图路径和主密钥。Wiz 尚未公布该利用是否需要超出该起始点的任何其他条件。
根据 Wiz 的技术文章,Cosmos DB 的自定义 Gremlin 引擎将 Gremlin 查询转换为 .NET 代码,并在受限环境中运行。Wiz 表示,这些限制未能考虑到 .NET 反射,使研究人员能够在实现任意代码执行之前构建文件读取和文件写入原语。
公开披露显示了在 Cosmos DB 后端执行 hostname 命令的精心构造查询的输出,但未显示查询本身。研究人员表示,他们将在 8 月 6 日的 Black Hat USA 简报会上展示完整的利用链。
代码执行发生在 Wiz 称之为 DB Gateway 的组件上,该组件在多租户 Azure Service Fabric 集群上执行客户查询。客户数据库并未存储在这些集群上,但网关可以检索所请求的 Cosmos DB 账户的主密钥。微软文档称,Cosmos DB 账户主密钥授予对该账户中所有资源的完全控制权。
网关可用的凭据还提供了对 Wiz 称之为 Cosmos Master Key 的签名密钥的访问权限。Wiz 表示,该网关的签名密钥可以检索跨租户、区域以及 SQL、MongoDB、Cassandra 和 Gremlin API 的任何账户的主密钥。
同样的密钥还开启了一个名为 Config Store 的区域数据库,Wiz 将其描述为一个包含 Cosmos DB 账户名称、订阅和租户标识符、网络设置和标签的目录。攻击者可以利用它来查找特定组织的账户,然后请求其主密钥。
Wiz 表示,该利用链还可以访问私有和网络隔离的账户,因为被入侵的网关从服务内部强制执行这些网络边界。研究人员对 Config Store 的写入权限表明网络设置也可以被更改,尽管报告未说明他们针对其他客户的账户演示了这一点。
微软文档称 Teams 消息数据保留在 Cosmos DB 中,而微软的一篇工程文章称 Copilot 将用户的查询和对话历史存储在其中。Wiz 表示,支持这些产品的数据库可能可被访问,但未报告访问了它们的数据。
公开记录未说明易受攻击的引擎和签名密钥路径何时投入生产,也未说明微软的日志审查覆盖了哪个时间段。因此,潜在暴露的持续时间仍然未知,尽管已知路径此后已被关闭。
该披露未列出 CVE 标识符或严重性评分。CosmosEscape 在技术上与 2021 年和 2022 年披露的 ChaosDB 和 CosMiss 漏洞不同,后者涉及 Cosmos DB 的 Jupyter Notebook 功能。