CVE-2024-24576
Il comando std::process::Command di Rust non eseguiva correttamente l'escaping degli argomenti dei file batch su Windows.
- Pubblicato
- 9 apr 2024
- Aggiornato
- 4 nov 2025
- Assegnazione CNA
- GitHub_M
- Evidenza osservata
- 8 ago 2026
CVSS primario
nvd · CVSS 3.1
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:HModerato · prossimi 30 giorni
- Percentile
- 97,4%
- Data del modello
- 21 set 2026
L'EPSS è una stima statistica, non una certezza o una misura di impatto. Combinalo con CVSS, stato KEV, esposizione e ambiente.
Riepilogo
Rust è un linguaggio di programmazione. Il Rust Security Response WG è stato informato che la libreria standard di Rust precedente alla versione 1.77.2 non eseguiva correttamente l'escape degli argomenti quando invocava file batch (con le estensioni `bat` e `cmd`) su Windows tramite `Command`. Un attaccante in grado di controllare gli argomenti passati al processo generato poteva eseguire comandi shell arbitrari bypassando l'escape. La gravità di questa vulnerabilità è critica per chi invoca file batch su Windows con argomenti non attendibili. Nessun'altra piattaforma o utilizzo è interessato. Le API `Command::arg` e `Command::args` dichiarano nella loro documentazione che gli argomenti verranno passati al processo generato così come sono, indipendentemente dal contenuto degli argomenti, e non verranno valutati da una shell. Ciò significa che dovrebbe essere sicuro passare input non attendibili come argomento. Su Windows, l'implementazione di questo è più complessa rispetto ad altre piattaforme, perché l'API di Windows fornisce solo una singola stringa contenente tutti gli argomenti al processo generato, e spetta al processo generato suddividerli. La maggior parte dei programmi utilizza l'argv standard del C runtime, che in pratica si traduce in un modo per lo più coerente di suddividere gli argomenti. Un'eccezione, però, è `cmd.exe` (usato tra le altre cose per eseguire file batch), che ha una propria logica di suddivisione degli argomenti. Ciò costringe la libreria standard a implementare un escape personalizzato per gli argomenti passati ai file batch. Purtroppo è stato segnalato che la nostra logica di escape non era sufficientemente approfondita, ed era possibile passare argomenti maliziosi che avrebbero portato all'esecuzione arbitraria di comandi shell. A causa della complessità di `cmd.exe`, non abbiamo identificato una soluzione che eseguisse correttamente l'escape degli argomenti in tutti i casi. Per mantenere le nostre garanzie API, abbiamo migliorato la robustezza del codice di escape e modificato l'API `Command` per restituire un errore `InvalidInput` quando non è in grado di eseguire l'escape di un argomento in modo sicuro. Questo errore verrà emesso all'avvio del processo. La correzione è inclusa in Rust 1.77.2. Si noti che la nuova logica di escape per i file batch è cauta per eccesso e potrebbe rifiutare argomenti validi. Coloro che implementano l'escape manualmente o che gestiscono solo input attendibili su Windows possono anche utilizzare il metodo `CommandExt::raw_arg` per bypassare la logica di escape della libreria standard.
Utilizzo responsabile
Utilizza le informazioni sulla vulnerabilità solo sui sistemi che possiedi o che sei autorizzato a testare. Kitploit si collega ai metadati della ricerca pubblica e non memorizza codici exploit o payload dannosi.