#intelbug

 

Ce que les ingénieurs/chercheurs ont trouvé est fou, affolant ou affligeant. Deux failles critiques ont été découvertes dans les architectures des processeurs actuels (Intel, AMD, ARM, etc.) : Meltdown et Spectre. A priori, les premiers processeurs concernés peuvent dater de 1995.


 

C'est quoi, Meltdown/Spectre ? (1)

Un mari, à sa femme.
- "Mais si, tu sais, souvent, tu finis mes ...".
- "Sandwiches ?"
- "Non, mes phrases. Mais tu as supposé que je pensais à 'sandwiches',
et ce mot était dans ton esprit pendant quelques instants. Et c'était un
mot de passe, en fait. Et quelqu'un l'a volé, là, pile quand il flottait
dans ton esprit".
- "Ah, ok, c'est vraiment grave !"

Tweet de Scott Hanselman le 05/01/18.

 

 

C'est quoi, Meltdown/Spectre ? (2)

Imaginez une bibliothèque.
Il y a, dans cette bibliothèque, une collection de livres spéciaux.
Vous n'avez pas accès à ces livres.
Meltdown/Spectre va exploiter une faille pour vous permettre de les lire.

Pour les besoins de l'exemple, on supposera que Paul Dupont est un écrivain qui a écrit toute une série de livres aux titres bizarres : A is for Alibi, B is for Burgler, C is for Corpse ... jusqu'à Z is for Ziltoid.

1. Vous demandez au bibliothécaire le livre spécial #1 et le roman de Paul Dupont qui correspond à la première lettre de la première page de ce livre.
2. Le bibliothécaire va consciencieusement chercher le premier livre, regarde le premier mot de la première page, et note la lettre C. Il va donc aussi chercher le livre C is for Corpse de Paul Dupont, mais ne vous montre aucun des livres.
3. Il vérifie votre carte, vos droits, et en conclut que vous n'avez pas le droit de lire ce livre. Il pose ces deux livres à coté de lui, dans son chariot de rangement, sans les remettre à leur place. Il ne vous donne pas le livre de Paul Dupont.
4. Imperturbable, vous lui demandez A is for Alibi, du même Paul Dupont. Le bibliothécaire, bien sympathique, vous demande d'attendre un instant, le temps qu'il aille le chercher.
5. Vous l'interrompez aussitôt et lui demandez, impoliment, s'il peut vous ramener B is for Burgler" ; il vous répond qu'il va vous le chercher, aussi. Vous l'interrompez à nouveau, et ajoutez que C is for Corpse vous intéresse aussi, et D is for Deny, et E ... .
6. "Ah, celui-là, C is for Corpse, je l'ai juste sous la main, dans mon chariot", vous répond-il promptement !
7. Taquin, vous annulez toute votre commande, et indiquez au biblothécaire qu'il peut tous les ranger. Et vous notez C sur votre calepin.
8. Vous répétez ce jeu pour toutes les lettres et toutes les pages du premier livre spécial.

CQFD : vous avez donc pu reconstituer le contenu du livre, sans avoir eu le droit d'y accéder.

On pourrait imaginer que tous les livres de cette collection spéciale soit dans une autre partie de la bibliothèque, avec un bibliothécaire attitré etc, mais les gens autorisés à les lire se plaindraient que ça prendrait bien plus de temps, entre 5 et 30%.

L'analogie. Les livres sont la mémoire, la collection spéciale est le système d'exploitation ou l'espace mémoire d'un autre programme, le chariot est le cache ou le registre, le bibliothécaire est le processus de gestion de la mémoire.

Série de tweets de Joe Fitz, le 04/01/18.


 
spectre-code.png

Quelques explications un peu techniques.

Ces failles ont été décrites ici (Bugs in modern computers leak passwords and sensitive data), et dans un journal assez clair de LinuxFR.

Ces bugs sont assez complexes à décrire, et le fonctionnement des programmes malicieux les exploitant encore plus. Et en même temps, je trouve ces informations passionnantes. Bref. Très schématiquement, les processeurs actuels accélèrent l'exécution des programmes en essayant de prédire les blocs deMeltdown et Spectre. A priori, les premiers processeurs concernés peuvent dater de 1995. codes qui seront exécutés, sans attendre que la résolution des tests (branchements if-then-else) soient résolus. Par exemple, le processeur arrive à un test du type:

 

[test f(x)]  
  si f(x) >= 0:     
    alors exécute bloc A {...}
  si f(x) < 0:      
    alors exécute bloc B {...}

Il se trouve que le calcul de f(x) fait appel à des informations stockées en mémoire ou écrites sur le disque. Aller récupérer ces informations peut sembler rapide (quelques micro-secondes) mais c'est une éternité pour le processeur, qui décompte le temps à l'échelle de la nano-seconde. Il va donc parier sur le résultat du test f(x) et exécuter en avance de phase le bloc A ou le bloc B. La faille est que l'exécution de ces blocs peut ne pas être valide dans le contexte du programme, et elle laisse des traces dans la mémoire du processeur : Meltdown et Spectre utilisent ces traces.

La prise en compte de ce défaut de conception est partielle, et les corrections ont pour l'instant un impact qui peut être assez fort sur les performances, jusqu'à 30% lit-on dans les papiers techniques.

Le bug touche donc tous nos ordinateurs, tous les smartphones et tous les services Cloud. Ces derniers sont plus particulièrement impactés, car les techniques de virtualisation permettent aux attaquants potentiels d'aller lire des données sur d'autres machines virtuelles que les leurs. Et ça, c'est très fâcheux - mais vraiment.

 

Au passage, un petit cadeau : le message de Linus Torvalds au communiqué plein de langue de bois d'Intel.

Screenshot_2018-01-05_17-46-11.png

Thomas Gerbaud