MongoBleed 是一个针对 CVE-2025-14847 的高性能 PoC 扫描器,该漏洞是 MongoDB C++ 驱动中的预认证堆内存泄露漏洞。 该工具旨在跨大型网络范围快速识别易受攻击的实例。
该漏洞源于 MongoDB 线协议在处理 OP_COMPRESSED 消息时存在的越界(OOB)读取。
当服务器收到 OP_COMPRESSED 数据包时,它会依赖攻击者提供的 uncompressedSize 字段来分配解压缓冲区。如果实际解压后的数据远小于声明的 uncompressedSize,驱动程序未能截断或清空缓冲区。结果,服务器会返回整个分配的内存块,其中可能包含未初始化的堆数据,从而可能暴露敏感信息,如会话令牌、内部指针或其他数据库查询的片段。
asyncio 实现异步 I/O,支持高并发扫描vulnerable_targets.txtgit clone https://github.com/Black1hp/mongobleed-scanner/
cd mongobleed-scanner
无需外部依赖(仅需 Python 标准库)。
基本用法:
python3 mongobleed.py -i targets.txt
高级配置:
python3 mongobleed.py -i targets.txt -c 100 -t 5
-i : 包含目标(IP、域名或 IP:端口)的输入文件-c : 并发级别(默认:50)-t : 连接超时时间(秒,默认:5)扫描器通过利用 BSON 解压阶段的大小不匹配来识别漏洞:
OP_COMPRESSED 数据包,其中包含一个小的 zlib 压缩载荷(例如 16-30 字节)。uncompressedSize 字段被故意设置为更大的值(例如 64KB)。MessageLength 与请求的大缓冲区大小一致,而非实际解压后的载荷大小,则确认状态为 VULNERABLE。uncompressedSize 来定义响应长度。由于它未能用解压期间实际写入的字节数更新该长度,它会盲目地将整个分配的堆缓冲区(包括未初始化的内存)流式传输回客户端。注意: 上述视频演示了扫描器实时识别多个易受攻击的实例并捕获堆内存片段。
Black1hp 安全研究员 | 漏洞猎手 | 红队成员
此工具仅用于授权的安全测试和研究目的。 作者对任何未经授权的使用或由此工具造成的损害不承担责任。