Pour quoi la faille Spectre pourra continuer à nous hanter pendant encore un moment

Un peu mois de six mois après les révélations sur les failles Meltdown et Spectre, il semble que nous arrivions enfin à voir la fin du tunnel. Il y a quelques jours, Microsoft a publié des correctifs matériels pour Spectre directement sur Microsoft Update, et ce, quel que soit le modèle de PC équipé d'un processeur Intel.

Pour autant, la situation est-elle réglée ? En ce qui concerne Meltdown, on peut affirmer que le problème est définitivement résolu. L'attaque est parée au niveau du système d'exploitation, il n'y a donc plus de risque à partir du moment où vous avez mis à jour votre système.

 

Talon d'Achille des processeurs, l'exécution prédictive

Concernant Spectre, ce n’est pas la même histoire. Le problème n’est pas aussi simple car il réside dans les bas fonds du fonctionnement des processeurs, au niveau de ce qu’on appelle « l'exécution prédictive ». Lorsqu'un programme s'exécute et inclus des boucles, ou des tâches, comprenant des conditions logiques, les processeurs actuels n'attendent pas qu'elles soient réalisées.  Ils anticipent alors les résultats en exécutant des instructions qui apparaissent comme étant les plus probables. Obtenant ainsi un gain de temps considérable.

Le problème révélé par l'attaque Spectre, montre qu'il est possible d'influencer ce mécanisme d'anticipation. Un attaquant peut alors obliger le processeur à exécuter une tâche qu'il n’était pas sensé exécuter. Il peut ainsi deviner indirectement certaines informations via des canaux auxiliaires, notamment en mesurant les temps d'accès à la mémoire par exemple.

Malheureusement, éliminer complètement ce mécanisme d'anticipation n'est pas possible. Car, comme nous l’avons évoqué plus haut, cela entrainerait une chute catastrophique des performances. Une approche, plus fine, doit donc être trouvée.

Plusieurs solutions ont  alors été proposées. Du côté du logiciel, il est possible de placer un certain nombre de barrières dans le code pour bloquer cette prédiction à certains moments critiques. Ces barrières sont intégrées à travers les compilateurs qui parfois peuvent même les placer automatiquement.  Mais le compilateur doit savoir exactement où les mettre, ce qui n'est pas facile car les règles mises en place ne sont pas toujours bonnes et peuvent être contournées. Il est possible aussi d’ajouter ces barrières à la main, mais cela impose aux développeurs de parfaitement maîtriser l'impact de la faille Spectre sur leur code. Ce qui est loin d’être évident ...

 

Et du coté d’Intel ?

Heureusement ça avance ! Intel, qui travaille depuis plusieurs mois sur des correctifs (patchs) afin de mettre à jour le micro-code des processeurs, vient d’annoncer que l’ensemble des processeurs de ces 5 dernière années peuvent bénéficier dès à présent d’une protection logicielle fiable. Les nouveaux processeurs auront, quant à eux, une protection au niveau matériel pour Meltdown et pour l’une des variantes de Spectre. Pour l’autre variante « Bounds Check Bypass », des moyens logiciels continueront à faire le travail.

 

Faudra-t-il faire avec ?

Pour le moment il n’y a pas d’autre alternative que de vivre avec Spectre. Même si beaucoup de travail a déjà été réalisé, tout le potentiel néfaste de cette faille n’a pas encore été totalement exploré.  En effet, depuis sa découverte, deux autres variantes ont été trouvées, « SpectrePrime » et « SgxPectre », sans pour autant remettre en cause les différents correctifs déjà développés. Mais on devine alors aisément que ce problème est là pour longtemps.

Heureusement, les attaques utilisant la faille Spectre ne sont pas faciles à mettre en œuvre. Contrairement à Meltdown, elles sont fonction du logiciel de l’ordinateur cible et de sa configuration matérielle. Empêchant ainsi une exploitation massive.