Per 13 dei suoi 14 anni di esistenza, la protezione progettata da Microsoft contro le infezioni del firmware è rimasta aggirabile attraverso componenti difettosi, ma ancora considerati affidabili. I ricercatori di ESET hanno individuato 11 immagini firmware firmate dalla società, almeno una risalente al 2013, che potevano essere utilizzate per neutralizzare Secure Boot con una tecnica alla portata anche di attaccanti poco esperti.
Le immagini coinvolte sono gli shim, componenti introdotti per estendere Secure Boot ai dispositivi Linux e ad alcuni software di utilità. Pur essendo note come vulnerabili, queste vecchie versioni erano rimaste pubblicamente disponibili e non erano state inserite tra quelle revocate. Una loro copia e una conoscenza basilare del funzionamento degli shim erano quindi sufficienti per bypassare UEFI Secure Boot, senza ricorrere a nuove vulnerabilità o a tecniche di exploit particolarmente sofisticate.
Il problema interessa sia i sistemi Windows sia quelli Linux, perché uno shim può essere installato su dispositivi che eseguono entrambi gli ambienti. Una volta compromessa la catena di firmware firmati digitalmente, un attaccante può introdurre codice malevolo eseguito nelle primissime fasi dell’avvio. Il malware può così sopravvivere alla reinstallazione del sistema operativo e persino alla sostituzione del disco rigido.
Martin Smolár, ricercatore di ESET, ha chiarito che il pericolo non deriva da una vulnerabilità inedita, ma dalla disponibilità di vecchi binari ancora autorizzati. È il terreno operativo dei bootkit, malware progettati per caricarsi prima del sistema operativo. Secure Boot era stato introdotto nel 2012 proprio per contrastare questa minaccia, compresi gli attacchi condotti mediante un breve accesso fisico a un computer anche spento. La maggior parte dei bootkit richiede tale accesso, ma non tutti.
L’elenco compilato dal CERT comprende 11 shim: alcuni erano stati utilizzati da distributori Linux come Red Hat, OpenSUSE e Oracle, altri facevano parte di software di terze parti. Molti erano stati realizzati prima dell’introduzione di protezioni come SBAT e le liste di esclusione MOK; altri contenevano difetti accumulati nel codice oppure nei binari di secondo livello che erano autorizzati a caricare. Microsoft li ha infine revocati con il ciclo mensile di aggiornamenti di giugno, dopo la segnalazione di ESET al CERT e alla società.
Alla base del sistema ci sono due database caricati dal Windows Boot Manager e dagli shim UEFI. Il database db contiene certificati di firma e hash Authenticode ammessi, mentre dbx raccoglie quelli non più considerati affidabili. Un componente può essere eseguito soltanto se autorizzato dal primo e non revocato dal secondo. Lo spazio di dbx, limitato a 32 KB, non consente però di elencare singolarmente l’elevato numero di componenti Linux caricati durante l’avvio.
Per gestire questa complessità Microsoft utilizza meccanismi basati sulle versioni, come SBAT e Secure Boot SVN. Ogni componente porta metadati firmati con un numero di generazione, incrementato quando viene distribuita una correzione; lo shim verifica a ogni avvio che la versione soddisfi la soglia minima prevista, potendo arrivare a rifiutare sé stesso. Nel caso degli 11 shim, tuttavia, la mancata revoca ha lasciato aperta per oltre un decennio una scorciatoia verso uno dei livelli più profondi della sicurezza dei dispositivi. Microsoft non ha ancora spiegato come si sia prodotto il ritardo.