Spectre et Meltdown sont les noms donnés à un trio de variations sur une vulnérabilité qui affecte presque toutes les puces fabriquées au cours des 20 dernières années. Les failles sont si fondamentales et si répandues que les chercheurs en sécurité informatiques les qualifient de catastrophiques. Meltdown et Spectre exploitent les vulnérabilités critiques des processeurs modernes. Ces vulnérabilités matérielles permettent aux programmes de dérober des données qui sont actuellement traitées sur l’ordinateur. Alors que les programmes ne sont généralement pas autorisés à lire les données d’autres programmes, un programme malveillant peut exploiter Meltdown et Spectre pour obtenir des secrets stockés dans la mémoire d’autres programmes en cours d’exécution. Cela peut inclure les mots de passe stockés dans un gestionnaire de mots de passe ou un navigateur, les photos personnelles, les e-mails, les messages instantanés et même les documents confidentiels. Meltdown et Spectre fonctionnent sur des ordinateurs personnels, des appareils mobiles et dans le cloud. Selon l’infrastructure du fournisseur de cloud, il peut être possible de voler des données à d’autres clients.

Chronologie des évènements

Le 2 janvier 2018, le magazine en ligne The Register a dévoilé les deux vulnérabilités qui affectent presque tous les processeurs fabriqués au cours des 20 dernières années. Les défauts provenaient de fonctionnalités intégrées dans les puces en vue d’un fonctionnement plus rapide. A l’insu de l’opinion publique, les chercheurs du Project Zero de Google, ainsi que deux autres équipes indépendantes, avaient découvert ces vulnérabilités 200 jours plus tôt. Les chercheurs avaient donné à Intel, AMD, IBM, Qualcomm et ARM une période de grâce pour élaborer des mesures d’atténuation avant de rendre leurs résultats publics. Ces sociétés, ainsi que les développeurs contribuant à Windows et Linux, ont travaillé ensemble derrière le voile du secret pendant des mois.

Les deux vulnérabilités, appelées Meltdown et Spectre, sont des bogues matériels qui peuvent permettre à des hackers de voler des informations de la mémoire d’autres programmes à l’aide de logiciels malveillants. Ils fonctionnent de différentes manières, affectent différents processeurs à des degrés divers et nécessitent des corrections différentes. L’attention était à l’origine concentrée sur les puces Intel, mais les processeurs ARM et AMD sont également affectés dans une certaine mesure. À ce titre, les chercheurs ont souligné que cela mettait en péril une très grande variété de systèmes, allant des ordinateurs de bureau aux ordinateurs portables, en passant par les appareils mobiles et les serveurs.

Décryptage de Spectre et Meltdown ?

Techniquement, il existe trois variantes de la vulnérabilité, chacune étant dotée de son propre numéro CVE. Deux de ces variantes sont regroupées en tant que Spectre et la troisième est appelée Meltdown. Toutes les variantes de cette vulnérabilité sous-jacente impliquent un programme malveillant qui accède à des données qu’il ne devrait pas avoir le droit de voir, et ce en exploitant deux techniques importantes qui sont utilisées pour accélérer les puces informatiques, à savoir l’exécution spéculative et la mise en cache.

L’exécution spéculative

L’exécution spéculative implique une puce qui essaie de prédire l’avenir afin de travailler plus vite. Si la puce sait qu’un programme requiert plusieurs branches logiques, elle commencera à faire des calculs mathématiques sur toutes ces branches avant même que le programme ne décide de laquelle utiliser.

Par exemple, si le programme dit: «Si A est vrai, calculez la fonction X, si A est faux, calculez la fonction Y», la puce peut commencer à calculer les deux fonctions X et Y en parallèle, avant même de savoir si A est vrai ou faux. Une fois qu’il sait si A est vrai ou faux, il a déjà une longueur d’avance sur ce qui vient après, ce qui accélère le traitement global. Si une puce apprend qu’un programme utilise fréquemment la même fonction, elle peut utiliser le temps d’inactivité pour traiter cette fonction même si le programme ne lui a pas demandé de le faire.

La mise en cache

La mise en cache est une technique utilisée pour accélérer l’accès à la mémoire. Il faut un temps relativement long pour que le processeur récupère les données de la RAM, qui est située sur une puce séparée. Pour pallier ce problème, une petite quantité de mémoire appelée cache CPU a été mise au point. Située sur le processeur, cette mémoire à accès très rapide est remplie de données que la puce utilise fréquemment.

Ce qui est pertinent pour la situation actuelle, c’est que les données générées par l’exécution spéculative sont souvent stockées dans le cache. Le problème se pose lorsque la mise en cache et l’exécution spéculative commencent à communiquer avec la mémoire protégée.

La mémoire protégée

La mémoire protégée est l’un des concepts fondamentaux de la sécurité informatique. En substance, aucun processus sur un ordinateur ne devrait pouvoir accéder aux données à moins d’en avoir l’autorisation. Cela permet à chaque programme de garder certaines de ses données privées à l’abri des autres programmes. Le système d’exploitation empêche chaque programme de voir les données appartenant à un autre. Pour accéder aux données, un processus doit subir une vérification de privilège, ce qui détermine s’il est autorisé ou non à voir ces données.

Cependant, une vérification de privilège peut prendre un temps (relativement) long. Pendant que le CPU attend de savoir si le processus est autorisé à accéder à ces données, celui-ci commence à travailler avec ces données grâce à l’exécution spéculative. En théorie, le système est toujours sécurisé, car les résultats de cette exécution spéculative sont également protégés au niveau matériel. Le processus n’est pas autorisé à les voir jusqu’à ce qu’il passe le contrôle de privilège, et s’il ne réussit pas la vérification, les données sont ignorées.

Le problème se pose parce que les données protégées sont stockées dans le cache de l’UC même si le processus ne reçoit jamais l’autorisation d’y accéder. Et parce que la mémoire cache du processeur est accessible plus rapidement que la mémoire normale, le processus peut tenter d’accéder à certains emplacements de mémoire pour savoir si les données ont été mises en cache. Il ne pourra toujours pas accéder aux données, mais si les données ont été mises en cache, sa tentative de lecture sera rejetée beaucoup plus rapidement qu’elle ne le serait autrement. C’est un peu comme le fait de frapper sur une boîte pour voir si elle est vide. En raison de la façon dont la mémoire de l’ordinateur fonctionne, le simple fait de connaître les adresses où les données sont stockées peut aider à déduire la nature des données. C’est ce qu’on appelle une attaque par canal latéral.

Les différences entre Spectre et Meltdown

Pour faire simple, Spectre et Meltdown pourraient permettre à des attaquants potentiels d’accéder à des données auxquelles ils n’auraient pas accès en utilisant les techniques décrites ci-dessus, mais leurs effets sont quelque peu différents.

Meltdown tient son nom du fait qu’il « fait fondre » les frontières de sécurité normalement imposées par le matériel. En exploitant Meltdown, un attaquant peut utiliser un programme s’exécutant sur une machine pour accéder aux données que le programme ne devrait normalement pas voir, y compris les données appartenant à d’autres programmes et celles auxquelles seuls les administrateurs ont le droit d’accéder. Meltdown ne nécessite pas beaucoup de connaissances sur le fonctionnement du programme piraté par le hacker, mais il ne fonctionne qu’avec certains types de puces Intel. C’est un problème assez grave mais des correctifs sont en cours de déploiement.

En exploitant les variantes Spectre, un pirate peut faire en sorte qu’un programme révèle certaines de ses propres données qui auraient dû rester secrètes. Il nécessite une connaissance plus intime du fonctionnement interne du programme victime, et ne permet pas l’accès aux données d’autres programmes, mais fonctionnera également sur à peu près n’importe quelle puce informatique. Le nom de Spectre vient de l’exécution spéculative mais provient aussi du fait qu’il sera beaucoup plus difficile d’arrêter ce type d’attaque. Alors que les correctifs commencent à être disponibles, d’autres attaques dans la même famille seront sans aucun doute découvertes. C’est l’autre explication du nom : Spectre nous hantera pendant un certain temps.

Pourquoi Spectre et Meltdown sont-ils dangereux?

Spectre et Meltdown ouvrent toutes deux des possibilités d’attaques dangereuses. Par exemple, le code JavaScript sur un site web pourrait utiliser Spectre pour tromper un navigateur web et révéler des informations sur l’utilisateur et son mot de passe. Les attaquants pourraient exploiter Meltdown pour voir les données d’autres utilisateurs et même d’autres serveurs virtuels hébergés sur le même matériel, ce qui est potentiellement désastreux pour les hôtes du cloud computing.

Mais au-delà des attaques spécifiques potentielles elles-mêmes, réside le fait que les failles sont fondamentales pour les plates-formes matérielles fonctionnant sous le logiciel que nous utilisons tous les jours. Même le code formellement sécurisé tel qu’il est écrit s’avère vulnérable, car les hypothèses sous-jacentes aux processus de sécurité intégrés dans le code et à l’ensemble de la programmation informatique se sont avérées fausses.

Un hacker peut exploiter ces vulnérabilités pour exposer des données extrêmement sensibles dans la mémoire protégée du noyau, y compris des mots de passe, des clés cryptographiques, des photos personnelles, des e-mails ou toute autre donnée sur le PC.

Meltdown affecte fortement les processeurs Intel en raison de la manière agressive dont ils traitent l’exécution spéculative, bien que quelques noyaux ARM y soient également sensibles. Spectre affecte les processeurs AMD et ARM ainsi que les processeurs Intel, ce qui signifie que les périphériques mobiles sont également à risque. Il n’existe peut-être pas de solution matérielle permanente pour Spectre. Les logiciels doivent également être durcis pour s’en prémunir.

Correctifs de Spectre et Meltdown

Le gros de la vulnérabilité se situe au niveau matériel et ne peut pas être corrigée. Cependant, la plupart des fournisseurs publient des correctifs logiciels qui tentent de juguler ces problèmes. Le correctif KAISER, développé par coïncidence en 2017 pour améliorer la sécurité de Linux, a en réalité l’effet secondaire de prévenir les attaques de Meltdown. Les principaux fournisseurs de cloud ont pour la plupart corrigé leurs serveurs en se servant de ce patch. Des correctifs ont déjà été déployés par Intel, Microsoft, Apple et Google et d’autres sont en cours. J.M. Porup, de l’OSC, a fait un bon bilan des mesures à prendre à court terme. Puisque JavaScript est un vecteur particulièrement dangereux pour les attaques par Spectre dans le navigateur, il est également important de garder ses navigateurs à jour.

Les systèmes plus anciens, en particulier Windows XP, ne seront presque jamais corrigés. Les millions de téléphones Android tiers à bas prix qui ne reçoivent pas de mises à jour de sécurité de la part de Google, sont également dans l’impasse.

Depuis le 11 janvier 2018, Microsoft a publié des correctifs pour la plupart des versions de Windows (à partir de Windows 7). Ces patchs corrigent également les navigateurs Internet Explorer et Edge de l’entreprise. Le site web de Microsoft comprend également une série de liens vers les mises à jour du firmware des fabricants de matériel, qui couvrent tous les principaux acteurs. Cependant, certains systèmes AMD n’ont pas redémarré après le téléchargement des correctifs. Ces correctifs ont été retirés pour le moment.

Apple a publié des versions corrigées de ses systèmes d’exploitation macOS, iOS et tvOS, ainsi que de son navigateur Safari, le 3 janvier 2018. Google a publié une liste des modèles de Chromebook qui ont été patchés ou n’auront pas besoin d’un correctif. Firefox a un correctif qui a été publié le 23 janvier 2018. Le navigateur Chrome de Google a, lui aussi, un correctif rendu public ce même jour.

La multiplicité des appareils Android rend la question du patch difficile à répondre. La plupart des téléphones vendus directement par Google ou des géants comme Samsung ont été corrigés ou le seront.

Inventions mises au point pour accélérer la vitesse d’exécution des processeurs modernes, l’exécution spéculative et la mise en cache révèlent des failles qui pourraient compromettre toutes les avancées de ces 20 dernières années. Conscients de la dangerosité de Spectre et de Meltdown, l’ensemble des acteurs du monde technologique est à pied d’œuvre pour solutionner le problème. Des patches au niveau des systèmes d’exploitation permettent actuellement de protéger les utilisateurs, mais les fabricants de processeurs promettent déjà la mise au point de puces dépourvues de ces vulnérabilités.