MongoBleed漏洞允许攻击者从MongoDB的堆内存中读取数据

来源: InfoQ - 云计算

原文

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/