Il BIOS UEFI non ha ormai bisogno di presentazioni. UEFI (Unified Extensible Firmware Interface) è un firmware che si occupa della fase di avvio del sistema operativo e fornisce un’interfaccia tra il sistema operativo e l’hardware del computer. Contrariamente al BIOS tradizionale, UEFI offre molte funzionalità avanzate e una maggiore flessibilità. Fu introdotto per la prima volta nel 2005 come parte dello sforzo dell’industria per modernizzare il firmware dei computer.
UEFI svolge un ruolo essenziale perché è attraverso la sua interfaccia che è possibile attivare Secure Boot, ossia la funzionalità diventata requisito essenziale per Windows 11 che impedisce il caricamento di software sprovvisto di una firma digitale autorizzata al momento dell’avvio del PC.
LogoFAIL: come superare qualunque protezione UEFI
I ricercatori di Binarly hanno annunciato la scoperta di ben 24 vulnerabilità nelle varie implementazioni di UEFI, sia sui sistemi x86 che sui dispositivi ARM. Nel complesso, alle lacune di sicurezza e al relativo codice exploit, gli esperti hanno assegnato il nome di LogoFAIL. Il nome scelto suggerisce tutto: i bug di sicurezza in questione riguardano i parser delle immagini contenuti all’interno dell’ecosistema firmware UEFI.
Un parser è un componente software che analizza ed elabora testi e immagini. UEFI permette di visualizzare, al momento dell’avvio della macchina, un’immagine personalizzata che può essere il logo del produttore della scheda madre o del computer. I tecnici di Binarly hanno scoperto molteplici vulnerabilità insite nei parser UEFI che possono condurre all’esecuzione di codice arbitrario.
Ogni produttore di BIOS fornisce diversi parser di immagini per i moderni sistemi basati su firmware UEFI: così, la superficie di attacco ne risulta notevolmente ampliata.
Come funziona l’aggressione
Alla radice di LogoFAIL c’è un problema tutt’altro che di poco conto: gli attaccanti possono sfruttare le vulnerabilità presenti all’interno dei BIOS UEFI per sostituire il logo del produttore con codice arbitrario. Esso viene elaborato e, purtroppo, eseguito durante la fase di avvio del sistema. Nello specifico, nella fase DXE (in kernel mode): qui il codice è scritto in linguaggio C puro, spesso senza mitigazioni contro l’utilizzo di codice exploit.
Alcuni vendor consentono agli utenti di personalizzare il logo visualizzato durante l’avvio. Gli attaccanti possono sfruttare questa funzionalità sostituendo il logo con uno dannoso.
In altre circostanze, LogoFAIL è attivabile personalizzando il logo durante la procedura di aggiornamento del firmware: in questo modo l’aggressore può iniettare codice malevolo. Infine, in assenza di metodi di personalizzazione del logo, usando un programmatore di flash SPI è possibile lanciare un attacco fisico per inserire, ancora una volta, un logo nocivo.
Schema di funzionamento dell’attacco LogoFAIL (fonte: Binarly).
Le implicazioni di LogoFAIL
Le vulnerabilità alla base di LogoFAIL possono compromettere la sicurezza dell’intero sistema, eludendo misure di sicurezza che lavorano a un livello ancora più basso rispetto al sistema operativo: si pensi alla già citata Secure Boot oppure a Intel Boot Guard.
Un utente malintenzionato può quindi far leva su LogoFAIL per mettere a punto un efficace bootkit che disponga l’esecuzione di codice all’avvio della machina, con la possibilità di monitorare le attività dell’utente, sottrarre dati personali, installare applicazioni sul sistema della vittima, provocare danni.
Il bootkit sviluppabile e impiantabile sul sistemi sfruttando le vulnerabilità LogoFAIL si traduce quindi in una minaccia persistente, che resta costantemente in esecuzione sul sistema e in grado di eludere molte soluzioni per la sicurezza informatica installate sui singoli endpoint. Il video dimostrativo pubblicato su YouTube mette chiaramente in evidenza le potenzialità dell’attacco.
Basta eseguire un semplice script per modificare il logo mostrato all’avvio del PC: dopo il reboot della macchina, il codice nocivo caricato al posto dell’immagine porta all’esecuzione di codice di qualunque genere. Nell’esempio, gli sviluppatori fanno creare al BIOS UEFI così manomesso un file sul desktop del sistema Windows 11.
La scoperta delle gravi vulnerabilità a livello UEFI è frutto di un’approfondita attività di fuzzing svolta su ciascun parser di immagini via via scoperto dai ricercatori, ad esempio quelli integrati nei BIOS distribuiti da aziende come Phoenix, AMI e Insyde.
Inutile dire che un attacco basato su LogoFAIL può causare danni sui sistemi Windows come sulle macchine Linux essendo indipendente dal sistema operativo. Ovviamente, il payload successivamente caricato dovrà essere ottimizzato per il sistema operativo presente sulla macchina.
Credit immagine in apertura: iStock.com/Nadezhda Kozhedub