Nouvelle attaque contre les structures microarchitecturales des processeurs Intel et AMD

Un groupe de chercheurs de l'Université de Virginie et de l'Université de Californie a présenté un nouveau type d'attaque contre les structures microarchitecturales des processeurs Intel et AMD, identifié lors de l'ingénierie inverse de capacités de processeur non documentées. La méthode d'attaque proposée implique l'utilisation d'un cache micro-opérationnel intermédiaire dans les processeurs, qui peut être utilisé pour récupérer les informations accumulées lors de l'exécution spéculative des instructions.

À des fins d'optimisation, le processeur commence à exécuter certaines instructions en mode spéculatif, sans attendre la fin des calculs précédents, et s'il détermine alors que la prédiction n'était pas justifiée, il ramène l'opération à son état d'origine, mais les données traitées pendant l'exécution spéculative est déposée dans un cache dont le contenu peut être déterminé.

Il est à noter que la nouvelle méthode surpasse considérablement l'attaque Spectre v1, rend l'attaque difficile à détecter et n'est pas bloquée par les méthodes de protection existantes contre les attaques par canal secondaire conçues pour bloquer les vulnérabilités causées par l'exécution spéculative d'instructions (par exemple, l'utilisation de l'instruction LFENCE bloque les fuites dans les dernières étapes de l'exécution spéculative, mais ne protège pas contre les fuites à travers les structures microarchitecturales).

La méthode affecte les modèles de processeurs Intel et AMD commercialisés depuis 2011, notamment les séries Intel Skylake et AMD Zen. Les processeurs modernes divisent les instructions complexes du processeur en micro-opérations plus simples de type RISC, qui sont mises en cache dans un cache séparé. Ce cache est fondamentalement différent des caches de niveau supérieur, n'est pas directement accessible et agit comme un tampon de flux pour un accès rapide aux résultats du décodage des instructions CISC en micro-instructions RISC. Cependant, les chercheurs ont trouvé un moyen de créer des conditions qui surviennent en cas de conflits d'accès au cache et permettent de juger du contenu du cache de micro-opérations en analysant les différences dans le temps d'exécution de certaines actions.

Nouvelle attaque contre les structures microarchitecturales des processeurs Intel et AMD

Le cache de micro-opération dans les processeurs Intel est segmenté par rapport aux threads du processeur (Hyper-Threading), tandis que les processeurs AMD Zen utilisent un cache partagé, ce qui crée des conditions de fuite de données non seulement au sein d'un thread d'exécution, mais également entre différents threads dans SMT. (fuite de données possible entre le code exécuté sur différents cœurs de processeur logiques).

Les chercheurs ont proposé une méthode de base pour détecter les changements dans le cache des micro-opérations et plusieurs scénarios d'attaque qui permettent de créer des canaux de transmission de données cachés et d'utiliser du code vulnérable pour divulguer des données confidentielles, à la fois au sein d'un même processus (par exemple, pour divulguer des données de processus lors de l'exécution code tiers dans les moteurs avec JIT et dans les machines virtuelles), et entre le noyau et les processus dans l'espace utilisateur.

Lors de l'organisation d'une variante de l'attaque Spectre à l'aide d'un cache de micro-opération, les chercheurs ont pu atteindre des performances de 965.59 Kbps avec un taux d'erreur de 0.22 % et de 785.56 Kbps lors de l'utilisation de la correction d'erreur, dans le cas de l'organisation d'une fuite au sein de la même adresse. espace et niveau de privilège. Avec une fuite couvrant différents niveaux de privilèges (entre le noyau et l'espace utilisateur), les performances étaient de 85.2 Kbps avec correction d'erreur ajoutée et de 110.96 Kbps avec un taux d'erreur de 4 %. Lors de l'attaque des processeurs AMD Zen, créant une fuite entre différents cœurs logiques du processeur, les performances étaient de 250 Kbps avec un taux d'erreur de 5.59 % et de 168.58 Kbps avec correction d'erreur. Par rapport à la méthode classique Spectre v1, la nouvelle attaque était 2.6 fois plus rapide.

Il est probable que la protection contre une attaque de cache micro-op nécessitera des modifications qui réduiront davantage les performances que si vous aviez activé la protection contre les attaques Spectre. Comme compromis optimal, il est proposé de bloquer de telles attaques non pas en désactivant la mise en cache, mais au niveau de la surveillance des anomalies et de l'identification des états du cache typiques des attaques.

Comme dans les attaques Spectre, l'organisation d'une fuite du noyau ou d'autres processus nécessite l'exécution d'une certaine séquence de commandes (gadgets) du côté des processus victimes, conduisant à une exécution spéculative d'instructions. Environ 100 gadgets similaires ont été trouvés dans le noyau Linux, qui seront supprimés, mais des solutions de contournement pour leur génération sont périodiquement trouvées, par exemple liées à l'exécution de programmes BPF spécialement conçus dans le noyau.

Source: opennet.ru

Ajouter un commentaire