Contexte
On a découvert un problème qui touche l'industrie dans son ensemble sur la manière dont de nombreux microprocesseurs modernes implémentent, de par leur design, une exécution spéculative d'instructions (une technique d’optimalisation de performance souvent utilisée). Il existe trois principales variantes à ce problème qui diffèrent sur la façon dont l'exécution spéculative puisse être exploitée. Toutes les trois s'appuient sur le fait que les microprocesseurs modernes de haute performance implémentent à la fois l'exécution spéculative, et utilisent les caches de données de niveau 1 VIPT (Virtually Indexed, Physically Tagged) qui peuvent être assignés accompagnés de données dans l'espace d'adresse virtuelle du noyau dans de tels cas.Les deux premières variantes tirent avantage de l'exécution spéculative en évitant divers contrôles de sécurité limitrophes (CVE-2017-5753), ou en faisant une injection de branchement cible (CVE-2017-5715), ce qui amène le code du noyau à coder à une adresse sous le contrôle de l'attaquant pour effectuer une exécution spéculative. On regroupe ces deux variantes sous le nom de « Spectre ». Elles dépendent d'une séquence d'instructions définie avec précision dans le code privilégié, et sur le fait que les accès à la mémoire peuvent entraîner des assignations de données dans le cache niveau 1 du microprocesseur, y compris pour des instructions exécutées de manière spéculative qui ne sont jamais réellement validées. Par conséquence, un attaquant non privilégié peut exploiter ces failles de sécurité pour lire une mémoire privilégiée par le biais d'attaques « Cache Side-channel ». Ces variantes peuvent être utilisées non seulement pour franchir les limites de sécurité syscall (variante #1 et variante #2) mais aussi les limites de sécurité d'hôtes/invités (variante #2).
La troisième variante (CVE-2017-5754) s'appuie sur le fait que, sur les microprocesseurs concernés, lors de l'exécution spéculative de failles de permissions (instructions), la génération d'une exception normalement déclenchée par un accès frauduleux est supprimée jusqu'à ce que le bloc d'instruction complet soit supprimé. Les chercheurs appellent cette faille « Meltdown ». De plus, les accès mémoire qui suivent peuvent entraîner une assignation de données dans le cache de données au niveau L1, même quand ils référencent des emplacements de mémoire normalement inaccessibles. Par conséquence, un attaquant local non privilégié peut utiliser cette faille pour lire la mémoire (y compris les emplacements de mémoire physique arbitraire sur un hôte) privilégiée (dans l'espace noyau) en opérant des attaques « Cache Side-channel » ciblées.
Remerciements
Red Hat remercie Google Project Zero d'avoir signalé ces incidents.Références supplémentaires
Vous avez questions? Session de wébinaire à la demande.Qu'est-ce que « Meltdown » et « Spectre » veulent dire ? Voici ce que vous devez savoir.
https://googleprojectzero.blogspot.ca/2018/01/reading-privileged-memory-with-side.html
https://meltdownattack.com/
Impacts de performance de la faille - Description et correctifs de sécurité pour CVE-2017-5754 CVE-2017-5753 et CVE-2017-5715
Contrôler l'impact du microcode et des correctifs de sécurité sur la performance des vulnérabilités CVE-2017-5754 CVE-2017-5715 et CVE-2017-5753 avec les paramètres ajustables Red Hat Enterprise Linux Tunables
Quel microcode de CPU est disponible via package microcode_ctl afin de mitiger la vulnérabilité CVE-2017-5715 (variante 2) ?
Références de produits Red Hat supplémentaires
Options pour résoudre CVE-2017-5753 sur XEN platformImpact de CVE-2017-5754, CVE-2017-5753, et CVE-2017-5715 sur les produits de virtualisation de Red Hat
Satellite 6 Comment fournir des errata Meltdown/Spectre aux Hôtes de contenu (CVE-2017-5753, CVE-2017-5754, et CVE-2017-5715)