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.
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
root@kitploit:~
# Install dependencies
npm install
# Optional: Use specific MongoDB URI
export MONGODB_URI="mongodb://localhost:27017/mongoose_cve_poc"
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.