CVE-2025-23061 - Iniezione di Comandi in Mongoose
Una proof of concept per la vulnerabilità di Iniezione di Comandi in Mongoose < 8.9.5 che interessa l'opzione match della funzione populate().
Dettagli della Vulnerabilità
ID CVE: CVE-2025-23061
Gravità: CRITICA (CVSS 9.0)
Pacchetto Affetto: mongoose
Versioni Vulnerabili:
- < 6.13.6
-
= 7.0.0 < 7.8.4
-
= 8.0.0 < 8.9.5
Cronologia di CVE-2024-53900 & CVE-2025-23061
- 7 Novembre 2024: Dat Phung ha identificato una vulnerabilità critica in Mongoose e ha inviato un rapporto di sicurezza a Snyk.
- 26 Novembre 2024: Mongoose ha rilasciato la versione 8.8.3 per affrontare e correggere questa vulnerabilità.
- 2 Dicembre 2024: Il National Vulnerability Database (NVD) ha divulgato CVE-2024-53900 per questa vulnerabilità.
- 17 Dicembre 2024: Analizzando la patch 8.8.3 di Mongoose, Dat Phung ha trovato un bypass che abilitava ancora RCE (Remote Code Execution). Un rapporto di sicurezza dettagliato è stato inviato a Tidelift.
- 13 Gennaio 2025: Mongoose ha rilasciato la versione 8.9.5, introducendo una patch migliorata che ha affrontato efficacemente il bypass.
- 15 Gennaio 2025: Il National Vulnerability Database (NVD) ha ufficialmente divulgato CVE-2025-23061, sottolineando la gravità della vulnerabilità appena identificata.
Causa Principale
Questa vulnerabilità esiste a causa di una correzione incompleta per CVE-2024-53900. Mentre l'iniezione diretta di $where è bloccata, gli aggressori possono aggirare questa protezione annidando operatori $where all'interno di operatori logici come $and, $or, ecc.
Il flusso di codice vulnerabile:
- L'utente fornisce input tramite il parametro match di
populate()
- L'applicazione utilizza input utente non sanitizzato direttamente nella query match
- Mongoose non riesce a sanitizzare
$where quando annidato all'interno di operatori logici
- L'aggressore esegue JavaScript arbitrario sul server MongoDB
Impatto
- Divulgazione di Informazioni: Accesso a dati sensibili senza autorizzazione adeguata
- Bypass dell'Autenticazione: Recupero di informazioni riservate agli amministratori
- Esecuzione di Codice Arbitrario: Esecuzione di JavaScript sul server MongoDB
- Modifica dei Dati: Possibilità di modificare i record del database
Configurazione ed Esecuzione del PoC
Prerequisiti
- Node.js >= 14
- MongoDB in esecuzione localmente o accessibile tramite stringa di connessione
Installazione
# Install dependencies
npm install
# Optional: Use specific MongoDB URI
export MONGODB_URI="mongodb://localhost:27017/mongoose_cve_poc"
Esegui il Server Vulnerabile
npm start
Il server si avvierà su http://localhost:3000
Esegui lo Exploit
In un altro terminale:
node exploit.js
Riferimenti
Dichiarazione di non responsabilità
Questo PoC è fornito esclusivamente a scopo educativo. L'accesso non autorizzato a sistemi informatici è illegale. Utilizzalo solo su sistemi di tua proprietà o per i quali hai esplicita autorizzazione a testare.