I ricercatori di ESET hanno scoperto un nuovo bootkit chiamato 'Bootkitty', installato dopo un attacco informatico al posto del bootloader GRUB e utilizzato per iniettare componenti dannosi nel kernel Linux, che permettono all'attaccante di controllare silenziosamente il sistema e di eseguire le proprie azioni. Si afferma che sia il primo bootkit UEFI mirato a compromettere i sistemi Linux.
Bootkitty è memorizzato nel file grubx64.efi nella partizione di sistema EFI (EFI system partition, /boot/efi/EFI/ubuntu) al posto del bootloader GRUB standard. Dopo essere attivato dal firmware UEFI, il bootkit carica in memoria il vero bootloader GRUB2 e modifica il codice GRUB2 in memoria, disabilitando la verifica dell'integrità dei componenti caricati successivamente, oltre ad aggiungere un gestore chiamato dopo il caricamento dell'immagine del kernel Linux in memoria. Questo gestore apporta modifiche alle funzioni del kernel caricate in memoria (disattivando la verifica dei moduli tramite firma digitale) e modifica la stringa di avvio del processo di inizializzazione da '/init' a 'LD_PRELOAD=/opt/injector.so /init'.
La libreria injector.so intercetta alcune operazioni SELinux e la funzione init_module, che viene poi utilizzata per caricare il modulo del kernel /opt/dropper.ko. Il modulo del kernel dropper.ko crea ed esegue il file eseguibile /opt/observer, quindi si nasconde nell'elenco dei moduli del kernel e espone gestori di chiamate di sistema, come getdents e tcp4_seq_show, per nascondere il file /opt/observer e determinati traffico di rete. Il file eseguibile /opt/observer carica il modulo del kernel /opt/rootkit_loader.ko, che è il caricatore del rootkit /opt/rootkit.

Per installare un bootkit è necessario l'accesso privilegiato al sistema e di solito tale tipo di malware viene utilizzato dagli aggressori dopo un attacco riuscito o la compromissione del sistema per garantire la propria presenza e nascondere l'attività dannosa in corso. La libreria injector.so e i moduli del kernel maligni vengono inseriti nell'immagine del disco RAM iniziale o nel file system dell'attaccante. Il caricatore grubx64.efi viene posizionato nella partizione dei file per UEFI.
Nella variante Bootkitty, che è stata analizzata dagli studiosi, la modifica delle funzioni in memoria del kernel avveniva a spostamenti predefiniti senza verificarne la correttezza rispetto alla versione del kernel caricata. Gli spostamenti utilizzati in Bootkitty erano applicabili solo alle versioni del kernel e di GRUB fornite in determinate edizioni di Ubuntu; in altri sistemi, provocavano un errore all'avvio. Per la verifica del bootloader Bootkitty (grubx64.efi) veniva utilizzato un certificato autofirmato, il che impediva l'applicazione del rootkit su sistemi con la modalità UEFI Secure Boot attivata, a meno che il certificato dell'attaccante non fosse aggiunto all'elenco dei certificati attendibili in UEFI. Queste particolarità hanno fatto pensare agli studiosi che Bootkitty sia solo un prototipo di rootkit, non ancora utilizzato per attacchi reali.
Analizzando le informazioni pubblicate da ESET, i ricercatori dell'azienda Binarly Research hanno notato tra gli artefatti associati a Bootkitty immagini BMP utilizzate per sfruttare la vulnerabilità LogoFAIL, che consente di eseguire codice a livello di firmware UEFI e bypassare il meccanismo UEFI Secure Boot. Nel contesto di Bootkitty, lo sfruttamento della vulnerabilità LogoFAIL è stato usato per aggiungere alla lista dei certificati approvati UEFI un certificato autofirmato dell'attaccante, con cui è stato firmato il bootloader del bootkit grubx64.efi, permettendo così di avviare il bootkit su sistemi con UEFI Secure Boot attivo senza aggiungere manualmente il certificato.
L'attacco avviene tramite la creazione di un'immagine formattata in BMP nel partizionamento ESP (EFI System Partition), la quale viene visualizzata dal firmware UEFI come logo del produttore. A causa dell'uso di librerie vulnerabili nelle versioni UEFI per la manipolazione delle immagini, l'elaborazione di un'immagine appositamente formattata può portare a un buffer overflow e all'esecuzione di codice con privilegi di firmware UEFI. La vulnerabilità LogoFAIL è stata identificata un anno fa e interessava i firmware UEFI, tra cui quelli utilizzati su laptop Acer, HP, Fujitsu e Lenovo. Nei nuovi aggiornamenti dei firmware UEFI, il problema è stato risolto, ma molti dispositivi ancora in uso continuano a utilizzare versioni vulnerabili dei firmware.

Fonte: opennet.ru
