EFI (application UEFI) : fichier .efi

pérenne

Exécutable PE lancé directement par le micrologiciel UEFI avant même le démarrage du système d'exploitation, format du bootloader lui-même.

Une application EFI est un exécutable lancé directement par le micrologiciel UEFI (Unified Extensible Firmware Interface) avant même que le système d’exploitation ne démarre. C’est précisément ce format qui constitue le bootloader lui-même (bootmgfw.efi sous Windows, grubx64.efi pour GRUB sous Linux), la première étape logicielle réellement exécutée après l’initialisation du matériel.

Le format reprend le conteneur Portable Executable des DLL et EXE Windows classiques, avec la même signature d’en-tête “MZ”, mais cible un sous-système et un jeu d’API propres à l’environnement UEFI : les services de démarrage (Boot Services) et d’exécution (Runtime Services) définis par la spécification, distincts des API disponibles une fois le système d’exploitation réellement chargé.

S’exécutant avant tout système d’exploitation et ses propres protections, une application EFI compromise (bootkit UEFI) constitue l’un des points d’implantation les plus persistants d’une attaque : un bootkit placé sur la partition système EFI (ESP), comme BlackLotus, reste en place tant que cette partition n’est pas reformatée, mais une réinstallation complète du système l’élimine (une clé MOK enrôlée par l’attaquant dans la mémoire du micrologiciel peut toutefois subsister et doit être retirée). Seuls les implants logés dans la mémoire flash SPI de la carte mère, comme LoJax découvert en 2018, échappent à une réinstallation.

Architecture et chemin de démarrage par défaut

Comme tout fichier PE, un .efi indique son processeur cible dans le champ Machine de son en-tête (0x8664 pour x64, 0xAA64 pour ARM64, 0x14C pour x86 32 bits) et son rôle dans le champ Subsystem : 10 pour une application EFI, 11 et 12 pour les pilotes de services de démarrage et d’exécution, 13 pour une image de ROM EFI. Un micrologiciel x64 refuse donc un .efi compilé pour ARM64.

Quand aucune entrée de démarrage n’est configurée, par exemple sur une clé USB, le micrologiciel cherche un chargeur à un chemin normalisé qui dépend de l’architecture : \EFI\BOOT\BOOTX64.EFI sur x64, \EFI\BOOT\BOOTAA64.EFI sur ARM64. C’est pour cela qu’une clé d’installation copiée à la main démarre sans configuration.

Secure Boot, shim et révocations

Secure Boot, le mécanisme de vérification introduit par la spécification UEFI, valide la signature cryptographique de chaque application EFI avant de l’exécuter, une défense conçue spécifiquement contre ce risque de substitution, en n’autorisant le démarrage que de bootloaders signés par une autorité de confiance enregistrée dans le micrologiciel.

Sur un PC livré avec Windows, la base de signatures autorisées (db) du micrologiciel contient des certificats Microsoft. Pour démarrer Linux avec Secure Boot actif, les distributions utilisent shim, un petit chargeur EFI signé par l’autorité Microsoft UEFI CA (prévue pour les applications UEFI tierces), qui contient la clé de la distribution et vérifie à son tour GRUB et le noyau, ou une clé MOK (Machine Owner Key) ajoutée par l’utilisateur.

Une signature valide ne suffit pas si le binaire signé est vulnérable. BlackLotus, analysé par ESET en 2023, contournait Secure Boot en installant d’anciens gestionnaires de démarrage Windows légitimement signés mais vulnérables (CVE-2022-21894), qui n’étaient pas encore révoqués. La correction de la faille associée CVE-2023-24932 passe par la liste de révocation DBX : Microsoft y ajoute le certificat « Windows Production PCA 2011 », ce qui interdit tous les gestionnaires de démarrage signés par lui, après avoir installé un gestionnaire signé par le nouveau certificat « Windows UEFI CA 2023 ».

Signature binaire

Diagramme de la signature binaire du format EFI (application UEFI), octets mis en évidence
HexadécimalOffset
4D 5A0

Vérifier qu'un fichier porte bien cette signature →

Sécurité

Un bootkit UEFI malveillant remplaçant l'application EFI de démarrage légitime s'exécute avant le système d'exploitation et ses protections, ce qui en fait l'un des points d'implantation les plus persistants et difficiles à détecter d'une chaîne de compromission.

Auditer les métadonnées de ce format →

Questions fréquentes

Comment ouvrir un fichier .efi ?

Micrologiciel UEFI (chargement natif au démarrage) permet d'ouvrir gratuitement un fichier .efi. Voir la liste complète des logiciels compatibles ci-contre.

Quel est le type MIME du format EFI (application UEFI) ?

Le type MIME du format EFI (application UEFI) est application/x-msdownload.

Le format EFI (application UEFI) (.efi) est-il encore utilisé aujourd'hui ?

Oui, le format EFI (application UEFI) est pérenne : il reste activement utilisé et pris en charge par les logiciels actuels.

Peut-on ouvrir un fichier .efi sur mobile, sans installer d'application ?

Aucun outil web n'est référencé sur cette fiche pour ce format : l'ouverture nécessite un logiciel de bureau (voir la liste « Avec quoi l'ouvrir » ci-contre).

Un fichier .efi utilise-t-il le même format que les exécutables Windows classiques ?

Oui, avec des nuances : l'application EFI reprend le format Portable Executable (signature "MZ" partagée avec les .exe et .dll Windows), mais cible un sous-système et un jeu d'API propres à l'environnement d'exécution UEFI (services de démarrage), distincts de ceux disponibles une fois Windows ou Linux réellement démarré.

Pourquoi Secure Boot vérifie-t-il spécifiquement les fichiers .efi au démarrage ?

Secure Boot valide la signature cryptographique de chaque application EFI avant de l'exécuter, précisément parce qu'un bootloader falsifié s'exécute avant toute protection du système d'exploitation lui-même. Un attaquant capable de substituer un .efi malveillant à celui légitime contournerait autrement l'ensemble des défenses installées plus tard dans la chaîne de démarrage.

Un fichier .efi présente-t-il des risques de sécurité ?

Un bootkit UEFI malveillant remplaçant l'application EFI de démarrage légitime s'exécute avant le système d'exploitation et ses protections, ce qui en fait l'un des points d'implantation les plus persistants et difficiles à détecter d'une chaîne de compromission.

DLL, Dylib, ELF, KO, EFI, SYS : les formats binaires système selon l'OS et le niveau de privilège →

Un fichier ne s'ouvre pas : les causes possibles →

Comment savoir si un fichier est corrompu →

Sources

Dernière mise à jour :