Récemment, le Les ingénieurs de Google ont annoncé détails sur une vulnérabilité critique identifiée comme CVE-2024-56161. Baptisé sous le nom de EntréeSigne, cet échec permet d'échapper au mécanisme de vérification de la signature numérique lors de la mise à jour du microcode sur les processeurs AMD utilisant les quatre premières générations de la microarchitecture Zen.
EntréeSigne affecte une large gamme de processeurs, permet à un attaquant de contourner les contrôles de sécurité qui garantissent l'intégrité du microcode, ouvrant potentiellement la porte à des modifications malveillantes du comportement du matériel.
À propos de la vulnérabilité
L'origine de cette vulnérabilité réside dans l'utilisation de l'algorithme AES-CMAC lors de la vérification de la signature numérique au lieu d'une fonction de hachage fiable. AMD a utilisé cet algorithme pour signer le microcode, en utilisant une clé RSA privée et en ajoutant une clé publique au correctif.
Le processus de vérification implique que le processeur compare le hachage de la clé publique intégrée lors de la fabrication avec le hachage de la clé spécifiée dans le patch. Cependant, puisque CMAC a été utilisé, qui n'est en fait pas une fonction de hachage mais un code d'authentification transmission du message, une faille de sécurité s'est ouverte.
CMAC est basé sur l'algorithme AES et utilise des opérations XOR pour combiner des blocs de données, mais comme il n'est pas conçu pour être résistant aux collisions, il permet à un attaquant connaissant la clé de chiffrement de calculer des valeurs intermédiaires qui compensent les changements dans l'entrée, laissant le résultat de l'opération inchangé.
Intel et AMD ont tous deux conçu des ensembles d'instructions de microcode uniques basés sur RISC, tous deux non documentés, mais conceptuellement similaires à d'autres ensembles d'instructions RISC tels qu'ARM ou RISC-V. Tout comme les logiciels, la mise en œuvre correcte de matériel complexe constitue un défi ; Historiquement, cela a conduit à de nombreux bugs bien connus, comme le bug FDIV d'Intel dans le Pentium en 1994.
AMD fournit une clé de cryptage unique pour AES-CMAC dans tous ses processeurs du Zen 1 au Zen 4, ce qui signifie que si quelqu'un extrait cette clé d'un processeur, il peut l'appliquer à tous les autres. En fait, les chercheurs ont découvert que ces processeurs utilisent une clé connue, tirée d’un exemple des directives NIST SP 800-38B.
Cela a permis, en théorie, de générer de faux patchs en remplaçant la clé publique du patch par une autre qui produit le même hachage, et sélectionnez les collisions pour la signature numérique. De telles collisions sont obtenues en ajoutant un bloc supplémentaire de données apparemment aléatoires au microcode, de sorte que le patch modifié conserve la signature numérique originale d'AMD.
Pour résoudre ce problèmePour explorer de nouvelles façons de manipuler le microcode dans les processeurs AMD, les ingénieurs de Google Ils ont développé Zentool, une collection d'outils combinés pour l'examen des correctifs de microcode, y compris le désassemblage limité, la création de correctifs de microcode à l'aide d'une quantité limitée d'assemblage d'ingénierie inverse.
Zentool a été conçu pour faciliter l'analyse et la modification du microcode, offrant une série de commandes qui permettent de modifier les paramètres et de remplacer les instructions jusqu'au chargement du microcode modifié dans le CPU et à la correction de la signature numérique du patch.
Par exemple, la commande « zentool edit » permet de modifier les paramètres des fichiers de microcode, tandis que « zentool print » affiche des informations détaillées sur les structures internes du microcode. De plus, « zentool load » charge le microcode dans le CPU et « zentool resign » recalcule la signature numérique en tenant compte des modifications apportées. De plus, le package comprend des utilitaires tels que mcas et mcop, qui fournissent des fonctionnalités d'assembleur et de désassembleur pour travailler directement avec le microcode.
Les capacités de Zentool permet aux développeurs de préparer et d'appliquer leurs propres correctifs sur les processeurs AMD Zen. À titre d'exemple, un patch a été préparé qui modifie la logique de l'instruction RDRAND. Après avoir appliqué ce patch, l'instruction RDRAND cesse de générer des séquences pseudo-aléatoires et commence à renvoyer systématiquement le nombre 4, démontrant ainsi la puissance de la modification du microcode et de la modification du comportement attendu du processeur.
Il est important de mentionner que Zentool est livré avec un guide détaillé sur la microarchitecture RISC86 utilisée dans le microcode AMD, ainsi qu'une note d'instruction expliquant comment créer un microcode personnalisé. Le guide montre, entre autres, comment concevoir de nouvelles instructions de processeur, modifier le comportement des instructions existantes et charger ces modifications directement dans le processeur.
Enfin, si vous souhaitez en savoir plus, vous pouvez consulter les détails dans le lien suivant