AMD a confirmat potențiala vulnerabilitate a procesoarelor AMD Zen 3 la atacul Spectre-STL

AMD a publicat un raport care analizează securitatea tehnologiei de optimizare PSF (Predictive Store Forwarding) implementată în procesoarele din seria Zen 3. Studiul a confirmat teoretic aplicabilitatea metodei de atac Spectre-STL (Spectre-v4), identificată în mai 2018, pentru Tehnologia PSF, dar în practică, nu au fost găsite încă șabloane de cod capabile să conducă la un atac, iar pericolul general este evaluat ca fiind nesemnificativ.

Să reamintim că atacul Spectre-v4 (Speculative Store Bypass) se bazează pe restaurarea datelor care s-au instalat în memoria cache a procesorului după eliminarea rezultatului execuției speculative a operațiunilor atunci când procesează operațiuni alternative de scriere și citire folosind adresare indirectă. Atunci când o operație de citire urmează unei operațiuni de scriere (de exemplu, mov [rbx + rcx], 0x0; mov rax, [rdx + rsi]), decalajul adresei de citire poate fi deja cunoscut datorită operațiunilor similare efectuate (operațiile de citire sunt efectuate mult mai frecvent și citirile pot fi efectuate din cache), iar procesorul poate efectua în mod speculativ citiri înainte de scrieri fără a aștepta ca offset-ul indirect al scrierii să fie calculat.

Această caracteristică permite unei instrucțiuni de citire să acceseze o valoare veche la o anumită adresă în timp ce operațiunea de stocare nu este încă finalizată. Dacă există o eroare de predicție, operațiunea speculativă nereușită va fi eliminată, dar urmele executării acesteia vor rămâne în memoria cache a procesorului și pot fi preluate prin una dintre metodele de determinare a conținutului cache-ului pe baza unei analize a modificărilor de acces. timp pentru datele din cache și necache.

Adăugat la procesoarele AMD Zen 3, PSF optimizează STLF (Store-To-Load-Forwarding), care efectuează operațiuni de citire în mod speculativ, prezicând relația dintre operațiunile de citire și scriere. Când se utilizează STLF clasic, procesorul efectuează o operațiune de „încărcare” asupra datelor redirecționate direct din comanda anterioară „stocare”, fără a aștepta ca rezultatul să fie efectiv scris în memorie, dar asigurându-se că adresele utilizate în „încărcare” și comenzile „store” se potrivesc. Optimizarea PSF face ca verificarea adresei să fie speculativă și efectuează o operațiune de „încărcare” înainte ca informațiile de adresă să fie calculate dacă a fost executată anterior o pereche de stocare/încărcare care manipulează o singură adresă. Dacă predicția eșuează, starea este anulată, dar datele rămân în cache.

Un atac asupra PSF este posibil doar în cadrul unui singur nivel de privilegii, acoperă doar contextul curent al procesului și este blocat de metodele de izolare a spațiului de adrese sau de mecanismele sandbox hardware. În acest caz, metodele software sandboxing în procese pot fi potențial afectate de problemă. Atacul reprezintă o amenințare pentru sisteme precum browsere, mașini virtuale de execuție a codului și JIT-uri care execută cod terță parte într-un singur proces (atacul ar putea permite codului sandbox neîncrezat să obțină acces la alte date de proces).

AMD a oferit o serie de metode pentru dezactivarea completă sau selectivă a PSF, dar având în vedere riscul neglijabil pentru majoritatea aplicațiilor, a recomandat ca această optimizare să nu fie dezactivată în mod implicit. Pentru a proteja selectiv procesele care izolează pe cei care execută cod nedemn de încredere, se propune dezactivarea PSF prin setarea biților MSR „SSBD” și „PSFD”, inclusiv pentru firele individuale. Patch-urile au fost pregătite pentru nucleul Linux cu implementarea opțiunilor de linie de comandă „psfd” și „nopsfd” care controlează modul în care PSF este pornit și oprit.

Sursa: opennet.ru

Adauga un comentariu