
MongoBleed: CVE-2025-14847 Memory-Leak-Erkennungstool
MongoBleed ist ein Hochleistungs-Sicherheitsaudit-Tool, das entwickelt wurde, um CVE-2025-14847 zu erkennen und zu demonstrieren. Diese Schwachstelle ermöglicht es einem nicht authentifizierten, entfernten Angreifer, Fragmente von nicht initialisiertem Heap-Speicher von einem MongoDB-Server preiszugeben, indem er einen Längenfehler in der zlib-Dekomprimierungslogik ausnutzt.
Um dieses Skript sicher zu testen, verwenden Sie die folgende docker-compose.yml, um eine anfällige MongoDB-8.2.2-Instanz zu starten.
Instanz starten mit:
docker-compose up -d
Stellen Sie sicher, dass Python 3.8+ installiert ist. Es sind keine externen Bibliotheken erforderlich (verwendet die integrierten Module socket, zlib und concurrent.futures).
Basisscan
python mongobleed.py --host 127.0.0.1 --port 27017
Erweiterte Optionen
python mongobleed.py --host 127.0.0.1 --threads 50 --range 100 10000 --output leak_dump.bin
Das Skript sendet eine manipulierte OP_COMPRESSED-Nachricht (Opcode 2012). Es macht falsche Angaben zur unkomprimierten Länge der Nutzlast. Der MongoDB-Server weist einen Heap-Puffer in der angegebenen Größe zu, dekomprimiert eine winzige Datenmenge hinein und gibt dann fälschlicherweise den gesamten nicht initialisierten Puffer an den Client zurück.
Der einzige dauerhafte Weg, CVE-2025-14847 zu beheben, besteht darin, die MongoDB-Binärdatei auf eine Version zu aktualisieren, die einen Fix für die Längenvalidierungslogik von OP_COMPRESSED enthält.
Dauerhafte Lösung (Upgrade)
Wenden Sie die offiziellen Patches von MongoDB an. Diese Versionen enthalten eine obligatorische Prüfung, die sicherstellt, dass die dekomprimierte Datengröße mit dem Feld uncompressedSize im Nachrichtenkopf übereinstimmt.
| Hauptzweig | Empfohlene sichere Version |
|---|---|
| MongoDB 8.2 | Auf 8.2.3 oder höher aktualisieren |
| MongoDB 8.0 | Auf 8.0.17 oder höher aktualisieren |
| MongoDB 7.0 | Auf 7.0.28 oder höher aktualisieren |
| MongoDB 6.0 | Auf 6.0.27 oder höher aktualisieren |
| MongoDB 5.0 | Auf 5.0.32 oder höher aktualisieren |
| MongoDB 4.0 | Auf 4.4.30 oder höher aktualisieren |
Wenn ein sofortiges Upgrade aufgrund von Verfügbarkeitsanforderungen nicht möglich ist, können Sie den Angriffsvektor blockieren, indem Sie die Serverkonfiguration ändern.
Anfälligen Kompressor deaktivieren (empfohlen)
Die Schwachstelle betrifft speziell die zlib-Implementierung. Sie können zlib deaktivieren und den Server zwingen, snappy oder zstd zu verwenden, die von diesem speziellen Heap-Over-read-Fehler nicht betroffen sind.
Über die Befehlszeile: Starten Sie die mongod-Instanz mit dem folgenden Flag neu (beachten Sie den Ausschluss von zlib):
mongod --networkMessageCompressors snappy,zstd
Über die Konfigurationsdatei (mongod.conf):
net:
compression:
compressors: snappy,zstd
Dieses Tool dient ausschließlich Bildungs- und autorisierten Sicherheitstestzwecken. Nicht autorisierter Zugriff auf Computersysteme ist illegal. Der Autor übernimmt keine Verantwortung für eine missbräuchliche Verwendung dieses Tools. Aktualisieren Sie Ihre MongoDB-Instanzen sofort auf Version 8.2.3+ oder 8.0.17+.