Les processeurs Intel crachent une clé privée, si vous jouez avec la tension

Des chercheurs de trois universités européennes ont révélé les détails de la première attaque connue contre SGX .

Le jeu d'instructions SGX (Software Guard eXtensions) permet à l'application de créer des enclaves - des zones dans l'espace d'adressage virtuel qui sont protégées contre la lecture et l'écriture de l'extérieur de cette zone par d'autres processus, y compris le noyau du système d'exploitation. Les enclaves sont isolées au niveau matériel et logiciel: cette mémoire est physiquement séparée du reste de la mémoire du processeur et chiffrée.

L'attaque Plundervolt (CVE-2019-11157) utilise l'interface du système d'exploitation pour contrôler la tension et la fréquence du processeur Intel - la même interface qui est utilisée pour overclocker le CPU pendant l'overclocking. En modifiant la tension du processeur, il extrait les données de l'enclave en quelques minutes, y compris les clés de chiffrement.

Code d'exploitation de démonstration publié sur GitHub . Processeurs vulnérables:

  • Intel Core 6, 7, 8, 9 et 10 générations
  • Intel Xeon E3 v5 et v6
  • Intel Xeon E-2100 et E-2200

Les chercheurs ont réussi à combiner les concepts de deux attaques bien connues:

  • Rowhammer : changez la valeur en bits d'une cellule DRAM de 1 à 0 et vice versa en écrivant des données dans les cellules voisines.
  • Manipulation de puissance du processeur CLKSCREW Mise à l'échelle dynamique de la tension et de la fréquence (DVFS).

Plundervolt combine les principes qui sous-tendent ces deux attaques. Grâce à DVFS, il modifie la tension dans les cellules de mémoire SGX, ce qui entraîne des modifications indésirables des données dans l'enclave.

Le travail est basé sur la rétro-ingénierie précédente des processeurs Intel. Il a révélé quels registres MSR (ModelSpecific Register) sont responsables du changement dynamique de la tension du CPU après une commande de programme. Ces registres se trouvent dans tous les processeurs Intel.


Schéma de registre non documenté MSR avec l'adresse 0x150

Il s'est avéré que dans les processeurs vulnérables, un changement de bit prévisible se produit. Par exemple, dans le processeur Core i3-7100U, avec une chute de tension de 118 mV, l'opération 0x80D36 * 0x21 = 0x109b3f6 donne une valeur prévisible défectueuse de 0xffffffffe109b417 à une fréquence de 2 GHz.

Autres exemples d'échecs de multiplications dans le Core i3-7100U à 2 GHz:



Ces petits changements ne violent pas la confidentialité de SGX. Au lieu de cela, ils introduisent des erreurs dans les opérations de traitement des données SGX. En d'autres termes, Plundervolt ne craque pas SGX, mais modifie le résultat: «La sous-tension induit un changement de bits dans les instructions du processeur, comme la multiplication ou les cycles de chiffrement AES (AES-NI)», explique David Oswald, académicien à l'Université de Birmingham, l'un des auteurs de la revue scientifique travailler. «Étant donné que SGX crypte uniquement les données lors de leur lecture et de leur écriture dans la mémoire (mais pas à l'intérieur du processeur), la protection de la mémoire SGX n'empêche pas ces erreurs (car les valeurs erronées sont écrites dans la mémoire elles-mêmes.»)



Plundervolt vous permet de voir les messages chiffrés sortant de l'enclave SGX, puis de restaurer la clé secrète utilisée à l'origine pour chiffrer les données.





Les chercheurs ont démontré l'efficacité de l'attaque en introduisant des bogues dans la mise en œuvre d'Intel RSA-CRT et AES-NI, fonctionnant dans l'enclave SGX. Ils ont pu récupérer des clés cryptographiques complètes avec peu d'effort de calcul.

Code pour tester l'attaque (référentiel sur GitHub)

L'attaque décrite ne nécessite pas d'augmentation radicale de la tension, elle ne menace donc pas la sécurité physique de la puce. En fait, cette propriété de Plundervolt rend une attaque encore plus dangereuse. Une autre propriété dangereuse est qu'elle est beaucoup plus rapide que la plupart des autres attaques contre les processeurs Intel, tels que Spectre, Meltdown, Zombieload, RIDL et autres. Le tableau indique le nombre d'itérations jusqu'à ce qu'une erreur de multiplication ( 0xAE0000 * 0x18 ) 0xAE0000 * 0x18 à différentes valeurs de sous-tension dans le I3-7100U à 2 GHz:



Changer les bits dans les multiplications AES est très rapide. Par exemple, la récupération d'une clé AES prend plusieurs minutes, y compris le calcul nécessaire pour obtenir la clé du texte chiffré défaillant, dit Oswald.

Malheureusement pour les attaquants, l'attaque de Plundervolt est difficile à mener à distance. Vous ne pouvez pas attirer un utilisateur vers un site Web et exécuter JavaScript. La tension du processeur par cette méthode ne change pas. Pour fonctionner, Plundervolt requiert qu'une victime sur l'ordinateur soit root ou admin. Cela nécessite une ingénierie sociale et l'utilisation d'exploits supplémentaires.

Plundervolt ne fonctionne pas dans les environnements virtualisés , tels que les machines virtuelles et les services de cloud computing, où le système d'exploitation invité n'a pas accès à l'interface qui contrôle la tension du processeur.

Cependant, Plundervolt est un problème grave. L'équipe de recherche a informé Intel de la vulnérabilité en juin 2019, et le fabricant de CPU travaille depuis sur des correctifs. Les mises à jour du micrologiciel et du BIOS ont été publiées le 10 décembre 2019 dans le cadre des recommandations de sécurité INTEL-SA-00289 . Après avoir installé les correctifs dans le BIOS, vous pouvez désactiver l'interface pour gérer la tension et la fréquence d'horloge.

Pour une description technique de l'attaque, voir l' article scientifique (pdf) , qui sera publié dans les Actes du 41e Symposium de l'IEEE sur la sécurité et la confidentialité .

Source: https://habr.com/ru/post/fr480526/


All Articles