Une vulnĂ©rabilitĂ© a Ă©tĂ© dĂ©couverte dans le pilote gĂ©rant le systĂšme de fichiers NTFS dans le chargeur GRUB2 (CVE-2023-4692), permettant l'exĂ©cution de code personnalisĂ© au niveau du chargeur lorsqu'il interagit avec une image de systĂšme de fichiers spĂ©cialement conçue. Cette vulnĂ©rabilitĂ© peut ĂȘtre exploitĂ©e pour contourner le mĂ©canisme de vĂ©rification du dĂ©marrage sĂ©curisĂ© UEFI.
La vulnĂ©rabilitĂ© est causĂ©e par une erreur dans le code d'analyse de l'attribut NTFS « $ATTRIBUTE_LIST » (grub-core/fs/ntfs.c), qui peut ĂȘtre utilisĂ© pour Ă©crire des informations contrĂŽlĂ©es par l'utilisateur dans une zone mĂ©moire en dehors du tampon allouĂ©. Lors du traitement d'une image NTFS soigneusement conçue, un dĂ©passement de tampon entraĂźne l'Ă©crasement d'une partie de la mĂ©moire de GRUB et, dans certaines conditions, endommage la mĂ©moire du firmware UEFI, permettant potentiellement l'exĂ©cution de code au niveau du chargeur ou du firmware.
De plus, une autre vulnérabilité a également été découverte dans le pilote NTFS de GRUB2 (CVE-2023-4693), permettant de lire le contenu d'une zone mémoire arbitraire lors de l'analyse de l'attribut « $DATA » dans une image NTFS spécialement formatée. Entre autres, cette vulnérabilité permet d'extraire des données confidentielles mises en cache en mémoire ou de déterminer les valeurs des variables EFI.
Les problĂšmes ont pour l'instant Ă©tĂ© rĂ©solus uniquement sous forme de patch. Le statut de la correction des vulnĂ©rabilitĂ©s dans les distributions peut ĂȘtre Ă©valuĂ© sur ces pages : Debian, Ubuntu, SUSE, RHEL, Fedora. Pour rĂ©soudre les problĂšmes dans GRUB2, il ne suffit pas de mettre Ă jour le paquet, il est Ă©galement nĂ©cessaire de gĂ©nĂ©rer de nouvelles signatures numĂ©riques internes et de mettre Ă jour les installateurs, les chargeurs, les paquets du noyau, les firmwares fwupd et la couche shim.
Dans la plupart des distributions Linux, un petit intermédiaire appelé shim, signé numériquement par Microsoft, est utilisé pour le démarrage sécurisé en mode UEFI. Cet intermédiaire vérifie GRUB2 avec son propre certificat, ce qui permet aux développeurs de distributions de ne pas avoir à certifier chaque mise à jour du noyau et de GRUB auprÚs de Microsoft. Les vulnérabilités de GRUB2 permettent d'exécuter son propre code aprÚs la vérification réussie de shim, mais avant le chargement du systÚme d'exploitation, en s'infiltrant dans la chaßne de confiance en mode Secure Boot actif et en prenant le contrÎle total du processus de démarrage, par exemple pour charger un autre systÚme d'exploitation, modifier des composants du systÚme d'exploitation et contourner la protection Lockdown.
Pour bloquer la vulnĂ©rabilitĂ© sans rĂ©voquer la signature numĂ©rique, les distributions peuvent utiliser le mĂ©canisme SBAT (UEFI Secure Boot Advanced Targeting), dont le support est mis en Ćuvre pour GRUB2, shim et fwupd dans la plupart des distributions Linux populaires. SBAT a Ă©tĂ© dĂ©veloppĂ© en collaboration avec Microsoft et implique l'ajout de mĂ©tadonnĂ©es supplĂ©mentaires aux fichiers exĂ©cutables des composants UEFI, incluant des informations sur le fabricant, le produit, le composant et la version. Ces mĂ©tadonnĂ©es sont signĂ©es numĂ©riquement et peuvent ĂȘtre incluses sĂ©parĂ©ment dans des listes de composants autorisĂ©s ou interdits pour le dĂ©marrage sĂ©curisĂ© UEFI.
SBAT permet de bloquer l'utilisation de la signature numérique pour des numéros de version spécifiques des composants sans avoir à révoquer les clés pour le Secure Boot. Le blocage des vulnérabilités via SBAT ne nécessite pas l'utilisation de la liste des certificats révoqués UEFI (dbx), mais se fait au niveau du remplacement de la clé interne pour la création des signatures et la mise à jour de GRUB2, shim et d'autres artefacts de démarrage fournis par les distributions. Avant l'implémentation de SBAT, la mise à jour de la liste des certificats révoqués (dbx, UEFI Revocation List) était une condition obligée pour le blocage complet d'une vulnérabilité, car un attaquant, quel que soit le systÚme d'exploitation utilisé, pouvait compromettre UEFI Secure Boot via le démarrage.
Source : opennet.ru
