Comment vérifier l’intégrité de votre firmware

Habituellement, le firmware est appliqué par le fabricant d’un ordinateur, puis maintenu et mis à jour par la suite. Du moins, si vous avez la chance d’être l’heureux propriétaire d’un ordinateur NovaCustom. Il est remarquable de constater que de nombreux fournisseurs d’ordinateurs n’offrent même pas de mises à jour du firmware, ou du moins un moyen accessible de les installer. Cette situation est préoccupante, car le firmware d’un ordinateur portable est de plus en plus crucial pour la sécurité globale de l’appareil. Mais comment peut-on savoir si le firmware n’a pas été manipulé ?

La réponse courte et insatisfaisante est : vous ne pouvez pas le faire après l’installation. Sauf si vous disposez du firmware Heads, qui propose des méthodes de vérification de l’intégrité intégrées. Pour garantir l’intégrité du firmware pour la version par défaut du firmware EDK II (TianoCore), vous devrez écraser le firmware. Et c’est exactement ce que nous allons faire dans cet article.

Deux types de firmware sont présents sur la carte mère d’un ordinateur portable :

  • Le firmware BIOS
  • Le firmware EC

Dans cet article, nous nous concentrons sur le firmware BIOS, car c’est le type de firmware qui est responsable du processus de démarrage et qui pourrait potentiellement contenir du malware.

Remarque : lors du flashage du firmware, assurez-vous toujours que la version du firmware BIOS correspond à la version du firmware EC. Dans le cas contraire, l’ordinateur portable pourrait ne pas se démarrer ou des problèmes de stabilité pourraient survenir.

1. Construire le firmware

Les fichiers binaires du firmware Dasharo coreboot sont reproductibles, donc la première chose que nous voulons faire est de construire le firmware à partir des sources. Mais cela nécessite l’application docker, et il est plus facile de l’installer avec apt, plutôt que de suivre les étapes de Requirements. Nous allons donc ouvrir une fenêtre de terminal (Ctrl + Alt + T) et exécuter :

sudo apt install git docker.io -y

Maintenant, veuillez suivre le Dasharo firmware building guide (seulement les étapes sous la section Build Dasharo BIOS firmware). Les étapes 1, 2 et 3 doivent être exécutées selon les étapes de ce lien.

Après avoir exécuté la ligne de l’étape 4, vous obtiendrez une erreur de permission. C’est parce que nous avons installé docker en utilisant apt. Juste après le message d’erreur, exécutez simplement :

sudo !!

Ceci exécute la commande précédente (docker) avec les privilèges de root, ce qui devrait éviter l’erreur de permission.

Poursuivez avec les étapes 5 et 6 comme décrit dans le building guide.

Si la compilation du fichier binaire est réussie, le binaire se trouve dans le dossier ~/coreboot/build/coreboot.rom. Veuillez noter que le processus de construction peut prendre beaucoup de temps.

Note : Heads dispose d’un manuel de construction différent. Le fichier binaire peut être situé à un autre endroit. Dans les commandes suivantes, veillez à modifier le chemin du fichier binaire en conséquence.

Passez maintenant à l’étape 2 : Noter le hash du fichier binaire.

2. Noter le hash du fichier binaire

Maintenant que nous avons le fichier binaire du firmware, assurons-nous qu’il est identifiable en obtenant la valeur de hash sha256. Nous pouvons le faire en exécutant :

sha256sum ~/coreboot/build/coreboot.rom

La sortie indique le hash et le nom du fichier comme suit :

Remarque : il ne s’agit que d’un exemple.

00b6338389cc5d020b641629971aac6d4047be6134c6e8d0228140edc42584f6  coreboot.rom

Vous pouvez créer le firmware sur un autre ordinateur situé dans un autre réseau et vérifier que le hash sha256 est le même.

Que faire si le hash ne correspond pas ?

Si le hash ne correspond pas, cela signifie que le code source du binaire que vous avez construit ne correspond pas au code source du binaire qui a été utilisé dans l’autre processus de construction. Cela pourrait indiquer une manipulation, mais ce n’est pas nécessairement le cas. Il peut également s’agir d’une corruption de fichier à l’origine de la modification du hash.

Remarque : même le plus petit changement dans la configuration entraîne une différence dans le hash.

Nous avons entamé cette discussion pour vérifier le fichier binaire avec celui qui a été créé par les développeurs du firmware. Actuellement, cela n’est pas possible en raison de la signature de vboot.

Rejoignez la discussion sur Github !

3. Installer le firmware

Il existe deux façons d’installer (écraser) le firmware de l’ordinateur portable :

  1. Par flashage interne.
  2. Par flashage externe.

Le flashage externe est la méthode la plus sûre, mais elle nécessite certains outils. Avec le flashage interne, on pourrait dire que le processus de flashage pourrait – en théorie – être truqué par une partie de firmware malveillant. Néanmoins, nous expliquons comment flasher le firmware internement, car certains ne disposent peut-être pas des outils nécessaires pour flasher le firmware de façon externe.

Souhaitez-vous voir les instructions pour le flashage interne ou externe ?


Flashage interne

Tout d’abord, copiez le fichier coreboot.rom sur une clé USB.

Ensuite, assurez-vous que le BIOS Boot Lock, la SMM BIOS Write Protection et l’UEFI Secure Boot sont désactivés.

Démarrez l’ordinateur portable sur Dasharo Tools Suite. Vous pouvez même créer DTS à partir des sources et la charger sur une autre clé USB si vous ne faites pas confiance à l’option de démarrage iPXE intégrée, ou si vous utilisez des Heads qui n’intègrent pas le démarrage iPXE.

Une fois que la DTS a démarré, le menu principal de DTS vous demandera ce qu’il faut faire. Choisissez l’option 9 : Drop to shell. Maintenant, exécutez :

mkdir /mnt/usb

Insérez maintenant la clé USB qui contient le fichier coreboot.rom. Identifiez-la à l’aide de la commande suivante :

fdisk -l

Montez la partition de la clé USB dans le dossier que vous avez créé précédemment en exécutant la commande ci-dessous.

Veuillez noter que dans l’exemple ci-dessous, nous utilisons /dev/sda1. Cependant, le chemin de partition peut être différent en fonction des autres lecteurs de stockage éventuellement connectés. Remplacez /dev/sda1 par le chemin de partition que vous avez identifié avec la commande fdisk -l exécutée précédemment.

mount /dev/sda1 /mnt/usb

Vérifiez à nouveau le hash sha256 du fichier binaire coreboot.rom en exécutant :

sha256sum /mnt/usb/coreboot.rom

Il s’agit non seulement de vérifier que le fichier binaire n’a pas été altéré entre-temps, mais aussi de s’assurer que le fichier binaire n’a pas été corrompu au cours du processus de copie.

Assurez-vous que le hash de la sortie est le même que celui qui a été produit à cette étape.

Exécutez maintenant la commande de flashage du fichier binaire et éteignez l’ordinateur portable une fois le processus de flashage terminé. Vous pouvez le faire avec la commande suivante :

flashrom -p internal --ifd -i bios -w /mnt/usb/coreboot.rom && systemctl poweroff

Le processus de flashage commence. Cela prend environ 3 minutes. Après cela, l’ordinateur portable s’éteint et le firmware a été installé avec succès.

Flashage externe

Si vous ne voulez pas vous fier à la Dasharo Tools Suite, ou si vous avez peur d’un flashage de firmware truqué, vous pouvez flasher le firmware de façon externe. Pour ce faire, vous avez besoin des outils suivants :

  1. Un programmateur CHA341A qui effectue le flashage à la bonne tension. Vous pouvez en acheter un dans notre magasin.
    Vous avez besoin de la version EEPROM clip pour les cartes CPU Intel 11th Gen et inférieures. Vous avez besoin de la variante WSON 8×6 pour les cartes CPU Intel 12e génération et plus.
  2. Si votre ordinateur portable est équipé d’un chip firmware WSON 8×6 : Un clam pour maintenir la probe à la place de la puce.
    – Il est inclus si vous l’achetez dans notre magasin.
  3. Quelque chose de lourd à placer sur la probe, pour s’assurer qu’elle reste sur la puce WSON 8×6 pendant le processus de flashage. Nous utilisons de grosses pinces pour cela.
  4. Un autre ordinateur sur lequel GNU/Linux est installé et qui dispose d’un accès à Internet. Les étapes ci-dessous sont décrites pour Ubuntu.

Sur l’autre ordinateur, téléchargez, compilez et installez la version 1.3.0 ou supérieure de flashrom en exécutant les commandes suivantes :

sudo apt update
sudo apt upgrade -y
sudo apt remove flashrom -y # Pour supprimer toute version existante de flashrom
sudo apt install git make binutils build-essential ca-certificates libpci-dev libftdi-dev libusb-1.0-0-dev -y
git clone https://github.com/flashrom/flashrom
cd flashrom
make CONFIG_CH341A_SPI=yes
sudo make install

Maintenant que flashrom a été installé, il est temps de dévisser le boîtier inférieur de l’ordinateur portable que vous allez flasher. Connectez ensuite le programmateur CH341A 3.3V à l’ordinateur flashrom et connectez la probe à la puce SPI (BIOS) principale à l’aide de la pince et de l’objet lourd. Consultez la photo ci-dessous pour voir à quoi cela peut ressembler. Pendant le processus de flashage, il est important que la batterie CMOS et la batterie principale soient déconnectées.

Lancez le processus de flashage à l’aide de la commande suivante :

sudo flashrom -p ch341a_spi --ifd -i bios -w ~/coreboot/build/coreboot.rom

Remarque : la commande ci-dessus suppose que votre fichier binaire coreboot.rom se trouve à ~/coreboot/build/coreboot.rom. Si nécessaire, remplacez-le par le chemin correct.

Dans certains cas, flashrom demande de spécifier la puce. Dans ce cas, ajoutez simplement -c DETECTEDCHIP à la fin de la commande flashrom, mais remplacez DETECTEDCHIP par la première puce détectée dans la sortie précédente (entre guillemets). Si la commande échoue, vous pouvez réessayer, mais avec la deuxième puce détectée.

Le processus de flashage démarre lorsque le système affiche le message Reading flash. L’ensemble du processus du flashage prend environ 10 minutes, alors soyez patient. C’est l’heure du café ! Dès que le processus de flashage est terminé, la sortie contient VERIFIED.

Une fois le processus de flashage terminé, vous pouvez retirer la probe et le programmateur. Veillez ensuite à reconnecter la batterie CMOS et la batterie principale. Vous pouvez maintenant installer le boîtier inférieur et allumer l’ordinateur portable.

Remarque : le premier démarrage peut prendre jusqu’à deux minutes.

Remarque : le flashage du firmware réinitialise également les paramètres du firmware UEFI aux paramètres par défaut. Pour la plupart des cas d’utilisation, nous recommandons de désactiver l’Intel Management Engine (ME) après le flashage. Vous pouvez également vérifier les autres fonctions du système Dasharo pour activer les fonctions de sécurité qui ne sont peut-être pas activées par défaut.

À propos de l'auteur : Wessel Klein Snakenborg est passionné de technologie depuis son enfance. Il a lancé NovaCustom en 2015, une entreprise qui fabrique des ordinateurs portables sur mesure en tenant compte de la protection de la vie privée et de la sécurité. En mettant l'accent sur la convivialité, NovaCustom continue de redéfinir l'expérience de l'ordinateur portable, grâce à l'engagement de Wessel en faveur de l'innovation et de la collaboration.

Les commentaires uniquement en anglais s.v.p.

Partager votre panier