Les dernières générations de processeurs Intel, y compris les puces Xeon, et les anciennes microarchitectures AMD sous Linux sont vulnérables aux nouvelles attaques d’exécution spéculative qui contournent les atténuations existantes de « Spectre ».
Les vulnérabilités affectent les 12e, 13e et 14e générations de puces Intel pour les consommateurs et les 5e et 6e générations de processeurs Xeon pour les serveurs, ainsi que les processeurs Zen 1, Zen 1+ et Zen 2 d’AMD.
Les attaques sapent la barrière IBPB (Indirect Branch Predictor Barrier) sur les processeurs x86, un mécanisme de défense essentiel contre les attaques d’exécution spéculative.
L’exécution spéculative est une fonctionnalité d’optimisation des performances sur les processeurs modernes qui exécute des instructions avant de savoir si elles sont nécessaires pour les tâches futures, accélérant ainsi le processus lorsque la prédiction est correcte. Les instructions exécutées en fonction de la mauvaise prédiction sont appelées transitoires et sont écrasées.
Ce mécanisme a été une source de risques secondaires, tels que Spectre, car le processus de spéculation appelle des données sensibles qui pourraient être récupérées à partir du cache de la CPU.
Nouvelles attaques de type Spectre
Johannes Wikner et Kaveh Razavi, chercheurs à l’ETH Zurich, expliquent que malgré les efforts d’atténuation pluriannuels pour contenir les attaques de type Spectre, il existe de nombreuses variantes qui contournent les défenses existantes.
Leur contribution est une attaque inter-processus (sur Intel) et une attaque PB-inception (sur AMD) qui permet de détourner des cibles de rendement spéculatif même après l’application d’IBPB, contournant ainsi les protections actuelles et divulguant des informations sensibles.
Dans le premier cas, l’attaque exploite une faille dans le microcode d’Intel où l’IBPB n’invalide pas complètement les prédictions de retour après un changement de contexte.
L’attaquant manipule l’exécution spéculative des instructions de retour, permettant aux prédictions périmées de divulguer des informations sensibles, comme le hachage du mot de passe root, à partir d’un processus suid.
Sur les processeurs AMD, IBPB-on-entry dans le noyau Linux est mal appliqué, ce qui permet au prédicteur de retour de conserver des prédictions obsolètes même après IBPB.
L’attaquant se trompe sur le prédicteur de retour avant le déclenchement d’IBPB, le détournant pour fuir la mémoire privilégiée du noyau après la barrière.
Intervention et mesures d’atténuation
Les chercheurs ont informé Intel et AMD de ces problèmes en juin 2024.
Intel a répondu en disant qu’ils avaient déjà découvert le problème en interne et lui avaient attribué l’identifiant CVE-2023-38575.
La société a publié en mars un correctif de microcode disponible via une mise à jour du micrologiciel, mais les chercheurs notent que le code n’a pas atteint tous les systèmes d’exploitation, Ubuntu en faisant partie.
AMD a également confirmé la vulnérabilité et a déclaré que la faille avait déjà été documentée et suivie sous la référence CVE-2022-23824. Il convient de noter que l’avis d’AMD inclut les produits Zen 3 comme étant concernés, qui ne sont pas répertoriés dans le document de l’ETH Zurich.
Cependant, AMD classe le problème comme un bogue logiciel et non comme une faille matérielle. Les architectures plus anciennes affectées et le fait qu’AMD ait appris l’existence du bogue il y a longtemps peuvent expliquer la décision de l’entreprise de ne pas émettre de microcode correctif.
Bien que les deux fournisseurs de processeurs soient au courant du contournement de Spectre, les entreprises les ont marqués dans les avis comme ayant un impact potentiel. Avec leurs travaux, les chercheurs de l’ETH Zurich ont pu démontrer que l’attaque fonctionne même sur Linux 6.5, qui est livré avec des défenses IBPB-on-entry considérées comme les plus solides contre l’exploitation Spctre.
L’équipe de l’ETH Zurich travaille avec les responsables du noyau Linux pour développer un correctif pour les processeurs AMD, qui sera disponible ici lorsqu’il sera prêt.