BatBadBut, analisi di una vulnerabilità critica in Windows

BatBadBut è una vulnerabilità critica che permette a un attaccante di eseguire iniezione di comandi su applicazioni Windows che dipendono indirettamente dalla funzione CreateProcess. Questa vulnerabilità è stata scoperta da un ingegnere della sicurezza di Flatt Security noto come RyotaK. Quando si verificano condizioni specifiche, BatBadBut consente di iniettare comandi nei file batch su Windows, mettendo a rischio la sicurezza del sistema.

Dettagli chiave

Ecco alcuni dettagli chiave sulla vulnerabilità BatBadBut:

– Origine del nome: Il nome “BatBadBut” deriva dalla combinazione di “Bat” (file batch) e “BadBut”, evidenziando il comportamento indesiderato che la vulnerabilità può causare nei comandi Windows.

– Condizioni di exploit: L’exploit di BatBadBut avviene solo quando si verificano le seguenti condizioni:

1. L’applicazione esegue un comando su Windows.

2. L’applicazione non specifica l’estensione del file del comando o l’estensione del file è `.bat` o `.cmd`.

3. Il comando eseguito contiene input controllati dall’utente come parte degli argomenti del comando.

4. L’ambiente di runtime del linguaggio di programmazione non effettua correttamente l’escape degli argomenti del comando per `cmd.exe`.

-Versioni interessate: BatBadBut colpisce solo le versioni di Rust precedenti alla 1.77.2; nessun’altra piattaforma o utilizzo è interessato.

Raccomandazioni

Se sei uno sviluppatore o un utente, è importante prendere misure precauzionali per proteggere i sistemi da questa vulnerabilità. Ad esempio, evita l’esecuzione inaspettata dei file batch spostandoli in una directory non inclusa nella variabile d’ambiente PATH. In questo modo, i file batch non verranno eseguiti a meno che non venga specificato il percorso completo, riducendo il rischio di exploit della vulnerabilità.

GitHub lo ha registrato come CVE-2024-24576 , con un punteggio di gravità (CVSS) di 10,0.

Anche il CERT/CC della Carnegie Mellon University ha pubblicato un avviso sull’argomento rimarcando che vari linguaggi di programmazione non dispongono di meccanismi di convalida adeguati per i comandi e la vulnerabilità del command injection in questi linguaggi di programmazione, quando eseguiti su Windows, consente agli aggressori di eseguire codice arbitrario.

Ricorda sempre di mantenere le tue librerie e linguaggi di programmazione aggiornati per mitigare i rischi derivanti da BatBadBut.

Su Salvatore Lombardo 205 Articoli
Ingegnere elettronico e socio Clusit, da qualche tempo, sposando il principio dell’educazione consapevole, scrive online per diversi magazine sull’Information Security. È inoltre autore del libro “La Gestione della Cyber Security nella Pubblica Amministrazione”. “Education improves Awareness” è il suo motto.