Zenbleed: Tot ce trebuie să știți despre această eroare de securitate AMD

Cel mai recent dintr-o serie lungă de erori de securitate pentru procesoare, Zenbleed este încă un lucru care trebuie corectat. Iată ce trebuie să știți.

După ce exploit-urile CPU Spectre și Meltdown au fost făcute publice în 2018, lumea computerelor a fost destul de vigilentă despre găsirea erorilor de securitate și lacune în procesoare, iar în ultimii cinci ani, cercetătorii au găsit o tonă. Pe 24 iulie, un alt exploit a fost dezvăluit public după ce a fost raportat pentru prima dată în mai. De data aceasta, este specific procesoarelor AMD construite pe arhitectura Zen 2 și este numit „Zenbleed". Iată tot ce trebuie să știi despre Zenbleed și ce înseamnă pentru lume.

Cum funcționează Zenbleed?

Zenbleed este foarte asemănător cu alte erori de securitate bazate pe hardware, cum ar fi Spectre, prin faptul că exploatează capacitatea speculativă a procesoarelor. Pentru a îmbunătăți performanța, procesoarele speculează sau prezice următorul lucru pe care trebuie să-l facă și, de când Spectre a fost dezvăluit pentru prima dată, lumea a învățat că speculațiile pot fi foarte nesigure dacă sunt făcute. impropriu.

Sursa: Tavis Ormandy

Registrele dintr-un CPU pot deține o cantitate mică de date, de obicei o instrucțiune, o adresă de stocare sau orice alt tip de date mici. Registrele XMM într-o arhitectură x86_64 (deci, oricare dintre procesoarele Zen 2 afectate) pot fi folosite doar pentru efectuarea de calcule pe date, nu pentru adresarea memoriei. Acesta este extins la 256 de biți în cazul registrelor YMM și la 512 biți în registrele ZMM. În acest caz, XMM se referă la cei 128 de biți inferiori ai total 512 biți ai registrelor ZMM.

Aceste registre sunt incredibil de utile pentru o mulțime de lucruri diferite, inclusiv funcții C standard. Vulnerabilitatea abuzează de execuția speculativă și ramifică predicțiile greșite pentru a scoate în esență o bucată de date aleatoare din memorie, dar acele date pot fi din orice. Funcțiile standard de bibliotecă C precum strlen, care măsoară lungimea unui șir, pot folosi aceste registre pentru mutarea datelor în jur și este posibil ca, întâmplător, o parolă pe care o folosiți să fi căzut, din nefericire, într-una dintre acestea registre.

Predicția ramurilor și execuția speculativă se referă în general la momentul în care computerul efectuează operațiuni care nu sunt încă necesare, dar care vor fi probabil necesare în ciclurile ulterioare. Se face adesea în momentele în care sistemul dumneavoastră are resurse libere, deoarece accelerează procesarea generală atunci când instrucțiunile sau datele nu ar fi, altfel, încă pregătite pentru procesor. Dacă munca efectuată nu este necesară, aceasta este de obicei aruncată și procesorul poate sări înapoi acolo unde trebuie pentru a executa următoarea instrucțiune corectă. Când face acest lucru, aceasta se numește predicție greșită de ramură.

Unde apare o problemă este în instrucțiunea vzeroupper, care pune la zero biții din poziția 128 și mai sus din registrele YMM și ZMM. Acest lucru se face în special atunci când treceți între AVX și codul SSE vechi, deoarece elimină performanța penalizări cauzate de dependențe false, evitând în același timp un efect similar cu promovarea întregului în C.

Dacă procesorul execută în mod speculativ o instrucțiune vzeroupper, nu există o deplasare corectă. Cu toate acestea, procesoarele Ryzen afectate pot fi forțate să se recupereze, deși incorect. Odată ajuns în această stare, programul care se execută în prezent poate spiona acele registre în timp real, vizualizând datele care circulă în sistem în orice moment.

Ce procesoare sunt afectate de Zenbleed și când vor fi disponibile corecțiile?

După cum sa menționat anterior, numai procesoarele AMD bazate pe arhitectura Zen 2 sunt cunoscute a fi vulnerabile la bug-ul de securitate Zenbleed, dar arhitectura Zen 2 a alimentat procesoarele în trei serii, ceea ce face dezordonat să-ți dai seama care procesoare sunt vulnerabile și care nu sunt. Iată un tabel care ar trebui să clarifice totul:

CPU-uri afectate

Seria Ryzen 3000

Toate, cu excepția APU-urilor (de exemplu, Ryzen 3 3200G)

Roma epica

Toate

Seria Ryzen 4000

Toate

Seria Ryzen 5000

Doar 5300U, 5500U și 5700U

Seria Ryzen 7000

Doar 7020 APU-uri (de exemplu, Ryzen 3 7320U)

Aceasta este o cantitate destul de mare de procesoare AMD, iar acestea sunt doar cele care au fost confirmate până acum. Zen 2 este folosit și în APU-urile care alimentează Steam Deck, Xbox Series S și X și PS5. Nu am auzit în niciun caz dacă aceste procesoare sunt și ele afectate, dar judecând după modul în care funcționează acest exploit, aș fi surprins dacă nu ar fi și ele afectate. Se pare puțin probabil ca AMD să-l corecteze pe Xbox și PS5, deoarece cipurile din seria 7020, care sunt mai noi, sunt de asemenea afectate.

La momentul scrierii, microcodul a fost trimis la kernel-ul Linux care va corecta această vulnerabilitate, iar sistemul dvs. de operare sau BIOS-ul poate avea deja o actualizare care remediază această problemă.

Ce înseamnă acest lucru pentru computerele care folosesc procesoare vulnerabile?

Acesta este un lucru dificil de răspuns, deoarece nu toate computerele sunt egale. Pentru oamenii obișnuiți care folosesc doar computere desktop și laptopuri pentru jocuri, probabil că nu trebuie să vă faceți atât de îngrijorați. Aceasta este o exploatare destul de sofisticată și, deși acum este cunoscută public, nu există încă exemple cunoscute de atacator care să folosească Zenbleed pentru a pirata ceva.

Cu toate acestea, mizele sunt mult mai mari pentru centrele de date și persoanele importante care manipulează informații sensibile pe propriile computere. Există un motiv pentru care AMD a fost foarte clar că Epyc Rome a fost corectat înainte ca vulnerabilitatea să fie făcută publică: o mulțime de informații sensibile. informațiile sunt gestionate de procesoarele Epyc și ar fi un dezastru dacă orice procesor care alimentează servere la scară largă ar fi avut succes atacat. Nucleul Linux 6.4.6 este deja lansat și remediază această vulnerabilitate prin rularea în patch-ul oficial de microcod de la AMD. Se pare că Microsoft va încorpora ceva similar în Windows.

Îngrijorător, Patch-urile oficiale pentru BIOS de la AMD ar putea să nu fie lansate timp de câteva luni, caz în care, există un „bucata de pui" pe care îl puteți seta dacă sunteți pe o mașină Linux sau FreeBSD. Pe mașinile Linux, puteți utiliza msr-tools și puteți executa următoarea comandă.

wrmsr -a 0xc0011029 $(($(rdmsr -c 0xc0011029) | (1<<9)))

Pe FreeBSD, puteți folosi și următoarele.

cpucontrol(8)

Dezactivarea SMT nu este suficientă pentru a atenua vulnerabilitatea.

Un lucru care îl face pe Zenbleed deosebit de rău este că Zen 2 a fost una dintre cele mai populare arhitecturi CPU AMD. A dat startul revenirii AMD în 2019 și 2020, iar mulți oameni, companii și organizații încă folosesc computere cu procesoare Zen 2 în 2023, în special Epyc Rome CPU-uri. Acest lucru nu este la fel de rău ca Spectre (care afectează aproape toate procesoarele dinainte de 2019) și Meltdown (care afectează aproape toate procesoarele Intel dinainte de 2019), dar este încă destul de răspândită.

Patch-urile de securitate pentru vulnerabilități ca aceasta duc adesea la o penalizare de performanță, dar a spus AMD Hardware-ul lui Tom că această penalizare va depinde de CPU și de volumul de muncă. Speculațiile și predicțiile au fost destul de importante pentru performanța procesorului, așa că nu este clar dacă vreo remediere potențială va înregistra o reducere semnificativă a performanței.