O vulnerabilitate de clasă Meltdown a fost descoperită în procesoarele AMD bazate pe microarhitecturile Zen+ și Zen 2

Un grup de cercetători de la Universitatea Tehnică din Dresda a identificat o vulnerabilitate (CVE-2020-12965) la procesoarele AMD bazate pe microarhitecturile Zen+ și Zen 2, care permite un atac de clasă Meltdown. Inițial s-a presupus că procesoarele AMD Zen+ și Zen 2 nu sunt susceptibile la vulnerabilitatea Meltdown, dar cercetătorii au identificat o caracteristică care duce la acces speculativ la zonele de memorie protejate atunci când folosesc adrese virtuale non-canonice.

Arhitectura AMD64 folosește doar primii 48 de biți ai adresei virtuale și ignoră restul de 16 biți. Se precizează că biții de la 48 la 63 trebuie să copieze întotdeauna valoarea bitului 47 (extensie de biți de semn). Dacă această condiție este încălcată și se încearcă accesarea unei adrese cu valori arbitrare ale biților superiori, procesorul generează o excepție. Completarea în mod repetat a biților superiori face ca spațiul de adrese disponibil să fie împărțit în două blocuri - unul inferior (de la 0 la 00007FFFFFFFFFFFFF), în care biții superiori sunt setați la 800000000000, și unul superior (de la FFFF1 la FFFFFFFFFFFFFF), în care toți biții superiori sunt setați la XNUMX.

Adresele care se încadrează în blocurile specificate sunt numite canonice, iar adresele incorecte cu conținut arbitrar al biților superiori sunt numite non-canonice. Gama inferioară de adrese canonice este de obicei alocată pentru datele de proces, iar intervalul superior este utilizat pentru datele nucleului (accesul la aceste adrese din spațiul utilizatorului este blocat la nivelul de separare a privilegiilor).

Vulnerabilitatea clasică Meltdown se bazează pe faptul că, în timpul execuției speculative a instrucțiunilor, procesorul poate accesa o zonă privată de date și apoi poate renunța la rezultat deoarece privilegiile setate interzic un astfel de acces din procesul utilizatorului. În program, blocul executat în mod speculativ este separat de codul principal printr-o ramură condiționată, care în condiții reale se declanșează întotdeauna, dar datorită faptului că instrucțiunea condiționată folosește o valoare calculată pe care procesorul nu o cunoaște în timpul execuției preventive a codul, toate opțiunile de ramură sunt efectuate în mod speculativ.

Deoarece operațiunile executate în mod speculativ folosesc același cache ca instrucțiunile executate în mod normal, este posibil în timpul execuției speculative să se stabilească markeri în cache care reflectă conținutul biților individuali într-o zonă de memorie privată și apoi în codul executat în mod normal pentru a determina valoarea lor prin sincronizare. accesul de analiză la datele din cache și necache.

O caracteristică a noii vulnerabilități care afectează procesoarele AMD Zen+ și Zen 2 este că procesoarele permit operațiuni speculative de citire și scriere care accesează memoria folosind adrese non-canonice invalide, ignorând pur și simplu cei 16 biți superiori. Astfel, în timpul execuției codului speculativ, procesorul folosește întotdeauna doar cei 48 de biți inferiori, iar valabilitatea adresei este verificată separat. Dacă, la traducerea unei adrese virtuale non-canonice într-o adresă fizică în bufferul de traducere asociativă (TLB), este detectată o potrivire în partea canonică a adresei, atunci operația de încărcare speculativă va returna valoarea fără a lua în considerare conținutul. a celor 16 biți superiori, ceea ce permite ocolirea partajării memoriei între fire. Ulterior, operațiunea va fi considerată invalidă și aruncată, dar accesul la memorie va fi finalizat și datele vor ajunge în cache.

În timpul experimentului, folosind tehnica de determinare a conținutului cache-ului FLUSH+RELOAD, cercetătorii au reușit să organizeze un canal pentru transferul ascuns de date cu o viteză de 125 de octeți pe secundă. Pe lângă cipurile AMD, problema afectează și toate procesoarele Intel, care sunt susceptibile la vulnerabilitatea clasică Meltdown. Aceleași tehnici care ajută la blocarea atacurilor Meltdown, cum ar fi utilizarea instrucțiunilor LFENCE, pot fi folosite pentru a proteja împotriva acestui nou tip de atac. De exemplu, dacă un procesor Intel include protecție hardware împotriva Meltdown sau sistemul are protecție software activată, atunci astfel de configurații nu sunt susceptibile la noua variantă de atac.

Totodată, cercetătorii observă că, în comparație cu procesoarele Intel, arhitectura procesoarelor AMD limitează posibilitatea de a efectua atacuri reale, dar nu exclude utilizarea unei noi metode în combinație cu alte atacuri microarhitecturale pentru a le crește eficacitatea. În special, atacul propus nu permite să se determine conținutul zonelor de memorie ale nucleului și ale altor procese, dar este limitat la capacitatea de a obține acces la alte fire ale aceluiași program care rulează în același spațiu de memorie virtuală.

Deoarece un program fără o vulnerabilitate are capacitatea de a obține acces la firele sale, din punct de vedere practic, metoda este de interes pentru ocolirea izolației sandbox și organizarea interferențelor cu munca altor fire în programe care permit executarea unor terțe părți. cod, cum ar fi browserele web și motoarele JIT . Cercetătorii au examinat vulnerabilitatea motorului JavaScript SpiderMonkey și a nucleului Linux la atac, dar nu au găsit secvențe de cod vulnerabile care ar putea fi folosite pentru a efectua un atac. Pe lângă atacarea aplicațiilor, metoda poate fi folosită și pentru a forța fluxuri de date inacceptabile între elementele microarhitecturale ale procesorului, exploatând în același timp alte vulnerabilități microarhitecturale.

Sursa: opennet.ru

Adauga un comentariu