Un petit retour sur les failles Meltdown et Spectre
L'annonce des failles Meltdown et Spectre a provoqué un réel tremblement de terre planétaire, entre le grand public, auquel on a expliqué que tous ses appareils sont vulnérables, et les professionnels, qui ont immédiatement pris conscience de l'ampleur de la catastrophe potentielle qui se profile.
Nous faisons ici un petit retour pour tenter de vous expliquer les raisons de ces fiascos techniques à une époque où toute l'industrie ne cesse de parler de sécurité accrue.
Durant ces dernières décennies les processeurs se sont incroyablement complexifiés dans le but de gagner en performances. Le volume de données traitées chaque seconde est devenu simplement impossible à imaginer pour nous. Au début tout était très simple. On envoyait une instruction aux transistors, et ils donnaient le résultat du calcul durant le cycle en cours. Depuis, nos puces ont appris à traiter plusieurs informations à chaque cycle d'horloge, à les rassembler pour gagner du temps, à les répartir vers des sous-sections spécialisées (AVX par exemple ou à une autre époque Altivec), à multiplier les files d'attentes ou encore les cœurs.
Des problèmes ont alors commencé à se poser et des idées d'optimisation sont aussi arrivées. Dans le premier cas, il était plus rentable de ne pas exécuter les commandes dans l'ordre où elle étaient envoyées, afin d'en regrouper certaines pour gagner du temps. C'est ce que l'on appelle la fonction Out of order.
On s'est également aperçu que dans certains cas, on perdait des cycles d'horloge parce que l'on avait besoin d'attendre un résultat pour faire un autre calcul basé sur lui. On a alors mis en place des techniques visant à faire un pari sur le résultat futur pour ne pas perdre de temps à attendre l'autre. Cela fonctionne très bien, on arrive au sein des processeurs à s'approcher de 99% de prédictions exactes. Dans le cas contraire, on recommence le calcul, mais globalement le gain de temps dans ce genre de cas est très significatif. On peut même dans certains cas réaliser des calculs avant qu'ils ne soient demandés aux processeurs. C'est ce que l'on appelle les exécutions spéculatives.
Des failles ont donc été trouvées dans ce fonctionnement.
La faille Meltdown est spécifique aux processeurs Intel. Elle concerne la fonction Out of order des processeurs de la marque depuis 1995. Il s'avère que dans ces puces, cette fonction permet d'accéder à la mémoire protégée sans en avoir reçu l'autorisation au niveau du noyau et ainsi voir tout ce qui s'y passe. Elle est facile à mettre en œuvre et potentiellement dévastatrice. Pour l'illustrer, en voici une vidéo.
On voit qu'un logiciel spécialement créé peut écouter un autre processus sur la machine et récupérer très simplement le mot de passe rentré dans un autre process en cours d'exécution. Elle fait très peur car elle permettrait aussi d'accéder aux contenus de toutes les machines virtuelles sur un serveur mutualisé, l'essentiel de ce que la toile et le Cloud proposent maintenant.
Pour la régler définitivement, Intel va devoir revoir le design de ses puces pour isoler réellement la mémoire de ces process. Toutefois, on peut y remédier via une mise à jour du microcode des processeurs mais aussi et surtout au niveau des OS en renforçant leurs noyaux. Cela a toutefois un coût, qui se traduit par une baisse de performances lors de l'exécution de certaines instructions.
La faille Spectre, qui concerne tous les processeurs, se base sur les exécutions spéculatives. Elle est moins grave car elle ne permet pas d'accéder à la mémoire du kernel.
Il y en a en fait deux différentes, l'une d'entre elles ne touchant spécifiquement que les processeurs Intel, l'autre touchant toutes les puces du monde à quelques petites exceptions près.
Elle est cependant plus grave dans d'autres domaines. En effet, il n'est pas envisageable de désactiver le système spéculatif des puces, les pertes de performances seraient considérables et on ne peut patcher les systèmes une fois pour toutes. Il y a potentiellement des infinités de variantes de cette attaque. Dans ce cas, la seule chose à faire est d'éviter que du code malveillant visant à les exploiter ne soit lancé sur les machines.
L'autre problème de cette attaque est qu'elle peut se faire à distance, via un simple code Javascript. Ce sont donc ces attaques à distance que l'on va chercher à bloquer. C'est la raison pour laquelle Apple avec Safari et les autres éditeurs de navigateurs internet vont travailler dessus pour éviter de les laisser passer. Ils devront aussi assurer une veille renforcée et de nombreuses mises à jour pour bloquer au plus vite de nouveaux moyens utilisés par les pirates pour exploiter cette faille.
Bien entendu tous les ingénieurs de R&D sont déjà au travail pour trouver le moyen de combler ces failles au sein des processeurs, mais cela prendra du temps, surtout pour vérifier que d'autres ne sont pas ajoutées par ces modifications. Il faudra certainement quelques années pour que les processeurs produits en soient exempts.
En attendant, il n'y a hélas pas grand chose à faire de plus que ce que l'on peut faire si l'on tient déjà à sa sécurité, ne pas aller sur des sites web douteux ou ne pas exécuter n'importe quel logiciel téléchargé sur sa machine.
Le problème touchant le monde entier, on peut seulement le classer maintenant comme un risque semblable à celui connu par ceux qui vivent en zone inondable ou sismique. Il existe, on le sait, on sait qu'un problème peut arriver un jour, et on espère que ce sera le plus tard possible et que l'on arrivera à passer entre les gouttes.