Sono emerse informazioni su due vulnerabilità nel bootloader GRUB2 che possono portare all'esecuzione di codice utilizzando font appositamente progettati e nell'elaborazione di specifiche sequenze Unicode. Le vulnerabilità possono essere sfruttate per eludere il meccanismo di avvio verificato UEFI Secure Boot.
Vulnerabilità identificate:
- CVE-2022-2601 — overflow del buffer nella funzione grub_font_construct_glyph() durante l'elaborazione di font specialmente progettati nel formato pf2, a causa di un calcolo errato del parametro max_glyph_size e dell'allocazione di una zona di memoria decisamente inferiore a quella necessaria per contenere i glifi.
- CVE-2022-3775 — scrittura al di fuori dell'area di memoria allocata durante il rendering di sequenze Unicode con un font opportunamente concepito. Il problema è presente nel codice di gestione dei font ed è causato dalla mancanza di adeguati controlli di conformità tra la larghezza e l'altezza del glifo e le dimensioni della bitmap esistente. Un attaccante può scegliere un input in modo tale da provocare la scrittura di dati oltre il limite del buffer allocato. Si segnala che, nonostante la complessità di sfruttare la vulnerabilità, l'esecuzione di codice malevolo non è da escludere.
La correzione è stata pubblicata sotto forma di patch. È possibile valutare lo stato di risoluzione delle vulnerabilità nei pacchetti distributivi sulle seguenti pagine: Ubuntu, SUSE, RHEL, Fedora, Debian. Per risolvere i problemi in GRUB2 non è sufficiente aggiornare il pacchetto, è necessario anche generare nuove firme digitali interne e aggiornare gli installer, i bootloader, i pacchetti del kernel, i firmware fwupd e la layer shim.
Nella maggior parte delle distribuzioni Linux, per la verifica dell'avvio in modalità UEFI Secure Boot, viene utilizzato un piccolo layer shim, firmato digitalmente da Microsoft. Questo layer verifica GRUB2 con un proprio certificato, consentendo agli sviluppatori delle distribuzioni di non dover firmare ogni aggiornamento del kernel e di GRUB con Microsoft. Vulnerabilità in GRUB2 possono consentire l'esecuzione di codice non autorizzato dopo la verifica riuscita dello shim, ma prima dell'avvio del sistema operativo, infiltrandosi nella catena di fiducia con Secure Boot attivo e ottenendo il controllo completo del processo di avvio, inclusi l'avvio di un altro sistema operativo, la modifica dei componenti del sistema e il bypass delle protezioni Lockdown.
Per bloccare la vulnerabilità senza revocare la firma digitale, le distribuzioni possono utilizzare il meccanismo SBAT (UEFI Secure Boot Advanced Targeting), il cui supporto è implementato per GRUB2, shim e fwupd nella maggior parte delle distribuzioni Linux popolari. SBAT è stato sviluppato congiuntamente con Microsoft e prevede l'aggiunta, nei file eseguibili dei componenti UEFI, di metadati aggiuntivi, che includono informazioni sul produttore, prodotto, componente e versione. I metadati indicati vengono firmati digitalmente e possono essere inclusi separatamente nelle liste di componenti autorizzati o vietati per UEFI Secure Boot.
SBAT consente di bloccare l'uso della firma digitale per singoli numeri di versione dei componenti senza necessità di revocare le chiavi per Secure Boot. Il blocco delle vulnerabilità tramite SBAT non richiede l'uso della lista dei certificati revocati UEFI (dbx), bensì avviene a livello di sostituzione della chiave interna per la generazione di firme e l'aggiornamento di GRUB2, shim e altri artefatti di avvio forniti nei sistemi operativi. Prima dell'implementazione di SBAT, l'aggiornamento della lista dei certificati revocati (dbx, UEFI Revocation List) era una condizione obbligatoria per un blocco completo delle vulnerabilità, dato che un attaccante, indipendentemente dal sistema operativo utilizzato, poteva compromettere UEFI Secure Boot usando un supporto di avvio con una vecchia versione vulnerabile di GRUB2, firmata digitalmente.
Fonte: opennet.ru
