Nel bootloader GRUB2 sono state corrette 7 vulnerabilità che permettono di bypassare il meccanismo UEFI Secure Boot e avviare codice non verificato, ad esempio per infiltrare malware che opera a livello di bootloader o kernel. Viene inoltre segnalata una vulnerabilità nel layer shim, che consente anch'essa di bypassare UEFI Secure Boot. Il gruppo di vulnerabilità ha ricevuto il nome in codice Boothole 3, analogamente a problemi simili precedentemente 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 è implementato per GRUB2, shim e fwupd. SBAT è stato sviluppato in collaborazione con Microsoft e prevede l'aggiunta di metadati ai file eseguibili dei componenti UEFI, che includono informazioni sul produttore, il prodotto, il componente e la versione. Questi metadati sono firmati digitalmente e possono essere inclusi separatamente negli elenchi di componenti autorizzati o vietati per UEFI Secure Boot.
Nella maggior parte delle distribuzioni Linux, per l'avvio verificato in modalità UEFI Secure Boot viene utilizzato un piccolo layer shim, firmato digitalmente da Microsoft. Questo layer verifica GRUB2 con il proprio certificato, consentendo agli sviluppatori delle distribuzioni di non dover firmare ogni aggiornamento del kernel e di GRUB in Microsoft. Le vulnerabilità in GRUB2 consentono di eseguire codice proprio dopo una verifica riuscita di shim, ma prima dell'avvio del sistema operativo, infiltrandosi nella catena di fiducia in modalità Secure Boot attiva e ottenendo il pieno controllo sul processo di avvio, inclusa l'avvio di un altro sistema operativo, la modifica dei componenti del sistema operativo e il bypass delle protezioni Lockdown.
Per risolvere i problemi nel bootloader, le distribuzioni dovranno formare nuove firme digitali interne e aggiornare gli installer, i bootloader, i pacchetti del kernel, i firmware fwupd e il layer shim. Prima dell'implementazione di SBAT, l'aggiornamento dell'elenco dei certificati revocati (dbx, UEFI Revocation List) era una condizione necessaria per bloccare completamente la vulnerabilità, poiché un attaccante, indipendentemente dal sistema operativo utilizzato, poteva compromettere UEFI Secure Boot utilizzando un supporto di avvio con una vecchia versione vulnerabile di GRUB2, firmata digitalmente.
Invece di revocare, la firma SBAT consente di bloccare il suo utilizzo per numeri di versione specifici dei componenti senza la necessità di revocare le chiavi per il Secure Boot. Il blocco delle vulnerabilità tramite SBAT non richiede l'uso dell'elenco dei certificati revocati UEFI (dbx) ed è effettuato a livello di sostituzione della chiave interna per la creazione di firme e aggiornamenti di GRUB2, shim e altri artefatti di avvio forniti dai distributori. Attualmente, il supporto per SBAT è già stato aggiunto nella maggior parte delle distribuzioni Linux popolari.
Vulnerabilità identificate:
- CVE-2021-3696, CVE-2021-3695 - overflow del buffer nella heap durante l'elaborazione di immagini PNG appositamente formattate, che potrebbe teoricamente essere utilizzato per eseguire codice dell'attaccante e bypassare il UEFI Secure Boot. Va notato che il problema è difficile da sfruttare, poiché per creare un exploit funzionante è necessaria la conoscenza di numerosi fattori e informazioni sulla disposizione della memoria.
- CVE-2021-3697 - overflow da buffer sotto (buffer underflow) nel codice di elaborazione delle immagini JPEG. Sfruttare il problema richiede di ottenere informazioni sulla disposizione della memoria ed è di complessità simile al problema con le immagini PNG (CVSS 7.5).
- CVE-2022-28733 - overflow aritmetico in funzione grub_net_recv_ip4_packets(), che consente di influenzare il parametro rsm->total_len inviando un pacchetto IP appositamente formattato. Il problema è stato segnalato come il più pericoloso tra le vulnerabilità presentate (CVSS 8.1). Se sfruttato con successo, la vulnerabilità consente di scrivere dati oltre il limite del buffer mediante l'allocazione di memoria inadeguata.
- CVE-2022-28734 - overflow di un byte del buffer nell'elaborazione di intestazioni HTTP separate. Il problema può portare a danni ai 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 verificatore shim_lock, che consente di caricare file non legati al kernel. La vulnerabilità può essere utilizzata per caricare moduli del kernel 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 la ri-esecuzione del comando chainloader, utilizzato per caricare sistemi operativi non supportati in GRUB2. L'esp exploitation può portare all'esecuzione di codice malevolo, se un attaccante riesce a determinare le peculiarità della distribuzione della memoria in GRUB2.
- CVE-2022-28737 — overflow del buffer nel layer shim, che si verifica nella funzione handle_image() durante il caricamento e l'esecuzione di immagini EFI appositamente formattate.
Fonte: opennet.ru
