LVI est une nouvelle classe d'attaques sur le mécanisme d'exécution spéculative du CPU

Publié informations sur une nouvelle classe d'attaques LVI (Injection de valeur de charge, CVE-2020-0551) sur le mécanisme d'exécution spéculative des processeurs Intel, qui peut être utilisé pour divulguer des clés et des données secrètes des enclaves Intel SGX et d'autres processus.

Une nouvelle classe d'attaques est basée sur la manipulation des mêmes structures microarchitecturales utilisées dans les attaques MDS (Échantillonnage de données microarchitecturales), Spectre et fusion. Dans le même temps, les nouvelles attaques ne sont pas bloquées par les méthodes de protection existantes contre Meltdown, Spectre, MDS et autres attaques similaires. Une protection LVI efficace nécessite des modifications matérielles du processeur. Lors de l'organisation de la protection par programme, en ajoutant l'instruction LFENCE par le compilateur après chaque opération de chargement depuis la mémoire et en remplaçant l'instruction RET par POP, LFENCE et JMP, une surcharge trop importante est enregistrée - selon les chercheurs, une protection logicielle complète entraînera une diminution de performance de 2 à 19 fois.

Une partie de la difficulté à bloquer le problème est compensée par le fait que l'attaque est actuellement plus théorique que pratique (l'attaque est théoriquement possible, mais très difficile à mettre en œuvre et reproductible uniquement dans des tests synthétiques).
Intel approprié le problème présente un niveau de danger modéré (5.6 sur 10) et libéré mise à jour du micrologiciel et du SDK pour l'environnement SGX, dans lequel il a tenté de bloquer l'attaque à l'aide d'une solution de contournement. Les méthodes d'attaque proposées ne sont actuellement applicables qu'aux processeurs Intel, mais la possibilité d'adapter LVI à d'autres processeurs auxquels les attaques de classe Meltdown sont applicables ne peut être exclue.

Le problème a été identifié en avril dernier par le chercheur Jo Van Bulck de l'Université de Louvain, après quoi, avec la participation de 9 chercheurs d'autres universités, cinq méthodes d'attaque de base ont été développées, chacune permettant l'existence de méthodes plus spécifiques. les options. Indépendamment, en février de cette année, des chercheurs de Bitdefender ont également trouvé l'une des variantes d'attaque LVI et l'a signalé à Intel. Les variantes d'attaque se distinguent par l'utilisation de différentes structures microarchitecturales, telles que le tampon de stockage (SB, Store Buffer), le tampon de remplissage (LFB, Line Fill Buffer), le tampon de changement de contexte FPU et le cache de premier niveau (L1D), précédemment utilisés. dans des attaques telles que ZombieLoad, RIDL, Fallout, ParesseuxFP, Annoncer и Meltdown.

LVI est une nouvelle classe d'attaques sur le mécanisme d'exécution spéculative du CPU

Le principal honneurs Le LVI contre les attaques MDS est que MDS manipule la détermination du contenu des structures microarchitecturales restant dans le cache après une gestion spéculative des erreurs ou des opérations de chargement et de stockage, tandis que
Les attaques LVI permettent aux données de l'attaquant d'être insérées dans des structures microarchitecturales pour influencer l'exécution spéculative ultérieure du code de la victime. Grâce à ces manipulations, un attaquant peut extraire le contenu de structures de données privées dans d'autres processus lors de l'exécution de certains codes sur le cœur du processeur cible.

LVI est une nouvelle classe d'attaques sur le mécanisme d'exécution spéculative du CPU

Pour problème d'exploitation dans le code du processus victime devrait rencontrer des séquences spéciales de code (gadgets) dans lesquelles une valeur contrôlée par l'attaquant est chargée, et le chargement de cette valeur provoque la levée d'exceptions (erreur, abandon ou assistance), rejetant le résultat et réexécutant l'instruction. Lorsqu'une exception est traitée, une fenêtre spéculative apparaît au cours de laquelle les données traitées dans le gadget fuient. En particulier, le processeur commence à exécuter un morceau de code (gadget) en mode spéculatif, puis détermine que la prédiction n'était pas justifiée et ramène les opérations à leur état d'origine, mais les données traitées lors de l'exécution spéculative sont déposées dans le cache L1D. et des tampons microarchitecturaux et est disponible pour une récupération à partir de ceux-ci à l'aide de procédés connus pour déterminer des données résiduelles par l'intermédiaire de canaux tiers.

L'exception « assistance », contrairement à l'exception « défaut », est gérée en interne par le processeur sans appeler les gestionnaires logiciels. L'assistance peut se produire, par exemple, lorsque le bit A (Accès) ou D (Sale) dans la table des pages mémoire doit être mis à jour. La principale difficulté lors de l'attaque d'autres processus est de savoir comment déclencher l'assistance en manipulant le processus victime. Il n’existe actuellement aucun moyen fiable d’y parvenir, mais il est possible que l’on en trouve à l’avenir. La possibilité de mener une attaque n'a pour l'instant été confirmée que pour les enclaves Intel SGX, les autres scénarios sont théoriques ou reproductibles en conditions synthétiques (nécessite l'ajout de certains gadgets au code)

LVI est une nouvelle classe d'attaques sur le mécanisme d'exécution spéculative du CPU

LVI est une nouvelle classe d'attaques sur le mécanisme d'exécution spéculative du CPU

Vecteurs d'attaque possibles :

  • Fuite de données des structures du noyau vers le processus au niveau de l'utilisateur. La protection du noyau Linux contre les attaques Spectre 1, ainsi que le mécanisme de protection SMAP (Supervisor Mode Access Prevention), réduisent considérablement la probabilité d'une attaque LVI. L'ajout d'une protection supplémentaire au noyau peut être nécessaire si des méthodes d'attaque LVI plus simples sont identifiées à l'avenir.
  • Fuite de données entre différents processus. L'attaque nécessite la présence de certains morceaux de code dans l'application et la définition d'une méthode pour lever une exception dans le processus cible.
  • Fuite de données de l’environnement hôte vers le système invité. L'attaque est classée comme trop complexe, nécessitant diverses étapes difficiles à mettre en œuvre et des prédictions d'activité dans le système.
  • Fuite de données entre les processus dans différents systèmes invités. Le vecteur d'attaque est sur le point d'organiser une fuite de données entre différents processus, mais nécessite en outre des manipulations complexes pour contourner l'isolement entre les systèmes invités.

Publié par des chercheurs certains prototypes avec une démonstration des principes de conduite d'une attaque, mais ils ne sont pas encore adaptés à la conduite d'attaques réelles. Le premier exemple permet de rediriger l'exécution de code spéculatif dans le processus victime, similaire à la programmation orientée retour (ROP,Programmation orientée retour). Dans cet exemple, la victime est un processus spécialement préparé contenant les gadgets nécessaires (il est difficile d'attaquer des processus tiers réels). Le deuxième exemple permet d'interférer avec les calculs lors du chiffrement AES au sein de l'enclave Intel SGX et d'organiser une fuite de données lors de l'exécution spéculative d'instructions pour restaurer la valeur de la clé utilisée pour le chiffrement.


Source: opennet.ru

Ajouter un commentaire