Los clientes afectados de Akamai Hunt ya han recibido una asignación detallada de los activos vulnerables con pasos de mitigación a seguir.
Resumen ejecutivo
El 19 de diciembre de 2025, se informó públicamente de una nueva vulnerabilidad que afecta a la mayoría de las implementaciones de MongoDB en las instancias de MongoDB.
La vulnerabilidad, denominada MongoBleed, reside en el tratamiento que hace MongoDB de los mensajes comprimidos con zlib y permite a los clientes no autenticados filtrar la memoria de pila no inicializada de la base de datos.
A CVE se le ha asignado una puntuación de CVSSv4 de 8,7.
El 29 de diciembre de 2025, la Agencia de Seguridad de Infraestructura y Ciberseguridad (CISA) añadió la CVE-2025-14847 a su catálogo de Vulnerabilidades Explotadas Conocidas (KEV), lo que confirma su explotación activa. Al mismo tiempo, la telemetría de Akamai muestra la comunicación MongoDB en aproximadamente el 62 % de las redes empresariales.
En esta entrada del blog, ofrecemos un desglose técnico de MongoBleed, una descripción general de las versiones de MongoDB afectadas (junto con el análisis de parches) y una guía práctica de mitigación, incluidas las consultas de Akamai Guardicore Segmentation Insight para ayudar a identificar los activos vulnerables.
Detalles de la vulnerabilidad
MongoBleed se origina a partir de la forma en que MongoDB procesa los mensajes comprimidos de protocolo de cable, una función que está habilitada de forma predeterminada.
MongoDB se comunica mediante mensajes marcados con el código de operación OP_MSG, donde las cargas de solicitud se codifican en formato JSON binario (BSON). Cuando se envía un mensaje comprimido, la carga útil original OP_MSG se envuelve dentro de una estructura OP_COMPRESSED.
Un mensaje OP_COMPRESSED incluye la carga útil OP_MSG y el tamaño esperado de la carga útil sin comprimir.
struct OP_COMPRESSED {
struct MsgHeader {
int32 messageLength;
int32 requestID;
int32 responseTo;
int32 opCode;
};
int32_t originalOpcode;
int32_t uncompressedSize;
uint8_t compressorId;
char *compressedMessage;
};
Un atacante puede manipular el campo uncompressedSize, haciendo que sea mayor que el tamaño real de la carga útil comprimida. Debido a que este valor no se valida, esta manipulación da como resultado una asignación de búfer sobredimensionada, rellena con memoria de pila no inicializada.
La memoria filtrada puede incluir fragmentos de contraseñas de texto claro, credenciales, claves de API o otros datos sensibles en memoria, dependiendo de lo que hubiera antes en la pila.
La fuga se amplifica aún más con la lógica de gestión de errores de MongoDB. Cuando el objeto BSON mal formado enviado no contiene un terminador nulo, el servidor analizará la memoria hasta que se encuentre uno. Cuando el análisis falla en última instancia, el servidor devuelve una respuesta de error que incluye el mensaje original y el contenido de pila filtrado.
En el momento de redactar este documento, Shodan informa de más de 213 000 instancias de MongoDB expuestas a Internet, mientras que Censys informa de más de 87 000, lo que resalta la amplia exposición de la vulnerabilidad.
Disponibilidad pública de la explotación
A los pocos días de su divulgación, se publicó una explotación exitosa en GitHub. El ataque se basa en el envío repetido de solicitudes comprimidas mal formadas, lo que permite a los atacantes filtrar progresivamente grandes porciones de memoria de pila.
Versiones afectadas
MongoBleed afecta a las siguientes versiones de MongoDB:
8.2.0–8.2.2
8.0.0–8.0.16
7.0.0–7.0.27
6.0.0–6.0.26
5.0.0–5.0.31
4.4.0–4.4.29
Todas las versiones v3.6, v4.0 y v4.2
Análisis de parches
El parche de una línea calcula el tamaño del mensaje derivado del tamaño de salida, en lugar de confiar simplemente en el valor proporcionado en OP_COMPRESSED BSON. Esto garantiza que no se asigne memoria adicional más allá del tamaño real del mensaje.
- return {output.length()};
+ return length;
Mitigación
Actualice a una versión con parches
Se ha introducido un parche en las versiones 8.2.3, 8.0.17, 7.0.28, 6.0.27, 5.0.32 y 4.4.30.
La actualización a una de estas versiones corrige completamente la vulnerabilidad.
Reduzca la exposición con la segmentación de la red
Hasta que se aplique un parche, la exposición se puede reducir significativamente mediante la segmentación:
Bloqueando el acceso de entrada a Internet a las instancias de MongoDB en el puerto TCP/27017
Permitiendo solo conexiones de fuentes explícitamente fiables
Identifique los hosts vulnerables con Akamai Guardicore Segmentation
Las siguientes consultas de Akamai Guardicore Segmentation Insight identifican los hosts que ejecutan instancias vulnerables de MongoDB.
Activos de Linux
WITH LINUX AS (
SELECT DISTINCT name, version, source
FROM deb_packages
WHERE name = 'mongodb-org-server'
UNION ALL
SELECT DISTINCT name, version, source
FROM rpm_packages
WHERE name = 'mongodb-org-server'
),
PARSED AS (
SELECT name, source, version,
CAST(REGEX_MATCH(version, '([0-9]+)\.([0-9]+)\.([0-9]+)', 1) AS INTEGER) AS major,
CAST(REGEX_MATCH(version, '([0-9]+)\.([0-9]+)\.([0-9]+)', 2) AS INTEGER) AS minor,
CAST(REGEX_MATCH(version, '([0-9]+)\.([0-9]+)\.([0-9]+)', 3) AS INTEGER) AS patch
FROM LINUX
)
SELECT name, source, version
FROM PARSED
WHERE
(major = 8 AND minor = 2 AND patch BETWEEN 0 AND 2)
OR
(major = 8 AND minor = 0 AND patch BETWEEN 0 AND 16)
OR
(major = 7 AND minor = 0 AND patch BETWEEN 0 AND 27)
OR
(major = 6 AND minor = 0 AND patch BETWEEN 0 AND 26)
OR
(major = 5 AND minor = 0 AND patch BETWEEN 0 AND 31)
OR
(major = 4 AND minor = 4 AND patch BETWEEN 0 AND 29)
OR
(major = 3 AND minor = 6)
OR
(major = 4 AND minor IN (0, 2))
Activos de Windows
WITH WINDOWS AS (
WITH MONGO_PROGRAMS AS (
SELECT DISTINCT name, version, install_source AS source, REGEX_MATCH(name, 'MongoDB [0-9].*', 0) AS mongo_match
FROM programs
WHERE name LIKE "MongoDB%"
)
SELECT DISTINCT name, version, source
FROM MONGO_PROGRAMS
WHERE LENGTH(mongo_match) > 0
),
PARSED AS (
SELECT name, source, version,
CAST(REGEX_MATCH(version, '([0-9]+)\.([0-9]+)\.([0-9]+)', 1) AS INTEGER) AS major,
CAST(REGEX_MATCH(version, '([0-9]+)\.([0-9]+)\.([0-9]+)', 2) AS INTEGER) AS minor,
CAST(REGEX_MATCH(version, '([0-9]+)\.([0-9]+)\.([0-9]+)', 3) AS INTEGER) AS patch
FROM WINDOWS
)
SELECT name, source, version
FROM PARSED
WHERE
(major = 8 AND minor = 2 AND patch BETWEEN 0 AND 2)
OR
(major = 8 AND minor = 0 AND patch BETWEEN 0 AND 16)
OR
(major = 7 AND minor = 0 AND patch BETWEEN 0 AND 27)
OR
(major = 6 AND minor = 0 AND patch BETWEEN 0 AND 26)
OR
(major = 5 AND minor = 0 AND patch BETWEEN 0 AND 31)
OR
(major = 4 AND minor = 4 AND patch BETWEEN 0 AND 29)
OR
(major = 3 AND minor = 6)
OR
(major = 4 AND minor IN (0, 2))
Deshabilitar solicitudes comprimidas (mitigación temporal)
Si no es posible actualizar o segmentar la instancia, las solicitudes comprimidas con zlib se pueden desactivar para evitar su explotación. Puede encontrar instrucciones detalladas en la recopilación de problemas oficial de MongoDB.
Resumen
MongoBleed (CVE-2025-14847) es una vulnerabilidad de MongoDB que se puede explotar de forma remota y que permite que los atacantes no autenticados filtren la memoria de pila no inicializada.
Con los ataques públicos disponibles y decenas de miles de instancias expuestas a Internet, el riesgo de filtraciones de datos confidenciales es inmediato. Las organizaciones que ejecutan las versiones afectadas deben actualizar a una versión con parche o aplicar reglas de segmentación de red para minimizar la exposición.
Manténgase informado
El grupo de inteligencia sobre seguridad de Akamai seguirá supervisando, informando y creando mitigaciones para amenazas de este tipo tanto para nuestros clientes como para la comunidad de seguridad en general. Para mantenerse al día con más noticias de última hora del grupo de inteligencia de seguridad de Akamai, consulte nuestra página de investigación y síganos en las redes sociales.
Etiquetas