适用于 CVE-2025-14847 (MongoBleed) 的专业漏洞扫描器 - MongoDB 内存泄漏漏洞。
+================================================================+
| MongoBleed Scanner v1.3.0 |
| CVE-2025-14847 - MongoDB Memory Leak Vulnerability |
+================================================================+
CVE-2025-14847 (MongoBleed) 是 MongoDB 在处理 zlib 压缩时的一个严重内存泄漏漏洞。
当处理压缩消息(OP_COMPRESSED 使用 zlib)时,MongoDB 会根据客户端提供的 uncompressedSize 字段分配缓冲区。恶意客户端可以指定大于实际数据的大小,导致 MongoDB 返回未初始化的堆内存,其中包含之前操作的敏感数据。
| 分支 | 受影响的版本 | 修复版本 |
|---|---|---|
| 8.2.x | 8.2.0 - 8.2.2 | 8.2.3 |
| 8.0.x | 8.0.0 - 8.0.16 | 8.0.17 |
| 7.0.x | 7.0.0 - 7.0.27 | 7.0.28 |
| 6.0.x | 6.0.0 - 6.0.26 | 6.0.27 |
| 5.0.x | 5.0.0 - 5.0.31 | 5.0.32 |
| 4.4.x | 4.4.0 - 4.4.29 | 4.4.30 |
| ≤4.2 | 所有版本 | 已停止支持 - 无补丁 |
无需额外安装包。扫描器仅使用 Python 的标准库。
# 默认端口(27017)
python scanner.py -t 192.168.1.100
# 自定义端口
python scanner.py -t 192.168.1.100:27018
# 逗号分隔
python scanner.py -t 192.168.1.100,192.168.1.101:27018,db.example.com
# targets.txt(每行一个, # 表示注释)
# 192.168.1.100
# 192.168.1.101:27018
# mongodb.example.com
python scanner.py -f targets.txt
# 纯文本
python scanner.py -t 192.168.1.100 -o report.txt
# JSON(详细)
python scanner.py -t 192.168.1.100 -o report.json
# CSV(电子表格)
python scanner.py -t 192.168.1.100 -o report.csv
| 选项 | 描述 |
|---|---|
-t, --targets | 逗号分隔的目标(主机 或 主机:端口) |
-f, --file | 包含目标的文件(每行一个) |
-o, --output | 导出文件(.txt, .json, .csv) |
-q, --quiet | 仅显示摘要 |
-v, --version | 显示版本 |
-h, --help | 显示帮助 |
| 符号 | 状态 | 描述 |
|---|---|---|
[!] | VULNERABLE | 确认存在漏洞,需立即修复 |
[?!] | POSSIBLY VULNERABLE | 版本为估算值,需人工验证 |
[+] | SAFE | 已修补版本 |
[~] | MITIGATED | 版本存在漏洞但 zlib 已禁用 |
[?] | UNKNOWN | 无法确定状态 |
[-] | UNREACHABLE | 连接失败 |
+================================================================+
| MongoBleed Scanner v1.3.0 |
| CVE-2025-14847 - MongoDB Memory Leak Vulnerability |
+================================================================+
| LEGAL: Authorized security testing only. Obtain permission |
| before scanning systems you do not own. |
+================================================================+
[*] Loaded 4 target(s)
SCAN RESULTS:
----------------------------------------------------------------------
[!] 192.168.1.100:27017 VULNERABLE v8.0.16 zlib:ON -> Update to 8.0.17
[?!] 192.168.1.101:27018 POSSIBLY VULNERABLE v~8.2.x zlib:ON -> Check version, update to 8.2.3
[+] 192.168.1.102:27017 SAFE v8.0.17 zlib:ON
[~] 192.168.1.103:27017 MITIGATED v8.0.16 zlib:OFF (zlib disabled)
======================================================================
SCAN SUMMARY
======================================================================
Total targets scanned: 4
Reachable: 4
Unreachable: 0
----------------------------------------------------------------------
[!] VULNERABLE: 1
[?!] POSSIBLY VULN: 1 (version estimated, needs verification)
[+] SAFE (patched): 1
[~] MITIGATED: 1 (vulnerable version but zlib disabled)
[?] UNKNOWN: 0
======================================================================
VULNERABLE TARGETS REQUIRING IMMEDIATE ACTION:
----------------------------------------------------------------------
192.168.1.100:27017 v8.0.16 zlib:ON -> Upgrade to 8.0.17
v8.0.16 — 检测到的确切版本v~8.2.x — 根据线缆协议估算(~ 表示估算)当 MongoDB 8.2+ 需要认证才能获取版本命令时,会进行估算。扫描器将回退到线缆协议版本映射。
1. TCP 连接
└── 连接到 MongoDB 端口
2. 版本检测
├── 发送 'hello' 命令(获取线缆版本,无需认证)
└── 发送 'buildInfo' 命令(获取确切版本,可能需要认证)
3. 压缩检查
└── 发送 zlib 压缩的消息,检查服务器是否接受
4. 评估
└── 将版本 + zlib 状态与漏洞数据库进行比较
当无法获取确切版本(需要认证)时,扫描器根据 maxWireVersion 进行估算:
| Wire Version | MongoDB 分支 |
|---|---|
| 25 | 8.0.x |
| 27 | 8.2.x |
| 21 | 7.0.x |
| 17 | 6.0.x |
| 13 | 5.0.x |
VULNERABLE = (version in vulnerable range) AND (zlib enabled)
MITIGATED = (version in vulnerable range) AND (zlib disabled)
SAFE = (version >= fixed version)
| 当前版本 | 更新至 |
|---|---|
| 8.2.0 - 8.2.2 | 8.2.3+ |
| 8.0.0 - 8.0.16 | 8.0.17+ |
| 7.0.0 - 7.0.27 | 7.0.28+ |
| 6.0.0 - 6.0.26 | 6.0.27+ |
| 5.0.0 - 5.0.31 | 5.0.32+ |
| 4.4.0 - 4.4.29 | 4.4.30+ |
# mongod.conf
net:
compression:
compressors: snappy,zstd # 移除 'zlib'
或通过命令行:
mongod --networkMessageCompressors snappy,zstd
THIS TOOL IS PROVIDED FOR AUTHORIZED SECURITY TESTING ONLY.
You must obtain proper authorization before scanning any systems
you do not own or have explicit written permission to test.
Unauthorized access to computer systems is illegal.
The authors assume no liability for misuse of this tool.
| 退出码 | 含义 |
|---|---|
| 0 | 所有目标安全或已缓解 |
| 1 | 发生连接错误 |
| 2 | 发现存在漏洞的目标 |
适用于脚本化使用:
python scanner.py -t mongodb.example.com
if [ $? -eq 2 ]; then
echo "ALERT: Vulnerable MongoDB detected!"
fi
仅供授权安全测试和研究使用。