Nel caricatore GRUB2 sono state corrette 7 vulnerabilità che consentono di bypassare il meccanismo UEFI Secure Boot e avviare codice non verificato, come ad esempio l'inserimento di malware che opera a livello di bootloader o kernel. Si segnala inoltre una vulnerabilità nello strato shim, che consente anch'essa di bypassare UEFI Secure Boot. Il gruppo di vulnerabilità è stato soprannominato Boothole 3, in analogia a problemi simili già identificati nel bootloader.
Per risolvere i problemi in GRUB2 e shim, le distribuzioni potranno utilizzare il meccanismo SBAT (UEFI Secure Boot Advanced Targeting), il cui supporto è stato implementato per GRUB2, shim e fwupd. SBAT è stato sviluppato congiuntamente con Microsoft e implica l'aggiunta di metadati esecutivi ai file dei componenti UEFI, inclusi informazioni sul produttore, prodotto, componente e versione. I metadati specificati sono firmati digitalmente e possono essere inclusi separatamente nelle liste di componenti consentiti o vietati per UEFI Secure Boot.
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 risolvere i problemi nel bootloader, le distribuzioni dovranno generare nuove firme digitali interne e aggiornare installatori, bootloader, pacchetti kernel, firmware fwupd e lo strato shim. Prima dell'implementazione di SBAT, l'aggiornamento della lista dei certificati revocati (dbx, UEFI Revocation List) era una condizione necessaria per il blocco completo della vulnerabilità, poiché un attaccante, indipendentemente dal sistema operativo in uso, poteva compromettere UEFI Secure Boot utilizzando un supporto di avvio con una vecchia versione vulnerabile di GRUB2, firmata digitalmente.
Invece di revocare le firme, SBAT consente di bloccarne l'uso per versioni specifiche dei componenti senza la 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), ma è effettuato a livello di sostituzione della chiave interna per la generazione delle firme e l'aggiornamento di GRUB2, shim e altri artefatti di avvio forniti dalle distribuzioni. Attualmente, il supporto per SBAT è già stato aggiunto alla maggior parte delle distribuzioni Linux più popolari.
Vulnerabilità identificate:
- CVE-2021-3696, CVE-2021-3695 – overflow del buffer nella heap durante l'elaborazione di immagini PNG formattate in modo specifico, che in teoria potrebbe essere utilizzato per eseguire codice malevolo e bypassare UEFI Secure Boot. Si osserva che il problema è difficile da sfruttare, poiché per creare un exploit funzionante è necessario considerare un gran numero di fattori e avere conoscenze sulla disposizione della memoria.
- CVE-2021-3697 – overflow attraverso il limite inferiore del buffer (buffer underflow) nel codice di elaborazione delle immagini JPEG. Sfruttare il problema richiede informazione sulla disposizione della memoria ed è di complessità simile al problema con le immagini PNG (CVSS 7.5).
- CVE-2022-28733 – overflow intero nella funzione grub_net_recv_ip4_packets(), che consente di influenzare il parametro rsm->total_len tramite l'invio di un pacchetto IP formattato in modo specifico. Il problema è stato segnalato come il più pericoloso tra le vulnerabilità presentate (CVSS 8.1). In caso di sfruttamento riuscito, la vulnerabilità consente di scrivere dati al di fuori del buffer tramite l'allocazione di una memoria di dimensioni notevolmente inferiori.
- CVE-2022-28734 – overflow di un byte del buffer durante l'elaborazione di intestazioni HTTP separate. Questo problema potrebbe portare a danneggiare i metadati di GRUB2 (scrittura di un byte nullo subito dopo la fine del buffer) durante l'analisi di richieste HTTP appositamente formattate.
- CVE-2022-28735 – problema nel verificador shim_lock, che consente di caricare file non relativi al kernel. La vulnerabilità può essere utilizzata per caricare moduli kernel non firmati digitalmente o codice non verificato in modalità UEFI Secure Boot.
- CVE-2022-28736 – accesso a un'area di memoria già liberata nella funzione grub_cmd_chainloader() tramite il riavvio del comando chainloader, utilizzato per caricare sistemi operativi non supportati in GRUB2. Lo sfruttamento potrebbe portare all'esecuzione di codice malevolo, se un attaccante riesce a determinare le caratteristiche della distribuzione della memoria in GRUB2.
- CVE-2022-28737 – overflow del buffer nello strato shim, che si verifica nella funzione handle_image() durante il caricamento ed esecuzione di immagini EFI formattate in modo specifico.
Fonte: opennet.ru
