Pourquoi le firmware ouvert est important pour la sécurité

Récemment, à GoTo Chicago, j'ai donné une conférence sur ce sujet et j'ai pensé qu'il serait bien d'écrire un article avec des conclusions. Cet article explique pourquoi le micrologiciel open source est important pour la sécurité.

Niveaux de privilège


Dans une pile typique, vous avez différents niveaux de privilèges.

  • Ring 3. Applications: privilèges minimaux, à l'exception du bac à sable dans l'espace utilisateur, qui est encore plus limité.
  • Ring 0. Kernel: le noyau du système d'exploitation, dans le cas d'un OS open source, vous voyez son code.
  • Bague -1. Hyperviseur: Virtual Machine Monitoring (VMM), crée et exécute des machines virtuelles. Dans les hyperviseurs open source tels que Xen, KVM, bhyve et autres, vous voyez le code.
  • Bague -2. Mode de gestion du système (SMM), noyau UEFI: code propriétaire, plus d'informations ci-dessous.
  • Bague −3. Moteur de contrôle: code propriétaire, plus d'informations ci-dessous.

Les anneaux négatifs indiquent des niveaux avec des privilèges supérieurs à zéro.

De ce qui précède, il est clair que dans les anneaux de -1 à 3, nous avons la possibilité d'utiliser un logiciel open source, dans une large mesure le voir et le contrôler. Pour les niveaux inférieurs à l'anneau −1, nous avons moins de contrôle, mais la situation s'améliore grâce au développement de firmware open source et à la communauté.

C'est une situation contradictoire: le code le plus fermé a le plus de privilèges dans notre système. Ce paradoxe devrait corriger le firmware open source.

Bague -2. SMM, noyau UEFI


Cet anneau contrôle toutes les ressources CPU.

Le mode de gestion du système (SMM) est invisible pour le reste de la pile au-dessus. Il a la moitié du noyau. Initialement utilisé pour la gestion de l'alimentation et le contrôle matériel du système. Il contient beaucoup de code propriétaire et est l'endroit où les fournisseurs ajoutent de nouvelles fonctionnalités propriétaires. Il gère les événements système, tels que les erreurs de mémoire ou de chipset, ainsi qu'un tas d'autres logiques.

Le noyau UEFI est extrêmement complexe, avec des millions de lignes de code. Les applications UEFI sont actives après le téléchargement. Le noyau a été développé sur le principe de la «sécurité par l'obscurité». La spécification est absolument folle si vous voulez farfouiller.

Bague −3. Moteur de contrôle


L'anneau le plus privilégié. Dans le cas d'Intel (x86), il s'agit du moteur de gestion Intel. Ce système peut allumer silencieusement des nœuds et écraser des disques, le noyau démarre Minix 3 , ainsi qu'un serveur Web et la pile réseau entière. Il s'avère que grâce à cela, Minix est le système d'exploitation de bureau le plus populaire. Le moteur de commande a de nombreuses fonctions. Il me faudra probablement une journée entière pour les énumérer. Si vous le souhaitez, il existe de nombreuses ressources pour une étude plus détaillée.

Entre l'anneau −2 et l'anneau −3 dans notre pile, il y a au moins deux noyaux et demi d'autres noyaux, ainsi qu'un tas de complexité propriétaire et inutile. Chacun de ces cœurs possède ses propres piles réseau et serveurs Web. Le code peut changer lui-même, persistant après la mise hors tension et la réinstallation. Nous avons très peu d'informations sur ce que le code fait réellement dans ces anneaux, ce qui est terrible, étant donné que ces anneaux ont le plus de privilèges.

Ils ont tous des exploits


Cela ne devrait surprendre personne qu'il existe des vulnérabilités dans les anneaux −2 et −3. Quand ils sont trouvés, c'est vraiment terrible. À titre d'exemple, bien que vous puissiez rechercher d'autres exemples vous-même, il y avait un bogue dans le serveur Web Intel Management Engine que le développeur ne connaissait pas depuis sept ans .

Comment améliorer la situation?


NERF: micrologiciel réduit non extensible


Le NERF est ce sur quoi la communauté travaille. L'objectif est de rendre le firmware moins capable de nuire et de rendre ses actions plus visibles. Ils s'efforcent de supprimer tous les composants du runtime, mais cela reste difficile à faire dans Intel Management Engine. Mais vous pouvez supprimer le serveur Web et la pile IP à partir de là. Les développeurs souhaitent également supprimer la pile IP UEFI, les autres pilotes et supprimer la fonction d'auto-firmware Intel Management / UEFI.

me_cleaner


Projet de nettoyage d'Intel Management Engine à la fonctionnalité minimale requise ( sur GitHub ).

u-boot et coreboot


u-boot et coreboot sont des micrologiciels open source. Ils gèrent l'initialisation des puces et la DRAM. Les Chromebooks utilisent les deux, coreboot sur x86 et u-boot sur le reste. C'est l'une des étapes dont ils vérifient le chargement .

La philosophie de conception de Coreboot consiste à «faire le minimum nécessaire pour utiliser le matériel, puis transférer le contrôle à un autre programme appelé la charge utile » . Dans ce cas, c'est linuxboot.

linuxboot


Linuxboot gère les pilotes de périphériques, la pile réseau et fournit un environnement multi-tâches multi-utilisateurs. Il est construit sur Linux, donc un seul cœur peut fonctionner sur plusieurs cartes. Linux a déjà été suffisamment testé et beaucoup de gens suivent le code, car il est assez largement utilisé. Il vaut mieux utiliser un noyau ouvert avec un grand nombre de "contrôleurs" que deux et demi d'autres noyaux, différents et fermés. Cela signifie que nous réduisons la surface d'attaque en raison de moins de variantes de code et que nous nous appuyons sur du code open source. Linux améliore la fiabilité de démarrage en remplaçant les pilotes de firmware mal testés par des pilotes Linux améliorés.

En utilisant le noyau, nous avons déjà des outils de micrologiciel: les développeurs peuvent utiliser des outils familiers lorsqu'ils ont besoin d'écrire une logique pour vérifier les signatures, chiffrer un disque, etc. Tout cela dans une langue moderne, testée, prise en charge et facile à lire.

racine u


u-root est la boîte à outils et le chargeur de démarrage de l'espace utilisateur golang. Il est utilisé comme initramfs pour le noyau Linux dans linuxboot.

Ils disent que la pile NERF a réduit le temps de démarrage de 20 fois. Mais ceci est un article sur la sécurité, alors revenons à la sécurité ...

La pile NERF améliore la visibilité de nombreux composants qui étaient auparavant entièrement propriétaires. Cependant, les appareils ont encore de nombreux autres micrologiciels.

Et les autres firmware?


Nous avons besoin d'un micrologiciel ouvert pour le contrôleur d'interface réseau (NIC), les disques SSD et le contrôleur de gestion de base (BMC).

Le projet Open Compute travaille actuellement sur le micrologiciel NIC 3.0 . Il sera intéressant de voir ce qu'ils font.

Il existe à la fois OpenBMC et u-bmc pour BMC . J'en ai écrit un peu dans un précédent article .

Nous devons disposer de tous les micrologiciels open source afin d'assurer une visibilité complète sur la pile et de vérifier réellement l'état du logiciel sur la machine.

Racines de confiance


L'objectif de la racine de confiance est de vérifier que le logiciel approprié est installé dans chaque composant de l'équipement. Vous pouvez vous assurer que l'équipement n'est pas piraté. Étant donné que nous avons maintenant beaucoup de code source fermé dans de nombreux domaines de l'équipement, cela est difficile à faire. Comment savoir vraiment qu'il n'y a pas de vulnérabilités ou de backdoors dans le firmware du composant? Pas question. L'open source, c'est autre chose.

Il semble que chaque cloud et chaque fournisseur offrent sa propre racine de confiance. Microsoft a Cerberus , Google a Titan , Amazon a Nitro . Ils semblent impliquer une confiance explicite dans le code propriétaire (code que nous ne voyons pas). Cela laisse un sentiment étrange. Ne serait-il pas préférable d'utiliser une source entièrement ouverte? Ensuite, nous pouvons vérifier sans aucun doute que le code compilé à partir du code source est le même qui fonctionne sur l'équipement où que le firmware est installé. Ensuite, nous pouvons vérifier que la machine est dans le bon état, sans douter qu'elle est vulnérable ou avec une porte dérobée.

Cela vous fait vous demander quels petits fournisseurs de cloud tels que DigitalOcean ou Packet utilisent comme racine de confiance. J'ai posé des questions à ce sujet sur Twitter, mais je n'ai pas obtenu de réponse décente ...


Il y a une excellente conférence de Paul McMillan et Matt King sur la sécurité de l'équipement lors de la mise à l'échelle . Les auteurs décrivent en détail comment protéger le matériel, tout en permettant aux clients d'y accéder. Lorsqu'ils reçoivent de l'équipement des clients, ils doivent s'assurer de manière cohérente et fiable que tout reste inchangé et qu'aucune surprise n'est cachée dans aucun composant.

Tous les fournisseurs de cloud doivent s'assurer que l'équipement n'est pas compromis une fois que le client a effectué des calculs sur celui-ci.

Tolérance aux pannes du firmware de la plateforme


Cependant, les fabricants de puces semblent avoir un look spécial. Intel a la résilience du micrologiciel de plate-forme et Lattice a la résilience du micrologiciel de plate-forme . Ils semblent être davantage axés sur les directives du NIST pour la tolérance aux pannes du micrologiciel de la plate-forme .

J'ai essayé de demander sur Internet qui l'a utilisé, mais j'ai reçu peu de réponses, donc si vous utilisez des appareils dotés de la technologie Platform Firmware Resiliency, faites le moi savoir!


D'après la conférence OCP sur les innovations dans le micrologiciel Intel, il semble que la plate-forme Intel Firm Firm Resilience (PFR) et Cerberus vont de pair. Intel utilise PFR pour mettre en œuvre les principes de certification Cerberus. Merci @msw pour la clarification.

Ce serait bien de réduire l'éventail d'outils tacheté pour faire ce travail. Je voudrais également voir le code source pour voir par vous-même qu'il est sûr.

Comment aider


J'espère que vous avez une idée des projets qui existent pour développer un firmware open source et de son importance! Si vous voulez aider, dites-le aux autres. Essayez d'utiliser des plateformes open source. Les Chromebooks en sont un excellent exemple, ainsi que les ordinateurs Purism . Vous pouvez demander à vos fournisseurs ce qu'ils font pour publier un firmware open source et assurer la sécurité des équipements avec une racine de confiance. Nerd heureux! :)

Source: https://habr.com/ru/post/fr451320/


All Articles