Red Hat a été informé de plusieurs problèmes d'implémentations micro-architecturales (hardware) affectant les microprocesseurs modernes nécessitant des mises à jour des noyaux Linux, et/ou des composants associés à la virtualisation en relation à la mise à jour du microcode. Un attaquant sans privilège peut exploiter cette faille pour passer outre les restrictions d'accès conventionnelles à la mémoire, normalement inaccessible car pourvue de privilèges d'accès, et la lire. On compte 3 CVE connues liées à ce problème en combinaison aux architectures Intel, AMD, et ARM. Nous savons également qu'il existe d'autres failles de sécurité liées à d'autres architectures, comme System Z d'IBM, et POWER8 (Big-Endian et Little Endian) ou Power9 (Little Endian).

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 platform
Impact 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)