
CVE-2025-14847 Erklärung und Labor
Referenz-CVE: CVE-2025-14847
Dieses Repository ist ein Lehrlabor, das das Konzept hinter einer Klasse von Problemen demonstriert, die oft als „Kompressions-Framing / Größenmetadaten-Speicheroffenlegung“ in Datenbank-Drahtprotokollen beschrieben werden.
Es wurde geschrieben, um das defensive Verständnis zu fördern: wie MongoDB-Netzwerkkompression ausgehandelt und geframet wird, warum Größenfelder wichtig sind und wie robuste Parser unbeabsichtigte Speicherexposition verhindern.
Hinweis zur CVE-Referenz: Dieses Labor ist um die Idee herum aufgebaut, die als CVE-2025-14847 referenziert wird. Dieses Repo validiert, reproduziert oder exploitiert keinen spezifischen Anbieterfehler und behauptet nicht, dass eine bestimmte MongoDB-Version betroffen ist. Es konzentriert sich auf die allgemeine Fehlerart (nicht übereinstimmende Größenmetadaten um komprimierte Nutzdaten) und die Gegenmaßnahmen.
Dieses Repository enthält keine (und sollte nicht verwendet werden als) Beweise dafür, welche MongoDB-Versionen für eine bestimmte CVE anfällig oder gepatcht sind.
Um „anfällige“ vs. „gepatchte“ Versionen korrekt für einen Bericht zu dokumentieren, verwenden Sie eine offizielle Anbieterberatung / Release-Notizen für die CVE und zitieren Sie diese.
Praktische Schritte zur Überprüfung, was Sie ausführen:
docker compose exec mongodb mongod --versiondocker compose exec mongodb mongosh --quiet --eval "db.version()"mongod --versionmongosh --quiet --eval "db.version()"Wenn Sie den von Ihnen verwendeten Advisory-Link teilen, kann ich eine saubere Tabelle „Betroffen / Beheben“ in der README formatieren, ohne zu raten.
Dieses Labor veranschaulicht eine Fehlerart des Kompressions-Framing / Größenmetadaten-Mismatch:
OP_COMPRESSED-Envelope weitere Größenfelder hinzu (äußere Nachrichtenlänge, deklarierte unkomprimierte Größe und die Länge der inneren Nachricht).Siehe protocol_overview.md für die detaillierte Framing-Durchlauf.
Am Ende des Labors sollten Sie in der Lage sein:
Es tut:
hello einschließlich compression: ["zlib"]OP_COMPRESSED-Nachricht mit zlibEs tut NICHT:
docker-compose.yml – Führt einen MongoDB-Container mit aktivierter zlib-Kompression und nur localhost-Exposition aus.protocol_overview.md – Drahtprotokoll + BSON + Kompressionsworkflow + konzeptionelle Schwachstellenerklärung.mitigation.md – Verteidigungsleitfaden: Patch-, Konfigurations- und Erkennungsideen.lab_probe.py – Originalsonde, die Kompression aushandelt und Nachrichtengrößen sicher protokolliert.Aus diesem Repo-Verzeichnis:
docker compose up -d
Bestätigen Sie, dass es läuft:
docker compose ps
python .\lab_probe.py
Erwartete Ausgabe:
hello aushello und protokolliert sowohl komprimierte als auch dekomprimierte Nachrichtengrößenpython .\lab_probe.py --toy-demo
Dies führt nur lokale Parsing-Prüfungen durch, um zu veranschaulichen, warum Größenvalidierung wichtig ist.
docker compose down
127.0.0.1:27017 auf dem Host gebunden.