Les enclaves protégées des processeurs Intel utilisables par des malwares

Les enclaves protégées des processeurs Intel utilisables par des malwares

Les enclaves protégées des processeurs Intel utilisables par des malwares

Une équipe de chercheurs, réunissant notamment certains ayant participé à la découverte des failles Meltdown et Spectre, a mis la main sur un sérieux problème de sécurité avec la fonctionnalité SGX (Software Guard eXtensions) des processeurs Intel.

Présente depuis la génération Skylake, elle permet à un code de résider dans une mémoire isolée du système et – normalement – de toute tentative d’accès, à moins d’être expressément autorisée. Ces espaces protégés, appelés enclaves, ne peuvent même pas être lus par le noyau du système ou le BIOS/UEFI.

Problème, les chercheurs ont réussi à implanter un malware dans une enclave. Ils se sont servis des TSX (Transactional Synchronization eXtensions) pour vérifier si une adresse virtuelle était accessible par le processus en cours. Une opération que le système d’exploitation ne peut pas détecter du fait de l’architecture de SGX.

Les chercheurs tentent ensuite de savoir s’il est possible d’écrire dans cette plage mémoire, via une technique baptisée CLAW (Checking Located Addresses for Writability). L’instruction d’écriture est alors encapsulée dans une transaction TSX, donc toujours indétectable.

On comprend la dangerosité de la méthode, comme chaque fois qu’un malware peut tirer parti du matériel : il se cachera dans une zone protégée que rien ne peut atteindre, et certainement pas un antivirus. Les chercheurs craignent particulièrement une nouvelle génération de ransomwares presque impossibles à déloger.

Selon les chercheurs, les modifications à réaliser peuvent être matérielles comme logicielles. Dans le premier cas, Intel pourrait renforcer l’isolation des enclaves, sans impact sur les performances. Les changements logiciels, eux, arriveraient plus rapidement, mais entraineraient une légère chute des performances.

Intel a reconnu l’existence du problème, sans remettre en question sa fonction SGX. Le fondeur rappelle que son objectif est de protéger ce qui y est placé, non de contrôler qui a le droit d’y entrer : « SGX ne garantit pas que le code exécuté dans l’enclave provient d’une source de confiance ».

La société ne dit pas un mot sur d’éventuelles mesures. En attendant, les chercheurs ont publié un prototype d’exploitation et le rapport complet de leurs travaux.

Commentaires (16)




chaque fois qu’un malware peut tirer parti du matériel : il se cachera dans une zone protégée que rien ne peut atteindre, et certainement pas un antivirus. Les chercheurs craignent particulièrement une nouvelle génération de ransomwares presque impossibles à déloger.



Que faut-il comprendre par là ? Une mise hors tension physique ne déloge pas ce qui est en mémoire cache du SGX ? C’est une EEPROM qui conserve le programme y compris hors tension ?


J’ai un peu de mal à comprendre. Ils arrivent à sortir de l’enclave pour accéder au système classique, mais ils n’ont pas trouvé de moyen logiciel d’accéder au contenu de l’enclave ?

 

Du coup il n’y a pas encore de moyen non matériel de placer un malware dans l’enclave, juste un moyen de faire des dégâts si jamais l’enclave est déjà infectée “physiquement” ?


/mode curieux on



Existe-t-il l’équivalent de ce SGX chez AMD (archi Zen) ?



/mode curieux off


C’est ce que j’ai compris aussi <img data-src=" />



Du coup, pour le moment, le soucis se posent surtout sur du matos qui est passé entre les mains de tiers (occasion, cloud)


Je ne suis pas sûr d’avoir bien compris non plus mais voici ce que j’ai compris :

Dans les processeurs Intel, il y a possibilité d’exécuter un programme de manière protégé de tel sorte qu’absolument rien (ni l’OS ni l’UEFI et encore moins un anti-virus) puisse contrôler ce qu’il fait.



De là, un programme malveillant peut tout à fait se faire exécuter dans une tel mode, il sera totalement indétectable. Les chercheurs ici auraient montré qu’il est possible de faire des instructions sur l’accès à des portions de mémoires qui aurait dû normalement faire tilter n’importe quel système de sécurité.


@Nozalys: Oui, le SGX a accès à de la mémoire non-volatile. Je crois bien me souvenir que cette mémoire est apportée par le PCH.



@sebmil: oui, c’est exactement ça. Il faut déjà réussir à injecter le code du malware dans l’enclave, mais ca n’a rien de très compliqué. L’enclave est conçue pour protéger le code déjà enclavé, mais pas vraiment pour protéger d’enclaver du nouveau code.


En résumé : n’importe quel binaire, y compris malicieux, peut se cacher dans l’enclave et être ainsi totalement indétectable et impossible à déloger ?








Vekin a écrit :



En résumé : n’importe quel binaire, y compris malicieux, peut se cacher dans l’enclave et être ainsi totalement indétectable et impossible à déloger ?







Hmm… oui et non



Analogie foireuse:

* L’enclave c’est “virtualbox.exe”

* la mémoire non-volatile dans l’enclave c’est le fichier image-disque “myharddrive.vdi”.



Donc, oui , n’importe quel malware peut se créer un nouvel host virtualbox, copier un truc bootable dans le fichier image-disque et demander virtualbox d’executer le tout.



Oui, ce fichier image-disque résiste au reboot.



Mais au prochain reboot, il faut que du code “normal” demande à virtualbox d’executer le host déjà créé.



=&gt; la technique présentée ici (SGX) permet de cacher l’execution de la partie nocive du malware (= la partie qui scanne la mémoire ou injecte du code). Mais le malware doit exister aussi en dehors de l’enclave (la partie “bootstrap”)



Dis moi si je me trompe :

L’enclave, c’est un système qui permet à un programme de pouvoir exécuter un bout de code à l’abri des regards indiscrets. Même l’OS ou l’UEFI ne peuvent pas voir ce qu’il s’y passe.

J’imagine que ça doit servir par exemple dans tout ce qui est cryptographie pour éviter de laisser traîner la clé privé à la vu d’un OS un peu trop indiscret.



Et ce que montre les chercheur ici, c’est que ce mécanisme peut être aussi utilisé pour lancer des programmes malveillants (ici des tentatives d’accès à des zones mémoires) sans aucune possibilité de repérer ces actions malveillantes.





A priori, le SGX n’est pas indispensable, et pour le commun des mortels, le désactiver ne changerait pas grand chose.








tazvld a écrit :



[…]A priori, le SGX n’est pas indispensable, et pour le commun des mortels, le désactiver ne changerait pas grand chose.





Le peut-on ? J’ai pas souvenir de l’acronyme SGX dans les paramètres de mon UEFI par exemple.

Et, est-ce que le désactiver serait si anodin que tu le supposes ? S’il existe ce n’est pas pour rien. Je présume que le désactiver rend de nombreuses applications plus poreuses aux attaques (identification, navigation, chiffrement, codes de CB, gestionnaires de mot de passe, etc.)



A ma connaissance, il n’y a pas grand-chose qui utilise SGX pour l’instant parce que c’est une techno propriétaire à Intel dispo qu’à partir de leur 7e gen. Donc il y a tous ceux qui ont de processeurs plus vieux et, de plus, il existe d’autres acteurs sur le marché des processeurs (AMD et tout le monde des processeurs ARM). Donc pas de perte de sécurité pour moi. On a fait de la cryptographie bien avant ce genre de technos et on continuera d’en faire sans ça de manière sécurisée. D’après certains commentaires sur cet article d’Ars Technica (qui est plus complet d’ailleurs)https://arstechnica.com/gadgets/2019/02/researchers-use-intel-sgx-to-put-malware… , ça serait utiliser entres autres par des DRM, notamment CyberLink l’utiliserai pour lire des blu-ray uhd. C’est de la sécurité par l’obscurité mais surtout pour éviter que ça soit piraté.


Pas forcément d’un point de vu UEFI, mais d’un point de vu microgiciel. Intel peut décider que conserver cette outil est plus dangereux que bénéfique et donc le désactive.



Sinon, pour le reste de tes questions, Typhlos a dit à peu près ce que je pensais : c’est récent, c’est Intel Only, on s’est démerdé sans pour l’instant, et si une nouvelle techno apporte plus de problème qu’elle en résout, retour au labo, on laisse tomber pour l’usage grand public pour l’instant en attendant qu’elle soit plus mature.



(les DRM sont effectivement l’usage le plus évident pour le grand public, la master key y est bien caché de l’usager)









Typhlos a écrit :



….





Thx. Et Je vais jeter un oeil à l’article.









tazvld a écrit :



(les DRM sont effectivement l’usage le plus évident pour le grand public, la master key y est bien caché de l’usager)



La piste des gestionnaires de mot de passe est aussi pertinente, j’ai vu dans un article de M.I.S.C. (de mémoire) que l’un des gestionnaire proprio (1Password, toujours de mémoire) l’utilisait.



Ok je vois. Donc si c’est désactivable, c’est une option à considérer pour chez soi.








tazvld a écrit :



L’enclave, c’est un système qui permet à un programme de pouvoir exécuter un bout de code à l’abri des regards indiscrets.







Oui. L’enclave c’est un environnement d’exécution protégé. On parle aussi de “processeur virtuel”, quoi qu’il faudrait plutôt dire “system-on-chip virtuel”.





Même l’OS ou l’UEFI ne peuvent pas voir ce qu’il s’y passe.





Oui. L’OS ou L’UEFI c’est du “logiciel” qui s’exécute sur un processeur physique.

Comme il n’y a pas d’instruction du processeur physique qui permet d’aller scruter l’intérieur d’un processeur virtuel, au final l’OS (ou autre logiciel) ne peut pas voir ce qui se passe dans l’enclave.





J’imagine que ça doit servir par exemple dans tout ce qui est cryptographie pour éviter de laisser traîner la clé privé à la vu d’un OS un peu trop indiscret.





Oui. Et ca protège davantage que la clé privée: ca protège aussi le code utilisée et l’état courant (au sens “machine d’état”, c-a-d les pointeurs/variables). Ca garantit que l’exécution est sécurisée car personne d’extérieur ne peut altérer le processeur virtuel.





Et ce que montre les chercheur ici, c’est que ce mécanisme peut être aussi utilisé pour lancer des programmes malveillants (ici des tentatives d’accès à des zones mémoires) sans aucune possibilité de repérer ces actions malveillantes.





Tout a fait. Pour faire simple, ils ont écrit dans l’enclave un code qui peut lire/écrire n’importe ou en RAM sans devoir passer par les instructions du processeur physique… donc indétectable pour un “logiciel” de type OS, antivirus, …





A priori, le SGX n’est pas indispensable, et pour le commun des mortels, le désactiver ne changerait pas grand chose.





Je ne connais pas d’autre usage que de la cryptographie genre DRM. Donc on peut complètement s’en passer :-)



Thx <img data-src=" />



Fermer