
Обнаружитель Mongobleed CVE-2025-14847
Профессиональный сканер уязвимостей для CVE-2025-14847 (MongoBleed) — уязвимость утечки памяти MongoDB.
+================================================================+
| MongoBleed Scanner v1.3.0 |
| CVE-2025-14847 - MongoDB Memory Leak Vulnerability |
+================================================================+
CVE-2025-14847 (MongoBleed) — критическая уязвимость утечки памяти в обработке сжатия zlib в MongoDB.
При обработке сжатых сообщений (OP_COMPRESSED с zlib) MongoDB выделяет буфер на основе поля uncompressedSize, предоставленного клиентом. Злоумышленник может указать размер больше фактического, что приведёт к возврату MongoDB неинициализированной памяти кучи, содержащей конфиденциальные данные из предыдущих операций.
Дополнительные пакеты не требуются. Сканер использует только стандартную библиотеку Python.
# Default port (27017)
python scanner.py -t 192.168.1.100
# Custom port
python scanner.py -t 192.168.1.100:27018
# Comma-separated
python scanner.py -t 192.168.1.100,192.168.1.101:27018,db.example.com
# targets.txt (one per line, # for comments)
# 192.168.1.100
# 192.168.1.101:27018
# mongodb.example.com
python scanner.py -f targets.txt
# Plain text
python scanner.py -t 192.168.1.100 -o report.txt
# JSON (detailed)
python scanner.py -t 192.168.1.100 -o report.json
# CSV (spreadsheet)
python scanner.py -t 192.168.1.100 -o report.csv
+================================================================+
| MongoBleed Scanner v1.3.0 |
| CVE-2025-14847 - MongoDB Memory Leak Vulnerability |
+================================================================+
| LEGAL: Authorized security testing only. Obtain permission |
| before scanning systems you do not own. |
+================================================================+
[*] Loaded 4 target(s)
SCAN RESULTS:
----------------------------------------------------------------------
[!] 192.168.1.100:27017 VULNERABLE v8.0.16 zlib:ON -> Update to 8.0.17
[?!] 192.168.1.101:27018 POSSIBLY VULNERABLE v~8.2.x zlib:ON -> Check version, update to 8.2.3
[+] 192.168.1.102:27017 SAFE v8.0.17 zlib:ON
[~] 192.168.1.103:27017 MITIGATED v8.0.16 zlib:OFF (zlib disabled)
======================================================================
SCAN SUMMARY
======================================================================
Total targets scanned: 4
Reachable: 4
Unreachable: 0
----------------------------------------------------------------------
[!] VULNERABLE: 1
[?!] POSSIBLY VULN: 1 (version estimated, needs verification)
[+] SAFE (patched): 1
[~] MITIGATED: 1 (vulnerable version but zlib disabled)
[?] UNKNOWN: 0
======================================================================
VULNERABLE TARGETS REQUIRING IMMEDIATE ACTION:
----------------------------------------------------------------------
192.168.1.100:27017 v8.0.16 zlib:ON -> Upgrade to 8.0.17
v8.0.16 — Точная версия обнаруженаv~8.2.x — Оценка по протоколу Wire (~ указывает на оценку)Оценка происходит, когда MongoDB 8.2+ требует аутентификации для команд версии. Сканер использует резервное отображение версий протокола Wire.
1. TCP Connection
└── Connect to MongoDB port
2. Version Detection
├── Send 'hello' command (get wire version, no auth required)
└── Send 'buildInfo' command (get exact version, may need auth)
3. Compression Check
└── Send zlib-compressed message, check if server accepts
4. Assessment
└── Compare version + zlib status against vulnerability database
Если точная версия недоступна (требуется аутентификация), сканер оценивает её по maxWireVersion:
| Версия Wire | Ветвь MongoDB |
|---|---|
| 25 | 8.0.x |
| 27 | 8.2.x |
| 21 | 7.0.x |
| 17 | 6.0.x |
| 13 | 5.0.x |
VULNERABLE = (version in vulnerable range) AND (zlib enabled)
MITIGATED = (version in vulnerable range) AND (zlib disabled)
SAFE = (version >= fixed version)
# mongod.conf
net:
compression:
compressors: snappy,zstd # Remove 'zlib'
Или через командную строку:
mongod --networkMessageCompressors snappy,zstd
THIS TOOL IS PROVIDED FOR AUTHORIZED SECURITY TESTING ONLY.
You must obtain proper authorization before scanning any systems
you do not own or have explicit written permission to test.
Unauthorized access to computer systems is illegal.
The authors assume no liability for misuse of this tool.
| Код | Значение |
|---|---|
| 0 | Все цели безопасны или смягчены |
| 1 | Произошли ошибки соединения |
| 2 | Найдены уязвимые цели |
Полезно для скриптов:
python scanner.py -t mongodb.example.com
if [ $? -eq 2 ]; then
echo "ALERT: Vulnerable MongoDB detected!"
fi
Только для авторизованного тестирования безопасности и исследований.
| Ветвь | Уязвимые версии | Исправленная версия |
|---|
| 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 |
| 4.4.x | 4.4.0 - 4.4.29 | 4.4.30 |
| ≤4.2 | Все версии | EOL - исправления нет |
| Параметр | Описание |
|---|
-t, --targets | Цели через запятую (хост или хост:порт) |
-f, --file | Файл с целями (по одной на строку) |
-o, --output | Файл экспорта (.txt, .json, .csv) |
-q, --quiet | Показывать только сводку |
-v, --version | Показать версию |
-h, --help | Показать справку |
| Символ | Статус | Описание |
|---|
[!] | УЯЗВИМ | Подтверждённая уязвимость, требуются немедленные действия |
[?!] | ВОЗМОЖНО УЯЗВИМ | Версия оценена, требуется ручная проверка |
[+] | БЕЗОПАСНО | Исправленная версия |
[~] | СМЯГЧЕНО | Уязвимая версия, но zlib отключён |
[?] | НЕИЗВЕСТНО | Не удалось определить статус |
[-] | НЕДОСТУПНО | Соединение не установлено |
| Текущая версия | Обновить до |
|---|
| 8.2.0 - 8.2.2 | 8.2.3+ |
| 8.0.0 - 8.0.16 | 8.0.17+ |
| 7.0.0 - 7.0.27 | 7.0.28+ |
| 6.0.0 - 6.0.26 | 6.0.27+ |
| 5.0.0 - 5.0.31 | 5.0.32+ |
| 4.4.0 - 4.4.29 | 4.4.30+ |