Une fonction non documentée dans les processeurs Intel permet de manipuler la tension des puces pour déclencher des erreurs de calcul de manière contrôlée. La procédure peut servir à contourner les protections de sécurité de l'environnement d'exécution sécurisé Intel Software Guard Extensions (SGX), destiné à protéger les secrets cryptographiques et à isoler l'exécution de code sensible en mémoire. La technologie SGX (Software Guard Extensions), intégrée aux processeurs Intel modernes, permet aux utilisateurs de créer des régions de mémoire privées, appelée enclaves, dans lesquelles le processeur crypte une partie de la mémoire et interdit à tout programme, sauf à ceux qui fonctionnent à l'intérieur de l'enclave, d'y accéder.

Comme la plupart des environnements d'exécution fiables, la solution Intel SGX est destinée à protéger les données lorsqu'elles sont utilisées dans la mémoire d'un programme, même si des attaquants parviennent à gagner un accès privilégié au système d'exploitation, ou à l'hyperviseur dans le cas des environnements virtualisés. Ces environnements d'exécution de confiance sont particulièrement utiles pour protéger les opérations de chiffrement et les clés sur l'infrastructure de cloud public. C’est sur ces composants que s’appuient par exemple les offres Confidential Computing de Microsoft Azure.

Des chercheurs des universités de Birmingham au Royaume-Uni, de la Graz University of Technology en Autriche et de la KU Leuven en Belgique ont développé une attaque par injection de fautes. Appelée Plundervolt, l’attaque permet de compromettre les données secrètes des enclaves de la mémoire SGX d’Intel et éventuellement, de déclencher des erreurs de sécurité mémoire dans des programmes qui ne comportent pas ces bugs dans leur code.

Injection de fautes par manipulation de la tension du CPU

Les attaques par injection de fautes ne sont pas nouvelles. Elles consistent à modifier les conditions normales de fonctionnement d'un système pour découvrir des erreurs inattendues. Ce genre d’attaques a été utilisé dans le domaine de la cryptanalyse comme canal secondaire pour déduire des informations sur l'état interne des systèmes cryptographiques et pour récupérer des clés de chiffrement en manipulant la tension d'alimentation du CPU, l'horloge interne et d'autres facteurs environnementaux. Cette technique est connue sous le nom d'analyse différentielle des fautes.

La vulnérabilité Plundervolt est similaire, mais au lieu d’être basée sur une manipulation physique, elle exploite une fonction de mise à l'échelle dynamique de la tension offerte par les processeurs Intel, fonction qu’il est possible de déclencher par voie logicielle via un registre spécifique de modèle ou Model Specific Register (MSR). L’existence de cette interface logicielle non documentée est liée au fait que les CPU modernes ajustent automatiquement leur fréquence de fonctionnement, et donc leur tension d'alimentation, en fonction de la charge de travail pour limiter la consommation d’énergie (électrique et température). « En utilisant cette interface pour diminuer très brièvement la tension du CPU lors d'un calcul dans une enclave SGX ciblée, nous avons démontré qu'un attaquant disposant d’accès privilégiés était capable d'injecter des erreurs dans les calculs d'enclaves protégées », ont expliqué les chercheurs dans leur article. « Surtout, parce que les défaillances se produisent à l'intérieur du package processeur, c'est-à-dire avant que les résultats ne soient mis en mémoire, la technologie de protection de l'intégrité de mémoire SGX d'Intel ne parvient pas à défendre l’environnement contre ces attaques. À notre connaissance, nous sommes les premiers à présenter une attaque qui viole directement les garanties d'intégrité de la technologie Software Guard Extensions ».

Plundervolt affecte tous les processeurs Intel Core compatibles SGX, à commencer par la génération Skylake. L'interface de réduction de la tension est aussi présente dans les précédentes générations de processeurs Intel Core, mais elle ne constitue pas une menace en dehors du contexte SGX.

Attaques à distance

Pour accéder au registre spécifique de modèle MSR en vue de manipuler la mise à l'échelle dynamique de la tension, les attaquants ont besoin de privilèges root sur le système d'exploitation. Cependant, SGX a été spécialement conçu pour garantir la confidentialité et l'intégrité de l'exécution du code et de la mémoire de l'enclave, même en cas de compromis de ce genre. Comme l'accès physique n'est pas nécessaire pour manipuler la tension, les attaques peuvent être exécutées à distance si l'attaquant parvient à gagner le privilège d’exécution de code sur le système.

« Les attaques par injection de fautes logicielles changent le schéma de la menace. L’attaquant n’a plus besoin d’avoir un accès physique à l'appareil cible. Un attaquant distant peut exécuter du code en local », ont déclaré les chercheurs. « À l’origine, ces attaques étaient intéressantes dans des scénarios où l'attaquant n’a pas de privilèges ou même dans un bac à sable. Mais, avec les technologies d'exécution sécurisées comme Intel SGX, ARM TrustZone et AMD SEV, il faut désormais considérer les attaquants avec privilèges comme des menaces potentielles ». Les chercheurs ont démontré qu'ils pouvaient utiliser cette attaque pour extraire des clés complètes des implémentations RSA-CRT et AES-NI d'Intel, avec accélération matérielle AES, lors de l'exécution dans des enclaves SGX. Ils précisent aussi que l’opération a pu être réalisée en quelques minutes, sans ressources de calcul importantes.

Erreurs de sécurité mémoire

L’exploitation de la vulnérabilité du canal latéral du processeur Foreshadow avait déjà permis d’extraire des clés cryptographiques d'Intel SGX. Mais Plundervolt permet également de violer les garanties d'intégrité mémoire des enclaves SGX en introduisant artificiellement des vulnérabilités de sécurité mémoire dans un code normalement sans bogue. En d'autres termes, même si les développeurs font tout le nécessaire et s'assurent que leur code ne contient aucune vulnérabilité, les attaquants peuvent utiliser cette technique pour injecter des erreurs dans le code pendant son exécution dans une enclave. « À notre connaissance, nous sommes les premiers à explorer les implications sur la sécurité mémoire des multiplications défectueuses dans le code généré par le compilateur », ont encore déclaré les chercheurs. « Par rapport aux travaux antérieurs qui ont démontré que les attaques par injection de fautes par mise à l'échelle de la tension contre les implémentations cryptographiques d'ARM TrustZone, nous montrons cette fois que la manipulation de la tension n’a pas seulement un impact sur les algorithmes cryptographiques », ont-ils ajouté.

Atténuation et intervention

Dans leur article, les chercheurs proposent plusieurs contre-mesures, tant au niveau du matériel et du firmware qu'au niveau du logiciel grâce à l'utilisation de primitives cryptographiques résistantes aux erreurs, et également grâce au renforcement des applications et des compilateurs. Cependant, bon nombre d'entre elles présente divers inconvénients, notamment un impact potentiel sur les performances. Les chercheurs ont signalé la vulnérabilité à Intel au mois de juin pour la première fois, mais celle-ci a été également découverte par d'autres équipes de chercheurs qui l'ont signalée en août. Le fondeur estime que le problème est très grave (7,9 sur l'échelle CVSS) et a émis un avis de suivi portant la référence CVE-2019-11157. L’entreprise a collaboré avec des partenaires pour livrer des mises à jour du BIOS afin d'y remédier.

Selon les chercheurs, le patch d'Intel consiste à désactiver l'accès à l'interface de mise à l'échelle de tension MSR identifiée dans leur article. Cependant, ils font remarquer que d'autres options d'injection de fautes, non identifiées pour l’instant, peuvent peut-être exploiter d'autres fonctions de gestion de l'alimentation ou de l'horloge. « Les dernières versions du firmware d'Intel, disponible soit via l’avis de sécurité Red Hat Security Advisory (RHSA) (RHSA) publié aujourd'hui, soit directement auprès d’Intel, résolvent tous les problèmes annoncés publiquement aujourd'hui », a déclaré Christopher Robinson, chef de programme pour la sécurité des produits chez Red Hat. « Actuellement, Red Hat n'implémente pas SGX, si bien que nos clients ne sont pas affectés par les attaques liées à SGX. Comme toute vulnérabilité, Red Hat Product Security conseille aux administrateurs système d'évaluer les risques particuliers et les expositions dans leur propre environnement, et les encourage fortement à déployer les dernières mises à jour de sécurité pour corriger les vulnérabilités connues dès que possible ». Microsoft n'a pas répondu immédiatement à une demande de commentaires de nos confrères de CSO.