L’origine du mal : les exécutions spéculatives

Depuis plus de deux ans, les chercheurs en cybersécurité découvrent failles de vulnérabilités sur failles de vulnérabilités affectant toujours les processeurs Intel, parfois les processeurs AMD et rarement d’autres processeurs.

Elles ont en commun les exécutions spéculatives, une optimisation des processeurs qui permettent d’effectuer un ensemble de traitements avant de savoir si on en a besoin ou non. S’il s’avère nécessaire, du temps a été gagné. Dans le cas inverse, on ignore les résultats, sans pénalité.

L’objectif est de fournir une parallélisation accrue quand des ressources supplémentaires sont disponibles. L’approche est employée dans de nombreux domaines : prédiction de branchement, prédiction de valeur, charger par avance de la mémoire et des fichiers, etc.

Le problème de ce type de vulnérabilités, quand elles sont liées à un processeur, est qu’elles ne sont généralement pas corrigeables : il faut produire de nouvelles puces physiquement corrigées. À l’usage, on s’aperçoit que Intel n’effectue même pas ces corrections.

On doit donc avoir recours, dans le meilleur des cas, à des solutions d’atténuation qui ont souvent des coûts absolument prohibitifs en performances.

Dans ces conditions, on peut se demander pourquoi Intel ne fait pas, une fois pour toutes, table rase de tous les procédés spéculatifs dans une future itération de ses processeurs.

SGAxe et CrossTalk

Points communs

Récemment, deux nouvelles vulnérabilités ont été découvertes : SGAxe et CrossTalk.

Elles s’attaquent à Intel Software Guard Extensions (SGX), un ensemble de micro-instructions liées à la sécurité. Elles permettent au code au niveau de l’utilisateur ou du système d’exploitation de définir des enclaves : des régions de la mémoire qui deviennent privées, et dont le contenu est protégé contre la lecture et l’écriture par tout processus, en dehors de l’enclave elle-même.

Les deux vulnérabilités exploitent un même type d’attaque : une attaque par canal auxiliaire, c’est-à-dire une attaque qui ne s’attaque pas directement à un algorithme de sécurité, mais une attaque qui se base sur les informations que l’on peut capturer à cause de son implémentation : informations de timing, de consommation électrique, fuites électromagnétiques, etc.

SGAxe

SGAxe, par des chercheurs des Universités de Michigan et d’Adélaïde, est une évolution de CacheOut s’attaquant spécifiquement aux enclaves SGX. CacheOut est une attaque contre les exécutions spéculatives découvertes par les mêmes personnes il y a six mois, elle-même inspirée de l’attaque RIDL dévoilée en mai 2019.

Intel ne s’est jamais donné la peine de corriger le silicone contre RIDL, se contentant de distribuer des microcodes avec une solution d’atténuation. C’est cette dernière qui fut déjouée par CacheOut.

SGAxe contourne les solutions d’atténuation développées par Intel pour protéger SGX des attaques par canal auxiliaire. Les chercheurs réussissent à extraire les clés d’attestation privées des enclaves, ce qui permet de signer de fausses attestations, comme si elles provenaient directement des enclaves SGX. Un logiciel malveillant peut alors se faire passer pour une enclave SGX auprès d’un tiers.

Les chercheurs montrent ainsi qu’ils peuvent extraire des données critiques, comme des clés de chiffrement. En moins d’une minute.

Il n’y a pas de solution d’atténuation connue. Il faudra attendre que Intel publie un nouveau microcode, et que ce dernier soit mis à disposition aux utilisateurs finaux par le biais d’une mise à jour du BIOS d’une carte mère. Or les fabricants de cartes mères cessent de fournir des mises à jour quelques années après la commercialisation d’une carte mère…

 

Crosstalk

La vulnérabilité découverte par les universités ETH Zurich et Vrije Universiteit Amsterdam, montre pour la première fois que les exécutions spéculatives permettent à un attaquant de voler des informations sensibles quel que soit le cœur du processeur Intel, déjouant ainsi toutes les solutions d’atténuation intracœurs.

Le code de l’attaquant peut donc s’effectuer sur un cœur, et le code de la victime tourner sur un autre cœur.

CrossTalk est le nom du profileur développé par les chercheurs pour comprendre ce qui se passe dans le cas d’instructions x86 complexes qui dépassent les frontières d’un cœur. Il a permis de mettre en évidence l’utilisation d’une mémoire tampon partagée par tous les cœurs d’un processeur, à laquelle ces instructions font appel.

Il montre que des données sensibles transitent dans cette mémoire tampon, y compris les résultats du générateur matériel de nombres aléatoires.

Les chercheurs ont prouvé qu’on pouvait obtenir ces informations par une attaque de type RIDL, et qu’en pratique, les attaques fonctionnent contre les enclaves SGX.

Là encore, il n’y a aucun moyen de se protéger totalement, on peut juste espérer atténuer les risques, avec un nouveau microcode mis à disposition par Intel le 9 juin 2020. Voir ci-dessus pour les difficultés à obtenir en pratique un correctif pour l’utilisateur final.

Ici aussi, comme le coût de protection est prohibitif en pertes de performance, Intel limite la portée de l’atténuation aux seules instructions RDRAND, RDSEED et EGETKEY.