L’utilisation de listes blanches pour améliorer la sécurité du micrologiciel

Le micrologiciel est devenu plus populaire dans le monde de la recherche en sécurité informatique. Les attaques opérant au niveau du micrologiciel peuvent être difficiles à découvrir et peuvent persister même dans des scénarios de récupération à nu. Ce type de piratage a été bien documenté par les enquêtes sur les exploits de HackingTeam et Vault7.

Heureusement, il existe des méthodes pour détecter et se défendre contre de telles attaques. Les attaques basées sur le micrologiciel tentent généralement d’ajouter ou de modifier des modules de micrologiciel système stockés dans NVRAM. Les outils fournis par le projet open source CHIPSEC peuvent être utilisés pour générer et vérifier des hachages de ces modules, afin que les utilisateurs puissent détecter les modifications non autorisées.

 CHIPSEC CHISPEC, introduit en mars 2014, est un cadre d’analyse de la sécurité au niveau de la plate-forme du matériel, des périphériques, du micrologiciel du système, des mécanismes de protection de bas niveau et de la configuration de divers composants de la plate-forme. Il contient un ensemble de modules, y compris des tests simples pour les protections matérielles et la configuration correcte, des tests pour les vulnérabilités des composants du micrologiciel et de la plate-forme, des outils d’évaluation de la sécurité et de fuzzing pour divers périphériques et interfaces de plate-forme, et des outils d’acquisition d’artefacts critiques du micrologiciel et des périphériques.

Le module de liste blanche (outils.uefi.liste blanche) utilise CHIPSEC pour extraire une liste d’exécutables EFI à partir d’une image binaire du micrologiciel, et construit une liste d’exécutables “attendus” et de hachages correspondants (.Fichier JSON) à utiliser ultérieurement pour la comparaison. La documentation est disponible dans le code source du module sur github et dans le manuel CHIPSEC.

Le processus suppose que vous commencez à partir d’une “bonne image de micrologiciel connue”, de préférence une version de production du micrologiciel fournie par le fabricant, et que vous avez utilisé CHIPSEC pour rechercher des problèmes connus avant de mettre accidentellement sur liste blanche quelque chose de méchant. Cet exemple utilise le micrologiciel UEFI open source pour le Turbot MinnowBoard (version 0.97), pour une meilleure visibilité sur le processus.

La ligne de commande suivante de CHIPSEC crée une liste blanche nommée efilist.json basé sur une “bonne image connue” (platform_fw.bac):

python chipsec_main.py -i -n -m tools.uefi.whitelist -a generate,efilist.json,platform_fw.bin

 CHIPSEC dans Ubuntu Linux

L’application de ce processus aux images “release” et “debug” x64 du micrologiciel MinnowBoard Turbot 0.97 produit les listes blanches suivantes:

  • MNW2MAX1.X64.0097.D01.1709211100.bin (firmware UEFI x64, mode de débogage) – X64D97_whitelist.json
  • MNW2MAX1.X64.0097.R01.1709211052.bin (micrologiciel UEFI x64, mode de libération) – X64R97_whitelist.json

( exercice pour le lecteur: téléchargez les images du firmware, exécutez CHIPSEC, voyez si votre liste blanche correspond)

Il est important de noter que le fichier de liste blanche JSON résultant n’est pas un simple hachage du fichier binaire, il contient des hachages des modules exécutables de l’image du firmware. CHIPSEC a la possibilité de numériser et de cataloguer des composants de micrologiciel individuels, qui peuvent être utilisés pour mettre en liste blanche ou en liste noire des exécutables spécifiques.

Affichage de listes blanches

Si vous étiez un fabricant de système, vous pouviez publier ces listes blanches pour vérification client. Cependant, il est préférable de signer des fichiers à des fins de vérification. Pour s’assurer que la liste blanche obtenue par un utilisateur final est la liste blanche officielle, elle peut être signée avec GPG à l’aide d’une signature détachée:

gpg –detach-sign <file>

De plus, les utilisateurs doivent authentifier les certificats d’un nom de domaine bien connu pour le fabricant du système lorsqu’ils sont livrés via HTTPS. Il est également conseillé aux organisations informatiques de signer des listes blanches générées en interne pour empêcher l’utilisation de listes non autorisées dans les audits.

Vérification des listes blanches

Si une signature détachée est disponible, GPG peut être utilisé pour vérifier le fichier de liste blanche:

gpg –verify <file>

Une fois l’authenticité de la liste blanche vérifiée, l’utilisateur doit prendre une image du firmware de la plate-forme à l’aide de CHIPSEC. Cette ligne de commande utilisait la commande ‘dump’ pour générer user_fw.bac:

python chipsec_util.py spi dump user_fw.bin

Désormais, CHIPSEC peut être utilisé pour vérifier l’image du micrologiciel de la plate-forme par rapport à la liste blanche associée. Cet exemple vérifierait par rapport à l’image de “libération” x64 pour le turbot vairon 0.97:

python chipsec_main.py -i -n -m tools.uefi.whitelist -a check,X64REL_whitelist.json,user_fw.bin

À ce stade, CHIPSEC retournera un statut “PASSÉ” ou “AVERTISSEMENT”. Si le test renvoie “PASSÉ”, tous les hachages ont été trouvés dans la liste blanche et correspondent aux valeurs attendues. Si le test renvoie “AVERTISSEMENT”, était alors quelque chose est différent. Notez qu’un “AVERTISSEMENT” contre n’indique pas immédiatement une menace pour la sécurité (par exemple: l’utilisateur peut avoir mis à jour le dernier firmware du fabricant), mais il nécessite une enquête pour s’assurer que l’image du firmware modifiée n’est pas due à une tentative d’attaque.

Limitations

L’utilisation d’outils tels que CHIPSEC peut améliorer la sécurité, mais aucun système ne peut être absolument sécurisé et ces procédures ne peuvent pas se défendre contre toutes les attaques possibles. Il y a un certain nombre de limites à prendre en compte lors de l’interprétation des résultats de la liste blanche:

  • Il peut y avoir des méthodes d’emballage d’images personnalisées ou propriétaires que CHIPSEC ne comprend pas. Cela peut entraîner l’exclusion de certains modules, de sorte que les modifications correspondantes peuvent être manquées lors d’une comparaison de liste blanche.
  • Les logiciels fonctionnant sur un système déjà compromis peuvent être dupés. Si un système est déjà compromis, CHIPSEC et des logiciels similaires peuvent ne pas produire d’indicateurs fiables.

Résumé

La possibilité pour CHIPSEC de générer des listes blanches fournit une méthode de validation de la chaîne d’approvisionnement du micrologiciel. Les fabricants peuvent utiliser ces outils pour aider les utilisateurs à vérifier les versions officielles du micrologiciel, et les administrateurs informatiques peuvent générer des listes blanches pour des audits internes basés sur des images de confiance.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.