Sécurité informatique : les attaques MELTDOWN et SPECTRE
Le monde numérique est en ébullition depuis quelques semaines suite aux révélations faites au sujet de failles concernant certains processeurs informatiques. Elles sont d’autant plus préoccupantes qu’elles touchent des matériels en service depuis de nombreuses années et des plus répandus sur la planète. Surnommées Meltdown et Spectre, elles sont une porte ouverte à de réelles menaces ayant potentiellement un impact en termes de vol de données mais surtout de sécurité pendant les transactions numériques.
I – Des matériels faillibles sous la menace d’attaques virales
a – Une faille dans le hardware de certains processeurs
Tout d’abord, notons qu’il ne s’agit pas de virus, mais simplement de procédés révélés début 2018 par différentes entités (académiques, industriels) permettant de contourner les mécanismes de sécurité en place dans les processeurs de beaucoup de PCs ou Smartphones actuels. Ces processeurs émanent de fabricants (surtout Intel mais aussi AMD dans le cas de Spectre) ou se conforment à l’architecture ARM. Ces vulnérabilités sont graves car elles proviennent d’insuffisances dans l’architecture et le hardware de ces processeurs, et ne sont que partiellement palliées par des mises à jour logicielles des OS sur ces machines. Malheureusement, le hardware ne se « patche » pas à distance !
Ce n’est pas la première fois que le hard est mis en question : en 1994, le coprocesseur de calcul flottant des Pentiums faisait des erreurs de calcul, et ceci coûta des millions de dollars à Intel. Cette fois-ci, le cours d’Intel a baissé début Janvier de 5%, et l’affaire n’est pas close.
b – Des portes d’entrée aux virus
Ces vulnérabilités pourraient être utilisées par un virus afin d’extraire les secrets (clés, mots de passe) d’une application quelconque. Secrets, qui lors de l’exécution de cette application, seraient gérés par l’OS. Avec Spectre, une application pourrait interférer avec une autre application, ce qui est particulièrement grave dans le cas des serveurs, avec virtualisation ou pas.
c – Aucune attaque virale constatée pour le moment
Pour le moment, nous n’en sommes pas là puisque personne n’a constaté d’attaques virales basées sur les vulnérabilités en question. Attaques qui, d’ailleurs, ne sont pas faciles à mettre en œuvre. Par ailleurs, la diffusion d’un virus exige non seulement de profiter d’une vulnérabilité, mais aussi de développer un moyen de propagation efficace et rapide, ainsi qu’un moyen d’en recueillir les bénéfices : voir par exemple le virus Wannacry !
d – Des gestes qui sauvent
Quoiqu’il en soit, l’application rapide de mises à jour d’OS et la sauvegarde régulière des données utilisateur sont des actions de plus en plus vitales dans ce contexte de menaces de plus en plus fréquentes.
II – Processus de fonctionnement des attaques Spectre et Meltdown
a – Notions d’architecture informatique
Afin d’expliquer les attaques Meltdown ou Spectre, il convient de connaître quelques principes de fonctionnement et d’architecture des microprocesseurs modernes assurant la fonction de CPU : Central Processing Unit (moderne ici est très relatif, car ces architectures existent depuis de nombreuses années).
3 détails de fonctionnement sont concernés :
Mémoires cache, ou comment accélérer les échanges d’instructions ou de données entre mémoire externe RAM et le CPU,
Protections et Isolation des programmes (OS ou applications) entre eux,
Exécution parallèle des instructions, pour accélérer les programmes.
b – Fonctionnement du cache informatique
Les CPU contiennent une antémémoire appelée cache de quelques méga-octets qui contient des copies de petits blocs de la RAM appelés pages, 256 octets par exemple.
c – Principe d’isolation des données
Comme plusieurs programmes sont actifs en même temps, il convient d’éviter qu’un programme n’aille lire/écrire dans les données d’un autre programme ou celles de l’OS. Les mécanismes utilisés sont variables : par exemple un bit de protection pour chaque mémoire de l’OS, une violation de l’isolation entraînant aussitôt un appel à l’OS qui peut « tuer » le programme fautif.
d – L’exécution des programmes
L’exécution de chaque instruction (se trouvant quelque part dans une page du cache) par le CPU demande la réalisation d’un certain nombre d’étapes : décodage de l’instruction, calcul de l’adresse de chaque opérande, lecture des opérandes avec chargement éventuel des pages concernées, calcul du résultat, réécriture des pages modifiées en RAM, etc. Chaque étape est réalisée dans des « execution units » spécifiques.
III – Comment connaître la valeur x d’un octet à une adresse protégée a
a – le principe d’exécution de séquence
Un premier programme P contient un pointeur A, initialisé avec a, un tableau T de 216 octets et deux variables u et v ; on suppose que les pages font 256 octets et que T est aligné sur une frontière de page.
P exécute une séquence d’instruction du type :
u=(A) ; (u en cache est chargé avec l’octet dont l’adresse est dans A : x)
v=T[u*256] ; (v en cache est chargé avec l’octet de T d’index u*256)
Que va provoquer cette séquence ?
Avec l’exécution spéculative, cette séquence de deux instructions sera exécutée en partie, avant qu’une exception ne tue ce programme P qui sort de son espace alloué, et les variables u et v ne seront pas réécrites en RAM. Il n’y a donc pas de divulgation de la valeur x dans la variable u.
Mais l’important est, à cause de la deuxième instruction, le chargement en cache d’une page contenant les octets du tableau à partir de x*256. Un deuxième programme P’ partageant T avec P va alors lire T[i*256] pour i variant de 0 à 255 ; lorsque i sera égal à x, la lecture sera beaucoup plus rapide que pour i#x car dans ce cas, ces plages d’adresse ne seront pas en cache, car non encore lues par P. Le temps de réponse peut être mesuré par P’ avec un « timer» : registre du CPU s’incrémentant au rythme de l’horloge CPU, et accessible en lecture par les programmes.
P’ connaît donc la valeur x de l’octet à l’adresse a.
b – Comment faire un dump de la mémoire protégée
Tout devient simple : il suffit de répéter ce qui précède pour toutes les adresses a « intéressantes » pour l’attaquant ! Les auteurs de ces attaques annoncent une vitesse de lecture de 500kb/s.
IV – Remarques sur les attaques Spectre et Meltdown
La fragilité réelle d’un CPU dépend de détails très fins d’implémentation concernant ces diverses fonctions d’accélération et d’isolation.
Ainsi, Meltdown ne fonctionne pas sur les CPU AMD car il semblerait que la fonction isolation y empêche le chargement de page décrit ci-dessus. Ce n’est pas le cas des CPU INTEL ou ARM pour les smartphones.
Les différences entre Spectre et Meltdown sont du deuxième ordre par rapport à ce papier de vulgarisation. Dans ces 2 attaques, on utilise donc le fait que l’exécution parallèle des instructions peut dans certains cas donner des informations observables (temps d’exécution) et créer un « canal caché » vers un attaquant.
En conclusion, à l’heure où l’économie mondiale est gouvernée par des échanges numériques, il est essentiel de s’assurer que de telles failles informatiques soient rapidement identifiées et résolues. Même si aucune attaque n’a encore été officiellement détectée, il va sans dire que certaines transactions sont aujourd’hui exposées à une divulgation des données sensibles. Créés il y a plus de dix ans, les processus (exécution out-of-order ou spéculative) exploités par Meltdown et Spectre, ont été ajoutés aux processeurs dans le but d’optimiser leurs performances. A l’époque, le gain en performance prévalait sur les aspects sécuritaires et ces techniques d’optimisation ont été exploitées pendant des années sans jamais être réellement remises en cause par les industriels du secteur. Maintenant que ces vulnérabilités ont été mises en lumière, les constructeurs ont déjà réagi en diffusant des patchs logiciels. Des correctifs sont déjà en cours d’élaboration et de déploiement. Mais, en attendant et au-delà des aspects théoriques, que ce soit sur le desktop ou sur les smartphones, l’association EESTEL possède des experts capables d’analyser les impacts et d’apporter des éléments concrets de solutions.
Pour en savoir plus :
A propos de l’auteur : Jean-Claude PAILLES – Ancien consultant chez Orange R&D – Enseignant à l’ENSI Caen, à Supelec Rennes et consultant pour SFR – Expert en sécurité des smartphones.