Actualités

PAcMan : quand les SoCs M1 d’Apple et ARM sont impactés par une faille exploitant une attaque par canal latéral ! (Spectre et Meltdown qui gravitent…)

Tout comme la vulnérabilité mettant en (pre)lumière une défaillance ou exploit potentiel sous Zen et Zen 2 pour les micro-solutions matérielles AMD (dans le cadre de la future édition Usenix Security Symposium, qui prendra place entre le 10 et 12 Août 2022), désormais comblées depuis le 10 Mai 2022 au détour d’un patch massif de l’éditeur et fabricant, c’est au tour des SoCs d’Apple, dans la même lignée insécuritaire, d’être mis à mal via un exploit potentiel observé pour les solutions M1, au moins, depuis 2021.

 

 

“Nous avons présenté PACMAN, une nouvelle attaque d’exécution spéculative contre l’authentification par pointeur ARM. Nous avons procédé à l’ingénierie inverse des organisations TLB sur Apple M1 et avons démontré plusieurs attaques de preuve de concept qui fonctionnent à travers les niveaux de privilège […] Dans la couche matérielle, les vulnérabilités micro-architecturales des canaux latéraux (telles que Spectre et Meltdown) peuvent être exploitées pour faire fuir des données arbitraires dans l’espace d’adressage du programme victime […] Tout d’abord, nous construisons des oracles PAC en utilisant le gadget de données PACMAN et le gadget d’instructions PACMAN. Deuxièmement, nous utilisons l’oracle PAC pour forcer les PAC par force brute et évaluer plus en détail la vitesse et la précision de l’attaque par force brute. Enfin, nous démontrons une attaque de détournement de flux de contrôle ciblant le noyau compatible PA. Toutes les attaques PoC sont effectuées à travers les niveaux de privilège, où l’attaquant est un programme d’espace utilisateur non privilégié et la victime est le noyau du système d’exploitation“, selon le PoC des chercheurs universitaires de Cambridge (Etats-Unis), Joseph Ravichandran, Jay Lang, Weon Taek Na et Mengjia Yan.

 

S’il semble que des correctifs aient été déployés au 16 Mai 2022 par Apple (avec une mention “chercheur anonyme” pour de nombreuses failles impactant le noyau (avec élévation de privilèges pour une cyber-attaque de type RCE, exécution de code distante) sur l’ensemble des systèmes – Bureau et Mobile – du fabricant, le PoC pointe une défaillance potentiellement exploitable depuis le PAc (Pointer Authentication), une fonctionnalité que l’on retrouve sous micro-architecture ARM (v8.3) qui permet d’effectuer une signature chiffrée en exploitant les bits résiduels, dans la zone d’adressage dudit pointeur. Cela permet d’ajouter une vérification sécuritaire pour certains traitements ou tâches. Apple (depuis les SoC A12) et Linux (v5.7) utilisent le PAC, notamment ; problème : celui-ci permet, via plusieurs exploits potentiels et concernant uniquement Apple dans ce PoC global, de détourner certains traitements du SoC M1 pour effectuer une élévation de privilèges non autorisée dans cette cette zone d’adressage, en contournant les accès en lecture-écriture de la mémoire pour injecter du code arbitraire sur le plan matériel mais, aussi, logiciel.

 

Pour y parvenir, un gadget – et un OS : environnement sous bare-metal ! – nommés PAcMan ont été conçus par les chercheurs : une cyber-attaque par ingénierie inversée a été ciblée sur les instructions-cache (mémoire) L1 et L2 en exploitant l’Apple Performance Counter : “La latence d’accès commence à environ 60 cycles, augmente à environ 95 cycles lorsque stride≥256×16KB et N≥12, et augmente encore à 115 cycles lorsque stride≥2048×16KB et N≥23. Nous émettons l’hypothèse que les deux sauts de latence sont causés par des conflits L1 dTLB et des conflits L2 TLB. Il est très probable que le dTLB L1 est de 12 voies avec 256 ensembles et que le TLB L2 est de 23 voies avec 2048 ensembles si les TLB sont inclus. Même si nous sommes confiants quant aux paramètres d’éviction découverts par notre analyse, nous n’avons pas l’intention de conclure que la puce M1 suit notre conception hypothétique, car il peut exister des structures cachées dans la micro-architecture que notre analyse a manquées“. De là, trois types de cyber-attaques ou exploits ont été démontrés :

 

  • PAC Oracle : combiné à une cyber-attaque de type Prime + Probe (par canal auxiliaire ou latéral, ce qui renvoie à Spectre-Meltdown…), une réinitialisation de l’espace partagé entre l’espace-noyau (kernelspace) et la zone d’adressage est effectuée. Au final, cela permet d’ex-filtrer des données en affinant les données issues d’un PAc légitime ou non (par analyse tierce, malveillante) : “lorsqu’un PAC incorrect est utilisé, dans presque tous les cas (99,2 %), nous n’observons aucun échec L1 dTLB. Lorsqu’un PAC correct est utilisé, nous observons au moins 5 échecs pendant 99,6 % du temps“. Toujours dans le même dessein (l’ex-filtration de données), une cyber-attaque par fetching a été opérée avec succès : ici, pas de mémoire ou espace partagé mais un contournement reste tout de même possible en concevant “un conflit dans l’espace-noyau pour évincer une entrée-cible TLB depuis L1 iTLB vers l’espace partagé L1 de TLB“. La cyber-attaque par cross-privilege renvoie quasiment aux mêmes taux de réussite en distinguant le PAc légitime d’un PAc incorrect ;
  • Brute-force : d’une part, par un contournement via la vitesse, en augmentant la vitesse de la branche conditionnelle (réalisation du widget PAcMan : en moyenne 2,69 milli-secondes pour une valeur PAc, sur le fondement que le SoC M1 16-bit prend 2,94 minutes en moyenne pour l’ensemble des valeurs PAc) qui sera en fonction du temps que le syscall (appel-système) ainsi ciblé requiert. D’autre part, par un contournement via la précision, en analysant ou réduisant les plages de valeurs du PAc (0x0 à 0xFFFF) : 5 “échantillons” par PAc donné sont ainsi effectué pour estimer la valeur précise du PAc (selon la valeur médiane des autres PAc, donc, non-concerné ou “manqués”). Pour ce second exploit, près de 50 opérations ont été faites (avec bruit : navigateur, appels vidéos) pour 90 % de justesse (PAc correct) ;

 

  • Jump2Win : contournement en exploitant une faille de type buffer overflow (dépassement de tampon) via, donc, une fonction Win pour cibler ainsi le noyau. L’ensemble vise à une re-écriture de la table du pointeur : la viabilité du PoC, ici, a été démontré avec un kext (kernel extension personnalisée) – intégré dans l’espace-utilisateur, la zone d’adressage – même s’il est souligné par les chercheurs qu’en l’état, un cyber-attaquant qui veut exploiter logiciellement la faille n’en a aucunement besoin.

 

 

Pour parer à de tels exploits, les chercheurs préconisent :

 

  • Une suspension de l’exécution spéculative au niveau du PAc : intégrer des instructions fence-isb pour une instruction PAc donnée mais qui permettrait paradoxalement de favoriser des cyber-attaques type Meltdown via la favorisation du déférencement de manière, également, spéculative pour les PAc invalides. Au final, c’est Meltdown et son patch, entre les lignes, qui seraient à revoir (!) ;
  • Exploiter les mises en lumière antérieures autour de Spectre pour se prémunir de PAcMan, même si, là aussi, d’autres PoCs ou recherches démontrent la faible portée sécuritaire : il est recommandé d’adapter l’ensemble (Spectre compris ?) en intégrant un correctif qui englobe les caches et les mémoires TLBs ;
  • Une autre piste possible viserait à ne plus recycler un PAc : un statut out, en quelque sorte, est recommandé, dès lors que l’instruction PAc est utilisé ou pleinement exploité en mémoire ou traitement ;
  • Enfin, les chercheurs recommandent un correctif à appliquer au niveau des corruption-mémoires pour tout simplement éviter tout intrusion dans le SoC, depuis le PAc.

 

 

L’ensemble sera présenté par les chercheurs au détour de l’ISCA (International Symposium on Computer Architecture) : l’édition 2022 aura lieu entre le 18 Juin et 22 Juin 2022… A veiller !

 

 

 

 

Sources :




  • 50% J'apprécieVS
    50% Je n'apprécie pas
    Pas de commentaire

    Laisser un commentaire

    ;) :zzz: :youpi: :yes: :xmas: :wink: :whistle: :warning: :twisted: :sw: :sleep: :sg1: :schwarzy: :sarko: :sante: :rollol: :roll: :rip: :pt1cable: :popcorn: :pff: :patapai: :paf: :p :ouch: :oops: :o :non: :na: :mrgreen: :mdr: :macron: :love: :lol: :kissou: :kaola: :jesuisdehors: :jap: :ilovesos: :idea: :houra: :hello: :heink: :grumpy: :fume: :frenchy: :fouet: :fouet2: :first: :fessee: :evil: :dispute: :demon: :cryy: :cry: :cpignon: :cool: :cassepc: :capello: :calin: :bug: :boxe: :bounce: :bluesbro: :bisou: :babyyoda: :assassin: :arrow: :annif: :ange: :amen: :D :??: :?: :/ :-| :-x :-o :-P :-D :-? :-8 :-1: :+1: :) :( 8-O

    Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.

    Copyright © Association SOSOrdi.net 1998-2022 - v1.11.6