
CVE-2025-14847 объяснение и лаборатория
Ссылочный CVE : CVE-2025-14847
Этот репозиторий — образовательный лаб, демонстрирующий концепцию класса проблем, часто описываемых как «compression framing / size-metadata memory disclosure» в протоколах баз данных.
Он создан для понимания защиты: как согласовывается и фреймируется сетевое сжатие MongoDB, почему поля размера важны и как надежные парсеры предотвращают непреднамеренное раскрытие памяти.
Примечание о ссылочном CVE: Этот лаб построен вокруг идеи, указанной как CVE-2025-14847. Этот репозиторий не подтверждает, не воспроизводит и не эксплуатирует конкретную ошибку вендора и не утверждает, что какая-либо версия MongoDB уязвима. Он сосредоточен на общем режиме сбоя (несоответствие метаданных размера вокруг сжатых полезных нагрузок) и мерах по смягчению.
Этот репозиторий не содержит (и не должен использоваться как) доказательство того, какие версии MongoDB уязвимы или исправлены для какого-либо конкретного CVE.
Чтобы документально оформить «уязвимые» и «исправленные» версии для отчета, используйте официальное уведомление вендора / примечания к выпуску для данного CVE и цитируйте их.
Практические шаги для проверки вашей версии:
docker compose exec mongodb mongod --versiondocker compose exec mongodb mongosh --quiet --eval "db.version()"mongod --versionmongosh --quiet --eval "db.version()"Если вы предоставите ссылку на используемое уведомление, я смогу оформить чистую таблицу «Затронутые / Исправленные» в README без гаданий.
Этот лаб иллюстрирует режим сбоя compression framing / size-metadata mismatch:
OP_COMPRESSED добавляет больше полей размера (внешняя длина сообщения, объявленный несжатый размер и собственная длина внутреннего сообщения).См. protocol_overview.md для подробного описания фрейминга.
По окончании лаба вы сможете:
Он делает:
hello, включающего compression: ["zlib"]OP_COMPRESSED с использованием zlibОн НЕ делает:
docker-compose.yml – Запускает контейнер MongoDB с включенным сжатием zlib и доступом только с localhost.protocol_overview.md – Проволочный протокол + BSON + рабочий процесс сжатия + концептуальное объяснение уязвимости.mitigation.md – Рекомендации по защите: исправления, конфигурация и идеи по обнаружению.lab_probe.py – Оригинальный зонд, который согласовывает сжатие и безопасно логирует размеры сообщений.Из директории репозитория:
docker compose up -d
Подтвердите, что он запущен:
docker compose ps
python .\lab_probe.py
Ожидаемый вывод:
hellohello и логирует размеры как сжатого, так и распакованного сообщенияpython .\lab_probe.py --toy-demo
Это запускает только локальные проверки парсинга, чтобы проиллюстрировать, почему проверка размера важна.
docker compose down
127.0.0.1:27017 на хосте.