
Explot, Lab, Scanner - externer und Docker-Container, für SMongobleed-CVE-2025-14847 plus phoenix security uploader
CVE-2025-14847 | CVSS 8.7 (Hoch) | Nicht authentifizierte Speicher-Offenlegung
CVE-2025-14847, auch MongoBleed genannt, ermöglicht es nicht authentifizierten entfernten Angreifern, nicht initialisierten Heap-Speicher auszuleiten, indem die zlib-Dekompressionslogik von MongoDB ausgenutzt wird. Diese schwerwiegende Schwachstelle legt sensible Daten offen, einschließlich Klartext-Anmeldeinformationen und Sitzungstokens, und bietet einen Fahrplan für seitliche Bewegungen und die vollständige Übernahme des Servers.
📖 Vollständige Dokumentation →
| Aspekt | Details |
|---|---|
| Was ist verwundbar | MongoDB Server Netzwerk-Transportschicht mit zlib-Kompression |
| Schweregrad | Hoch (CVSS 8.7/7.5) |
| Auswirkung | Nicht authentifizierte, entfernte Offenlegung von nicht initialisiertem Heap-Speicher |
| Warum es wichtig ist | Durchgesickerte Fragmente enthalten Datenbankpasswörter, AWS-Geheimschlüssel und interne Serverzustände |
| Exploit-Status | Öffentlicher Proof-of-Concept (PoC) „mongobleed“ ist validiert und im Umlauf |
| Was heute zu tun ist | Führen Sie sofort ein Upgrade auf gepatchte Versionen durch oder deaktivieren Sie die zlib-Kompression |
Die Schwachstelle existiert in der Netzwerktransportschicht von MongoDB (message_compressor_zlib.cpp), wo ein kritischer Fehler in der zlib-Dekompressionslogik es nicht authentifizierten Angreifern ermöglicht, sensible Serverspeicherinhalte preiszugeben.
// VULNERABLE CODE (before fix)
counterHitDecompress(input.length(), output.length());
return {output.length()}; // ❌ Returns ALLOCATED buffer size
// PATCHED CODE (after fix)
counterHitDecompress(input.length(), output.length());
return length; // ✅ Returns ACTUAL decompressed data length
┌─────────────────────────────────────────────────────────────────────────────┐
│ MongoBleed Attack Vector │
├─────────────────────────────────────────────────────────────────────────────┤
│ │
│ ATTACKER VULNERABLE MongoDB │
│ │ │ │
│ │ 1. Send OP_COMPRESSED message │ │
│ │ uncompressedSize: 8192 (LIE) │ │
│ │ actual data: ~100 bytes │ │
│ │────────────────────────────────────> │
│ │ │ │
│ │ 2. Allocate 8192-byte buffer │
│ │ 3. Decompress ~100 bytes │
│ │ 4. BUG: Return buffer.length() = 8192 │
│ │ 5. BSON parser reads uninitialized memory │
│ │ │ │
│ │ 6. Error response with leaked │ │
│ │ memory as "field names" │ │
│ │<──────────────────────────────────── │
│ │ │ │
│ 🔓 LEAKED DATA: │ │
│ - API keys, passwords, tokens │
│ - MongoDB internal state │
│ - WiredTiger storage configs │
│ - System /proc information │
│ - Client connection data │
│ │
└─────────────────────────────────────────────────────────────────────────────┘
| Version | Verwundbarer Bereich | Korrigierte Version | Status |
|---|---|---|---|
| 8.2.x | 8.2.0 - 8.2.2 | 8.2.3 | ✅ Gepatcht |
| 8.0.x | 8.0.0 - 8.0.16 | 8.0.17 | ✅ Gepatcht |
| 7.0.x | 7.0.0 - 7.0.27 | 7.0.28 | ✅ Gepatcht |
| 6.0.x | 6.0.0 - 6.0.26 | 6.0.27 | ✅ Gepatcht |
| 5.0.x | 5.0.0 - 5.0.31 | 5.0.32 | ✅ Gepatcht |
| 4.4.x | 4.4.0 - 4.4.29 | 4.4.30 | ✅ Gepatcht |
| 4.2.x | Alle Versionen | Keine | ⚠️ EOL |
| 4.0.x | Alle Versionen | Keine | ⚠️ EOL |
| 3.6.x | Alle Versionen | Keine | ⚠️ EOL |
| Datum | Ereignis |
|---|---|
| 15. Dez. 2025 | Schwachstelle identifiziert; internes Ticket SERVER-115508 |
| 19. Dez. 2025 | Fix veröffentlicht, CVE-2025-14847 offengelegt |
| 24. Dez. 2025 | MongoDB-Atlas-Flotte gepatcht |
| 26. Dez. 2025 | Öffentlicher PoC „mongobleed“ veröffentlicht |
| 28. Dez. 2025 | Ausnutzung in freier Wildbahn beobachtet |
mongobleed-exploit-CVE-2025-14847/
├── exploit/ # 🔴 Exploit Lab
│ ├── docker-compose.yml # Vulnerable + Patched MongoDB instances
│ ├── mongobleed.py # Memory leak exploit PoC
│ ├── init/init-mongo.js # Sensitive test data
│ ├── test-exploit.sh # Lab test script
│ └── README.md # Lab documentation
│
├── scanner/ # 🌐 Network Scanner
│ ├── mongobleed_scanner.py # IP/domain vulnerability scanner
│ ├── sample-targets.txt # Sample targets file
│ └── README.md # Scanner documentation
│
├── code-scan/ # 📂 Code Scanner
│ ├── main.py # CLI entry point
│ ├── scanners/ # Docker, Python, Infra scanners
│ ├── models/ # Finding, Vulnerability models
│ ├── integrations/ # Phoenix Security upload
│ └── README.md # Code scanner documentation
│
└── original-exploit/ # 📚 Original PoC reference
cd exploit
# Start lab (vulnerable + patched instances)
docker-compose up -d
sleep 10
# Test vulnerable instance (should leak memory)
python3 mongobleed.py --host localhost --port 27017
# Test patched instance (should NOT leak memory)
python3 mongobleed.py --host localhost --port 27018
# Full lab test
./test-exploit.sh
cd scanner
# Scan single host
python3 mongobleed_scanner.py 192.168.1.100
# Scan network range
python3 mongobleed_scanner.py 192.168.1.0/24
# Scan from file
python3 mongobleed_scanner.py @sample-targets.txt --json --output results.json
cd code-scan
# Scan project for vulnerable MongoDB versions
python3 main.py scan /path/to/project
# Scan and upload to Phoenix
python3 main.py scan /path/to/project --upload-phoenix
# Run tests
python3 main.py test
# === EXPLOIT LAB ===
# Start lab
cd exploit && docker-compose up -d && sleep 10