Les attaques Meltdown et Spectre ont beaucoup inquiété. Devant certaines questions, il me semble pertinent de préciser certains points.

Ces attaques visent à faire fuir des informations depuis un logiciel attaqué vers un logiciel attaquant, ce dernier devant réaliser un certain nombre d’actions très spécifiques pour obtenir, indirectement, des informations censément secrètes. Elles s’appuient sur des chronométrages fins de certaines opérations très particulières, le temps nécessaire à les réaliser variant suivant la valeur des données secrètes. Elles contournent ainsi les mécanismes de protection qui permettent à une même machine de faire fonctionner séparément les programmes de plusieurs utilisateurs.

Ces attaques sont donc importantes pour les prestataires de services d’hébergement cloud, qui louent à des utilisateurs la possibilité de lancer des logiciels sur des machines (dites « serveurs ») puissantes et situées dans des locaux adaptés (data centers), avec des connexions Internet à haut débit et faible latence et des assurances de fonctionnement en continu (personnel de permanence, onduleurs en cas de coupure de courant). Elles sont également importantes pour les entreprises et organismes qui ont des serveurs où un grand nombre d’utilisateurs peuvent lancer des logiciels de leur choix ; par exemple, pour les universités, certains étudiants ayant à cœur de vouloir contourner les mécanismes de sécurité.

Qu’en est-il des utilisateurs individuels ? Une personne qui utilise seule sa propre machine ne va évidemment pas essayer de se pirater elle-même. On pourrait éventuellement envisager une attaque en escalade : tout d’abord, les intrus se rendraient maîtres d’un logiciel peu privilégié (n’ayant pas accès aux donnés de l’utilisateur humain de la machine) mais communiquant en réseau, puis à partir de là essaieraient d’obtenir les données de l’utilisateur ; mais cela semble assez difficile (il y a probablement d’autres failles plus faciles à exploiter).

Le cas qui me paraît le plus réaliste est celui des navigateurs Web, qui font fonctionner des logiciels venant de l’extérieur (principalement écrits en langage Javascript). Pour être exécuté efficacement, le Javascript est traduit (on dit « compilé ») en instructions directement exécutables par l’ordinateur. Il semble possible d’écrire du Javascript tel qu’avec certains navigateurs le produit de cette traduction puisse être utilisé pour réaliser les chronométrages permettant l’attaque. Parmi les contre-mesures discutées, il y a la détection, lors des processus de compilation, de configurations vulnérables à l’attaque Spectre (ou de configurations attaquantes) et l’ajout d’instructions empêchant la fuite d’informations.

On m’a évoqué le cas des processeurs ARM ou STMicro. Ceux-ci ne sont pas utilisés dans des ordinateurs personnels ou dans des serveurs classiques, mais plutôt dans des objets connectés ou non ou des terminaux mobiles (téléphones, tablettes…). C’est un univers vaste et il faut distinguer plusieurs cas.

Les attaques Spectre et Meltdown visent à contourner des mécanismes de protection et d’isolation de processus les uns et des autres. Elles n’ont donc aucun intérêt sur des processeurs simples n’ayant pas de tels mécanismes de protection, où chaque logiciel a accès à la mémoire de tous les autres (ce qui a d’ailleurs été longtemps le cas sur les ordinateurs personnels).

Ces attaques s’appuient sur des mécanismes (mémoires caches, exécution spéculative…) qui n’existent que dans les processeurs à hautes performances, notamment ceux que l’on met dans les ordinateurs personnels et les serveurs. Les processeurs plus simples n’utilisant pas de tels mécanismes ne sont pas vulnérables.

Ces attaques supposent que l’on puisse charger un logiciel intrus, donc qu’il soit possible de charger des logiciels nouveau sans que ceux-ci n’aient à être authentifiés par le fabricant de l’objet. Les objets n’ayant pas la possibilité de charger des nouveaux logiciels, ou qui restreignent ce chargement à des logiciels produits par le fabricant de l’objet ou du moins validés par lui, avec au moment du chargement vérification de ce fait (signature électronique), ne sont donc pas concernés.