Qu'est-ce que Meltdown/Spectre ?

Meltdown et Spectre sont de nouvelles vulnérabilités de processeur affectant la plupart des PC et des smartphones. Il existe des correctifs, mais ils ont un impact sur les performances des processeurs.

Share facebook icon linkedin icon twitter icon email icon

Meltdown/Spectre

Objectifs d’apprentissage

Après avoir lu cet article, vous pourrez :

  • Définir Meltdown et Spectre et les différencier
  • Décrire comment fonctionne l'exécution spéculative
  • Expliquer comment le correctif pour Meltdown a un impact sur la vitesse du processeur

Qu'est-ce que Meltdown/Spectre ?

Meltdown et Spectre sont des vulnérabilités qui ont été récemment découvertes dans les circuits intégrés des processeurs Intel, AMD, Apple et ARM. Ces vulnérabilités sont dues à un grave défaut de conception des processeurs concernés, et leur découverte a entraîné une reconception contrainte des systèmes d'exploitation Windows, Mac et Linux afin de les atténuer et d'empêcher les pirates de les exploiter.

Ces vulnérabilités ont été découvertes par les chercheurs de l'équipe Project Zero de Google, dont la mission est de repérer les failles de sécurité avant qu'elles ne soient exploitées par des pirates. À l'heure actuelle, on ne connaît pas encore d'exploits de Meltdown ou de Spectre. Les équipes de sécurité des grandes entreprises technologiques comme Apple, Intel et Microsoft, ainsi que les développeurs Linux de code source partagé, investissent aujourd'hui des moyens considérables pour tenter de sécuriser leurs processeurs et leurs systèmes d'exploitation avant toute exploitation malveillante.

Qui est concerné par les vulnérabilités Meltdown et Spectre ?

À quelques exceptions près, toute personne possédant un PC et/ou un smartphone est vulnérable. Selon Google, tout appareil équipé d'un processeur Intel fabriqué après 1995 est concerné. Les processeurs AMD et ARM sont plus difficiles à exploiter, mais ils présentent également des risques.

Comment se protéger contre les vulnérabilités Meltdown ou Spectre ?

En plus de remplacer le processeur d'un PC, la seule façon de remédier à la vulnérabilité est de modifier le système d'exploitation. Apple a discrètement publié un correctif pour Meltdown sur OSX début décembre, Microsoft a publié un correctif pour Windows le 3 janvier, et les développeurs de Linux cherchent toujours à mettre au point un correctif.

En raison de leur conception, l'un des effets secondaires regrettables de ces correctifs est de ralentir la vitesse de calcul des ordinateurs utilisant le système d'exploitation corrigé. Ces ralentissements auront un impact sur les performances estimé entre 5 et 30 %, selon le type de processeur et les tâches effectuées.

Concrètement, comment fonctionnent les vulnérabilités Meltdown et Spectre ?

Meltdown et Spectre sont deux vulnérabilités résultant de l'exécution d'un code spécial de bas niveau appelé « code noyau », qui s'exécute notamment au cours d'un processus connu sous le nom d'exécution spéculative.

Qu'est-ce que l'exécution spéculative ?

Peut-être peut-on expliquer plus facilement l'exécution spéculative en utilisant une métaphore. Imaginons une randonneuse perdue dans les bois qui se retrouve à un embranchement, face à deux chemins à peu près parallèles : l'un des deux lui permettra de rentrer chez elle, l'autre non. Plutôt que de perdre du temps à attendre qu'un autre randonneur lui indique le bon chemin, elle choisit le chemin qui, selon elle, a le plus de chances de la ramener chez elle. À un moment donné, elle trouve un repère. Si ce repère lui confirme qu'elle est sur le bon chemin, alors elle poursuit sa route et rentre chez elle. Si le repère lui indique qu'elle est sur le mauvais chemin, elle fait demi-tour et prend l'autre chemin, ce qui ne lui fait pas perdre beaucoup plus de temps que si elle avait attendu des indications à l'embranchement des chemins.

Exécution spéculative

De nombreux processeurs modernes utilisent une technique similaire appelée « exécution spéculative », dans laquelle le processeur (CPU) essaie de deviner quel code sera exécuté ensuite, puis exécute ce code avant qu'on lui demande de le faire. Si le code exécuté s'avère inutile, les changements sont annulés. Cela permet de gagner du temps et de gagner en performances.

Selon des rapports sur les vulnérabilités Meltdown/Spectre, les processeurs Intel pourraient procéder à de l'exécution spéculative de code sans exiger de contrôles de sécurité significatifs. On pourrait imaginer un logiciel permettant de vérifier si le processeur a exécuté une instruction qui aurait dû être bloquée par ces contrôles de sécurité.

Cette exécution spéculative inappropriée crée une vulnérabilité du processeur qu'un attaquant peut exploiter pour accéder à des données très sensibles stockées dans la mémoire du noyau, telles que des mots de passe, des clés de chiffrement, des photographies personnelles, des e-mails, etc.

Mais qu'est-ce qu'un noyau ?

Le noyau est le programme qui se trouve au cœur du système d'exploitation d'un ordinateur. Il exerce un contrôle total sur le système d'exploitation et administre tout, du démarrage à la gestion de la mémoire. Le noyau se charge également d'envoyer les instructions de traitement des données au processeur (CPU). La plupart des processeurs passent sans cesse du mode noyau au mode utilisateur.

Quelle est la différence entre le mode noyau et le mode utilisateur ?

En mode noyau, le processeur exécute un code qui a un accès illimité aux composants et à la mémoire de l'ordinateur. Ce mode est généralement réservé aux opérations les plus basiques et les plus sûres. Les plantages qui se produisent lorsque le processeur est en mode noyau peuvent avoir des conséquences : ils peuvent faire planter tout le système d'exploitation.

En mode utilisateur, le code exécuté ne peut pas accéder aux composants ou à la mémoire de référence, il doit plutôt être délégué à des API système (les API système peuvent exécuter des fonctions en mode noyau que les logiciels en mode utilisateur peuvent demander avec les autorisations appropriées). Les plantages en mode utilisateur sont généralement isolés et récupérables. La plupart du code est exécuté en mode utilisateur.

Pourquoi le correctif de Meltdown ralentit-il les performances ?

Le correctif de Meltdown prévoit une séparation plus importante entre la mémoire du noyau et les processus utilisateur. Cela se fait via une méthode appelée Kernel Page Table Isolation (KPTI). Le KPTI déplace les opérations en mode noyau dans un espace d'adresses totalement distinct des opérations en mode utilisateur. Cela signifie qu'il faut beaucoup plus de temps pour passer du mode noyau au mode utilisateur.

Pour illustrer cela, imaginez un camion-restaurant qui ne vende que deux produits : des hot-dogs et de la limonade fraîche. L'employé qui se trouve dans le camion peut assez facilement atteindre à la fois l'appareil à hot-dogs et la glacière contenant les limonades fraîches, et servir rapidement ses clients. Imaginons maintenant qu'un contrôleur sanitaire passe par là et exige que les aliments chauds et froids soient entreposés dans des espaces séparés. L'employé a toujours les hot dogs à portée de main, mais il doit sortir du camion et aller chercher chaque limonade un peu plus loin dans la rue. Cette séparation physique ralentira considérablement le rythme des ventes du camion restaurant, surtout si les clients commandent beaucoup de limonades. Cela s'apparente à la manière dont le KPTI peut ralentir les performances d'un système d'exploitation.

Quelle est la différence entre Meltdown et Spectre ?

Meltdown et Spectre sont deux vulnérabilités dues à la manière dont les processeurs gèrent l'exécution spéculative, mais leur fonctionnement et les types de processeurs concernés diffèrent quelque peu.

Meltdown ne touche que les processeurs Intel et Apple, et peut être utilisé pour révéler des informations qui sont divulguées par le code que les processeurs exécutent durant l'exécution spéculative. Meltdown est plus facile à exploiter que Spectre et a été désigné comme le plus grand risque par les experts en sécurité. Heureusement, Meltdown est également plus facile et plus simple à corriger.

Spectre touche les processeurs Intel, Apple, ARM et AMD, et peut être exploité pour tromper les processeurs et leur faire exécuter du code qu'ils ne devraient pas être autorisés à exécuter. Selon les experts en sécurité de Google, Spectre est beaucoup plus difficile à exploiter que Meltdown, mais aussi beaucoup plus difficile à atténuer.

Vous voulez en savoir plus sur Meltdown et Spectre ?

Vous pouvez consulter l'article complet sur Meltdown et l'article sur Spectre si vous souhaitez approfondir les détails techniques.