SmashEx, une attaque contre Intel SGX pour extraire des données ou exécuter du code

chercheurs de l'Université des sciences et technologies de la défense de l'Armée populaire de libération, de l'Université nationale de Singapour et de l'École technique supérieure suisse de Zurich ont développé une nouvelle méthode pour attaquer les enclaves Intel SGX isolées (Extensions de Software Guard).

L'attaque s'appelait SmashEx et cela était dû à des problèmes de réentrée lors de la gestion des exceptions pendant le travail des composants d'exécution pour Intel SGX. La méthode d'attaque proposée permet, s'il y a un contrôle sur le système d'exploitation, de déterminer des données confidentielles situé dans l'enclave, ou organiser la copie de votre code dans la mémoire de l'enclave et son exécution.

N'oubliez pas que la technologie SGX est apparu sur les processeurs Intel Core de XNUMXe génération (Skylake) et propose une série d'instructions qui permettent les applications de niveau utilisateur se voient attribuer des zones de mémoire privées, enclaves, dont le contenu ne peut pas être lu ou modifié même par le noyau et le code exécuté en modes ring0, SMM et VMM.

Il est impossible de transférer le contrôle au code dans l'enclave à l'aide de fonctions transition et manipulations traditionnelles avec les registres et la pile ; De nouvelles instructions EENTER, EEXIT et ERESUME spécialement créées sont utilisées pour transférer le contrôle à l'enclave qui effectue les vérifications d'autorisation. En même temps, le code placé dans l'enclave peut utiliser des méthodes d'appel classiques pour appeler des fonctions au sein de l'enclave et une instruction spéciale pour appeler des fonctions externes. Le chiffrement de la mémoire enclave est utilisé pour se protéger contre les attaques matérielles, telles que la connexion à un module DRAM.

Le problème est lié au fait que la technologie SGX permet au système d'exploitation d'interrompre l'exécution d'une enclave en lançant une exception matérielle, et les primitives de gestion atomique de ces exceptions ne sont pas correctement implémentées dans les enclaves. Contrairement au noyau du système d'exploitation et aux applications classiques, le code à l'intérieur des enclaves n'a pas accès aux primitives pour organiser des actions atomiques lors de la gestion des exceptions asynchrones. Sans les primitives atomiques spécifiées, l'enclave peut être interrompue à tout moment et réexécutée, même lorsque des sections critiques s'exécutent dans l'enclave et qu'elle est dans un état non sécurisé (par exemple, lorsque les registres CPU ne sont pas enregistrés/restaurés).

Pour un fonctionnement normal, la technologie SGX permet d'interrompre l'exécution d'une enclave avec des exceptions matérielles configurable. Cette fonctionnalité permet aux runtimes d'enclave d'implémenter la gestion des exceptions ou la gestion des signaux au sein de l'enclave, mais cela peut également provoquer des erreurs de rentrée. L'attaque SmashEx repose sur l'exploitation de failles dans le SDK en raison de la situation d'appel répété du gestionnaire d'exceptions qui n'est pas gérée correctement. Il est important que pour exploiter la vulnérabilité, l'attaquant doit pouvoir interrompre l'exécution de l'enclave, c'est-à-dire qu'il doit contrôler le travail de l'environnement système.

Après avoir lancé une exception, l'attaquant reçoit une petite fenêtre de temps au cours de laquelle il est possible d'intercepter le flux d'exécution en manipulant les paramètres d'entrée. En particulier, si vous avez accès au système (l'environnement hors de l'enclave), vous pouvez créer une nouvelle exception immédiatement après l'exécution de l'instruction d'entrée dans l'enclave (EENTER), ce qui entraînera le retour du contrôle au système au étape où La configuration de la pile pour l'enclave n'est pas encore terminée, l'état des registres CPU est sauvegardé.

Le système peut alors rendre le contrôle à l'enclave, Mais comme la pile d'enclave n'était pas configurée au moment de l'interruption, l'enclave s'exécutera avec la pile qui réside dans la mémoire système, qui peut être utilisée pour appliquer des techniques d'exploitation de programmation orientée retour (ROP). Programmation orientée).

Lors de l'utilisation de la technique ROP, l'attaquant n'essaie pas de mettre son code en mémoire, mais opère à la place sur les parties des instructions machine qui sont déjà disponibles dans les bibliothèques chargées, se terminant par une instruction de retour de contrôle (en règle générale, ce sont la fin de la bibliothèque de fonctions). Le travail de l'exploit se réduit à construire une chaîne d'appels à des blocs similaires ("gadgets") pour obtenir la fonctionnalité requise.

Les prototypes d'exploitation se préparent à enclaves avec runtime basé sur SDK Intel SGX (CVE-2021-0186) et Enclave ouverte Microsoft (CVE-2021-3376).

Dans le premier cas, la possibilité d'extraire la clé RSA utilisée dans le serveur Web pour HTTPS a été démontrée, et dans le second cas, il a été possible de déterminer le contenu reçu par l'utilitaire cURL s'exécutant à l'intérieur de l'enclave.

La vulnérabilité a déjà été corrigée dans le logiciel sur les versions Intel SGX SDK 2.13 et Open Enclave 0.17.1.

source: https://jasonyu1996.github.io


Laisser un commentaire

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

*

*

  1. Responsable des données : AB Internet Networks 2008 SL
  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.