Meltdown et Spectre sont si loin que ça dans les mémoires?
Du point de vue macro, les processeurs font effectivement ce qu'on leur demande : ils exécutent le code qu'on leur donne, et même s'ils utilisent la spéculation pour aller plus vite, les instructions exécutées qu'il ne fallait pas exécuter sont jetées avant que leur résultat ne soit visible pour l'utilisateur. Dans le cadre de Meltdown, le problème est réellement un « bug » de conception, car les processeurs Intel (et certains processeurs haut de gamme ARM) permettent de charger des pages noyau en cache en passant outre les bits indiquant qui a le droit de lire ce genre d'information1. C'est donc un vrai gros défaut de conception qui dit fuck à la sécurité au nom de la performance (et qu'AMD a évité apparemment). Donc, même si ce n'est sans doute pas une faille voulue par Intel/ARM, c'est quand même un gros manquement en termes de conception.
Dans le cadre de Spectre, c'est différent : on se retrouve avec un algorithme d'exécution dans le désordre (l'algorithme de Tomasulo, qui se base sur les principes d'exécution par flot de données). L'exécution dans le désordre en elle-même n'est pas un problème : si j'ai des instructions qui mettent en œuvre des unités fonctionnelles différentes (UAL, FPU, possiblement des composants spécialisés pour accéder à la mémoire, etc.), du moment que ces instructions auraient été exécutées de toute façon, les exécuter dans le désordre pour gagner du temps n'est vraiment pas un problème. Ce qui est gênant en termes de sécurité, c'est la spéculation d'instructions, car on va chercher des informations au-delà des plages d'adressage autorisées pour un programme donné lors de branchements directs ou indirects, ce qui du coup court-circuite (pour les processeurs courants) droits d'accès.
Du coup autant Meltdown exploite une erreur relativement grossière de conception, autant pour Spectre c'est plus nuancé je trouve (ça n'empêche pas de devoir corriger les deux failles en question bien entendu).
Ou plus exactement malgré le fait qu'on se trouve en mode utilisateur simple, pour des raisons de performances des pages réservées à un utilisateur privilégié sont malgré tout préchargées spéculativement en passant outre le système de protection. ↩
[^] # Re: Les éditeurs
Posté par lasher . En réponse au journal La bonne faille et la mauvaise faille. Évalué à 3.
Du point de vue macro, les processeurs font effectivement ce qu'on leur demande : ils exécutent le code qu'on leur donne, et même s'ils utilisent la spéculation pour aller plus vite, les instructions exécutées qu'il ne fallait pas exécuter sont jetées avant que leur résultat ne soit visible pour l'utilisateur. Dans le cadre de Meltdown, le problème est réellement un « bug » de conception, car les processeurs Intel (et certains processeurs haut de gamme ARM) permettent de charger des pages noyau en cache en passant outre les bits indiquant qui a le droit de lire ce genre d'information1 . C'est donc un vrai gros défaut de conception qui dit fuck à la sécurité au nom de la performance (et qu'AMD a évité apparemment). Donc, même si ce n'est sans doute pas une faille voulue par Intel/ARM, c'est quand même un gros manquement en termes de conception.
Dans le cadre de Spectre, c'est différent : on se retrouve avec un algorithme d'exécution dans le désordre (l'algorithme de Tomasulo, qui se base sur les principes d'exécution par flot de données). L'exécution dans le désordre en elle-même n'est pas un problème : si j'ai des instructions qui mettent en œuvre des unités fonctionnelles différentes (UAL, FPU, possiblement des composants spécialisés pour accéder à la mémoire, etc.), du moment que ces instructions auraient été exécutées de toute façon, les exécuter dans le désordre pour gagner du temps n'est vraiment pas un problème. Ce qui est gênant en termes de sécurité, c'est la spéculation d'instructions, car on va chercher des informations au-delà des plages d'adressage autorisées pour un programme donné lors de branchements directs ou indirects, ce qui du coup court-circuite (pour les processeurs courants) droits d'accès.
Du coup autant Meltdown exploite une erreur relativement grossière de conception, autant pour Spectre c'est plus nuancé je trouve (ça n'empêche pas de devoir corriger les deux failles en question bien entendu).
Ou plus exactement malgré le fait qu'on se trouve en mode utilisateur simple, pour des raisons de performances des pages réservées à un utilisateur privilégié sont malgré tout préchargées spéculativement en passant outre le système de protection. ↩