漏洞详情#
一个名为 MongoBleed (CVE-2025-14847) 的严重漏洞已被发现,该漏洞几乎影响过去十年发布的所有 MongoDB 版本。未经身份验证的远程攻击者可以读取服务器内存(RAM)中的大块数据。
此漏洞源于 MongoDB 处理 zlib 压缩数据包 时的缺陷,可能导致凭证、API 密钥、客户个人身份信息和内部服务器状态泄露。
什么是 MongoBleed?#
MongoDB 使用特定的网络协议与客户端通信。为了节省带宽,该协议支持压缩,其中最常用的是 zlib。漏洞在于内部的解压缩逻辑未能正确验证解压后的数据长度,从而导致服务器可能返回未初始化的内存数据给攻击者。
src/mongo/transport/message_compressor_zlib.cpp影响版本#
| MongoDB 版本系列 | 易受攻击版本 | 已修复版本 |
|---|---|---|
| 8.2 | 8.2.0 – 8.2.2 | 8.2.3 |
| 8.0 | 8.0.0 – 8.0.16 | 8.0.17 |
| 7.0 | 7.0.0 – 7.0.27 | 7.0.28 |
| 6.0 | 6.0.0 – 6.0.26 | 6.0.27 |
| 5.0 | 5.0.0 – 5.0.31 | 5.0.32 |
| 4.4 | 4.4.0 – 4.4.29 | 4.4.30 |
| 4.2/4.0/3.6 | 全版本受影响 | 生命周期结束(可能不会修复) |
| *注:这些受影响版本信息来自文章复现部分。 |
漏洞复现#
以下示例演示如何使用 PoC 脚本来触发 MongoBleed 漏洞:
docker-compose up -d

python3 poc.py- 注意:使用前请根据目标 host 和端口调整 PoC 脚本参数。
修复建议#
📌 方案 A:升级至修复版本(推荐)#
- 确保升级到官方包含补丁的 MongoDB 版本,例如:
mongo:8.0.17
mongo:7.0.28- 这是确保代码路径真正被修补的唯一方法。 适用于 Debian/Ubuntu 系统:
sudo apt-get update
sudo apt-get install -y mongodb-org
# Verify version
mongod --version- 对于 Docker:请更新您的配置 docker-compose.yml,以获取特定的已修补标签。
image: mongo:8.0.17警告:在进行主要版本升级之前,务必备份数据目录。
⚠️方案 B:变通方法(禁用 Zlib)#
- 如果无法立即升级,可通过配置禁用 zlib:这将阻止攻击,因为服务器会拒绝格式错误的压缩数据包。
net:
compression:
compressors: snappy,zstd # 移除 zlib- 编辑您的 mongod.conf(通常在 /etc/mongod.conf):
- 查找以下 net 部分:
net:
compression:
compressors: snappy,zstd # REMOVE "zlib" FROM THIS LIST如果该 compressors 行允许 zlib,请将其删除。如果该行缺失,MongoDB 可能正在使用默认值。为了安全起见,请显式地将其设置为 snappy,zstd 或 disabled
- 重启服务:
sudo systemctl restart mongod