SQUIP, une nouvelle attaque qui touche les processeurs AMD et entraîne des fuites de données

un groupe de moiChercheurs de l'Université de technologie de Graz (Autriche), anciennement connu pour avoir développé les attaques MDS, NetSpectre, Throwhammer et ZombieLoad, a révélé une nouvelle attaque par canal latéral (CVE-2021-46778) dans la file d'attente du planificateur du processeur AMD utilisé pour planifier l'exécution des instructions dans différentes unités d'exécution du CPU.

L'attaque, appelée SQUIP, permet de déterminer les données utilisées dans les calculs dans un autre processus ou machine virtuelle ou organiser un canal de communication caché entre processus ou machines virtuelles permettant d'échanger des données sans passer par les mécanismes de contrôle d'accès au système.

Les Processeurs AMD basés sur les 1ère, 2ème et 3ème microarchitectures Zen génération (AMD Ryzen 2000-5000, AMD Ryzen Threadripper, AMD Athlon 3000, AMD EPYC) Sont affectés lorsque la technologie de multithreading simultané (SMT) est utilisée.

Les processeurs modernes utilisent une conception superscalaire, où plusieurs instructions sont exécutées simultanément pour optimiser les performances. Ces processeurs traitent les instructions dans un pipeline en plusieurs étapes : (1) récupération, (2) décodage, (3) programmation/exécution et (4) récupération.

L'attaque est basée sur l'évaluation du niveau d'occurrence de la contention (niveau de conflit) dans différentes files d'attente du planificateur et se fait par la mesure des retards lors du démarrage des opérations de vérification effectuées dans un autre thread SMT sur le même processeur physique. Pour analyser le contenu, la méthode Prime+Probe a été utilisée, qui consiste à remplir la file d'attente avec un ensemble de valeurs de référence et à déterminer les modifications en mesurant le temps d'accès à celles-ci au moment du rechargement.

L'étape de programmation/exécution peut traiter les instructions dans le désordre pour maximiser le parallélisme des niveaux d'instruction. Nous décrivons brièvement chacune de ces étapes :

-Chercher. Le CPU recherche la prochaine instruction à exécuter à partir du cache L1i. 
-Décoder. Pour permettre une exécution efficace, les instructions obtenues (macro-opérations) sont décodées en une ou plusieurs micro-opérations plus simples (µops) et placées dans une file d'attente µop. Ces µops sont introduites dans le backend, où elles sont planifiées et exécutées.
-Planifier/Exécuter. Le ou les planificateurs gardent une trace des µops prêts à être exécutés (ont des entrées disponibles) et les planifient dynamiquement (hors service) sur les unités d'exécution disponibles. Un cœur de CPU a plusieurs unités d'exécution et peut avoir plusieurs unités arithmétiques et logiques (ALU), des unités d'exécution de branche (BRU), des unités de génération d'adresse (AGU).

Au cours de l'expérience, les chercheurs ont pu recréer complètement la clé RSA privée de 4096 bits utilisé pour créer des signatures numériques à l'aide de la bibliothèque cryptographique mbedTLS 3.0, qui utilise l'algorithme de Montgomery pour élever un nombre à un module de puissance. 50.500 XNUMX traces ont été nécessaires pour déterminer la clé.

Le temps d'attaque total a pris 38 minutes. Les variantes d'attaque qui fournissent une fuite entre différents processus et machines virtuelles contrôlées par l'hyperviseur KVM sont démontrées. Il est également démontré que la méthode peut être utilisée pour orchestrer un transfert de données caché entre des machines virtuelles à un débit de 0,89 Mbit/s et entre des processus à un débit de 2,70 Mbit/s avec un taux d'erreur inférieur à 0,8 %.

Le cœur du processeur est divisé en plusieurs cœurs logiques, ou threads, exécutant des flux d'instructions indépendants mais partageant des ressources telles que le cache L1i. Les µops de ces threads partagent également dynamiquement les unités d'exécution pour permettre une utilisation totale plus élevée. La partition des différentes parties du noyau.
Cela se fait par échange concurrentiel. Les architectures AMD Zen autorisent deux threads
par noyau. Ces threads peuvent provenir d'un programme unique ou de programmes différents, tels que gérés par le système d'exploitation.

Les processeurs Intel ne sont pas sensibles attaquent parce qu'ils utilisent une file d'attente de planification unique, tandis que les processeurs AMD vulnérables utilisent des files d'attente distinctes pour chaque unité d'exécution.

Comme solution pour bloquer les fuites d'informations, AMD recommandé que les développeurs utiliser des algorithmes qui effectuent toujours des calculs mathématiques en temps constant, quelle que soit la nature des données traitées, et empêche également le forking basé sur des données secrètes.

Enfin, si vous souhaitez en savoir plus, vous pouvez consulter les détails dans la lien ci-dessous.


Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont marqués avec *

*

*

  1. Responsable des données: Miguel Ángel Gatón
  2. Finalité des données: Contrôle du SPAM, gestion des commentaires.
  3. Légitimation: votre consentement
  4. Communication des données: Les données ne seront pas communiquées à des tiers sauf obligation légale.
  5. Stockage des données: base de données hébergée par Occentus Networks (EU)
  6. Droits: à tout moment, vous pouvez limiter, récupérer et supprimer vos informations.