
CVE-2024-24576 Prova di concetto
Le API Command::arg e Command::args dichiarano nella loro documentazione che gli argomenti verranno passati al processo avviato così come sono, indipendentemente dal contenuto degli argomenti, e non verranno valutati da una shell. Questo significa che dovrebbe essere sicuro passare input non attendibile 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 avviato, e spetta al processo avviato suddividerli. La maggior parte dei programmi utilizza l'argv standard del C run-time, che in pratica risulta 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. Questo costringe la libreria standard a implementare un escaping personalizzato per gli argomenti passati ai file batch. Purtroppo è stato segnalato che la nostra logica di escaping non era abbastanza accurata, ed era possibile passare argomenti dannosi che avrebbero portato a esecuzione arbitraria di comandi nella shell.

Riferimento: https://blog.rust-lang.org/2024/04/09/cve-2024-24576.html