Je voulais connaître les spécifications d’un processeur d’Intel. En regardant la page dédiée à ce modèle en particulier sur le site web du fabricant, j’ai remarqué qu’Intel offrait une mise à jour du microcode. Je trouvais cela étrange et j’ai fouillé davantage. Ce que j’ai découvert m’a laissé pantois.
Notes préliminaires
Cet article est plus technique, mais je m’efforce de le rendre le plus simple possible tout en faisant comprendre la problématique.
Bien que je sois informaticien, je ne suis pas expert en sécurité. Je m’y intéresse, car je ne veux pas être pris les culottes à terre. Mais uniquement pour ce que j’utilise. Autrement dit, j’en ai rien à foutre qu’une faille de sécurité soit trouvée dans Windows.
Bien qu’auparavant j’étais abandonné à des listes d’envoi sur le sujet et j’assistais à au moins une conférence par année sur la sécurité, j’ai décroché il y a deux ans. Je ne suis plus au fait de ce qui se passe vraiment.
Introduction
J’ai parlé des processeurs. C’était une introduction générale que je ne voulais pas trop technique. Je vais devoir expliquer quelques trucs afin de faire comprendre le problème.
Au début de l’informatique, les applications étaient écrites pour un processeur en particulier. IBM sortait un modèle, les programmeurs écrivaient des applications qui fonctionnaient sur celui-ci. Si l’année d’après IBM sortait un nouvel modèle, les programmeurs devaient réécrire le code pour ce nouvel modèle. C’est un peu comme si chaque processeur parlait une langue différente.
C’est rapidement devenu invivable et il fallait trouver une meilleure façon de faire les choses. La solution qui fut mise en place fut d’ajouter une couche d’abstraction. Les programmeurs parlent à cette couche d’abstraction, qui elle traduit le tout dans le langage spécifique du processeur. Un peu comme si nous pouvions parler en français à tous les processeurs, mais qu’à l’interne, ils utilisent le mandarin, le coréen, l’arabe, etc. Peu importe, nous n’avons pas à nous en soucier. C’est ainsi qu’une application écrite dans les années 1980 pour un processeur Intel 8086 peut fonctionner sur un Intel Core i7 de l’année. De l’extérieur, ils présentent le même interface, alors qu’à l’intérieur, ce sont des mondes totalement différent. La couche d’abstraction s’appelle Instruction Set Architecture (ISA). La plupart des programmeurs ne savent pas qu’ils ne parlent jamais directement à l’électronique du processeur, même lorsqu’ils emploient un langage de bas niveau comme l’assembleur. L’ISA est toujours un intermédiaire entre eux et le processeur. Ainsi, les fabricants peuvent changer totalement la façon de fonctionner d’un processeur sans tout briser, à condition de respecter l’ISA. Ils peuvent même corriger un processeur déjà mis en marché en changer le code à l’intérieur du processeur, ce que nous appelons le microcode.
Au fil des années, plusieurs techniques ont été mise en place afin d’augmenter la sécurité des applications. L’une d’elles est la gestion de la mémoire. J’ai expliqué que chaque zone de mémoire possédait une adresse. Auparavant, la mémoire était rempli au fur et à la mesure de façon linéaire. Il était donc possible d’aller fouiller dans la mémoire d’une autre application. Si je sais que le système d’exploitation est chargé en premier et qu’il se trouve à l’adresse XYZ, je peux jeter un œil aux données stockées en mémoire. Comme des mots de passe. Deux techniques ont été mise en place pour empêcher cela : seule la zone de mémoire allouée à une application donnée est accessible à celle-ci, et le chargement des données en mémoire se fait de façon aléatoire plutôt que linéaire. Autrement dit, la première page du texte que vous écrivez peut se retrouver à l’adresse 224, la seconde à l’adresse 512 et la troisième à l’adresse 128. Puis, seul le traitement de texte peut accéder à ces adresses. Enfin, dans un système d’exploitation sécuritaire.
Meltdown
Des chercheurs se sont rendus compte qu’il y avait une faille dans les processeurs implantant ces mécanismes. En exploitant cette faille, il devenait possible d’accéder n’importe quelle zone de mémoire. La faille fut baptisée Meltdown. Le problème est d’autant plus grave qu’il se trouve dans le code du processeur. Donc, peu importe le système d’exploitation que vous employez, si le code se trouvant dans votre n’est pas corrigé, la faille peut être exploité. D’où qu’Intel offre un correctif. Intel n’est pas le seul fabricant affecté par le problème : AMD, ARM et d’autres le sont également à des degrés divers. Donc, non seulement votre portable est affecté, mais également votre tablette et votre téléphone. J’ai testé les ordinateurs que j’avais à ma disposition : ils souffraient presque tous du problème. Ce n’est qu’un ordinateur ayant une architecture moins courante qui n’en souffrait pas. Je parlais d’être différent, c’est cela.
Spectre
Un autre problème tout aussi grave fut découvert par ces mêmes chercheurs. La faille fut baptisée Spectre. Cette fois, elle est causée par une erreur de jugement. Afin de gagner en vitesse, plusieurs cœurs ont été intégrés dans un processeur. Ce qui permet d’exécuter des instructions en parallèle. Mais entraîne aussi son lot de problèmes. Par exemple, si l’instruction C dépend du résultat de l’instruction A et B. Afin de gagner en vitesse, les processeurs gagent d’une certaine manière que le résultat d’une instruction se trouvera à une adresse donnée en mémoire et prépare l’instruction suivante en fonction de cette adresse. Et il est possible de berner un processeur dans cette optimisation.
Comment corriger le problème ?
Les fabricants ont été avertis. Ils ont vérifié le problème et publier des correctifs. Toutefois, il semble que ces mises à jour ne font que diminuer le risque, en autant que les applications soient conçues en ce sens.
Les fabricants de processeurs ont fait une boulette. Le véritable correctif entraîne une perte de performance de l’ordre de 25%. Ce ne sera pas avant une prochaine génération de processeurs, mieux conçus, que le problème disparaîtra.
Linus Torvald, le créateur de Linux, a fait une montée de lait contre Intel. Mais la compagnie semble s’en ficher. Au point où je me demande si l’erreur n’était pas voulu, offrant une porte aux agences de renseignement sur à peu près tous les systèmes. Cela ne me surprendrait même pas.
Quelqu’un a écrit un script bash permettant de vérifier la présence ou non du problème. C’est ainsi que j’ai pu vérifier mon ordinateur. Le script est disponible sur github. Il s’exécute dans un terminal. La personne a aussi écrit de bons articles, en anglais toutefois, sur la procédure à effectuer pour appliquer le «correctif» d’Intel. Si vous avez un vieux processeur, le problème n’est pas présent. Pour le reste, il à peu près assuré que le problème est présent.
2 réflexions sur “Meltdown”
Les commentaires ne sont pas permis.