S'ha descobert una vulnerabilitat de classe Meltdown als processadors AMD basats en microarquitectures Zen+ i Zen 2

Un grup d'investigadors de la Universitat Tècnica de Dresden ha identificat una vulnerabilitat (CVE-2020-12965) en els processadors AMD basats en microarquitectures Zen+ i Zen 2, que permet un atac de classe Meltdown. Inicialment es va suposar que els processadors AMD Zen+ i Zen 2 no són susceptibles a la vulnerabilitat Meltdown, però els investigadors van identificar una característica que condueix a un accés especulatiu a àrees de memòria protegides quan s'utilitzen adreces virtuals no canòniques.

L'arquitectura AMD64 utilitza només els primers 48 bits de l'adreça virtual i ignora els 16 bits restants. S'especifica que els bits del 48 al 63 sempre han de copiar el valor del bit 47 (extensió del bit de signe). Si es viola aquesta condició i s'intenta accedir a una adreça amb valors arbitraris dels bits superiors, el processador genera una excepció. Omplir repetidament els bits superiors fa que l'espai d'adreces disponible es divideixi en dos blocs: un d'inferior (de 0 a 00007FFFFFFFFFFFFF), en el qual els bits superiors s'estableixen a 800000000000, i un de superior (de FFFF1 a FFFFFFFFFFFFFFFF), en el qual tots els bits superiors s'estableixen a XNUMX.

Les adreces que es troben dins dels blocs especificats s'anomenen canònics, i les adreces incorrectes amb contingut arbitrari dels bits superiors s'anomenen no canòniques. L'interval inferior d'adreces canòniques s'assigna normalment per a dades de procés, i l'interval superior s'utilitza per a les dades del nucli (l'accés a aquestes adreces des de l'espai d'usuari està bloquejat al nivell de separació de privilegis).

La vulnerabilitat clàssica de Meltdown es basa en el fet que durant l'execució especulativa d'instruccions, el processador pot accedir a una àrea de dades privades i després descartar el resultat perquè els privilegis establerts prohibeixen aquest accés al procés de l'usuari. Al programa, el bloc executat de manera especulativa està separat del codi principal per una branca condicional, que en condicions reals sempre s'activa, però a causa del fet que la instrucció condicional utilitza un valor calculat que el processador no coneix durant l'execució preventiva de el codi, totes les opcions de branca es duen a terme de manera especulativa.

Atès que les operacions executades de manera especulativa utilitzen la mateixa memòria cau que les instruccions executades normalment, és possible durant l'execució especulativa establir marcadors a la memòria cau que reflecteixin el contingut de bits individuals en una àrea de memòria privada i, a continuació, en el codi executat normalment per determinar el seu valor a través del temps. anàlisi d'accés a dades emmagatzemades i no a la memòria cau.

Una característica de la nova vulnerabilitat que afecta els processadors AMD Zen+ i Zen 2 és que les CPU permeten operacions especulatives de lectura i escriptura que accedeixen a la memòria mitjançant adreces no vàlides no canòniques, simplement ignorant els 16 bits superiors. Així, durant l'execució de codi especulatiu, el processador sempre utilitza només els 48 bits inferiors i la validesa de l'adreça es verifica per separat. Si, en traduir una adreça virtual no canònica a una adreça física al buffer de traducció associativa (TLB), es detecta una coincidència a la part canònica de l'adreça, aleshores l'operació de càrrega especulativa retornarà el valor sense tenir en compte el contingut. dels 16 bits superiors, que permet evitar la compartició de memòria entre fils. Posteriorment, l'operació es considerarà no vàlida i es descartarà, però l'accés a la memòria es completarà i les dades acabaran a la memòria cau.

Durant l'experiment, utilitzant la tècnica de determinar el contingut de la memòria cau FLUSH+RELOAD, els investigadors van poder organitzar un canal per a la transferència de dades ocultes a una velocitat de 125 bytes per segon. A més dels xips AMD, el problema també afecta tots els processadors Intel, que són susceptibles a la clàssica vulnerabilitat Meltdown. Les mateixes tècniques que ajuden a bloquejar els atacs Meltdown, com ara utilitzar instruccions LFENCE, es poden utilitzar per protegir-se d'aquest nou tipus d'atac. Per exemple, si un processador Intel inclou protecció de maquinari contra Meltdown o si el sistema té la protecció de programari activada, aquestes configuracions no són susceptibles a la nova variant d'atac.

Al mateix temps, els investigadors assenyalen que, en comparació amb els processadors Intel, l'arquitectura dels processadors AMD limita la possibilitat de dur a terme atacs reals, però no exclou l'ús d'un nou mètode en combinació amb altres atacs de microarquitectura per augmentar-ne l'eficàcia. En particular, l'atac proposat no permet determinar el contingut de les àrees de memòria del nucli i altres processos, però es limita a la possibilitat d'accedir a altres fils del mateix programa que s'executen al mateix espai de memòria virtual.

Atès que un programa sense vulnerabilitat té la capacitat d'accedir als seus fils, des d'un punt de vista pràctic el mètode és d'interès per evitar l'aïllament del sandbox i organitzar la interferència amb el treball d'altres fils en programes que permeten l'execució de tercers. codi, com ara navegadors web i motors JIT . Els investigadors van examinar la vulnerabilitat del motor JavaScript SpiderMonkey i del nucli Linux per atacar, però no van trobar seqüències de codi vulnerables que es poguessin utilitzar per dur a terme un atac. A més d'atacar aplicacions, el mètode també es pot utilitzar per forçar fluxos de dades inacceptables entre elements microarquitectònics del processador mentre s'explota altres vulnerabilitats microarquitectòniques.

Font: opennet.ru

Afegeix comentari