
MongoBleed: CVE-2025-14847 Herramienta de Descubrimiento de Fugas de Memoria
MongoBleed es una herramienta de auditoría de seguridad de alto rendimiento diseñada para detectar y demostrar CVE-2025-14847. Esta vulnerabilidad permite que un atacante remoto no autenticado filtre fragmentos de memoria heap no inicializada de un servidor MongoDB explotando una falla de discrepancia de longitud en la lógica de descompresión zlib.
Para probar este script de forma segura, use el siguiente docker-compose.yml para levantar una instancia vulnerable de MongoDB 8.2.2.
Ejecute la instancia con:
docker-compose up -d
Asegúrese de tener Python 3.8+ instalado. No se requieren librerías externas (usa socket, zlib y concurrent.futures integrados).
Escaneo Básico
python mongobleed.py --host 127.0.0.1 --port 27017
Opciones Avanzadas
python mongobleed.py --host 127.0.0.1 --threads 50 --range 100 10000 --output leak_dump.bin
El script envía un mensaje OP_COMPRESSED (opcode 2012) manipulado. Miente sobre la longitud sin comprimir del payload. El servidor MongoDB asigna un búfer heap del tamaño "mentiroso", descomprime una pequeña cantidad de datos en él y luego devuelve erróneamente todo el búfer no inicializado al cliente.
La única forma permanente de resolver CVE-2025-14847 es actualizar el binario de MongoDB a una versión que incluya una corrección para la lógica de validación de longitud de OP_COMPRESSED.
Solución Permanente (Actualización)
Aplique los parches oficiales de MongoDB. Estas versiones incluyen una verificación obligatoria para garantizar que el tamaño de los datos descomprimidos coincida con el campo uncompressedSize en el encabezado del mensaje.
Si no es posible una actualización inmediata debido a requisitos de tiempo de actividad, puede bloquear el vector de ataque modificando la configuración del servidor.
Deshabilitar el Compresor Vulnerable (Recomendado)
La vulnerabilidad es específica de la implementación de zlib. Puede deshabilitar zlib y forzar al servidor a usar snappy o zstd, que no se ven afectados por este error específico de lectura excesiva del heap.
Mediante la Línea de Comandos: Reinicie la instancia mongod con la siguiente bandera (tenga en cuenta la exclusión de zlib):
mongod --networkMessageCompressors snappy,zstd
Mediante el Archivo de Configuración (mongod.conf):
net:
compression:
compressors: snappy,zstd
Esta herramienta es solo para fines educativos y de pruebas de seguridad autorizadas. El acceso no autorizado a sistemas informáticos es ilegal. El autor no es responsable del mal uso de esta herramienta. Parchee sus instancias de MongoDB inmediatamente a las versiones 8.2.3+ o 8.0.17+.
| Rama Principal | Versión Segura Recomendada |
|---|
| MongoDB 8.2 | Actualizar a 8.2.3 o posterior |
| MongoDB 8.0 | Actualizar a 8.0.17 o posterior |
| MongoDB 7.0 | Actualizar a 7.0.28 o posterior |
| MongoDB 6.0 | Actualizar a 6.0.27 o posterior |
| MongoDB 5.0 | Actualizar a 5.0.32 o posterior |
| MongoDB 4.0 | Actualizar a 4.4.30 o posterior |