打开网易新闻 查看精彩图片

作者 | Renato Losio

译者 | 刘雅梦

策划 | 丁晓昀

MongoDB 最近修补了 CVE-2025-14847,这是一个影响多个支持和遗留 MongoDB 服务器版本的漏洞。根据披露,该漏洞可以被未认证的攻击者以较低的复杂度远程利用,可能导致敏感数据和凭证的外泄。

这个漏洞被称为 MongoBleed,以臭名昭著的 Heartbleed 命名,CVSS 得分为 8.7,由对 zlib 压缩网络流量处理不当触发,允许未经身份验证的攻击者泄露未初始化的内存,并可能从受影响的 MongoDB 服务器窃取敏感数据,如凭证或令牌。根据 Wiz 的安全研究人员,该漏洞正在被广泛利用。

正如 MongoDB 的声明所述,MongoDB Atlas 上的托管实例已经被修补,但是如果自托管 MongoDB 不更新,仍然存在风险。强烈建议组织立即应用安全补丁,或禁用压缩并限制网络暴露。Merav Bar、Amitai Cohen、Yaara Shriki 和 Gili Tikochinski 解释:

CVE-2025-14847 源于 MongoDB 服务器基于 zlib 的网络消息解压缩逻辑中的一个缺陷,该逻辑在认证之前进行了处理。通过发送畸形的压缩网络数据包,未经身份验证的攻击者可以触发服务器错误处理解压缩的消息长度,导致返回给客户端未初始化堆内存。

根据 Wiz 文章,42% 的云环境中至少有一个易受攻击的 MongoDB 实例,Censys 报告称全球大约有 87,000 台服务器存在潜在的风险。由于该漏洞可以在没有认证或用户交互的情况下被利用,暴露在互联网上的数据库服务器面临特别高的风险。Wiz 团队补充道:

在代码层面,这个漏洞是由 message_compressor_zlib.cpp 中的错误长度处理引起的。受影响的逻辑返回了分配的缓冲区大小(output.length()),而不是实际解压缩数据的长度,从而允许过小或畸形的有效载荷暴露相邻的堆内存

这个漏洞影响了自 2017 年以来发布的所有 MongoDB 版本。Linkfields Innovations 的软件开发人员 Gourav Boiri评论道:

MongoBleed 突出了即使是成熟的数据库,当暴露或打补丁时,也可能成为关键的攻击面。预认证内存泄露、主动漏洞攻击和 87K+ 暴露实例——提醒我们,数据库安全就是基础设施安全。

在“简单解释 MongoBleed”的文章中,Stanislav Kozlovski 解释了这一漏洞的工作原理,并警告说:

它非常容易被利用——只需要连接到数据库(不需要认证)。截至撰写本文时,它已经被修复,但一些 EOL 版本(3.6、4.0、4.2)将不会得到修复。

InfoSec 创始人和实践者 Eric Capuano 解释了 如何从日志中检测数据库服务器是否被利用。在一个流行的 Reddit 帖子中,用户 misteryuub 争论道:

很多人争论说开源代码比闭源代码更安全,或者安全问题会在开源代码中更快被发现。这种级别的漏洞存在是对这个论点的反驳。

Kozlovski 不同意:

当人们说开源更安全时,他们通常指的是有活跃社区的开源项目。Mongo 在 2017 年似乎没有这个,因为引入这个漏洞的 PR 没有在公共 GitHub 上被审查。

MongoDB 补丁版本现在可用于从 4.4 到 8.0 的所有支持版本。像 Percona Server for MongoDB 这样的分支也受到上游漏洞的影响。

https://www.infoq.com/news/2026/01/mongodb-mongobleed-vulnerability/

明:本文为 InfoQ 翻译,未经许可禁止转载。