作者:Nir Ohfeld和Sagi Tzadik是安全公司Wiz的两位安全研究人员。
如今我们在网上所做的几乎一切都通过云端的应用程序和数据库来进行。虽然存储桶泄漏备受关注,但对于大多数公司来说数据库泄露才是更大的风险,因为每个数据库可能含有数百万甚至数十亿条敏感记录。每个首席信息安全官(CISO)的噩梦是,有人一举获得了访问密钥,并往外泄露数千GB的数据。
因此,当我们能够完全不受限制地访问数千个微软Azure客户(包括许多《财富》500强公司)的帐户和数据库时,您可以想象我们有多惊讶。Wiz的安全研究团队(也就是我们)不断寻找云端的新攻击面,两周前我们发现了一处影响Azure的旗舰数据库服务Cosmos DB的前所未有的安全漏洞。
可口可乐、埃克森美和思杰等微软客户使用Cosmos DB近乎实时地管理来自世界各地的海量数据。作为开发人员存储数据的最简单、最灵活的方式之一,Cosmos DB支持关键业务功能,比如处理数百万个处方交易或管理电子商务网站上的客户订单流。
近年来,随着更多的公司纷纷迁移到云,数据库泄露事件变得异常普遍,而罪魁祸首通常是客户环境中的错误配置。在这种情况下,客户没有过错。
确切地说,Cosmos DB功能中的一系列缺陷造成了安全漏洞,允许任何用户可以下载、删除或操纵大量的商业数据库,以及对Cosmos DB底层架构执行读取/写入访问。
我们将这个漏洞命名为#ChaosDB。钻它的空子轻而易举,不需要其他登录信息(凭据)。
第一部分:窃取Cosmos DB客户的主密钥
首先,我们获得了对客户的Cosmos DB主密钥的访问权限。主密钥是攻击者觊觎的目标——它们长期存在,允许对客户数据进行全面的读取/写入/删除访问。
2019年,微软为Cosmos DB添加了一项名为Jupyter Notebook的功能,让客户可以直观显示其数据,并创建自定义视图(见下图)。该功能已在2021年2月自动为所有Cosmos DB启用。
Notebook功能中的一系列错误配置打开了一条新的攻击途径,我们得以趁虚而入。简而言之,notebook容器允许将权限升级到可以访问其他客户notebook(下面会介绍有关权限升级的技术细节)。
因此,攻击者可以访问客户的Cosmos DB主密钥及其他高度敏感的秘密信息,比如notebook blob 存储访问令牌。
第二部分:访问Cosmos DB中的客户数据
接下来,在收集Cosmos DB秘密信息后,我们表明攻击者可以利用这些密钥,对存储在受影响的Cosmos DB帐户中的所有数据进行全面的管理员级访问。
我们获取了密钥,因而可以长期访问客户资产和数据。然后,我们可以直接从互联网控制客户Cosmos DB,并拥有全面的读取/写入/删除权限。
现在想象一下针对30多个地区的成千上万客户重复这个过程……
影响和范围
微软的安全团队立即采取了行动以解决这个问题,这值得称赞。我们很少看到安全团队行动如此之快速!他们在我们报告后48小时内禁用了易受攻击的notebook功能。针对所有等待重新设计安全的客户,该功能仍处于关闭状态。
然而,客户可能仍会受到影响,因为他们的主访问密钥可能已泄露。这些是长期存在的秘密信息;万一泄露,攻击者可以使用该密钥来泄露数据库内容。今天,微软已通知超过30%的Cosmos DB客户:他们需要手动轮换访问密钥以缓解这个风险。
微软仅在我们短暂(大约一周)的研究期间向受影响的客户发去了电子邮件。然而,我们认为多得多的Cosmos DB客户可能面临风险。该漏洞至少几个月前就可以被人钻空子,甚至可能几年前。
每个使用notebook功能或在2021年2月之后创建的Cosmos DB帐户都可能已泄露。作为一项防范措施,我们敦促每个Cosmos DB客户都应采取措施来保护自己的信息。
如果您认为贵组织可能受到ChaosDB的影响,请按照本文(https://docs.microsoft.com/azure/cosmos-db/secure-access-to-data#primary-keys)中描述的步骤,获取有关如何重新生成和轮换密钥的详细说明。