CVE-2025-23061 - Mongoose Command Injection
Ein Proof of Concept für die Befehlsinjektions-Schwachstelle in Mongoose < 8.9.5, die die match-Option der Funktion populate() betrifft.
Details zur Schwachstelle
CVE-ID: CVE-2025-23061
Schweregrad: KRITISCH (CVSS 9.0)
Betroffenes Paket: mongoose
Betroffene Versionen:
- < 6.13.6
-
= 7.0.0 < 7.8.4
-
= 8.0.0 < 8.9.5
CVE-2024-53900 & CVE-2025-23061 Zeitleiste
-
- November 2024: Dat Phung identifizierte eine kritische Schwachstelle in Mongoose und übermittelte einen Sicherheitsbericht an Snyk.
-
- November 2024: Mongoose veröffentlichte Version 8.8.3, um diese Schwachstelle zu beheben.
-
- Dezember 2024: Die National Vulnerability Database (NVD) veröffentlichte CVE-2024-53900 für diese Schwachstelle.
-
- Dezember 2024: Bei der Analyse des 8.8.3-Patches von Mongoose fand Dat Phung eine Umgehung, die weiterhin RCE (Remote Code Execution) ermöglichte. Ein detaillierter Sicherheitsbericht wurde an Tidelift übermittelt.
-
- Januar 2025: Mongoose veröffentlichte Version 8.9.5 mit einem verbesserten Patch, der die Umgehung wirksam behob.
-
- Januar 2025: Die National Vulnerability Database (NVD) veröffentlichte CVE-2025-23061 offiziell und betonte den Schweregrad der neu identifizierten Schwachstelle.
Grundursache
Diese Schwachstelle existiert aufgrund einer unvollständigen Behebung von CVE-2024-53900. Während die direkte $where-Injektion blockiert wird, können Angreifer diesen Schutz umgehen, indem sie $where-Operatoren innerhalb logischer Operatoren wie $and, $or usw. verschachteln.
Der verwundbare Codepfad:
- Der Benutzer gibt Eingaben über den match-Parameter von
populate() ein.
- Die Anwendung verwendet unsanitisierte Benutzereingaben direkt in der match-Abfrage.
- Mongoose bereinigt
$where nicht, wenn es innerhalb logischer Operatoren verschachtelt ist.
- Der Angreifer führt beliebigen JavaScript-Code auf dem MongoDB-Server aus.
Auswirkungen
- Preisgabe von Informationen: Zugriff auf sensible Daten ohne ordnungsgemäße Autorisierung
- Umgehung der Authentifizierung: Abrufen von Informationen, die nur für Administratoren bestimmt sind
- Beliebige Codeausführung: Ausführen von JavaScript auf dem MongoDB-Server
- Datenänderung: Möglichkeit zum Ändern von Datenbankeinträgen
Einrichtung & Ausführen des PoC
Voraussetzungen
- Node.js >= 14
- MongoDB läuft lokal oder ist über eine Verbindungszeichenfolge erreichbar
Installation
# Install dependencies
npm install
# Optional: Use specific MongoDB URI
export MONGODB_URI="mongodb://localhost:27017/mongoose_cve_poc"
Verwundbaren Server ausführen
npm start
Der Server startet unter http://localhost:3000
Den Exploit ausführen
In einem anderen Terminal:
node exploit.js
Referenzen
Haftungsausschluss
Dieser PoC dient ausschließlich Bildungszwecken. Unbefugter Zugriff auf Computersysteme ist illegal. Verwenden Sie ihn nur auf Systemen, die Ihnen gehören oder für die Sie ausdrückliche Testgenehmigung haben.