// CLUBIC — CYBERSECURITY
Huit ans après Spectre, des chercheurs contournent encore eIBRS et Safe RET
Deux chercheurs du MIT ont trouvé le chaînon manquant des attaques Spectre : l'intervalle qui sépare le nettoyage du processeur de son utilisation. AMD corrige, Intel préfère payer une prime.
Depuis janvier 2018 et la découverte simultanée de Meltdown et de Spectre par les équipes de Google, l'industrie du processeur vit avec une épine dans le pied. L'exécution spéculative, cette technique qui fait deviner au processeur les instructions à venir pour gagner du temps, laisse derrière elle des traces exploitables. Les fondeurs ont répondu par une décennie de correctifs, de microcodes et de protections matérielles, au prix de quelques pertes de performances. Daniël Trujillo, doctorant, et Mengjia Yan, professeure associée au laboratoire d'informatique et d'intelligence artificielle du MIT, viennent de démontrer à Black Hat que cet édifice comporte une faille de conception. Pas seulement des bugs d'implémentation.
Pour comprendre l'idée, il faut regarder ce que font réellement les protections actuelles. Le prédicteur de branchement est la partie du processeur qui parie sur la suite du programme, un peu comme un serveur de restaurant qui commencerait à préparer l'addition avant que vous ayez terminé votre dessert. Une attaque Spectre consiste à truquer ces paris pour orienter le processeur vers du code qui laissera fuiter des données. Les défenses consistent donc à nettoyer ou à isoler ce prédicteur avant qu'une portion sensible du système ne s'exécute.
Intel et AMD ont choisi deux écoles opposées. Le premier nettoie à l'entrée du noyau, via son mécanisme eIBRS complété selon les puces d'une boucle d'effacement de l'historique de branchement. Le second nettoie juste avant chaque retour du noyau, avec le dispositif Safe RET introduit après l'attaque Inception, que Trujillo avait justement co-signée en 2023. Les chercheurs baptisent ces approches neutralisation à l'entrée et neutralisation sur place. Toutes deux partagent un postulat commun : entre le moment où l'on nettoie et celui où la branche protégée s'exécute, rien d'hostile ne peut survenir.
C'est ce postulat que TONTOU fait tomber, l'acronyme signifiant Time-of-Neutralization to Time-of-Use, en écho aux courses TOCTOU bien connues des développeurs. La technique repose sur une primitive baptisée injection d'interruptions : un programme sans le moindre privilège programme des interruptions matérielles à haute fréquence, en espérant que l'une d'elles tombe pile dans cette fenêtre. Linux autorise en effet n'importe quel utilisateur à cadencer des minuteries à la nanoseconde près. Une fois l'interruption placée au bon endroit, son gestionnaire rempoisonne les structures de prédiction, et la branche protégée saute là où l'attaquant le souhaite.
La démonstration a été menée sur du matériel très ordinaire : un Ryzen 7 4700G d'architecture Zen 2, doté de 16 gigaoctets de mémoire. La machine tournait sous Linux 6.14, avec toutes les protections Spectre v2 activées par défaut. Dans ces conditions, l'attaque lit la mémoire du noyau à 5,47 octets par seconde avec 91,97 % de précision. Les chercheurs ont d'abord cassé la randomisation de l'espace d'adressage du noyau, ce garde-fou qui déplace les composants du système en mémoire pour égarer les attaquants. Ils sont ensuite allés chercher le contenu du fichier des mots de passe. Ils l'ont localisé cinq fois sur dix tentatives, avec une moyenne de dix-huit minutes par exécution réussie. Aucun accès administrateur n'est requis : exécuter du code utilisateur sur la machine suffit.
Reste que la portée pratique demande d'être mesurée avec soin, et les chercheurs ne s'en cachent pas. Les tests couvrent quatre plateformes, Cascade Lake Refresh et Arrow Lake chez Intel, Zen 2 et Zen 4 chez AMD. L'exploit complet n'existe toutefois que pour Zen 2, la variante Intel exigeant des conditions logicielles particulières. Un débit de cinq octets par seconde n'a rien d'un pillage industriel, et les dix-huit minutes de la démonstration supposent que l'a