Apr 10, 2024 In evidenza, News, Vulnerabilità
Il Rust Security Response WG ha reso nota l’esistenza di una vulnerabilità critica nella Rust Standard Library che consente a un attaccante di eseguire comandi di shell arbitrari. Il bug, tracciato come CVE-2024-25476, è causato dall’escaping improprio degli argomenti usati nelle invocazioni dei file batch (con estensioni .bat
e .cmd
) usando l’API Command. Il problema si presenta solo sui dispositivi Windows.
Il team di sicurezza spiega che un attaccante può sfruttare questo bug controllando gli argomenti passati al processo, inserendo dei comandi che vengono eseguiti senza controlli aggiuntivi.
La documentazione delle API Command::arg
e Command:args
specifica che gli argomenti passati al processo non vengono eseguiti dalla shell, ma in Windows l’implementazione è un po’ più complessa. L’API di Windows passa al processo una singola stringa che contiene tutti gli argomenti, ed è il processo che si occupa di dividerli. In alcuni casi i processi usano cmd.exe
che usa una propria logica per suddividere gli argomenti e anche una logic custom di escaping, la quale non protegge da attacchi di command injection.
A scoprire il bug è stato un ricercatore di Flatt Security (Ryotak su X). Il ricercatore ha notificato subito il team di sicurezza e la compagnia ha rilasciato una nuova versione della Standard Library dove gestisce il problema.
A causa della complessità di cmd.exe
, il team del Rust Security Response WG non è riuscita a identificare una soluzione che potesse effettuare correttamente l’escape degli argomenti in tutti i casi; la compagnia ha scelto quindi di migliorare la robustezza del processo di escaping aggiungendo la gestione dell’errore di InvalidInput quando la libreria non riesce a effettuare l’escape di un argomento in sicurezza.
Il fix per la vulnerabilità è disponibile nella versione 1.77.2 di Rust rilasciata il 9 aprile. Tutte le versioni precedenti all’ultima soffrono del bug e andrebbero aggiornate il prima possibile.