Il ricercatore russo Alexander Ermolov, dipendente della società di sicurezza Embedi, ha recentemente scoperto una vulnerabilità relativa all’implementazione dello standard Boot Guard di Intel, presente all’interno delle schede madri Gigabyte. Poiché il codice riguarda il BIOS prodotto da AMI (American Megatrends Inc.), è assai probabile che molti altri dispositivi, anche di altri produttori, soffrano dello stesso problema .
Boot Guard è un sistema che ha lo scopo di verificare che l’integrità del BIOS in esecuzione sulla macchina non sia stata compromessa; è stato rilasciato nel 2013 da Intel con l’uscita dell’architettura Haswell dei microprocessori. L’obiettivo sarebbe raggiunto attraverso una chain of trust creata tra componenti hardware e software: la CPU Intel carica, verifica ed esegue un modulo firmato, l’Authenticated Core Module (ACM) , all’interno di una sua area di memoria protetta, l’Authenticated Core RAM (ACRAM) . L’ hash utilizzato per verificare l’autenticità dell’ACM si trova fuso direttamente all’interno del Platform Controller Hub (il chipset) della CPU.
L’ACM viene eseguito prima del BIOS, ed ha la finalità di verificare l’autenticità della sua parte iniziale, l’ Initial Boot Block (IBB) , il quale a sua volta autenticherà la parte residua del BIOS. Di solito, l’IBB comprende i volumi coincidenti con le fasi SEC (Security) e PEI (Pre-EFI Initialization) del BIOS, mentre la parte residua è la DXE (Driver eXecution Environment) .
I problemi si presentano sulla scheda madre Gigabyte GA-H170-D3H e la versione F04 del suo firmware UEFI: essa, pur non avendo Boot Guard abilitato, possiede tutti i suoi componenti: il suo IBB, al termine della fase PEI, esegue la subroutine Start
, la quale si occupa delle seguenti operazioni:
- controlla la modalità di avvio del sistema, poiché il codice della componente DXE non viene mai verificato, nel caso in cui il computer riparta da una sospensione: questo avviene al fine di risparmiare tempo ed avere un guadagno prestazionale;
- crea un Hand-Off Block (HOB) – una struttura di dati binaria – di un byte di grandezza, in cui scrivere il risultato di tutte le operazioni di autenticazione;
- cerca all’interno dell’ hash container gli indirizzi relativi ai primi due blocchi della componente DXE del BIOS e ne verifica l’autenticità.
Nel caso in cui i controlli di verifica falliscano, cioè la componente DXE del BIOS sia stata contraffatta, il valore 0
viene scritto all’interno dell’HOB, e viene avviata una procedura di spegnimento forzato del sistema , per mezzo del modulo BootGuardDXE . Tuttavia, a causa di un bug all’interno di questo modulo, nel caso in cui l’HOB non venga trovato, esso restituisce solo un errore, senza che il sistema venga spento, consentendo la successiva esecuzione della componente DXE contraffatta.
Inoltre, nel caso in cui un attaccante riuscisse ad eliminare completamente il modulo BootGuardDXE dalla componente DXE, il sistema non verrebbe spento nemmeno nel caso in cui a fallire sia uno dei controlli di autenticità precedenti, relativi alla fase PEI.
Stando a quanto dichiarato dal ricercatore, AMI è stata prontamente informata dell’esistenza della vulnerabilità , e avrebbe provveduto alla sua risoluzione e ad informare i propri clienti – gli OEM – affinché anche loro possano risolvere il problema. Tuttavia, analizzando una nuova versione del BIOS, si evince che, nel caso in cui il controllo di autenticità fallisca, viene scritto il valore 1 all’interno dell’HOB relativo ai controlli della fase PEI: in questo modo, Boot Guard viene bypassato ad un livello addirittura superiore , senza il bisogno di cancellare BootGuardDXE dalla componente DXE del BIOS.
Elia Tufarolo