J'ai eu un peu plus de temps pour lire l'article sur Meltdown, et je comprends que c'est différent de ce que j'avais écrit.
Spectre utilise l'Exécution_spéculative alors que Meltdown utilise l'Exécution_dans_le_désordre et le fait que la vérification des droits d'une lecture est faite en parallèle de cette lecture.
A priori, le code semble être organisé comme cela (n'hésitez pas à me contredire si je dis des conneries, c'est grandement probable) :
Une instruction lente qui va générer une exception
La lecture en mémoire d'en endroit où l'on a pas le droit d'accéder, mais qui est indépendante de l'instruction 1.
L'utilisation de la lecture précédente pour faire un accès dans un buffer.
A cause du "Out-of-order execution", l'instruction 2 sera exécutée avant/en même temps que l'instruction 1. La lecture de l'instruction 2 sera faite en parallèle de la vérification des droits de cette lecture. On espère que cette vérification des droits sera lente et que l'instruction 3 puisse être exécutée avant l'instruction 2. Au final, soit l'exception de l'instruction 1 est levée, soit la vérification des droits de l'instruction 2 va râler, et on va défaire les instructions 2 et 3.
Mais comme pour Spectre, les caches seront modifiés, et on peut connaitre la valeur lue au travers de ce canal caché.
Les auteurs ne sont pas arrivés à reproduire la faille entièrement sur AMD, mais ils pensent que c'est possible. AMD annonce le contraire.
Sous Linux, cela permet d'accéder en lecture à la mémoire du kernel, qui contient l'ensemble de la mémoire physique de la machine et donc la mémoire utilisée par les autres processus. Sous Windows, cela permet d'accéder à la mémoire du kernel, et une partie seulement de la mémoire physique. Cela permet de casser les containers par exemple.
PS : Pour Spectre, il existe un POC en javascript qui permet de fuiter la mémoire de Chrome :-/
[^] # Re: Détails techniques
Posté par TilK . En réponse au journal Ça sent pas bon chez Intel ?. Évalué à 5.
Tout à fait,
J'ai eu un peu plus de temps pour lire l'article sur Meltdown, et je comprends que c'est différent de ce que j'avais écrit.
Spectre utilise l'Exécution_spéculative alors que Meltdown utilise l'Exécution_dans_le_désordre et le fait que la vérification des droits d'une lecture est faite en parallèle de cette lecture.
A priori, le code semble être organisé comme cela (n'hésitez pas à me contredire si je dis des conneries, c'est grandement probable) :
A cause du "Out-of-order execution", l'instruction 2 sera exécutée avant/en même temps que l'instruction 1. La lecture de l'instruction 2 sera faite en parallèle de la vérification des droits de cette lecture. On espère que cette vérification des droits sera lente et que l'instruction 3 puisse être exécutée avant l'instruction 2. Au final, soit l'exception de l'instruction 1 est levée, soit la vérification des droits de l'instruction 2 va râler, et on va défaire les instructions 2 et 3.
Mais comme pour Spectre, les caches seront modifiés, et on peut connaitre la valeur lue au travers de ce canal caché.
Les auteurs ne sont pas arrivés à reproduire la faille entièrement sur AMD, mais ils pensent que c'est possible. AMD annonce le contraire.
Sous Linux, cela permet d'accéder en lecture à la mémoire du kernel, qui contient l'ensemble de la mémoire physique de la machine et donc la mémoire utilisée par les autres processus. Sous Windows, cela permet d'accéder à la mémoire du kernel, et une partie seulement de la mémoire physique. Cela permet de casser les containers par exemple.
PS : Pour Spectre, il existe un POC en javascript qui permet de fuiter la mémoire de Chrome :-/