Attaque sur Intel SGX pour extraire des données sensibles ou exécuter du code dans une enclave

Des 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'ETH Zurich ont développé une nouvelle méthode d'attaque des enclaves isolées Intel SGX (Software Guard eXtensions). L'attaque s'appelle SmashEx et est provoquée par des problèmes de réentrée lors de la gestion des situations d'exception lors du fonctionnement des composants d'exécution pour Intel SGX. La méthode d’attaque proposée permet, si vous contrôlez le système d’exploitation, de déterminer des données confidentielles situées dans l’enclave, ou d’organiser la copie de votre code dans la mémoire de l’enclave et son exécution.

Des prototypes d'exploit ont été préparés pour les enclaves avec un runtime basé sur le SDK Intel SGX (CVE-2021-0186) et Microsoft Open Enclave (CVE-2021-33767). Dans le premier cas, la possibilité d'extraire une clé RSA utilisée sur un serveur Web pour HTTPS a été démontrée, et dans le second, il a été possible de déterminer le contenu obtenu par l'utilitaire cURL exécuté à l'intérieur de l'enclave. La vulnérabilité a déjà été corrigée par programme dans les versions d'Intel SGX SDK 2.13 et Open Enclave 0.17.1. Outre le SDK Intel SGX et Microsoft Open Enclave, la vulnérabilité apparaît également dans le SDK Google Asylo, EdgelessRT, Apache Teaclave, Rust SGX SDK, SGX-LKL, CoSMIX et Veracruz.

Rappelons que la technologie SGX (Software Guard Extensions) est apparue dans les processeurs Intel Core de sixième génération (Skylake) et propose une série d'instructions qui permettent aux applications au niveau utilisateur d'allouer des zones de mémoire fermées - des enclaves dont le contenu ne peut pas être lu et 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 des fonctions de saut traditionnelles et des manipulations avec les registres et la pile - de nouvelles instructions spécialement créées EENTER, EEXIT et ERESUME sont utilisées pour transférer le contrôle à l'enclave, qui effectue des contrôles d'autorité. Dans ce cas, le code placé dans l'enclave peut utiliser des méthodes d'appel classiques pour accéder aux fonctions à l'intérieur de l'enclave et des instructions spéciales pour appeler des fonctions externes. Le cryptage de la mémoire enclave est utilisé pour se protéger contre les attaques matérielles telles que la connexion à un module DRAM.

Attaque sur Intel SGX pour extraire des données sensibles ou exécuter du code dans une enclave

Le problème est que la technologie SGX permet au système d'exploitation d'abandonner une enclave en lançant une exception matérielle, et les enclaves n'implémentent pas correctement les primitives pour gérer atomiquement de telles exceptions. 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 permettant d'organiser les actions atomiques lors de la gestion des exceptions levées de manière asynchrone. Sans les primitives atomiques spécifiées, l'enclave peut être interrompue à tout moment et renvoyée à l'exécution, même lorsque l'enclave exécute des sections critiques et est dans un état dangereux (par exemple, lorsque les registres du processeur ne sont pas sauvegardés/restaurés).

Attaque sur Intel SGX pour extraire des données sensibles ou exécuter du code dans une enclave

Pour un fonctionnement normal, la technologie SGX permet d'interrompre l'exécution de l'enclave par des exceptions matérielles configurables. Cette fonctionnalité permet aux environnements d'exécution enclave d'implémenter la gestion des exceptions ou le traitement du signal intra-enclave, mais elle peut également provoquer des erreurs réentrantes. L'attaque SmashEx est basée sur l'exploitation de failles du SDK en raison desquelles la situation de rappel du gestionnaire d'exceptions n'est pas correctement gérée. Il est important que pour exploiter la vulnérabilité, l'attaquant soit capable d'interrompre l'exécution de l'enclave, c'est-à-dire doit contrôler le fonctionnement de l’environnement système.

Après avoir lancé une exception, l'attaquant reçoit une petite fenêtre de temps pendant laquelle le thread d'exécution peut être intercepté via la manipulation des paramètres d'entrée. En particulier, si vous avez accès au système (environnement extérieur à 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), qui rendra le contrôle au système à un stade où la configuration de la pile pour le l'enclave n'est pas encore terminée, dans laquelle l'état des registres du processeur est également enregistré.

Le système peut alors rendre le contrôle à l'enclave, mais comme la pile de l'enclave n'a pas été configurée au moment de l'interruption, l'enclave s'exécutera avec la pile résidant dans la mémoire système, ce qui peut être utilisé pour utiliser une programmation orientée retour (ROP ) techniques d'exploitation.Programmation Orientée). Lorsqu'il utilise la technique ROP, l'attaquant ne cherche pas à placer son code en mémoire, mais opère sur des morceaux d'instructions machine 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 les fins des fonctions de la bibliothèque) . Le travail de l'exploit se résume à construire une chaîne d'appels vers des blocs similaires (« gadgets ») pour obtenir la fonctionnalité souhaitée.

Attaque sur Intel SGX pour extraire des données sensibles ou exécuter du code dans une enclave
Attaque sur Intel SGX pour extraire des données sensibles ou exécuter du code dans une enclave


Source: opennet.ru

Ajouter un commentaire