Una vulnerabilità critica nel bootloader Shim Linux consente agli aggressori di eseguire codice e prendere il controllo di un sistema di destinazione. Ciò avviene prima che il kernel venga caricato, aggirando così i meccanismi di sicurezza esistenti. Shim è un piccolo bootloader open source gestito da Red Hat. È progettato per facilitare il processo di avvio sicuro sui computer che utilizzano Unified Extensible Firmware Interface (UEFI). Tale strumento è firmato con una chiave Microsoft accettata per impostazione predefinita sulla maggior parte delle schede madri UEFI. Inoltre, utilizzata per verificare la fase successiva del processo di avvio, in genere caricando il bootloader GRUB2. Shim è stato creato per necessità per consentire a progetti open source come le distribuzioni Linux di beneficiare dei vantaggi di Secure Boot. Ad esempio, è possibile prevenire l'esecuzione di codice non autorizzato o dannoso durante l'avvio, pur mantenendo il controllo sull'hardware.
La nuova falla Shim, identificata come CVE-2023-40547, è stata scoperta dal ricercatore di sicurezza di Microsoft Bill Demirkapi, che l'ha rivelata per la prima volta il 24 gennaio 2024. Il bug risiede nel sorgente httpboot.c per Shim, che viene utilizzato per avviare un'immagine di rete su HTTP. Come si legge nel commit per correggere il bug in httpboot.c.: “Quando si recuperano file tramite HTTP o protocolli correlati, shim tenta di allocare un buffer per archiviare i dati ricevuti. Sfortunatamente, questo significa ottenere la dimensione da un'intestazione HTTP, che può essere manipolata per specificare una dimensione inferiore a quella dei dati ricevuti. In questo caso, il codice utilizza accidentalmente l'intestazione per l'allocazione ma i metadati del protocollo per copiarlo dal buffer rx, risultando in una scrittura fuori dai limiti”.
found a critical bug that exists in every Linux boot loader signed in the past decade 🥰 https://t.co/kjATsR4uvJ https://t.co/JrECpgGmWD pic.twitter.com/oKEl7PTUSp
— Bill Demirkapi (@BillDemirkapi) January 24, 2024
Bootloader Shim: le tre principali modalità di sfruttamento del bug
La società di sicurezza Eclypsium ha recentemente pubblicato un report, con maggiori dettagli sulla falla. La vulnerabilità risiede nell'analisi delle risposte HTTP da parte di Shim. Nel suo report, la società ha evidenziato tre metodi principali di sfruttamento della vulnerabilità. In primis un utente malintenzionato remoto può eseguire un attacco man-in-the-middle (MiTM), intercettando il traffico HTTP per l'avvio HTTP, potenzialmente da qualsiasi posizione di rete tra la vittima e il server. Inoltre, un hacker locale con privilegi sufficienti può modificare le variabili EFI o la partizione EFI utilizzando una USB Linux live per alterare l'ordine di avvio e caricare uno shim compromesso, eseguendo codice privilegiato senza disabilitare Secure Boot. Infine, Un hacker sulla stessa rete può utilizzare PXE per caricare un bootloader shim compromesso, sfruttando la vulnerabilità.
RedHat ha già rilasciato un codice per correggere CVE-2023-40547. Tuttavia, le distribuzioni Linux che supportano Secure Boot e utilizzano Shim devono pubblicare le proprie patch. Distribuzioni come Red Hat, Debian, Ubuntu e SUSE hanno rilasciato avvisi con informazioni sulla vulnerabilità. Gli utenti Linux devono quindi aggiornare Shim alla versione v.15.8, che offre una correzione per CVE-2023-40547 e altre cinque importanti vulnerabilità. Eclypsium spiega che gli utenti Linux devono anche aggiornare l'UEFI Secure Boot DBX (elenco di revoche). Ciò include gli hash del software Shim vulnerabile e firmare la versione patchata con una chiave Microsoft valida. Per fare ciò, bisogna prima eseguire l'aggiornamento a Shim 15.8. In seguito, si potrà quindi applicare l'aggiornamento DBX utilizzando il comando 'fwupdmgr update' (è necessario fwupd). CVE-2023-40547 non è un bug da ignorare, poiché l'esecuzione del codice prima dell'avvio del sistema operativo è una delle forme più potenti e nascoste di compromissione del sistema.