
MongoBleed: CVE-2025-14847 Strumento di scoperta di perdite di memoria
MongoBleed è uno strumento di audit di sicurezza ad alte prestazioni progettato per rilevare e dimostrare CVE-2025-14847. Questa vulnerabilità consente a un attaccante remoto non autenticato di divulgare frammenti di memoria heap non inizializzata da un server MongoDB sfruttando un difetto di disallineamento della lunghezza nella logica di decompressione zlib.
Per testare questo script in sicurezza, utilizza il seguente docker-compose.yml per avviare un'istanza vulnerabile di MongoDB 8.2.2.
Esegui l'istanza con:
docker-compose up -d
Assicurati di avere Python 3.8+ installato. Non sono richieste librerie esterne (usa socket, zlib e concurrent.futures integrati).
Scansione Base
python mongobleed.py --host 127.0.0.1 --port 27017
Opzioni Avanzate
python mongobleed.py --host 127.0.0.1 --threads 50 --range 100 10000 --output leak_dump.bin
Lo script invia un messaggio OP_COMPRESSED (opcode 2012) modificato. Mente sulla lunghezza non compressa del payload. Il server MongoDB alloca un buffer dell'heap della dimensione "mentita", decomprime una piccolissima quantità di dati al suo interno e poi restituisce erroneamente l'intero buffer non inizializzato al client.
L'unico modo permanente per risolvere CVE-2025-14847 è aggiornare il binario di MongoDB a una versione che includa una correzione per la logica di convalida della lunghezza di OP_COMPRESSED.
Correzione Permanente (Aggiornamento)
Applica le patch ufficiali di MongoDB. Queste versioni includono un controllo obbligatorio per garantire che la dimensione dei dati decompressi corrisponda al campo uncompressedSize nell'intestazione del messaggio.
| Branch Principale | Versione Sicura Consigliata |
|---|---|
| MongoDB 8.2 | Aggiorna a 8.2.3 o successiva |
| MongoDB 8.0 | Aggiorna a 8.0.17 o successiva |
| MongoDB 7.0 | Aggiorna a 7.0.28 o successiva |
| MongoDB 6.0 | Aggiorna a 6.0.27 o successiva |
| MongoDB 5.0 | Aggiorna a 5.0.32 o successiva |
| MongoDB 4.0 | Aggiorna a 4.4.30 o successiva |
Se un aggiornamento immediato non è possibile a causa di requisiti di uptime, puoi bloccare il vettore di attacco modificando la configurazione del server.
Disabilita il Compressore Vulnerabile (Consigliato)
La vulnerabilità è specifica dell'implementazione di zlib. Puoi disabilitare zlib e forzare il server a utilizzare snappy o zstd, che non sono affetti da questo specifico bug di heap-over-read.
Tramite Riga di Comando: Riavvia l'istanza mongod con il seguente flag (nota l'esclusione di zlib):
mongod --networkMessageCompressors snappy,zstd
Tramite File di Configurazione (mongod.conf):
net:
compression:
compressors: snappy,zstd
Questo strumento è destinato esclusivamente a scopi educativi e di test di sicurezza autorizzati. L'accesso non autorizzato ai sistemi informatici è illegale. L'autore non è responsabile per qualsiasi uso improprio di questo strumento. Aggiorna immediatamente le tue istanze MongoDB alle versioni 8.2.3+ o 8.0.17+.