Chez Intel, la manière dont les infos fournies par la MMU sont exploitées par d'autres bouts du CPU est en effet clairement défaillante (même si le fondeur n’arrête pas de répéter que tout fonctionne comme conçu, ce qui veut dire que c'est leur conception qui est clairement moisie et bugué): les données d'un privilège élevé sont chargées spéculativement pour du code d'un niveau de privilège plus bas, et en plus de ça l'exécution spéculative continue y compris en produisant des effets de bord micro-architecturaux flagrant.
Pour Spectre, c'est clairement un truc malin auquel personne n'avait pensé intégralement auparavant (du moins sans le signaler). En choisissant bien les données contrôlées par un niveau de privilège inférieur/un contexte ne devant pas avoir accès à d'autre données, et utilisées par du code ayant l'accès (par exemple en jouant sur les paramètres d'un appel système), il est possible de pousser le code privilégié à réaliser des exécutions spéculatives complètement délirantes, et ensuite en mesurant les effets de bord microarchitecturaux, d'en déduire des données ciblés. Mais il faut trouver des bouts de code dans les programmes existant qui prévoient des opérations pouvant être ainsi détournées. Ce qui est beau dans cette dernière attaque c'est que le code source du programme ciblé a beau être parfaitement correct, ça ne change rien, car les processeurs en régime spéculatif passent outre les vérifications programmées classiquement pour tenter de prendre de l'avance sur la suite du boulot. C'est cette anticipation qui, selon les cas, change suffisamment l'état interne du processeur d'une manière dépendant des données lues, et mesurable.
Dans le cas de Meltdown il n'y a pas de code tiers privilégié qui effectue les accès pour le compte de l'attaquant: c'est le CPU qui est à moitié con.
[^] # Re: Mais que fait la p̶o̶l̶i̶c̶e̶ MMU ?
Posté par Guillaume Knispel . En réponse à la dépêche Deux failles critiques : Meltdown et Spectre. Évalué à 10. Dernière modification le 05 janvier 2018 à 16:43.
Chez Intel, la manière dont les infos fournies par la MMU sont exploitées par d'autres bouts du CPU est en effet clairement défaillante (même si le fondeur n’arrête pas de répéter que tout fonctionne comme conçu, ce qui veut dire que c'est leur conception qui est clairement moisie et bugué): les données d'un privilège élevé sont chargées spéculativement pour du code d'un niveau de privilège plus bas, et en plus de ça l'exécution spéculative continue y compris en produisant des effets de bord micro-architecturaux flagrant.
Pour Spectre, c'est clairement un truc malin auquel personne n'avait pensé intégralement auparavant (du moins sans le signaler). En choisissant bien les données contrôlées par un niveau de privilège inférieur/un contexte ne devant pas avoir accès à d'autre données, et utilisées par du code ayant l'accès (par exemple en jouant sur les paramètres d'un appel système), il est possible de pousser le code privilégié à réaliser des exécutions spéculatives complètement délirantes, et ensuite en mesurant les effets de bord microarchitecturaux, d'en déduire des données ciblés. Mais il faut trouver des bouts de code dans les programmes existant qui prévoient des opérations pouvant être ainsi détournées. Ce qui est beau dans cette dernière attaque c'est que le code source du programme ciblé a beau être parfaitement correct, ça ne change rien, car les processeurs en régime spéculatif passent outre les vérifications programmées classiquement pour tenter de prendre de l'avance sur la suite du boulot. C'est cette anticipation qui, selon les cas, change suffisamment l'état interne du processeur d'une manière dépendant des données lues, et mesurable.
Dans le cas de Meltdown il n'y a pas de code tiers privilégié qui effectue les accès pour le compte de l'attaquant: c'est le CPU qui est à moitié con.