Menu Fermer

Qu’est-ce que le Secure boot la protection des PC UEFI et comment ça marche ?

Cette entrée fait partie d'une série de 12 sur 17 dans la série UEFI-Legacy-GPT-MBR-dossier

Dans les années 2010, les bootkits (boot rootkit) sont des menaces informatiques dangereuses.
Ce sont des logiciels malveillants capables de corrompre le démarrage du système d’exploitation pour se charger très tôt et très bas.
Ils peuvent donc prendre la main bien avant les antivirus pour contrôler entièrement le système.
Ainsi, les attaquants gagnent en persistance sur l’appareil.

Pour se protéger des bootkits, l’UEFI apporte en autre le mécanisme de Secure Boot (démarrage sécurisé).
Souvent mal compris par les internautes qui cherchent à désactiver le Secure Boot, voici un article autour de cette fonction pourtant très importante.

Cet article vous explique comment fonctionne et à quoi le Secure Boot sur les PC UEFI.
Comment ils tentent de protéger et limiter la portée des bootkits.

Secure boot : la protection des PC UEFI contre les bootkits : comment ça marche ?

Qu’est-ce que le Secure boot la protection des PC UEFI et comment ça marche ?

Qu’est-ce que l’UEFI ?

Avant de commencer, il faut rapidement parler de l’UEFI.
Avant ~2013, les PC fonctionnaient avec un BIOS (Basic Input Output System) dit hérité ou Legacy.
Ce dernier est très vieux et a peu évolué.
Par exemple, la souris ne fonctionnait pas sur l’interface du BIOS hérité/Legacy.

En 2010, les rootkits qui s’attaquent aux MBR on vu le jour sous le nom de bootkit.
Puis par la suite on a aussi vu des ransomwares qui remplacent le bootloader pour afficher le message de rançon et bloquer le démarrage dessus.
On pare alors de “MBRLock”, pire encore, certains chiffraient même le disque ‘DiskCryptor’.
Quelques noms : APT41 Rockboot, LockBit, FIN1 Nemesis, MBR-ONI, Petya/NotPetya, et Rovnix.

Vers 2006 et plus massivement à partir de 2013, on assiste de plus en plus à l’abandon du BIOS au profit de l’UEFI (Unified Extensible Firmware Interface), un nouveau autre standard qui vise à remplacer le BIOS Legacy.
L’UEFI permet de dépasser certains blocages, comme la résolution écran de l’interface, la gestion multi-OS ou la limite des disques à 2,2 To.

L’article suivant explique le fonctionnement des BIOS UEFI :

Le démarrage du PC BIOS vs PC UEFI

Mais cela ne s’arrête pas là, l’UEFI revoit complètement le processus de démarrage et apporte des fonctionnalités de sécurité.
Le but est de sécuriser le démarrage du PC et de l’OS et éviter les falsifications et limiter les attaques.
Le Secure Boot est l’un de ces éléments.
L’article suivant décrit le démarrage d’un PC et UEFI en parle.

L’UEFI s’appuie sur le standard Trusted Platform Module (TMP) qui a pour but d’assurer l’intégrité du boot du PC.
Ainsi l’UEFI apporte :

  • Le Secure Boot protège le démarrage du PC.
  • Le firmware, on le trouve sur la forme d’un fichier .efi qui permet à l’OS de démarrer. C’est le bootloader de l’OS, par exemple sur Windows il s’agit du fichier BOOTMGFW.EFI.
  • Dans les environnements Windows, ELAM (Early Launch AM Software) charge l’antivirus avant les pilotes tiers et ainsi rendre l’antivirus actif avant de potentiel rootkit kernel-mode.
Les mécanismes de sécurité du démarrage de Trusted Boot

Le but du Secure Boot est de protéger de l’introduction d’un code malveillant dans le processus de démarrage.
En d’autre terme donc, la modification du démarrage par un malware. Par exemple en implantant un bootkit.

Le Secure boot bloque les codes inconnus

Pour ce faire, le Secure Boot vérifie chaque firmware (micrologiciel) et logiciel qui s’exécute au démarrage du PC.
Si un code inconnu est exécuté, le Secure Boot bloque alors le démarrage du PC.
Par exemple, selon la marque du PC, il peut afficher un message de violation d’intégrité comme Secure Boot Violation.
Le message explique clairement que la signature numérique est invalide.

Secure Boot Violation lorsqu'un code inconnu ou potentiellement malveillant tente de s'exécuter au démarrage du PC

La signature numérique et le Secure boot

La vérification, comme souvent en informatique se base sur des signatures numériques.

Deux bases de données critiques sont impliquées dans ce processus:

  • la base de données Allow (db) des composants approuvés . On peut l’appeler la base de signatures approuvés ou “signature database”.
  • la base de données Disallow (dbx). Ce sont les composants vulnérables ou malveillants, y compris le micrologiciel, les pilotes et les chargeurs de démarrage.

L’accès pour modifier ces bases de données est protégé par une clé d’échange de clé (KEK), qui à son tour est vérifiée par une clé de plate-forme (PK).

Soit donc :

  • KEK (bdd de clés d’échange de clés) : contient l’ensemble des clés de confiance pour la mise à jour de DB et DBX
  • PK (clé de plate-forme) ; Seules les mises à jour signées avec PK peuvent mettre à jour la bdd KEK.
Les vérifications de signature numérique du Secure boot

Enfin, le secure boot effectue une vérification de la somme de contrôle (checksum) des firmwares.

Tout code non signé ou signé numériquement mais non autorisé qui s’exécute au démarrage d’un PC UEFI est alors interdit par le Secure Boot.
C’est donc un mécanisme important pour lutter contre les bootkit.
Il ne faut donc en aucun cas désactiver le Secure boot.

Comment fonctionne la signature numérique

Cela signifie donc qu’il existe une base de données des firmwares autorisées.
Ainsi donc, les OEM doivent gérer une liste des personnes autorisées à signer le code approuvé par la base de données de démarrage sécurisé.
En réalité, il est tout autre car Secure Boot permet l’utilisation d’une autorité de certification (CA) centralisée.
Au final, elle est centralisée et gérée par Microsoft.
Les OEM soumettent le code à Microsoft qui le valide, signe avec son CA.
A partir de là, il est possible de booter sur Windows une fois installé sur le disque dur ou SSD.

Du côté Linux, il faut que GRUB (Le bootloader de Linux) soit aussi signé.
Pour ce faire, GRUB s’appuie sur shim (EFI/ubuntu/shimx64.efi).
Le shim du fournisseur OEM est vérifié à l’aide de l’autorité de certification UEFI tierce de Microsoft puis le shim se charge et vérifie le chargeur de démarrage GRUB2 à l’aide du certificat du fournisseur intégré à lui-même.
Ainsi, le PC charge le firmware shimx64.efi qui donne la main ensuite à grubx64.efi.

En clair donc pour démarrer sur Windows ou Linux, vous n’avez pas besoin de désactiver le Secure Boot.

Le Secure Boot protège-t-il à 100% des bootkit sur un PC UEFI ?

Le Secure Boot bloque donc les codes inconnus ou non autorisé.
Ainsi, si un malware modifie les firmwares, le PC ne bootera plus.
En théorie donc, cela protège à 100% des bootkits.

Dans la réalité, c’est bien sûr un peu plus complexe.
En effet, des bootkits peuvent voir le jour par exemple après :

  • Une mauvaise implantation de la norme UEFI ou du Secure boot par un constructeur.
  • Une vulnérabilité sur un logiciel comme le bootloader par un manque de vérification.

Le malware va alors tenter de modifier l’UEFI bootloader de l’OS.
En général, cela nécessite des accès administrateurs.

Un malware tente de modifier le UEFI boot loader
http://www.c7zero.info/stuff/Windows8SecureBoot_Bulygin-Furtak-Bazhniuk_BHUSA2013.pdf
Notez qu’un malware peut aussi modifier le OS Loader (pour Windows : winload.efi) mais normalement des mécanismes de sécurité existent pour l’empêcher ou le détecter.

Lojax : le premier rootkit UEFI

Autour de Septembre 2018, ESET met à jour un rootkit UEFI.
Ce dernier se base sur le logiciel Computrace Lojak qui permet de retrouver son PC volé.
Il est préinstallée dans le micrologiciel d’un grand nombre d’ordinateurs portables fabriqués par différents OEMs.
Les cybercriminels ont détournés ce logiciel pour le faire communiquer avec des serveurs de contrôle et en faire un Trojan.

Lojax : le premier rootkit UEFI

Ici on voit que le problème de sécurité se situe sur un logiciel additif ajouté sur certains PC.

L’article suivant détaille le fonctionnement de ce rootkit UEFI :

BootHole : Vulnérabilité GRUB2 et possible bootkit

En Juillet 2020, une vulnérabilité de dépassement de tampon (CVE-2020-10713) dans la façon dont GRUB2 analyse le contenu du fichier de configuration GRUB2 (grub.cfg) a été découverte par Eclypsium.
En conséquence, un attaquant pourrait modifier le contenu du fichier de configuration GRUB2 pour s’assurer que le code d’attaque est exécuté avant le chargement du système d’exploitation.

L’attaque BootHole fonctionne même avec le démarrage sécurisé activé car, pour certains appareils ou configurations de système d’exploitation, le processus de démarrage sécurisé ne vérifie pas de manière cryptographique le fichier grub.cfg, ce qui permet aux attaquants de falsifier son contenu.
La modification nécessite des droits administrateurs sur l’OS.

Toutes les distributions Linux (Debian, Ubuntu, Mint, Redhat, …) sont concernées.

D’autres bootkits ou EFIlock existent

En Juin 2020, ESET tweet a propos de bootkit sur des PC UEFI.

Ce dernier supprime le firmware bootx64.efi et les composants EFI Microsoft pour charger le siens à la place.

Le démarrage de Windows n’est plus possible puisque le Windows Boot Loader est remplacé par celui du malware.
Le bootkit affiche ici un message de rançon.
Certains vont plus loin en chiffrant le disque afin de rendre l’accès aux données impossible même via une clé USB boot.

Mais les attaquants ne sont pas claires et on ne sait pas s’ils arrivent à contourner les mécanismes du Secure Boot ou si les machines touchées ont le Secure Boot désactivé.

La FAQ du Secure Boot

Qu’est-ce que l’UEFI ?

L’UEFI est un standard qui vise à remplacer l’ancien BIOS dit hérité ou Legacy.
Il apporte de nombreuses fonctionnalités, par exemple un BIOS plus graphique avec la souris, des animations, etc.
Enfin le processus de démarrage est complètement revu pour apporter aussi des mécanismes de sécurité.

Qu’est-ce que le Secure Boot et à quoi sert le Secure boot ?

Le Secure Boot est un des mécanisme de sécurité apporté par le standard UEFI.
Il protège contre la falsification du démarrage du PC en interdisant l’exécution de code inconnu.

Comment fonctionne le Secure boot ?

Il vérifie les firmwares et autres logiciels qui s’exécutent au démarrage d’un PC UEFI.
Il interdit alors :
– un code non signé
– un code signé numérique mais n’étant pas dans la liste autorisée