I ricercatori dell'azienda ESET hanno scoperto un nuovo bootkit chiamato «Bootkitty», installato dopo l'infiltrazione del sistema al posto del bootloader GRUB e utilizzato per inserire componenti dannosi nel kernel Linux, i quali consentono all'attaccante di controllare segretamente il sistema e di eseguire le sue azioni. Si sostiene che sia il primo bootkit UEFI mirato a colpire i sistemi Linux.
Bootkitty è collocato nel file grubx64.efi nella partizione di sistema EFI (EFI system partition, /boot/efi/EFI/ubuntu) al posto del bootloader GRUB. Dopo l'attivazione da parte del firmware UEFI, il bootkit carica in memoria il vero bootloader GRUB2 e apporta modifiche al codice di GRUB2 caricato in memoria, disabilitando il controllo di integrità dei componenti che verranno successivamente caricati, e aggiunge un gestore che viene attivato dopo il decompressione dell'immagine del kernel Linux in memoria. Tale gestore apporta modifiche alle funzioni del kernel caricate in memoria (disabilitando il controllo 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 di 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 e avvia un file eseguibile /opt/observer, quindi si nasconde nell'elenco dei moduli del kernel e stabilisce gestori per chiamate di sistema come getdents e tcp4_seq_show, per nascondere il file /opt/observer e un certo traffico di rete. Il file eseguibile /opt/observer carica il modulo del kernel /opt/rootkit_loader.ko, che funge da loader per il rootkit /opt/rootkit.

Per installare il bootkit è necessario un accesso privilegiato al sistema e solitamente questo tipo di malware viene utilizzato dagli attaccanti dopo un'infiltrazione o compromissione riuscita del sistema per consolidare la propria presenza e nascondere le attività dannose in corso. La libreria injector.so e i moduli dannosi del kernel vengono inseriti nell'immagine del disco RAM iniziale o nel filesystem dall'attaccante. Il bootloader grubx64.efi è collocato nella partizione dei file per UEFI.
Nella variante Bootkitty, giunta nelle mani dei ricercatori, la modifica delle funzioni nella memoria del kernel veniva effettuata secondo spostamenti predeterminati senza controllare la correttezza di questi spostamenti per la versione del kernel caricata. Gli spostamenti utilizzati in Bootkitty erano applicabili solo a versioni specifiche del kernel e di GRUB fornite in versioni particolari di Ubuntu, mentre in altri sistemi provocavano un fallimento all'avvio. Per la verifica del bootloader Bootkitty (grubx64.efi) veniva utilizzato un certificato autofirmato, il che impediva l'applicazione del bootkit su sistemi con la modalità UEFI Secure Boot attivata senza installare il certificato dell'attaccante nella lista dei certificati attendibili in UEFI. Queste peculiarità hanno indotto i ricercatori a pensare che Bootkitty sia solo un prototipo di bootkit non ancora utilizzato per attacchi reali.
Esaminando le informazioni pubblicate da ESET, i ricercatori dell'azienda Binarly REsearch hanno notato, tra gli artefatti legati a Bootkitty, immagini BMP utilizzate per sfruttare la vulnerabilità LogoFAIL, che consente di eseguire codice a livello di firmware UEFI e di eludere il meccanismo UEFI Secure Boot. Nel contesto di Bootkitty, lo sfruttamento della vulnerabilità LogoFAIL è stato utilizzato per aggiungere alla lista dei certificati approvati di UEFI un certificato autofirmato dell'attaccante, che firma il bootloader del bootkit grubx64.efi, permettendo di avviare il bootkit su sistemi con UEFI Secure Boot attivo senza aggiungere manualmente il certificato.
L'attacco avviene attraverso il posizionamento in una sezione ESP (EFI System Partition) di un'immagine formattata in BMP, affinché venga visualizzata dal firmware UEFI come logo del produttore. A causa dell'uso in firmware UEFI di librerie vulnerabili per la gestione delle immagini, l'elaborazione di un'immagine formattata in modo specifico può portare a un overflow del buffer e all'esecuzione di codice con privilegi di firmware UEFI. La vulnerabilità LogoFAIL è stata scoperta un anno fa e ha interessato i firmware UEFI utilizzati, tra l'altro, su laptop Acer, HP, Fujitsu e Lenovo. Nelle nuove versioni dei firmware UEFI, il problema è stato risolto, ma molti dispositivi ancora in uso continuano a funzionare con versioni vulnerabili dei firmware.

Fonte: opennet.ru
