Certains microprocesseurs d’Intel et d’AMD sont vulnérables à une attaque d’exécution spéculative récemment découverte qui peut divulguer secrètement des données de mot de passe et d’autres éléments sensibles, obligeant les deux fabricants de puces à se démener une fois de plus pour contenir ce qui s’avère être une vulnérabilité obstinément persistante.
Des chercheurs de l’ETH Zurich ont nommé leur attaque Retbleed parce qu’elle exploite une défense logicielle connue sous le nom de retpoline, qui a été introduite en 2018 pour atténuer les effets néfastes des attaques d’exécution spéculative. Les attaques d’exécution spéculative, également connues sous le nom de Spectre, exploitent le fait que lorsque les processeurs modernes rencontrent une branche d’instruction directe ou indirecte, ils prédisent l’adresse de la prochaine instruction qu’ils sont sur le point de recevoir et l’exécutent automatiquement avant que la prédiction ne soit confirmée. Spectre fonctionne en incitant le CPU à exécuter une instruction qui accède à des données sensibles en mémoire qui seraient normalement interdites à une application à faibles privilèges. Rebleed extrait ensuite les données après l’annulation de l’opération.
Est-ce un trampoline ou une fronde ?
Retpoline fonctionne en utilisant une série d’opérations de retour pour isoler les branches indirectes des attaques d’exécution spéculative, érigeant en fait l’équivalent logiciel d’un trampoline qui les fait rebondir en toute sécurité. En d’autres termes, une retpoline fonctionne en remplaçant les sauts et les appels indirects par des retours, dont de nombreux chercheurs ont supposé qu’ils n’étaient pas sensibles. La défense a été conçue pour contrer la variante 2 des attaques d’exécution spéculative originales de janvier 2018. En abrégé BTI, la variante force une branche indirecte à exécuter un code dit “gadget”, qui à son tour crée des fuites de données via un canal latéral.
Certains chercheurs avertissent depuis des années que la retpoline n’est pas suffisante pour atténuer les attaques d’exécution spéculative, car les retours de retpoline utilisés étaient sensibles au BTI. Le créateur de Linux, Linus Torvalds, a rejeté ces avertissements, arguant que de tels exploits n’étaient pas pratiques.
Les chercheurs de l’ETH Zurich ont démontré de manière concluante que la retpoline est insuffisante pour prévenir les attaques d’exécution spéculative. Leur preuve de concept Retbleed fonctionne avec les processeurs Intel avec les microarchitectures Kaby Lake et Coffee Lake et les microarchitectures AMD Zen 1, Zen 1+ et Zen 2.
Publicité
“Retpoline, en tant qu’atténuation Spectre-BTI, ne considère pas les instructions de retour comme un vecteur d’attaque”, ont écrit les chercheurs Johannes Wikner et Kaveh Razavi. “Bien qu’il soit possible de défendre les instructions de retour en ajoutant une entrée valide au RSB [return stack buffer] avant d’exécuter l’instruction de retour, traiter chaque retour comme potentiellement exploitable de cette manière imposerait une surcharge énorme. Des travaux antérieurs ont tenté de remplir conditionnellement le RSB avec des cibles de retour inoffensives chaque fois qu’un compteur perCPU qui suit la profondeur de la pile des appels atteint un certain seuil, mais il n’a jamais été approuvé pour l’amont. À la lumière de Retbleed, cette atténuation est réévaluée par Intel, mais les processeurs AMD nécessitent une stratégie différente.
Dans un e-mail, Razavi l’a expliqué ainsi :
La variante 2 de Spectre exploitait des branches indirectes pour obtenir une exécution spéculative arbitraire dans le noyau. Les branches indirectes ont été converties en retours en utilisant la retpoline pour atténuer la variante 2 de Spectre.
Rebleed montre que les instructions de retour fuient malheureusement dans certaines conditions similaires aux branches indirectes. Ces conditions sont malheureusement courantes sur les plates-formes Intel (Skylake et basées sur Skylake) et AMD (Zen, Zen+ et Zen2). Cela signifie que la retpoline était malheureusement une atténuation inadéquate au départ.
En réponse à la recherche, Intel et AMD ont conseillé aux clients d’adopter de nouvelles mesures d’atténuation qui, selon les chercheurs, ajouteront jusqu’à 28 % de frais généraux supplémentaires aux opérations.
Rebleed peut faire fuir la mémoire du noyau des processeurs Intel à environ 219 octets par seconde et avec une précision de 98 %. L’exploit peut extraire la mémoire du noyau des processeurs AMD avec une bande passante de 3,9 Ko par seconde. Les chercheurs ont déclaré qu’il était capable de localiser et de divulguer le hachage du mot de passe racine d’un ordinateur Linux à partir de la mémoire physique en environ 28 minutes lors de l’exécution des processeurs Intel et en environ 6 minutes pour les processeurs AMD.
Retbleed fonctionne en utilisant un code qui empoisonne essentiellement l’unité de prédiction de branche sur laquelle les processeurs s’appuient pour faire leurs suppositions. Une fois l’empoisonnement terminé, ce BPU fera des prédictions erronées que l’attaquant pourra contrôler.
“Nous avons découvert que nous pouvions injecter des cibles de branche qui résident dans l’espace d’adressage du noyau, même en tant qu’utilisateur non privilégié”, ont écrit les chercheurs dans un article de blog. “Même si nous ne pouvons pas accéder aux cibles de branche à l’intérieur de l’espace d’adressage du noyau – se brancher à une telle cible entraîne une erreur de page – l’unité de prédiction de branche se mettra à jour en observant une branche et supposera qu’elle a été légalement exécutée, même si c’est à un adresse du noyau.