微软修复Azure Database for PostgreSQL服务中的跨账户漏洞

发布时间:2022-04-29 08:42

微软修复了 Azure Database for PostgreSQL 灵活服务器的身份验证过程中的两个缺陷,这些缺陷可能允许任何 Postgres 管理员获得超级用户权限并访问其他客户的数据库。

“通过利用复制用户的灵活服务器身份验证过程中的提升权限错误,恶意用户可以利用不正确锚定的正则表达式绕过身份验证以访问其他客户的数据库,”该软件巨头在 Thursdsay 的一份咨询中解释道.

云安全供应商 Wiz 在 1 月份发现了身份验证过程中的错误,此后微软已经解决了这些错误。尽管所有使用公共访问网络选项的灵活服务器 Postgres 服务器都受到了影响,但 Redmond goliath 表示,它在任何不法分子利用该问题并访问客户数据之前缓解了安全漏洞。

微软没有说明有多少客户易受攻击。但是,任何使用私人访问网络选项的人都没有被曝光。

虽然客户无需采取任何措施来解决此问题,但 Microsoft 建议客户在设置灵活服务器实例时启用专用网络访问,以最大限度地减少进一步的风险。

Wiz 研究人员在对这些漏洞的分析中详细介绍了他们如何绕过Azure的云隔离模型来利用这两个漏洞。

从 Cosmos DB 到 ExtraReplica
提醒一下:Wiz 是一家云安全初创公司,其创始人帮助构建 Azure 安全堆栈,去年他们还发现了 Cosmo DB 漏洞。此错误允许通过一系列错误配置 Cosmos DB 不受限制地访问 Azure 客户的数据库。事实上,这就是团队发现这个新缺陷的方式,今天披露。

“我们之前在 Azure Cosmos DB 中发现了漏洞,”Wiz 研究人员 Sagi Tzadik、Nir Ohfeld、Shir Tamari 和 Ronen Shustin在他们的分析中写道。“我们能否在其他 Azure 服务中重现类似的问题?”

答案当然是肯定的。

Azure Database for PostgreSQL 灵活服务器是 Microsoft 为开源 PostgreSQL 数据库提供的完全托管、可扩展的服务。

而且 PostgreSQL 有一个特性,允许用户将他们的数据库数据从一台服务器复制到另一台服务器,这种复制能力对于备份和故障转移场景很有用。它还可能允许网络犯罪分子利用微软托管服务中的这一缺陷。

当他们去寻找 bug 时,Wiz 团队发现 Azure 修改了其 PostgreSQL 引擎,可能是为了加强安全性并添加新功能。然而,这也引入了一个权限提升漏洞,允许研究人员以超级用户身份执行任意查询,包括操作系统级别的命令。

“虽然微软已经修复了这个漏洞,但出于对可能在其 PostgreSQL 引擎中进行类似修改的其他供应商的谨慎考虑,我们目前没有披露利用细节,”他们写道。

该团队还发现,可以从 PostgreSQL 容器内部访问网络接口,并且他们的容器与主机共享一个网络命名空间。因此他们决定在不同的帐户上创建另一个实例,看看是否可以通过内部网络接口路由来访问其他客户的实例。

它奏效了。

“最重要的是,即使实例的防火墙配置为拒绝所有连接尝试,它也能正常工作,”他们说,并补充说他们认为这违反了用户的期望,即他们的数据库与其他客户保持隔离。

“但是,由于我们仍然需要该数据库的用户名和密码才能执行任何有意义的操作(例如读取或修改数据),因此这个问题的严重性仍然很低,”Wiz 承认。

漏洞 #2
Wiz 研究人员还详细介绍了他们如何利用身份验证过程中的第二个漏洞。允许的过度:使用伪造证书绕过跨帐户身份验证。

为此,他们在服务的身份验证过程中发现了第二个漏洞:对证书公用名的过度许可正则表达式验证:

pgusermap /^(.*?)\.eee03a2acfe6\.database\.azure\.com(.*)$ \1

正则表达式末尾的通配符 (.*) 是问题所在。为了利用这一点,所有的 bug 搜寻者都必须注册一个与这个正则表达式匹配的域:

Replication.eee03a2acfe6.database.azure.com.wiz-research.com

然后访问digicert.com并颁发证书到:

replication.eee03a2acfe6.database.azure.com.wiz-research.com.

这很奏效,因为安全商店拥有 wiz-research.com,因此他们能够从 DigiCert 的中间 CA RapidSSL 购买证书。

为他们自己的域颁发证书允许 Wiz 团队访问它在不同租户上拥有的单独帐户的数据库,这提供了跨帐户数据库访问。

但是,访问其他客户的数据库需要更多步骤。

破门而入
每个数据库实例都有一个唯一标识符,要为特定数据库生成客户证书,攻击者需要知道这个唯一标识符。

Wiz 团队发现该标识符出现在服务器的 SSL 证书中。“通过尝试使用 SSL 连接内部网络中的其他数据库,我们可以检索它们的 SSL 证书并提取子网中每个数据库的唯一标识符”,他们解释道。

一旦他们获得了标识符,他们就可以再次购买一个伪造的通用名称的证书,并在目标地区建立一个新的数据库。

然后是时候利用第一个漏洞来提升权限并获得代码执行,扫描目标实例的子网,利用第二个漏洞并获得对受害者数据库的读取访问权限。

微软推出修复程序
微软表示,它于 1 月 13 日推出了针对允许跨租户攻击的最关键漏洞的修复程序。根据安全公告,该数据库服务现在提供“不同租户的底层虚拟机实例之间的完全隔离”。

此外,现在仅在匹配确切的主题名称时才关联复制权限,而不仅仅是前缀匹配。

“在补丁发布期间,我们还解决了所有新服务器创建的问题,以阻止提升的特权访问和远程代码访问,”雷德蒙德补充道。

微软还阻止了 Postgres 中的复制程序,据称该程序负责处理服务中的远程代码执行漏洞,并在 2 月 25 日之前修复了显示证书名称的 Postgres 错误消息。

客户热线:037125966675