Des chercheurs de la société ESET ont découvert un nouveau bootkit « Bootkitty », installé après une compromission du système à la place du chargeur GRUB et utilisé pour insérer des composants malveillants dans le noyau Linux, permettant ainsi à l'attaquant de contrôler secrètement le système et d'exécuter ses actions. Il est affirmé que c'est le premier bootkit UEFI ciblant les systèmes Linux.
Bootkitty est placé dans le fichier grubx64.efi dans la partition système EFI (EFI system partition, /boot/efi/EFI/ubuntu) à la place du chargeur GRUB standard. Après activation par le firmware UEFI, le bootkit charge en mémoire le véritable chargeur GRUB2 et modifie le code GRUB2 en mémoire, désactivant la vérification de l'intégrité des composants qui seront ensuite chargés, et ajoute un gestionnaire appelé après le déballage de l'image du noyau Linux en mémoire. Ce gestionnaire modifie les fonctions du noyau chargées en mémoire (désactivant la vérification des modules par signature numérique) et change la ligne de lancement du processus d'initialisation de « /init » à « LD_PRELOAD=/opt/injector.so /init).
La bibliothèque injector.so intercepte certaines opérations SELinux et la fonction init_module, qui est ensuite utilisée pour charger le module du noyau /opt/dropper.ko. Le module du noyau dropper.ko crée et exécute le fichier exécutable /opt/observer, puis se cache dans la liste des modules du noyau et expose des gestionnaires d'appels systèmes, tels que getdents et tcp4_seq_show, pour dissimuler le fichier /opt/observer et un certain trafic réseau. Le fichier exécutable /opt/observer charge le module du noyau /opt/rootkit_loader.ko, qui est le chargeur du rootkit /opt/rootkit.

Pour installer le bootkit, un accès privilégié au système est requis et de tels types de logiciels malveillants sont généralement utilisés par les attaquants après une compromission réussie du système afin de consolider leur présence future et de masquer leurs activités malveillantes. La bibliothèque injector.so et les modules du noyau malveillants sont placés dans l'image de disque RAM initiale ou le système de fichiers par l'attaquant. Le chargeur grubx64.efi est placé dans la partition des fichiers pour UEFI.
Dans la variante Bootkitty, qui a été examinée par les chercheurs, la modification des fonctions dans la mémoire du noyau était effectuée selon des décalages prédéfinis sans vérifier la validité de ces décalages pour la version du noyau chargée. Les décalages utilisés dans Bootkitty ne s'appliquaient qu'à certaines versions du noyau et de GRUB, livrées dans des versions spécifiques d'Ubuntu, tandis que dans d'autres systèmes, ils entraînaient un échec au démarrage. Pour vérifier le chargeur Bootkitty (grubx64.efi), un certificat auto-signé était utilisé, ce qui empêchait l'application du bootkit sur les systèmes avec le mode UEFI Secure Boot activé sans avoir ajouté le certificat de l'attaquant à la liste des certificats de confiance dans l'UEFI. Ces caractéristiques ont conduit les chercheurs à penser que Bootkitty n'était qu'un prototype de bootkit, n'étant pas encore utilisé pour des attaques réelles.
Après avoir examiné les informations publiées par ESET, les chercheurs de Binarly REsearch ont remarqué parmi les artefacts liés à Bootkitty des images BMP utilisées pour exploiter la vulnérabilité LogoFAIL, permettant d'exécuter du code au niveau du firmware UEFI et de contourner le mécanisme UEFI Secure Boot. Dans le contexte de Bootkitty, l'exploitation de la vulnérabilité LogoFAIL était utilisée pour ajouter un certificat auto-signé de l'attaquant à la liste des certificats approuvés de l'UEFI, certifiant ainsi le chargeur de bootkit grubx64.efi, ce qui permettait de démarrer le bootkit sur des systèmes avec un UEFI Secure Boot activé sans avoir à ajouter le certificat manuellement.
L'attaque se fait en plaçant dans la partition ESP (EFI System Partition) une image spécialement conçue au format BMP pour qu'elle soit affichée par le firmware UEFI en tant que logo du fabricant. En raison de l'utilisation de bibliothèques vulnérables dans les firmwares UEFI pour le traitement des images, le traitement de cette image spécialement conçue peut entraîner un débordement de tampon et l'exécution de code avec les privilèges du firmware UEFI. La vulnérabilité LogoFAIL a été découverte il y a un an et touchait les firmwares UEFI utilisés, entre autres, sur les ordinateurs portables Acer, HP, Fujitsu et Lenovo. Dans les nouvelles versions des firmwares UEFI, le problème a été corrigé, mais de nombreux dispositifs en circulation continuent d'utiliser des versions de firmwares vulnérables.

Source : opennet.ru
