Retbleed est une nouvelle attaque contre le mécanisme d'exécution spéculative des processeurs Intel et AMD

Un groupe de chercheurs de l'ETH Zurich a identifié une nouvelle attaque contre le mécanisme d'exécution spéculative de transitions indirectes dans le CPU, qui permet d'extraire des informations de la mémoire du noyau ou d'organiser une attaque sur le système hôte à partir de machines virtuelles. Les vulnérabilités portent le nom de code Retbleed (CVE-2022-29900, CVE-2022-29901) et sont de nature proche des attaques Spectre-v2. La différence réside dans l'organisation de l'exécution spéculative de code arbitraire lors du traitement de l'instruction « ret » (retour), qui récupère l'adresse à sauter depuis la pile, au lieu d'un saut indirect utilisant l'instruction « jmp », chargeant l'adresse depuis mémoire ou un registre CPU.

Un attaquant peut créer des conditions pour une prédiction de transition incorrecte et organiser une transition ciblée et spéculative vers un bloc de code qui n'est pas prévu par la logique d'exécution du programme. En fin de compte, le processeur déterminera que la prédiction de branchement n'était pas justifiée et ramènera l'opération à son état d'origine, mais les données traitées lors de l'exécution spéculative se retrouveront dans le cache et les tampons microarchitecturaux. Si un bloc exécuté par erreur accède à la mémoire, son exécution spéculative entraînera le dépôt des données lues dans la mémoire dans le cache partagé.

Pour déterminer les données restant dans le cache après des opérations spéculatives, un attaquant peut utiliser des techniques de canal secondaire pour déterminer les données résiduelles, telles que l'analyse des changements dans les temps d'accès aux données mises en cache et non mises en cache. Pour extraire délibérément des informations de zones à un autre niveau de privilège (par exemple, de la mémoire du noyau), des « gadgets » sont utilisés - des séquences de commandes présentes dans le noyau qui conviennent à la lecture spéculative des données de la mémoire en fonction de conditions externes pouvant être influencées par l'attaquant.

Pour se protéger contre les attaques classiques de la classe Spectre qui utilisent des instructions de saut conditionnel et indirect, la plupart des systèmes d'exploitation utilisent la technique « retpoline », basée sur le remplacement des opérations de saut indirect par l'instruction « ret », pour laquelle les processeurs utilisent une unité de prédiction d'état de pile distincte. .n'utilise pas de bloc de prédiction de branchement. Lorsque la retpoline a été introduite en 2018, on pensait que les manipulations d'adresses de type Spectre n'étaient pas pratiques pour le branchement spéculatif à l'aide de l'instruction « ret ».

Les chercheurs qui ont développé la méthode d'attaque Retbleed ont démontré la possibilité de créer des conditions microarchitecturales pour initier une transition spéculative à l'aide de l'instruction « ret » et ont publié des outils prêts à l'emploi pour identifier des séquences d'instructions (gadgets) adaptées à l'exploitation de la vulnérabilité du noyau Linux, dans lequel de telles conditions se manifestent.

Au cours de la recherche, un exploit fonctionnel a été préparé qui permet, sur les systèmes équipés de processeurs Intel, d'extraire des données arbitraires de la mémoire du noyau à partir d'un processus non privilégié dans l'espace utilisateur à une vitesse de 219 octets par seconde et avec une précision de 98 %. Sur les processeurs AMD, l'efficacité de l'exploit est bien plus élevée : le taux de fuite est de 3.9 Ko par seconde. À titre d'exemple pratique, nous montrons comment utiliser l'exploit proposé pour déterminer le contenu du fichier /etc/shadow. Sur les systèmes équipés de processeurs Intel, l'attaque visant à déterminer le hachage du mot de passe de l'utilisateur root a été réalisée en 28 minutes, et sur les systèmes dotés de processeurs AMD, en 6 minutes.

L'attaque a été confirmée pour les générations 6 à 8 de processeurs Intel sortis avant le troisième trimestre 3 (y compris Skylake) et pour les processeurs AMD basés sur les microarchitectures Zen 2019, Zen 1+ et Zen 1 sortis avant le deuxième trimestre 2. Dans les modèles de processeurs plus récents tels que AMD Zen2021 et Intel Alder Lake, ainsi que dans les processeurs ARM, le problème est bloqué par les mécanismes de protection existants. Par exemple, l’utilisation des instructions IBRS (Indirect Branch Restricted Speculation) permet de se protéger contre les attaques.

Un ensemble de modifications a été préparée pour le noyau Linux et l'hyperviseur Xen, qui bloqueront le problème dans les logiciels sur les anciens processeurs. Le correctif proposé pour le noyau Linux modifie 68 fichiers, ajoute 1783 387 lignes et supprime 14 lignes. Malheureusement, la protection entraîne des frais généraux importants - dans les textes réalisés sur les processeurs AMD et Intel, la diminution des performances est estimée de 39 % à 4.19 %. Il est préférable d'utiliser une protection basée sur les instructions IBRS, disponible dans les nouvelles générations de CPU Intel et supportée à partir du noyau Linux XNUMX.

Sur les processeurs Intel, la substitution d'adresse pour un saut indirect spéculatif s'effectue grâce à une fonctionnalité qui apparaît lorsqu'un débordement se produit via la limite inférieure (underflow) du Return Stack Buffer. Lorsque de telles conditions se produisent, l'instruction « ret » commence à appliquer une logique de sélection d'adresse similaire à celle utilisée pour les sauts indirects normaux. Plus d'un millier d'endroits ont été trouvés dans le noyau Linux qui créent les conditions permettant de déclencher un tel reflux et sont accessibles via des appels système.

Sur les processeurs AMD, l'exécution spéculative de l'instruction « ret » s'effectue sans référence à un buffer spécifique à la pile (Return Address Stack) et l'unité de prédiction de branchement considère l'instruction « ret » non pas comme un retour de contrôle, mais comme un branchement indirect. , et, par conséquent, utilise les données pour prédire les transitions indirectes. Dans ces conditions, pratiquement n'importe quelle opération « ret » accessible via un appel système peut être exploitée.

De plus, un autre problème a également été identifié dans les processeurs AMD (CVE-2022-23825, Branch Type Confusion) lié à la mise en œuvre de branches fictives : les conditions de prédiction de branchement peuvent se produire même sans les instructions de branchement nécessaires, ce qui permet d'influencer le tampon de prédiction de branchement. sans l'instruction " ret". Cette fonctionnalité complique considérablement la mise en œuvre de la protection et nécessite un nettoyage plus actif du tampon de prédiction de branchement. L'ajout d'une protection complète au noyau devrait augmenter la surcharge de 209 %.

Source: opennet.ru

Ajouter un commentaire