Des informations sur 8 vulnérabilités dans le chargeur GRUB2 ont été révélées, permettant de contourner le mécanisme UEFI Secure Boot et de lancer du code non vérifié, par exemple, d'injecter un logiciel malveillant fonctionnant au niveau du chargeur ou du noyau.
Rappelons qu'une petite couche shim, signée numériquement par Microsoft, est utilisée pour le démarrage sécurisé vérifié dans le mode UEFI Secure Boot sur la plupart des distributions Linux. Cette couche vérifie GRUB2 avec son certificat, ce qui permet aux développeurs de distributions de ne pas signer chaque mise à jour du noyau et de GRUB chez Microsoft. Les vulnérabilités dans 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'insérant dans la chaßne de confiance en mode Secure Boot actif et en obtenant un contrÎle total sur le processus de démarrage ultérieur, y compris pour le chargement d'un autre systÚme d'exploitation, la modification des composants du systÚme d'exploitation et le contournement de la protection Lockdown.
Comme pour la vulnĂ©rabilitĂ© BootHole de l'annĂ©e derniĂšre, mettre Ă jour le chargeur ne suffit pas Ă bloquer le problĂšme, car un attaquant, quel que soit le systĂšme d'exploitation utilisĂ©, peut compromettre UEFI Secure Boot en utilisant un support de dĂ©marrage avec une ancienne version vulnĂ©rable de GRUB2, signĂ©e numĂ©riquement. Le problĂšme ne peut ĂȘtre rĂ©solu que par la mise Ă jour de la liste des certificats rĂ©voquĂ©s (dbx, UEFI Revocation List), mais dans ce cas, la possibilitĂ© d'utiliser d'anciens supports d'installation pour Linux sera perdue.
Sur les systĂšmes dont le firmware a mis Ă jour la liste des certificats rĂ©voquĂ©s, en mode UEFI Secure Boot, seules les versions mises Ă jour des distributions Linux pourront ĂȘtre chargĂ©es. Les distributions devront mettre Ă jour les installateurs, les chargeurs, les paquets du noyau, les firmwares fwupd et la couche shim, en gĂ©nĂ©rant pour eux de nouvelles signatures numĂ©riques. Les utilisateurs devront mettre Ă jour les images d'installation et d'autres supports de dĂ©marrage, ainsi que charger la liste des certificats rĂ©voquĂ©s (dbx) dans le firmware UEFI. Avant la mise Ă jour du dbx dans lâUEFI, le systĂšme reste vulnĂ©rable, quelle que soit lâinstallation des mises Ă jour dans le systĂšme d'exploitation. L'Ă©tat de l'Ă©limination des vulnĂ©rabilitĂ©s peut ĂȘtre Ă©valuĂ© sur ces pages : Ubuntu, SUSE, RHEL, Debian.
Pour rĂ©soudre les problĂšmes liĂ©s Ă la diffusion de certificats rĂ©voquĂ©s, il est prĂ©vu d'utiliser Ă l'avenir le mĂ©canisme SBAT (UEFI Secure Boot Advanced Targeting), dont la prise en charge a Ă©tĂ© mise en Ćuvre pour GRUB2, shim et fwupd, et qui sera utilisĂ© Ă partir des prochaines mises Ă jour au lieu de la fonctionnalitĂ© fournie par le paquet dbxtool. SBAT a Ă©tĂ© dĂ©veloppĂ© en collaboration avec Microsoft et implique l'ajout de nouvelles mĂ©tadonnĂ©es dans les 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 Ă©lectroniquement et peuvent ĂȘtre incluses dans des listes de composants autorisĂ©s ou interdits pour UEFI Secure Boot. Ainsi, SBAT permettra de manipuler les numĂ©ros de version des composants lors d'un retrait, sans la nĂ©cessitĂ© de rĂ©gĂ©nĂ©rer les clĂ©s pour Secure Boot et sans former de nouvelles signatures pour le noyau, shim, grub2 et fwupd.
Vulnérabilités identifiées :
- CVE-2020-14372 â grĂące Ă la commande acpi dans GRUB2, un utilisateur privilĂ©giĂ© du systĂšme local peut charger des tables ACPI modifiĂ©es en plaçant le SSDT (Secondary System Description Table) dans le rĂ©pertoire /boot/efi et en modifiant les paramĂštres dans grub.cfg. MalgrĂ© l'activation du mode Secure Boot, le SSDT proposĂ© sera exĂ©cutĂ© par le noyau et peut ĂȘtre utilisĂ© pour dĂ©sactiver la protection LockDown, qui bloque les voies de contournement de UEFI Secure Boot. En consĂ©quence, l'attaquant peut rĂ©ussir Ă charger son module noyau ou Ă exĂ©cuter du code via le mĂ©canisme kexec, sans vĂ©rification de la signature numĂ©rique.
- CVE-2020-25632 â accĂšs Ă une zone mĂ©moire dĂ©jĂ libĂ©rĂ©e (use-after-free) dans l'implĂ©mentation de la commande rmmod, se manifestant lors de la tentative de dĂ©chargement de tout module sans prendre en compte ses dĂ©pendances associĂ©es. La vulnĂ©rabilitĂ© permet la crĂ©ation d'un exploit qui peut conduire Ă l'exĂ©cution de code en contournant la vĂ©rification de Secure Boot.
- CVE-2020-25647 â Ă©criture hors limites dans la fonction grub_usb_device_initialize(), appelĂ©e lors de l'initialisation des pĂ©riphĂ©riques USB. Le problĂšme peut ĂȘtre exploitĂ© via la connexion d'un pĂ©riphĂ©rique USB spĂ©cialement prĂ©parĂ©, fournissant des paramĂštres dont la taille ne correspond pas Ă celle du tampon allouĂ© pour les structures USB. L'attaquant peut rĂ©ussir Ă exĂ©cuter du code non vĂ©rifiĂ© dans Secure Boot par le biais de manipulations avec les pĂ©riphĂ©riques USB.
- CVE-2020-27749 â dĂ©bordement de tampon dans la fonction grub_parser_split_cmdline(), pouvant ĂȘtre dĂ©clenchĂ© par la spĂ©cification de variables dans la ligne de commande GRUB2 dont la taille dĂ©passe 1 Ko. Cette vulnĂ©rabilitĂ© permet l'exĂ©cution de code en contournant le Secure Boot.
- CVE-2020-27779 â la commande cutmem permet Ă un attaquant de supprimer une plage d'adresses de la mĂ©moire pour contourner le Secure Boot.
- CVE-2021-3418 â des modifications dans shim_lock ont créé un vecteur supplĂ©mentaire pour exploiter la vulnĂ©rabilitĂ© de l'annĂ©e derniĂšre CVE-2020-15705. Lors de l'installation dans dbx d'un certificat utilisĂ© pour signer GRUB2, GRUB2 permettait de charger n'importe quel noyau directement sans vĂ©rification de la signature.
- CVE-2021-20225 â possibilitĂ© d'Ă©crire des donnĂ©es au-delĂ du tampon lors de l'exĂ©cution de commandes avec un nombre trĂšs Ă©levĂ© d'options.
- CVE-2021-20233 â possibilitĂ© d'Ă©crire des donnĂ©es en dehors du tampon en raison d'un calcul incorrect de la taille du tampon lors de l'utilisation de guillemets. Lors du calcul de la taille, il Ă©tait supposĂ© que trois caractĂšres Ă©taient nĂ©cessaires pour Ă©chapper une apostrophe, alors qu'en rĂ©alitĂ© il en fallait quatre.
Source : opennet.ru
