Les chercheurs des universités du Maryland aux États-Unis et de Tsinghua en Chine ont publié un rapport scientifique qui décrit une nouvelle méthode d’attaque par canal auxiliaire qui exploite une vulnérabilité hardware jusqu’alors inconnue des processeurs Intel. Même si la vulnérabilité ne semble concerner que les derniers processeurs du fabricant de puces, l’attaque est plus efficace si elle cible les modèles plus anciens qui sont aussi exposés à la vulnérabilité Meltdown. Ce rapport n’aurait qu’un intérêt purement scientifique si ce n’est pour un détail : les cybercriminels volent les informations sensibles en modifiant les données du registre d’état.
Clairement et simplement, s’il vous plaît
Les vulnérabilités hardware du processeur liées à l’exécution spéculative des instructions ont fait l’objet de diverses études depuis plus de cinq ans. Pour simplifier autant que possible, toutes les attaques proposées peuvent être résumées de la façon suivante : le processeur est forcé tant bien que mal à lire les données auxquelles l’utilisateur ne devrait pas avoir accès. Imaginez cette situation théorique : le programme des cybercriminels n’a pas accès à la clé de chiffrement utilisée pour protéger les données sensibles. Si nous donnons l’ordre au processeur de « lire la clé de chiffrement d’une adresse concrète », l’instruction ne sera pas suivie. L’exécution spéculative des instructions vole au secours des cybercriminels ; il s’agit d’une fonctionnalité importante des processeurs modernes qui existe depuis près de trente ans. Pour accélérer les choses, au lieu d’attendre qu’une instruction finisse, le processeur exécute la suivante en parallèle.
Si la première instruction vérifie les droits d’accès aux informations sensibles, elle devrait en théorie ne pas autoriser l’exécution de l’instruction suivante qui autoriserait la lecture des informations. Pourtant, c’est trop tard : l’instruction suivante est déjà exécutée de façon spéculative. Il convient de souligner que nous n’avons pas encore accès aux données contrairement au processeur qui lui peut y accéder. Dans le cas des vulnérabilités connues comme Spectre, les données sont temporairement chargées dans le cache du processeur mais ne peuvent pas simplement être lues. Pourtant, elles peuvent être lues via las canaux auxiliaires. Par exemple, en exécutant une instruction de façon répétée puisque le temps de traitement dépend des données dans le cache. La répétition de l’opération plusieurs (voire des milliers de) fois permet aux cybercriminels de récupérer les données en regardant si les commandes envoyées, et apparemment inoffensives, sont exécutées plus ou moins rapidement.
Nous savons que cette description « simplifiée » est encore compliquée à comprendre. Ce nouveau rapport est encore plus déconcertant puisque les auteurs ont décidé de ne pas prendre le temps de décrire l’attaque en détail. Le diagramme ci-dessous en dessine les grands lignes :
Essayons de comprendre. EFLAGS est un registre d’état du processeur Intel qui conserve tous les statuts d’exploitation du processeur. Il peut conserver les résultats des calculs, notamment s’ils sont égaux à zéro (ce que l’on appelle l’indicateur de zéro ou ZF). C’est à ce moment-là que la magie opère : imaginez qu’un de vos collègues pense à un chiffre entre 1 et 10 et qu’il doit s’en souvenir et ne le dire à personne. Vous dites tous les chiffres entre 1 et 10, en espérant remarquer une réaction de sa part à un moment donné, mais il ne veut pas vous dire quelle est la bonne réponse et vous répond à chaque fois « chrysanthème ». Pourtant, lorsque vous prononcez le bon chiffre il met plus de temps à dire « chrysanthème » que les autres fois.
Quelque chose de similaire se passe avec cette nouvelle attaque. Nous réalisons plusieurs calculs avec les données sensibles. Tous ces calculs sont faits de façon spéculative. Les résultats sont écrits avec l’indicateur ZF (qu’ils soient ou non égaux à 0). Nous ne pouvons pas directement connaître le statut de cet indicateur. Puis nous exécutons une instruction JCC assez inhabituelle (notamment l’instruction JZ, « jump if zero« ) qui s’exécute un peu lentement si nous avons bien deviné ! C’est ce retard mesurable dans la réponse qui constitue la vulnérabilité.
Ce n’est pas encore un problème
L’aspect le plus intéressant de cette attaque est qu’elle ne fonctionne pas seule. Afin de garantir que l’exécution spéculative des instructions requises est possible, les cybercriminels doivent exploiter une autre vulnérabilité. Le document dont nous parlons exploite la vulnérabilité Meltdown, découverte en 2018, qui autorise volontiers les intrus à accéder aux informations interdites. Par conséquent, les données sensibles sont lues avec une fiabilité de 100 % sur tous les anciens processeurs concernés par cette vulnérabilité (l’étude a utilisé les processeurs Intel Core i7 de sixième et septième génération). Même si l’étude a échoué avec les processeurs de dixième génération, ces derniers avaient aussi un certain retard lorsqu’ils exécutaient une instruction particulière du set JCC.
En réalité, les types d’attaques encore plus versatiles, comme Spectre qui vole les informations du cache du processeur, ont une application beaucoup plus limitée. Au moins, dans ce cas, il était évident qu’il fallait faire quelque chose : la probabilité de souffrir d’une attaque avancée qui cible les données critiques est non nulle. Quant à ce nouveau rapport, il s’agit là d’une idée qui, si elle fonctionne, concerne plutôt les anciens processeurs Intel.
Pourtant la nouvelle est importante : il y a désormais un nouveau mécanisme du canal auxiliaire qui permet d’extraire les données en utilisant le registre du statut de l’indicateur. À l’avenir, il ne peut être exclu que cette approche pourrait aussi affecter les nouveaux processeurs si elle est associée à une autre vulnérabilité. Peut-être que tout sera résolu avant qu’il y ait une nouvelle attaque. Après tout, la dépendance du temps d’exécution de l’instruction aux données est un problème assez grave. Il y a une sous-discipline de la cryptographie qui traite la protection des algorithmes de chiffrement dans les attaques temporelles.
Dans tous les cas, des recherches sont en cours pour étudier les processeurs modernes en détail. Heureusement, l’exécution d’une attaque qui exploite les vulnérabilités hardware est tout aussi difficile que sa compréhension. Même si nous n’avons pas encore vu quelque chose qui pourrait être exécuté à grande échelle, les experts en sécurité informatique des entreprises qui gèrent des données extrêmement sensibles auraient intérêt à prendre ce facteur en considération et à le considérer comme une menace, et devraient au moins suivre son évolution.