Un bootloader EFI (Extensible Firmware Interface) è un tipo di bootloader specificamente progettato per interagire con il firmware UEFI (Unified Extensible Firmware Interface). Quest’ultimo sostituisce il BIOS tradizionale nei moderni sistemi informatici. Il bootloader è un componente cruciale nel processo di avvio di un sistema operativo, poiché è responsabile di caricare il sistema operativo in memoria e avviare l’esecuzione del kernel.
Tra le funzionalità che UEFI integra c’è anche Secure Boot, peraltro diventato un requisito essenziale per l’installazione di Windows 11. Uno strumento di sicurezza come Secure Boot ha come obiettivo quello di proteggere il processo di avvio del sistema da malware e software non autorizzati, verificando digitalmente l’integrità dei componenti chiave durante l’avvio. Con Secure Boot attivo, ogni componente caricato in fase di avvio del dispositivo, inclusi bootloader, kernel e driver, deve essere dotato di una firma digitale riconosciuta e accettata.
Un componente software come il bootloader EFI può avviare un ampio ventaglio di sistemi operativi che supportano il firmware UEFI ma l’intera “catena” di oggetti caricati all’avvio deve essere a sua volta firmata digitalmente quando Secure Boot risulta abilitato.
La vulnerabilità in shim che fa traballare l’intero Secure Boot
Quando emergono vulnerabilità di sicurezza che vanno a impattare direttamente sul funzionamento e sulla sicurezza di Secure Boot, è sempre bene drizzare le antenne. Il rischio potrebbe essere quello che eventuali aggressori possano disporre il caricamento di codice arbitrario, non firmato digitalmente, all’avvio del sistema.
Bill Demirkapi (Microsoft Security Response Center) ha scoperto una falla critica all’interno di shim, il componente software che agisce come intermediario tra il firmware di avvio e il sistema operativo. Il meccanismo shim è spesso utilizzato nei casi in cui il sistema operativo o il booloader non dispongono di una firma digitale valida accettata da Secure Boot. Shim agisce come un ponte tra Secure Boot e il sistema operativo o il bootloader di terze parti che altrimenti potrebbero non essere considerati affidabili.
È proprio la soluzione che ha adottato lo sviluppatore di Rufus per renderlo compatibile con Secure Boot e assicurare il corretto caricamento all’avvio di qualunque software senza la necessità di disattivare la protezione a livello di BIOS UEFI.
Demirkapi spiega che la vulnerabilità CVE-2023-40547 può essere sfruttata per condurre un attacco di tipo buffer overflow e provocare il caricamento di codice potenzialmente dannoso, superando i controlli e le restrizioni normalmente imposti da Secure Boot.
L’origine del problema di sicurezza e le sue conseguenze
Come spiega il ricercatore Microsoft, un attaccante può usare il metodo shim per recuperare file tramite HTTP o protocolli simili. Le versioni vulnerabili di shim cercano infatti di allocare un buffer basato sulla dimensione specificata in un’intestazione HTTP. La dipendenza da dati esterni, manipolabili “ad arte”, insieme alla presenza di metadati legati all’architettura stessa del protocollo, permette agli aggressori di sfruttare una situazione che può portare ad attacchi buffer overflow.
Il risultato è che il sistema protetto da Secure Boot, aprendosi all’esecuzione di codice arbitrario, può passare sotto il controllo dell’aggressore. Questi, infatti, diventa in grado di eseguire operazioni non permesse da Secure Boot.
Il bug riguarda il sorgente di httpboot.c
, parte integrante di Shim, e utilizzabile per eseguire il boot di un’immagine di rete attraverso HTTP.
Nell’ultima versione di shim troviamo già traccia della patch correttiva che nel frattempo gli sviluppatori hanno già applicato. Tuttavia, la persistenza del bug in ogni bootloader Linux utilizzato nel corso degli ultimi dieci anni, mette in evidenza le vaste implicazioni della falla ora tracciata con l’identificativo CVE-2023-40547.
La falla di sicurezza in Shim interessa la maggior parte dei sistemi Linux
Con il preciso intento di richiamare l’attenzione sulla problematica, Eclypsium ha appena pubblicato un approfondimento tecnico confermando con un aggressore può compromettere un sistema altrui eseguendo codice arbitrario prima dell’effettivo caricamento del sistema operativo. Lo sfruttamento della falla CVE-2023-40547 consente di aggirare i meccanismi di sicurezza implementati a livello di kernel e lato sistema operativo.
Gli esperti di Eclypsium spiegano che un utente malintenzionato può eseguire un attacco man-in-the-middle (MITM) in modalità remota; un aggressore locale dotato di privilegi sufficienti può modificare le variabili EFI o la partizione EFI utilizzando una distribuzione Linux “live” (avviata da supporto USB esterno) per alterare l’ordine di avvio e caricare uno Shim compromesso. In questo modo è possibile disporre il caricamento di codice con i privilegi più elevati possibile mantenendo attivo Secure Boot.
Infine, un utente malintenzionato sulla stessa rete può utilizzare PXE (Preboot Execution Environment) per caricare un bootloader shim compromesso, sfruttando la medesima vulnerabilità.
Come mettere al sicuro i propri sistemi
RedHat ha condiviso un aggiornamento di sicurezza per la correzione della falla CVE-2023-40547 il 5 dicembre 2023. Le distribuzioni Linux derivate che supportano Secure Boot e utilizzano Shim, tuttavia, devono pubblicare le patch “ad hoc”. Maggiori informazioni sulla problematica possono essere trovate, sotto forma di avvisi, sui siti Web di Red Hat, Debian, Ubuntu e SUSE.
Agli utenti Linux è consigliato di installare Shim v15.8 (o seguenti), che contiene una correzione per CVE-2023-40547 e altre cinque importanti vulnerabilità.
Eclypsium spiega che gli utenti Linux devono anche aggiornare il database DBX di UEFI contenente le revoche per Secure Boot. In questo modo è possibile aggiungere gli hash delle versioni di Shim vulnerabili e ottenere la firma digitale Microsoft valida per approvare l’uso dell’ultima versione contenente la correzione di sicurezza.
Per procedere, è necessario dapprima eseguire con successo l’aggiornamento a Shim 15.8 per poi applicare l’aggiornamento del database DBX utilizzando il comando fwupdmgr update
.
Alcune distribuzioni Linux offrono uno strumento dotato di interfaccia grafica per eseguire l’aggiornamento: è consigliabile fare riferimento al package manager prima di ricorrere alla finestra del terminale.
La vulnerabilità in questione non soltanto mette alla prova l’efficacia di Secure Boot, ma suona come un nuovo campanello di allarme che dimostra quanto la sicurezza delle piattaforme informatiche moderne sia tutt’altro che scontata.
Credit immagine in apertura: Microsoft Bing Image Creator.