Nel driver che gestisce il file system NTFS nel bootloader GRUB2 è stata individuata una vulnerabilità (CVE-2023-4692) che consente di eseguire codice personalizzato a livello di bootloader quando si accede a un'immagine di file system appositamente formattata. Questa vulnerabilità può essere sfruttata per eludere il meccanismo di avvio verificato UEFI Secure Boot.
La vulnerabilità è causata da un errore nel codice di parsing dell'attributo NTFS "$ATTRIBUTE_LIST" (grub-core/fs/ntfs.c), che può essere utilizzato per scrivere informazioni controllate dall'utente in un'area di memoria al di fuori del buffer allocato. Durante l'elaborazione di un'immagine NTFS appositamente formattata, il buffer overflow porta a sovrascrivere una parte della memoria di GRUB e, in determinate condizioni, danneggiare l'area di memoria del firmware UEFI, consentendo potenzialmente l'esecuzione di codice personalizzato a livello di bootloader o firmware.
Inoltre, nel driver NTFS di GRUB2 è stata identificata un'altra vulnerabilità (CVE-2023-4693) che consente la lettura del contenuto di un'area di memoria arbitraria durante il parsing dell'attributo "$DATA" in un'immagine NTFS appositamente formattata. Tra l'altro, questa vulnerabilità consente di estrarre dati riservati memorizzati nella memoria o determinare i valori delle variabili EFI.
I problemi sono stati finora risolti solo tramite una patch. È possibile valutare lo stato della correzione delle vulnerabilità nelle distribuzioni su queste pagine: Debian, Ubuntu, SUSE, RHEL, Fedora. Per risolvere i problemi in GRUB2, non è sufficiente aggiornare semplicemente il pacchetto; è necessario anche generare nuove firme digitali interne e aggiornare gli installatori, i bootloader, i pacchetti del kernel, i firmware fwupd e il layer shim.
Nella maggior parte delle distribuzioni Linux, per il caricamento verificato in modalità UEFI Secure Boot viene utilizzato un piccolo strato shim, certificato digitalmente da Microsoft. Questo strato verifica GRUB2 con un proprio certificato, consentendo agli sviluppatori delle distribuzioni di non dover certificare ogni aggiornamento del kernel e di GRUB presso Microsoft. Le vulnerabilità in GRUB2 consentono l'esecuzione di codice personalizzato dopo la verifica riuscita dello shim, ma prima del caricamento del sistema operativo, infiltrandosi nella catena di fiducia in modalità Secure Boot attiva e assumendo il pieno controllo del processo di avvio, ad esempio per avviare un altro sistema operativo, modificare i componenti del sistema operativo e bypassare la protezione 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 delle firme digitali 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 dell'elenco dei certificati revocati UEFI (dbx) ed è effettuato a livello di sostituzione della chiave interna per la creazione di firme e nell'aggiornamento di GRUB2, shim e altri artefatti di avvio forniti dalle distribuzioni. Prima dell'implementazione di SBAT, l'aggiornamento dell'elenco dei certificati revocati (dbx, UEFI Revocation List) era una condizione necessaria per il blocco completo della vulnerabilità, poiché un attaccante, indipendentemente dal sistema operativo utilizzato, poteva compromettere UEFI Secure Boot utilizzando il bootloader.
Fonte: opennet.ru
