Wiz 表示 Azure Cosmos DB 漏洞可能已暴露所有数据库

Wiz 表示,Microsoft 已彻底修复了 CosmosEscape,这是一个 Gremlin API 的漏洞链,曾获取到平台范围的签名密钥。

By · Published

Primary source: Wiz Research

Why it matters

CosmosEscape shows how one provider-side sandbox failure can bypass customer network controls when an internal service holds credentials with cross-tenant authority.

Cloud database architecture, illustrating a detected and remediated vulnerability (Isotype infographic poster with mid-century pictograms)

Wiz Research 发布了一份技术报告,介绍了 CosmosEscape —— Azure Cosmos DB 的 Gremlin API 中的一个漏洞链,Wiz 表示该漏洞可能允许对该服务上的每个数据库进行完整的读写访问。Microsoft 在包含于 Wiz 报告中的一份声明中表示,未发现除 Wiz 研究之外的利用证据,且不需要客户采取任何行动。

该发现伴随不寻常的创始人背景。Assaf Rappaport、Ami Luttwak、Yinon Costica 和 Roy Reznik 在 2020 年创立了 Wiz,此前他们创建了 Adallom,并在 2015 年将其卖给了 Microsoft,随后领导过 Microsoft 的云安全组织。Wiz 现在正在对其创始人前雇主运营的基础设施深处的一个缺陷发布研究。

Wiz 的作者将该链命名为 CosmosEscape。根据 Wiz 的技术报告,研究人员对他们控制的数据库使用精心构造的 Gremlin 查询,获得了在 Cosmos DB 后端的代码执行,并最终到达了一个平台范围的签名密钥,Wiz 将其称为 “Cosmos Master Key”。

一个查询越过租户边界

第一个线索是在 Wiz 研究人员查询他们控制的数据库时产生的一个 .NET 异常。大多数开源 Gremlin 系统基于 Java Virtual Machine,因此该异常表明 Microsoft 构建了一个将 Gremlin 查询翻译为 .NET 代码的自定义引擎。

Wiz 表示该引擎限制了生成代码的能力,但其沙箱没有充分考虑 .NET reflection。研究人员开发出文件读写能力,随后实现了对 Cosmos DB 后端的任意代码执行。报告中的一个截图显示,经过构造的查询执行了 hostname 命令。

这些代码在一个名为 DB Gateway 的组件上运行,该组件在多租户 Service Fabric 集群上处理客户查询。客户数据库托管在别处,但网关需要它们的 primary keys 来访问它们。这些密钥授予完整的读写权限。

据报告,网关通过其集群可用的签名凭证获取账户密钥。Wiz 发现该凭证在跨客户、跨区域以及 Cosmos DB 的各类接口(包括 SQL、MongoDB、Cassandra 和 Gremlin)中均可起作用。报告称,公开可访问的端点可以使用该凭证请求指定账户的主密钥。

相同的凭证打开了第二条通路,穿过了 Wiz 称之为 Config Store 的区域性数据库。该目录包含 Cosmos DB 账户名称、租户和订阅标识符、网络设置和标签。攻击者可以在其中搜索特定组织,然后请求该组织账户的主密钥。

Wiz 表示,该链还可到达私有和网络隔离的数据库。被攻破的 DB Gateway 负责执行这些网络限制,把攻击置于客户依赖以实现隔离的边界之内。由于该故障位于 Cosmos DB 的服务层,客户无法通过自己的配置来修补它。

潜在影响甚至延伸到 Microsoft 自家的产品。Wiz 识别出 Microsoft Teams、Microsoft Entra ID 和 Microsoft Copilot 等服务将数据存储在 Cosmos DB 中。报告称,支持这些服务的数据库也有可能通过相同的链路被访问。Microsoft 在包含于 Wiz 报告中的声明中表示,未发现任何人在 Wiz 测试之外利用该漏洞的证据。

Microsoft 表示已全面修复该问题

Wiz 表示 Microsoft 已全面修复该问题,消除了 Cosmos Master Key 并添加了旨在阻止类似攻击的防护措施。在包含于 Wiz 报告中的供应商声明中,Microsoft 表示已审查访问日志,未发现除研究人员测试之外的未授权活动。Microsoft 还表示不需要客户采取任何操作。

Wiz 描述的补救措施超出了 Gremlin 沙箱的范围。移除跨租户的签名凭证解决了将一次沙箱逃逸变为服务范围妥协的设计决策。

Wiz 表示将在即将到来的 Black Hat USA 演讲 上展示完整查询。在该演讲之前,公司已在公开报告中保留了完整查询。

Atlas 迎来真实世界的测试

该披露还使 Wiz 的 AI 安全工作在一次实时调查中承担了具体角色。Wiz 表示其早期版本的 Atlas, its AI vulnerability researcher 协助了 CosmosEscape 的工作。

Wiz 曾将 Atlas 描述为一个可以帮助复现和调查漏洞的系统,同时也承认从零开始发现未知漏洞更为困难。

CosmosEscape 使 Atlas 更接近于那类更困难的情况。技术叙述仍由研究人员的观察驱动:发现一个意外的异常、推断出存在一个自定义执行引擎,以及沿着网关的凭证进入 Cosmos DB 的内部账户目录。

Atlas 的具体贡献将决定 CosmosEscape 关于 AI 辅助安全研究的结论有多大分量。一个加速测试和利用验证的代理已经很有用。一个能独立识别从沙箱逃逸到平台范围凭证这一关键架构跃迁的系统,将代表更大的进步。

这项研究成为 Wiz 多云论点的一部分

该披露发生在 Google 于 3 月 11 日完成对 Wiz 的收购 四个月后。Google 表示 Wiz 将保留其品牌并继续支持 Microsoft Azure、Amazon Web Services、Oracle Cloud 和其他环境。

发布一个严重的 Azure 发现有助于巩固这一多云立场。Wiz 现在在一家云提供商内部运营,同时销售跨竞争云的安全覆盖。让 Microsoft 基础设施接受仔细审视的研究有助于表明在 Google 所有权下对 Azure 的承诺仍在继续。

这对 Wiz 的商业也有利。一个绕过客户网络隔离并到达提供商内部认证层的漏洞,强化了 Rappaport 及其联合创始人创立 Wiz 时所基于的前提:云风险往往源自身份、服务和控制面组件之间的关系,而不是单一错误配置的服务器。

CosmosEscape 也给云平台构建者敲响了警钟。一次沙箱逃逸本应局限于查询处理环境。边界另一侧存在一个平台范围的凭证,使得在一个客户工作流中发生的代码执行变成了通往每个租户的潜在途径。Microsoft 在长期修复中消除了该凭证。该架构赋予了一个内部组件远超其安全承受能力的权限。

Reader comments

Conversation for this story loads after sign-in.