
Mongobleed Detector CVE-2025-14847
Uno scanner di vulnerabilità professionale per CVE-2025-14847 (MongoBleed): vulnerabilità di perdita di memoria di MongoDB.
+================================================================+
| MongoBleed Scanner v1.3.0 |
| CVE-2025-14847 - MongoDB Memory Leak Vulnerability |
+================================================================+
CVE-2025-14847 (MongoBleed) è una vulnerabilità critica di perdita di memoria nella gestione della compressione zlib di MongoDB.
Quando elabora messaggi compressi (OP_COMPRESSED con zlib), MongoDB alloca un buffer basato sul campo uncompressedSize fornito dal client. Un client malintenzionato può specificare una dimensione maggiore rispetto ai dati effettivi, inducendo MongoDB a restituire memoria heap non inizializzata contenente dati sensibili di operazioni precedenti.
Non sono richiesti pacchetti aggiuntivi. Lo scanner utilizza solo la libreria standard di 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 — Versione esatta rilevatav~8.2.x — Stimata dal wire protocol (~ indica una stima)La stima avviene quando MongoDB 8.2+ richiede l'autenticazione per i comandi di versione. Lo scanner ripiega sulla mappatura delle versioni del wire protocol.
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
Quando la versione esatta non è disponibile (autenticazione richiesta), lo scanner stima da maxWireVersion:
| Versione Wire | Branch 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'
Oppure tramite riga di comando:
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.
| Codice | Significato |
|---|---|
| 0 | Tutti i target sicuri o mitigati |
| 1 | Si sono verificati errori di connessione |
| 2 | Trovati target vulnerabili |
Utile per script:
python scanner.py -t mongodb.example.com
if [ $? -eq 2 ]; then
echo "ALERT: Vulnerable MongoDB detected!"
fi
Solo per test di sicurezza autorizzati e scopi di ricerca.
| Ramo | Versioni vulnerabili | Versione corretta |
|---|
| 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 | Tutte le versioni | EOL - Nessuna patch |
| Opzione | Descrizione |
|---|
-t, --targets | Target separati da virgola (host o host:porta) |
-f, --file | File con i target (uno per riga) |
-o, --output | File di esportazione (.txt, .json, .csv) |
-q, --quiet | Mostra solo il riepilogo |
-v, --version | Mostra la versione |
-h, --help | Mostra l'aiuto |
| Simbolo | Stato | Descrizione |
|---|
[!] | VULNERABLE | Vulnerabilità confermata, azione immediata richiesta |
[?!] | POSSIBLY VULNERABLE | Versione stimata, richiede verifica manuale |
[+] | SAFE | Versione patchata |
[~] | MITIGATED | Versione vulnerabile ma zlib disabilitato |
[?] | UNKNOWN | Impossibile determinare lo stato |
[-] | UNREACHABLE | Connessione fallita |
| Versione attuale | Aggiorna a |
|---|
| 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+ |