LVI CVE-2020-0551 Cette nouvelle classe d'attaques repose sur des manipulations des mĂȘmes structures microarchitecturales que celles des attaques
(Microarchitectural Data Sampling), Spectre et Meltdown Partiellement, la difficultĂ© de bloquer ce problĂšme est compensĂ©e par le fait qu'Ă l'heure actuelle, l'attaque a un caractĂšre plus thĂ©orique que pratique (elle est thĂ©oriquement possible, mais trĂšs difficile Ă rĂ©aliser et ne peut ĂȘtre reproduite que dans des tests synthĂ©tiques).
a attribué
La société Intel a publié Le problÚme a été identifié en avril de l'année derniÚre par le chercheur Jo Van Bulck de l'Université de Louvain, aprÚs quoi, avec la participation de 9 chercheurs d'autres universités, cinq méthodes de base pour effectuer des attaques ont été développées, chacune admettant l'existence de variantes plus spécifiques.
Indépendamment, en février de cette année, des chercheurs de la société Bitdefender ont également l'une des variantes de l'attaque LVI et en ont informé Intel. Les variantes des attaques diffÚrent par l'utilisation de diverses structures microarchitecturales, telles que le tampon de stockage (SB, Store Buffer), le tampon de remplissage (LFB, Line Fill Buffer), le tampon de commutation de contexte FPU et le cache de premier niveau (L1D), précédemment utilisés dans des attaques telles que LazyFP , , , , et .
La principale entre LVI et les attaques MDS est que MDS manipule la définition du contenu des structures microarchitecturales restantes dans le cache aprÚs un traitement spéculatif d'exceptions (fault) ou d'opérations de chargement et de stockage, tandis que
les attaques LVI permettent d'injecter des donnĂ©es de l'attaquant dans les structures microarchitecturales pour influencer l'exĂ©cution spĂ©culative ultĂ©rieure du code de la victime. GrĂące Ă ces manipulations, l'attaquant peut extraire le contenu des structures de donnĂ©es privĂ©es dans d'autres processus lors de l'exĂ©cution d'un certain code sur le cĆur CPU cible.
Pour dans le code du processus victime des sĂ©quences de code particuliĂšres (gadgets), dans lesquelles une valeur contrĂŽlĂ©e par l'attaquant est chargĂ©e, et le chargement de cette valeur entraĂźne la levĂ©e d'exceptions (fault, abort ou assist), qui rejettent le rĂ©sultat et rĂ©exĂ©cutent l'instruction. Lors du traitement de l'exception, une fenĂȘtre spĂ©culative se crĂ©e, durant laquelle des donnĂ©es traitĂ©es dans le gadget fuient. En particulier, le processeur commence Ă exĂ©cuter en mode spĂ©culatif un morceau de code (gadget), puis dĂ©termine que la prĂ©diction Ă©tait incorrecte et annule les opĂ©rations Ă leur Ă©tat initial, mais les donnĂ©es traitĂ©es pendant l'exĂ©cution spĂ©culative s'accumulent dans le cache L1D et les tampons microarchitecturaux et sont accessibles pour ĂȘtre extraites au moyen de mĂ©thodes connues de dĂ©tection de donnĂ©es rĂ©siduelles par des canaux latĂ©raux.
L'exception « assist », contrairement Ă la « fault », est traitĂ©e Ă l'intĂ©rieur du processeur sans appel aux gestionnaires de logiciels. Une assist peut survenir, par exemple, lorsqu'il est nĂ©cessaire de mettre Ă jour le bit A (Accessed) ou D (Dirty) dans la table des pages mĂ©moire. La principale difficultĂ© pour mener une attaque sur d'autres processus rĂ©side dans la maniĂšre d'initier la survenue d'une assist en manipulant le processus victime. Actuellement, aucune mĂ©thode fiable n'existe pour ce faire, mais il n'est pas exclu qu'elles soient dĂ©couvertes Ă l'avenir. La possibilitĂ© de mener une attaque a jusqu'Ă prĂ©sent Ă©tĂ© confirmĂ©e uniquement pour les enclaves Intel SGX, les autres scĂ©narios Ă©tant thĂ©oriques ou reproductibles dans des conditions synthĂ©tiques (des gadgets spĂ©cifiques doivent ĂȘtre ajoutĂ©s au code)
Vecteurs d'attaques possibles :
- Fuite de donnĂ©es du noyau vers un processus au niveau utilisateur. La protection du noyau Linux contre les attaques de type Spectre 1, ainsi que le mĂ©canisme de protection SMAP (Supervisor Mode Access Prevention), rĂ©duisent considĂ©rablement le risque d'attaque LVI. Un ajout de protection dans le noyau peut ĂȘtre nĂ©cessaire Ă l'avenir si des mĂ©thodes d'attaque LVI plus simples sont dĂ©couvertes.
- Fuite de données entre différents processus. Une attaque nécessite la présence de fragments de code spécifiques dans l'application et la détermination de la méthode de levée d'exception dans le processus cible.
- Fuite de données de l'environnement hÎte vers le systÚme invité. L'attaque est considérée comme trop complexe, nécessitant l'exécution de diverses étapes difficiles à réaliser et des prévisions d'activité au sein du systÚme.
- Fuite de données entre des processus dans différents systÚmes invités. Le vecteur d'attaque est similaire à l'organisation d'une fuite de données entre différents processus, mais nécessite en plus l'exécution de manipulations complexes pour contourner l'isolation entre les systÚmes invités.
Des chercheurs ont publié démontrant les principes de l'attaque, mais ils ne sont pas encore utilisables pour réaliser de véritables attaques. Le premier exemple permet de diriger l'exécution spéculative du code dans le processus cible de maniÚre similaire à la programmation orientée sur le retour (, Return-Oriented Programming). Dans cet exemple, le processus ciblé est préparé spécifiquement, contenant les gadgets nécessaires (l'application de l'attaque à de véritables processus tiers est difficile). Le deuxiÚme exemple permet de s'immiscer dans les calculs lors du chiffrement AES à l'intérieur de l'enclave Intel SGX et d'organiser une fuite de données durant l'exécution spéculative des instructions pour récupérer la valeur utilisée pour le chiffrement de la clé.

Source : opennet.ru
