
Herramienta de detección de la vulnerabilidad de fuga de memoria en MongoDB (CVE-2025-14847)
MongoDB 内存泄露漏洞 (CVE-2025-14847) 检测工具
⚠️ 重要提示:此工具仅用于授权的安全测试和漏洞评估。未经授权的使用可能违反法律。
CVE-2025-14847 es una vulnerabilidad crítica de fuga de memoria en el manejo del protocolo de compresión Zlib de MongoDB. Un atacante puede enviar paquetes comprimidos especialmente diseñados para provocar que MongoDB devuelva datos no inicializados de la memoria heap, que pueden contener información confidencial.
| Rango de versiones | Estado |
|---|---|
| 8.2.0 - 8.2.2 | ⚠️ Afectada |
| 8.0.0 - 8.0.16 | ⚠️ Afectada |
| 7.0.0 - 7.0.27 | ⚠️ Afectada |
| 6.0.0 - 6.0.26 | ⚠️ Afectada |
| 5.0.0 - 5.0.31 | ⚠️ Afectada |
| 4.4.0 - 4.4.29 | ⚠️ Afectada |
| 4.2.x todas las versiones | ⚠️ Afectada |
| 4.0.x todas las versiones | ⚠️ Afectada |
| 3.6.x todas las versiones | ⚠️ Afectada |
# 克隆仓库
git clone https://github.com/onewinner/CVE-2025-14847.git
cd CVE-2025-14847
# 安装依赖
go mod download
# 编译
go build -o mongodb-scanner main.go
# 运行
./mongodb-scanner -t 127.0.0.1:27017
go run main.go -t 127.0.0.1:27017
Visite la página de Releases para descargar la versión precompilada adecuada para su sistema.
# 扫描单个目标
./mongodb-scanner -t 127.0.0.1:27017
# 从文件批量扫描
./mongodb-scanner -f targets.txt
# 批量扫描(20线程)
./mongodb-scanner -f targets.txt -c 20
# 扫描并保存存在漏洞的目标
./mongodb-scanner -f targets.txt -o vulnerable.txt
# 自定义偏移范围(更快速或更深度扫描)
./mongodb-scanner -t 127.0.0.1:27017 --min-offset 20 --max-offset 1000
Cree un archivo targets.txt:
# MongoDB 目标列表
127.0.0.1:27017
192.168.1.100:27017
mongodb.example.com:27017
# 如果不指定端口,默认使用 27017
192.168.1.101
Para probar esta herramienta de forma segura, se recomienda utilizar Docker para configurar un entorno de pruebas local.
# 启动 MongoDB 6.0.14 (受漏洞影响的版本) 并开启 Zlib 压缩
docker run -d \
--name mongodb-vulnerable \
-p 27017:27017 \
mongo:6.0.14 \
--networkMessageCompressors snappy,zlib
# 查看容器状态
docker ps
# 测试漏洞
./mongodb-scanner -t 127.0.0.1:27017
Cree un archivo docker-compose.yml:
version: '3.8'
services:
# 受漏洞影响的版本(开启 Zlib)
mongodb-vulnerable:
image: mongo:6.0.14
container_name: mongodb-vulnerable
ports:
- "27017:27017"
command: mongod --networkMessageCompressors snappy,zlib
# 已修复的版本(用于对比测试)
mongodb-patched:
image: mongo:6.0.27
container_name: mongodb-patched
ports:
- "27018:27017"
command: mongod --networkMessageCompressors snappy,zlib
volumes:
mongodb-data:
mongodb-patched-data:
Inicie el entorno de pruebas:
# 启动所有容器
docker-compose up -d
# 测试受漏洞影响的版本
./mongodb-scanner -t 127.0.0.1:27017
# 测试已修复的版本
./mongodb-scanner -t 127.0.0.1:27018
# 停止并清理
docker-compose down -v
# 停止并删除容器
docker stop mongodb-vulnerable && docker rm mongodb-vulnerable
# 清理数据卷
docker volume prune -f
La herramienta utiliza prefijos unificados para marcar la información de salida:
[*] - Salida de información (objetivo, versión, configuración, etc.)[+] - Éxito/vulnerable/datos extraídos[-] - Error/seguro/no vulnerable[!] - Advertencia/aviso importante╔══════════════════════════════════════════════════════════════╗
║ MongoDB CVE-2025-14847 漏洞检测工具 ║
╚══════════════════════════════════════════════════════════════╝
⚠️ 仅用于授权安全测试 | 未经授权测试可能违法
[*] 目标: 1 | 线程: 10 | 超时: 2s | 偏移: 20-1000
[*] 开始扫描...
[*] 目标: 127.0.0.1:27017
[*] 版本: 6.0.14
[+] 漏洞版本: 是
[+] Zlib压缩: 已开启
[!] 漏洞可利用,开始提取内存...
[+] 偏移=229 长度=250: :00\"},\"s\":\"I\", \"c\":\"NETWORK\", \"id\":22944, \"ctx\":\"conn102932\",
[+] 127.0.0.1:27017 - 漏洞可利用 (v6.0.14) - 3468ms
[+] 成功提取 1 项内存数据:
[1] :00\"},\"s\":\"I\", \"c\":\"NETWORK\", \"id\":22944, \"ctx\":\"conn102932\",\"msg\":\"Connection ended\",\"attr\":{\"remote\":\"172.17.0.1:44936\"...
======================================================================
[*] 扫描完成 | 总数: 1 | 可利用: 1 | 安全: 0 | 耗时: 3.4s
======================================================================
[*] 目标: 127.0.0.1:27018
[*] 版本: 6.0.27
[-] 漏洞版本: 否
[-] 127.0.0.1:27018 - 版本安全 (v6.0.27) - 156ms
======================================================================
[*] 扫描完成 | 总数: 1 | 可利用: 0 | 安全: 1 | 耗时: 0.2s
======================================================================
[*] 目标: 127.0.0.1:27017
[*] 版本: 6.0.14
[+] 漏洞版本: 是
[-] Zlib压缩: 未开启
[-] 127.0.0.1:27017 - 未开启Zlib (v6.0.14) - 234ms
======================================================================
[*] 扫描完成 | 总数: 1 | 可利用: 0 | 安全: 1 | 耗时: 0.3s
======================================================================
[*] 目标: 5 | 线程: 10 | 超时: 2s | 偏移: 20-8192
[*] 开始扫描...
[+] 192.168.1.10:27017 - 漏洞可利用 (v6.0.14) - 3521ms
[+] 成功提取 2 项内存数据:
[1] Connection ended...
[2] network statistics...
[-] 192.168.1.11:27017 - 版本安全 (v6.0.27) - 145ms
[-] 192.168.1.12:27017 - 未开启Zlib (v6.0.14) - 198ms
[+] 192.168.1.13:27017 - 漏洞可利用 (v7.0.15) - 2987ms
[!] 192.168.1.14:27017 - 漏洞可利用但未提取到数据 (v6.0.20) - 4123ms
======================================================================
[*] 扫描完成 | 总数: 5 | 可利用: 3 | 安全: 2 | 耗时: 5.2s
======================================================================
[+] 可利用的目标已保存到: vulnerable.txt
Esta herramienta emplea un mecanismo de detección en tres pasos:
buildInfo)| Condición | Resultado |
|---|---|
| Versión vulnerable + Zlib habilitado + datos extraídos | ✅ Vulnerabilidad explotable: muestra los datos filtrados |
| Versión vulnerable + Zlib habilitado + sin datos extraídos | ⚠️ Vulnerabilidad explotable pero sin datos extraídos |
| Versión vulnerable + Zlib no habilitado | ❌ Zlib no habilitado: no explotable |
Actualice inmediatamente a una de las siguientes versiones corregidas:
Si no es posible actualizar a corto plazo, se pueden adoptar las siguientes medidas temporales:
Configure en mongod.conf o mongos.conf:
net:
compression:
compressors: []
O excluya explícitamente zlib en los parámetros de inicio:
mongod --networkMessageCompressors snappy,zstd
Se recomienda usar snappy o zstd en lugar de zlib:
net:
compression:
compressors: snappy,zstd
bindIp--auth)⚠️ Aviso importante: las medidas de mitigación temporales solo reducen el riesgo, no son una solución definitiva. Se recomienda encarecidamente actualizar a una versión corregida lo antes posible.
Aviso importante:
Al usar esta herramienta, usted acepta:
Este proyecto está bajo la licencia de código abierto MIT License.
¡Bienvenidos los Issues y Pull Requests!
git checkout -b feature/AmazingFeature)git commit -m 'Add some AmazingFeature')git push origin feature/AmazingFeature)onewinner - @onewinner
Dirección del proyecto: https://github.com/onewinner/CVE-2025-14847
⭐ Si este proyecto le resulta útil, ¡dé una estrella!
Made with ❤️ by Security Researchers
| Parámetro | Descripción | Valor predeterminado |
|---|
-t <target> | Objetivo único (p. ej., 127.0.0.1:27017) | - |
-f <file> | Archivo de objetivos (un objetivo por línea) | - |
-c <num> | Número de hilos concurrentes | 10 |
-timeout <time> | Tiempo de espera de conexión | 2s |
-o <file> | Archivo de salida (guarda objetivos vulnerables) | - |
--min-offset <num> | Desplazamiento mínimo de longitud de documento | 20 |
--max-offset <num> | Desplazamiento máximo de longitud de documento | 8192 |
| Versión no vulnerable | ✅ Versión segura |