Intel x86 Root of Trust: perte de confiance



Image: shutterstock

Voici le moment où les architectes système, les ingénieurs et les experts en sécurité d'Intel ont peut-être le plus craint: une erreur a été trouvée dans la zone de mémoire non accessible (ROM) du moteur de sécurité et de gestion convergé Intel, et cette erreur jette le doute sur tous les efforts de l'entreprise pour créer la racine de la confiance et le fondement de la sécurité sur ses plateformes.

Et le fait ici n'est même pas que les erreurs du firmware (firmware), qui sont "câblées" dans la mémoire embarquée de Mask ROM des microprocesseurs et chipsets, ne peuvent pas être corrigées, mais plutôt que l'erreur trouvée détruit la chaîne de confiance de l'ensemble de la plateforme dans son ensemble, permettant compromettre sa base matérielle.

Les experts de Positive Technologies ont trouvé une erreur matérielle dans le matériel Intel, ainsi qu'une erreur dans le firmware Intel CSME, qui se manifeste à un stade très précoce de ce sous-système, dans sa ROM de démarrage (ROM de démarrage). On sait que c'est Intel CSME qui assure l'authentification initiale d'un système basé sur des puces Intel, téléchargeant et vérifiant tout le reste du firmware des plateformes modernes. Par exemple, Intel CSME, en interaction avec le microcode du processeur, garantit l'authenticité du micrologiciel du BIOS UEFI via la technologie BootGuard. De plus, Intel CSME télécharge et vérifie le micrologiciel du Power Management Controller, qui contrôle l'alimentation en tension de chaque unité matérielle dans les puces Intel.

Mais plus important encore, c'est Intel CSME qui est responsable de la base cryptographique de ces technologies de protection matérielle développées par Intel et utilisées partout, telles que DRM, fTPM et Intel Identity Protection. Le micrologiciel Intel CSME implémente un système de certification à distance pour les systèmes de confiance appelé EPID (Enhanced Privacy ID), qui vous permet d'identifier de manière unique et anonyme chaque instance spécifique d'un système informatique (ordinateur), en trouvant de nombreuses applications utiles, telles que la protection du contenu numérique, la sécurité des transactions financières, certification de l'Internet des objets. De plus, le micrologiciel Intel CSME dispose d'un module logiciel TPM qui vous permet de l'utiliser pour stocker des clés de chiffrement sans puce TPM supplémentaire, qui est loin de tout ordinateur.

Et Intel a essayé de rendre cette racine de confiance aussi sûre que possible. Le système de sécurité des plates-formes Intel est conçu de telle manière que même une erreur d'exécution de code arbitraire dans l'un des modules du micrologiciel Intel CSME ne comporte pas le risque de perdre la clé racine de sécurité (alias Chipset Key), mais ne compromet que les fonctions spécifiques dont le module vulnérable est responsable lorsque Cela vous permet d'atténuer facilement le risque en modifiant les clés de chiffrement à l'aide du mécanisme de numéro de version sécurisé de SVN. Cela a été clairement démontré en 2017, lorsqu'une erreur d'exécution de code arbitraire a été trouvée dans le module du micrologiciel BringUP (bup), décrit dans Intel SA-00086. Intel a ensuite simplement effectué la régénération des clés en augmentant SVN, et a ainsi facilement évité le risque de compromettre les technologies basées sur EPID.

Mais malheureusement, il n'y a pas de systèmes de sécurité parfaits, et, comme tout autre, l'architecture de sécurité d'Intel a son talon d'Achille - ROM de démarrage. Une erreur dans la ROM dans les premières étapes de l'exécution vous permet vraiment de contrôler le processus de lecture de la clé du chipset et de générer toutes les autres clés de chiffrement. L'une de ces clés est utilisée pour chiffrer un tableau de données ICVB (Integrity Control Value Blob). Avec cette clé, vous pouvez truquer le code de n'importe quel module du micrologiciel Intel CSME - et le système d'authentification ne pourra pas reconnaître le faux. Cela équivaut à une fuite de la clé privée de signature numérique du firmware Intel CSME, mais pour cette plate-forme particulière.

À l'heure actuelle, la situation avec EPID est atténuée par le fait que la clé du chipset est stockée à l'intérieur de la plate-forme (dans une mémoire OTP spéciale, une mémoire programmable à usage unique) sous une forme chiffrée et pour compromettre complètement l'EPID, il est également nécessaire d'extraire la clé matérielle sur laquelle la clé du chipset est stockée, qui est chiffrée dans un stockage spécial SKS (Secure Key Storage). Mais cette clé n'est pas unique à la plate-forme, mais elle s'applique à toute la génération de chipsets Intel. Et comme une erreur trouvée dans la ROM vous permet d'intercepter l'exécution de code jusqu'au verrouillage du mécanisme de génération de clés matérielles dans SKS, et l'erreur dans la ROM elle-même ne peut pas être corrigée, nous pensons que ce n'est qu'une question de temps - quand cette clé sera extraite. Et puis le chaos complet viendra: l'identification du matériel sera truquée, le contenu numérique sera extrait, les informations cryptées des médias permanents seront décryptées.
Ainsi, les experts de Positive Technologies ont trouvé une erreur dans la ROM de démarrage Intel CSME dans tous les chipsets Intel et SoC actuellement commercialisés, sauf Ice Point (10e génération de processeurs). Cette erreur vous permet d'extraire la clé du chipset, ainsi que de manipuler une partie de la clé matérielle et le processus de sa génération, ne permettant cependant pas pour l'instant d'obtenir directement son composant matériel (câblé en SKS). De plus, cette erreur dans la ROM vous permet d'organiser l'exécution de code arbitraire au niveau de privilège zéro d'Intel CSME.

Plus en détail, nous décrirons les détails techniques dans un livre blanc complet consacré à cette erreur, que nous prévoyons de publier un peu plus tard. Il convient de noter qu'après que nos spécialistes ont contacté Intel PSIRT avec un rapport sur cette erreur, Intel a signalé que l'erreur était déjà connue ( CVE-2019-0090) Intel comprend qu'il est impossible de corriger une erreur dans la ROM dans un équipement déjà sorti, et par conséquent ils bloquent simplement toutes les manières possibles de son fonctionnement. Le correctif pour CVE-2019-0090 ne corrige qu'un seul des vecteurs d'attaque possibles - via le concentrateur de capteurs intégré (Integrated Sensors Hub, ISH). Nous pensons qu'il existe potentiellement de nombreuses façons d'exploiter cette vulnérabilité dans la ROM. Certains d'entre eux peuvent nécessiter un accès local, d'autres physiques. Pour ouvrir légèrement le voile du secret, disons quelques mots sur la vulnérabilité elle-même:

  1. , boot ROM: IOMMU MISA (Minute IA System Agent), SRAM ( ) Intel CSME DMA-, . , , .
  2. Intel CSME boot ROM (page directory), IOMMU. , , SRAM DMA- (DMA CSME, ) SRAM Intel CSME.
  3. Les paramètres MISA IOMMU sont réinitialisés lorsque la réinitialisation est effectuée pour Intel CSME, qui après la réinitialisation recommence l'exécution à partir de la ROM de démarrage.

Ainsi, tout périphérique de plate-forme qui peut effectuer des transactions DMA dans la mémoire statique Intel CSME et en même temps redémarrer Intel CSME (ou simplement attendre que Intel CSME se réveille) peut modifier les tables système des pages Intel CSME et ainsi intercepter l'exécution.

Publié par Mark Ermolov, spécialiste principal, technologies OS et solutions matérielles, technologies positives.

All Articles