Dernier d’une longue série de bugs de sécurité pour les processeurs, Zenbleed est encore un autre problème qui doit être corrigé. Voici ce que vous devez savoir.
Après la publication des exploits des processeurs Spectre et Meltdown en 2018, le monde informatique s'est montré assez vigilant. sur la recherche de bugs de sécurité et de failles dans les processeurs, et au cours des cinq dernières années, les chercheurs en ont découvert une tonne. Le 24 juillet, un autre exploit a été rendu public après avoir été signalé pour la première fois en mai. Cette fois, il est spécifique aux processeurs AMD construits sur l'architecture Zen 2, et il est baptisé "Zenbleed". Voici tout ce que vous devez savoir sur Zenbleed et ce que cela signifie pour le monde.
Comment fonctionne Zenbleed?
Zenbleed est très similaire à d'autres bogues de sécurité matériels comme Spectre dans le sens où il exploite la capacité spéculative des processeurs. Afin d'améliorer les performances, les processeurs spéculer ou prédire la prochaine chose qu'ils doivent faire, et depuis que Spectre a été divulgué pour la première fois, le monde a appris que la spéculation peut être très dangereuse si elle est réalisée. de manière inappropriée.
Les registres d'un processeur peuvent contenir une petite quantité de données, généralement une instruction, une adresse de stockage ou tout autre type de petites données. Les registres XMM dans une architecture x86_64 (donc, n'importe lequel des processeurs Zen 2 concernés) ne peuvent être utilisés que pour effectuer des calculs sur les données, et non pour adresser la mémoire. Ceci est étendu à 256 bits dans le cas des registres YMM et à 512 bits dans les registres ZMM. Dans ce cas, XMM fait référence aux 128 bits inférieurs du total 512 bits des registres ZMM.
Ces registres sont incroyablement utiles pour beaucoup de choses différentes, y compris les fonctions C standard. La vulnérabilité abuse de l'exécution spéculative et des erreurs de prédiction des branches pour cracher essentiellement une donnée aléatoire de la mémoire, mais ces données peuvent provenir de rien. Les fonctions de la bibliothèque C standard comme strlen, qui mesure la longueur d'une chaîne, peuvent utiliser ces registres pour déplacer des données. autour, et il est possible que, par hasard, un mot de passe que vous utilisez soit tombé malheureusement dans l'un de ces enregistre.
La prédiction de branchement et l'exécution spéculative font généralement référence au moment où votre ordinateur effectue des opérations qui ne sont pas encore nécessaires mais qui le seront probablement dans les cycles suivants. Cela se produit souvent lorsque votre système dispose de ressources libres, car cela accélère le traitement global lorsque les instructions ou les données ne seraient pas encore prêtes pour le processeur. Si le travail effectué n'est pas nécessaire, il est généralement ignoré et le processeur peut revenir là où il doit le faire pour exécuter l'instruction suivante correcte. Lorsqu’il fait cela, on parle d’une erreur de prédiction de branche.
Là où un problème survient, c'est dans l'instruction vzeroupper, qui met à zéro les bits en position 128 et supérieure des registres YMM et ZMM. Cela se produit particulièrement lors de la transition entre AVX et le code SSE existant, car cela élimine les performances. pénalités causées par de fausses dépendances tout en évitant un effet similaire à la promotion entière dans C.
Si le processeur exécute de manière spéculative une instruction vzeroupper, il n'y a pas de restauration appropriée. Cependant, les processeurs Ryzen concernés peuvent être forcés de s'en remettre, bien que de manière incorrecte. Une fois dans cet état, le programme en cours d'exécution peut alors espionner ces registres en temps réel, visualisant les données circulant dans tout le système à tout moment.
Quels processeurs sont impactés par Zenbleed et quand les correctifs seront-ils disponibles?
Comme indiqué précédemment, seuls les processeurs AMD basés sur l'architecture Zen 2 sont connus pour être vulnérables au bug de sécurité Zenbleed, mais l'architecture Zen 2 alimente les processeurs en trois séries, ce qui rend difficile la détermination des processeurs vulnérables et des autres. ne le sont pas. Voici un tableau qui devrait tout clarifier :
Processeurs concernés | |
---|---|
Série Ryzen 3000 |
Tous sauf les APU (par exemple Ryzen 3 3200G) |
Epique Rome |
Tous |
Série Ryzen 4000 |
Tous |
Série Ryzen 5000 |
Uniquement les 5300U, 5500U et 5700U |
Série Ryzen 7000 |
Seulement 7020 APU (par exemple Ryzen 3 7320U) |
Il s'agit d'un nombre assez important de processeurs AMD, et ce ne sont que ceux qui ont été confirmés jusqu'à présent. Zen 2 est également utilisé dans les APU qui alimentent le Steam Deck, les Xbox Series S et X et la PS5. Nous ne savons pas non plus si ces processeurs sont également affectés, mais à en juger par la façon dont cet exploit fonctionne, je serais surpris s'ils ne l'étaient pas également. Il semble peu probable qu'AMD l'ait corrigé sur Xbox et PS5 puisque les puces de la série 7020, qui sont plus récentes, sont également concernées.
Au moment de la rédaction, le microcode a été soumis au noyau Linux qui corrigera cette vulnérabilité, et votre système d'exploitation ou votre BIOS dispose peut-être déjà d'une mise à jour qui résout ce problème.
Qu'est-ce que cela signifie pour les ordinateurs qui utilisent des processeurs vulnérables?
Il est difficile de répondre à cette question car tous les ordinateurs ne sont pas égaux. Pour les personnes normales qui utilisent uniquement des ordinateurs de bureau et des ordinateurs portables de jeu, vous n’avez probablement pas besoin de vous inquiéter autant. Il s’agit d’un exploit assez sophistiqué et bien qu’il soit désormais de notoriété publique, il n’existe encore aucun exemple connu d’attaquant utilisant Zenbleed pour pirater quoi que ce soit.
Toutefois, les enjeux sont bien plus importants pour les centres de données et les personnes importantes qui manipulent des informations sensibles sur leurs propres ordinateurs. Il y a une raison pour laquelle AMD a indiqué très clairement qu'Epyc Rome avait été corrigé avant que la vulnérabilité ne soit rendue publique: de nombreuses informations sensibles les informations sont gérées par les processeurs Epyc, et ce serait un désastre si les processeurs alimentant des serveurs à grande échelle fonctionnaient avec succès. attaqué. Le noyau Linux 6.4.6 est déjà publié et corrige cette vulnérabilité en introduisant le patch officiel du microcode d'AMD. Il semble probable que Microsoft intégrera quelque chose de similaire dans Windows.
Ce qui est inquiétant, Les correctifs officiels du BIOS d'AMD pourraient ne pas être déployés avant plusieurs mois, auquel cas il y a un "morceau de poulet" que vous pouvez définir si vous êtes sur une machine Linux ou FreeBSD. Sur les machines Linux, vous pouvez utiliser msr-tools et exécuter la commande suivante.
wrmsr -a 0xc0011029 $(($(rdmsr -c 0xc0011029) | (1<<9)))
Sur FreeBSD, vous pouvez également utiliser ce qui suit.
cpucontrol(8)
La désactivation de SMT ne suffit pas à atténuer la vulnérabilité.
Une chose qui rend Zenbleed particulièrement mauvais est que Zen 2 était l'une des architectures de processeur les plus populaires d'AMD. Cela a lancé le retour d'AMD en 2019 et 2020, et de nombreuses personnes, entreprises et organisations utilisent encore des ordinateurs équipés de processeurs Zen 2 en 2023, notamment Epyc Rome. Processeurs. Ce n'est pas aussi grave que Spectre (qui affecte à peu près tous les processeurs d'avant 2019) et Meltdown (qui affecte à peu près tous les processeurs Intel d'avant 2019), mais c'est quand même assez grave. répandu.
Les correctifs de sécurité pour des vulnérabilités comme celle-ci entraînent également souvent une dégradation des performances, mais AMD a dit Le matériel de Tom que cette pénalité dépendra du CPU et de la charge de travail. Les spéculations et les prédictions ont été très importantes pour les performances du processeur, il est donc difficile de savoir si un correctif potentiel entraînera une réduction significative des performances.