29 avril 2019
Après elles, une dizaine d’autres failles du genre a émergé. Une surprise de taille car les processeurs ont toujours été relativement épargnés par les vulnérabilités.
Un processeur, aussi appelé unité centrale de traitement (UCT)*, est un composant informatique qui rend possible l’exécution des instructions et des programmes.
Rarement touchés par les vulnérabilités, à partir de 2018, les processeurs ont pourtant fait l’objet de nombreuses publications de chercheurs pointant leurs failles. Les premières ont été Spectre et Meltdown, en janvier 2018.
Le marché des processeurs est dominé par l’entreprise Intel, mais AMD et ARM ont également réussi à sortir leur épingle du jeu. Ce sont les principales marques touchées par les vulnérabilités « spéculatives ».
Afin de gagner en rapidité, les fabricants de processeurs ont implémenté des mécanismes d’optimisation. Ils ont notamment donné aux processeurs la capacité de prédire en amont le résultat des branchements via l’exécution spéculative.
Un branchement, c’est une opération qui permet de modifier le flux d’exécution usuel d’un programme. Il offre plusieurs options au programme lorsqu’une condition est rencontrée (un « if » par exemple).
Par exemple :
Concrètement, afin de gagner du temps, la spéculation permet de prédire les résultats des branchements en avance, avant qu’ils soient réellement exécutés et mis à disposition du système d’exploitation. Et donc, que l’utilisateur ait entré ou non un mot de passe valide.
Ce contournement des vérifications de sécurité prévues dans le développement des programmes rend la machine vulnérable car le résultat de ces calculs spéculatifs reste stocké dans des caches** pouvant contenir des données potentiellement sensibles pour lesquelles la condition était la protection. Cette vulnérabilité autorise une exploitation via des attaques par canaux auxiliaire, en anglais side channel attack sur les caches des processeurs permettant la récupération de données par un attaquant.
La première faille de ce type a été répertoriée sous le nom de Spectre.
Spectre et Meltdown ont des similitudes : elles touchent toutes deux les processeurs, proviennent d’optimisations de ces derniers et sont exploitables via des attaques par canaux auxiliaires. Si la vulnérabilité Spectre provient de la prédiction de branches, Meltdown s’appuie sur un autre procédé : l’exécution dans le désordre (en anglais, out of order execution). Toujours dans un souci de rapidité, les processeurs ont la possibilité de réorganiser l’ordre dans lequel les instructions s’exécutent.
Pour réaliser cette exécution dans le désordre, il existe en effet une fenêtre pendant laquelle aucune vérification n’est réalisée sur les permissions du programme. Ainsi, il est possible d’accéder au contenu de la mémoire pouvant contenir des informations secrètes comme des mots de passes ou des clés privées. De plus, comme dans le cas de Spectre, l’influence de ces opérations sur le cache peuvent permettre l’exfiltration des données via les techniques d’attaques par canaux auxiliaires.
Dans le cas précis de Meltdown, il devient possible de charger des données provenant du noyau.
Cela casse un principe fondamental de la sécurité des systèmes : l’isolation mémoire, et principalement la séparation entre l’espace utilisateur et le noyau du système d’exploitation. C’est d’ailleurs pour cette raison que la vulnérabilité porte ce nom : Melt signifie « fondre » en anglais, en référence à la fonte de l’isolation de la mémoire.
A ce jour, il n’existe pas d’exploitation connue : les vulnérabilités de ce type demeurent en effet extrêmement complexes. La réussite d’une exploitation étant fortement liée à l’architecture de la machine, un code d’exploitation ne sera pas forcement adapté à toutes les configurations.
Dans le cas de Spectre, le butin d’un potentiel piratage demeure très incertain : beaucoup de données sont stockées au sein des fameux caches, qui restent très difficiles d’accès.
Afin de corriger ces failles, il a fallu accepter de perdre en rapidité, qui est pourtant l’un des éléments les plus différenciateurs sur ce marché. Par ailleurs, presque la totalité des équipements dans le monde, qu’il s’agisse d’ordinateurs, de serveurs, de tablettes ou de mobiles sont équipés de processeurs. C’est donc l’ensemble des utilisateurs qui a été touché.
Plus qu’une menace informatique, la réelle crainte à propos de ce type de vulnérabilités est en fait économique. Les acteurs principaux que sont Intel, ARM ou AMD font face à un choix cornélien : perdre en compétitivité ou en sécurité.
Spectre et Meltdown sont les premières vulnérabilités de ce type à avoir été révélées. Si elles ont fait grand bruit, c’est parce qu’elles sont d’un tout nouveau genre. Jusqu’alors, même si le risque zéro n’existait pas, les processeurs demeuraient plutôt épargnés par les failles informatiques. Après des années sans quasiment aucune publication, l’année 2018 a été riche et pour cause, Spectre et Meltdown ont ouvert la voie aux chercheurs.
Criticité de l’impact :
Grave : possibilité de d‘obtenir toute la mémoire (principalement les vulnérabilités Meltdown-like)
Modérée : vulnérabilité de type Spectre-like
Basse : Variante très spécifique de Spectre
Complexité d’exploitation
*** : très dépendant de la connaissance micro-architectural (élément important pour réaliser les side-channel et influencer le système)
** : dépendant de la connaissance micro-architectural
* : moins dépendant
Les chercheurs à l’origine de Spectre et Meltdown l’ont annoncé et l’année 2018 l’a prouvé, d’autres vulnérabilités basées sur l’exécution spéculative existent. En 2019, la vulnérabilité SPOILER a été découverte et peut permettre de faire fuiter des informations de la mémoire (plus précisément, les adresses mémoire physique).
Notes :
*En anglais, les processeurs sont appelés CPU, pour central processing unit.
**Un cache est un registre au niveau micro-architectural.