
CVE-2025-14847 explicación y laboratorio
CVE de referencia : CVE-2025-14847
Este repositorio es un laboratorio educativo que demuestra el concepto detrás de una clase de problemas a menudo descritos como “compression framing / divulgación de memoria por metadatos de tamaño” en protocolos de cable de bases de datos.
Está escrito para apoyar la comprensión defensiva: cómo se negocia y encuadra la compresión de red de MongoDB, por qué los campos de tamaño importan, y cómo los analizadores robustos evitan la exposición no intencionada de memoria.
Nota sobre la referencia CVE: Este laboratorio está enmarcado en torno a la idea referenciada como CVE-2025-14847 . Este repositorio no valida, reproduce o explota un error específico de un proveedor ni afirma que alguna versión particular de MongoDB esté afectada. Se centra en el modo de fallo general (metadatos de tamaño no coincidentes alrededor de cargas útiles comprimidas) y las mitigaciones.
Este repositorio no incluye (y no debe usarse como) evidencia de qué versiones de MongoDB son vulnerables o están parcheadas para algún CVE específico.
Para documentar versiones “vulnerables” vs “parcheadas” correctamente en un informe, usa un aviso oficial del proveedor / notas de la versión para el CVE y cítalo.
Pasos prácticos para verificar lo que estás ejecutando:
docker compose exec mongodb mongod --versiondocker compose exec mongodb mongosh --quiet --eval "db.version()"mongod --versionmongosh --quiet --eval "db.version()"Si compartes el enlace del aviso que estás usando, puedo formatear una tabla clara “Afectadas / Corregidas” en el README sin adivinar.
Este laboratorio ilustra un modo de fallo de encuadre de compresión / discrepancia de metadatos de tamaño:
OP_COMPRESSED añade más campos de tamaño (longitud del mensaje exterior, tamaño descomprimido declarado y la longitud del mensaje interior).Consulta protocol_overview.md para el recorrido detallado del encuadre.
Al final del laboratorio, deberías ser capaz de:
Sí hace:
hello sin comprimir que incluye compression: ["zlib"]OP_COMPRESSED correctamente encuadrado usando zlibNO hace:
docker-compose.yml – Ejecuta un contenedor MongoDB con compresión zlib habilitada y exposición solo en localhost.protocol_overview.md – Protocolo de cable + BSON + flujo de trabajo de compresión + explicación conceptual de la vulnerabilidad.mitigation.md – Guía de defensa: parcheo, configuración e ideas de detección.lab_probe.py – Sonda original que negocia compresión y registra tamaños de mensaje de forma segura.Desde el directorio de este repositorio:
docker compose up -d
Confirma que se esté ejecutando:
docker compose ps
python .\lab_probe.py
Salida esperada:
hellohello comprimido y registra los tamaños de mensaje comprimido y descomprimidopython .\lab_probe.py --toy-demo
Esto ejecuta solo verificaciones de análisis locales para ilustrar por qué la validación de tamaño es importante.
docker compose down
127.0.0.1:27017 en el host.