Zenbleed: kõik, mida peate selle AMD turvavea kohta teadma

Viimane protsessorite turbevigade seeriast, Zenbleed on veel üks asi, mida tuleb parandada. Siin on, mida peate teadma.

Pärast seda, kui Spectre ja Meltdown CPU rünnakud 2018. aastal avalikustati, on andmetöötlusmaailm olnud üsna valvas protsessorites turbevigade ja lünkade leidmise kohta ning viimase viie aasta jooksul on teadlased leidnud tonni. 24. juulil avalikustati järjekordne ärakasutamine pärast esimest teatamist mais. Seekord on see spetsiifiline Zen 2 arhitektuurile ehitatud AMD protsessoritele ja seda nimetatakse "Zenbleed". Siin on kõik, mida peate teadma Zenbleedi ja selle maailma jaoks tähenduse kohta.

Kuidas Zenbleed toimib?

Zenbleed on väga sarnane muude riistvarapõhiste turvavigade, nagu Spectre, omadega, kuna see kasutab ära protsessorite spekulatiivset võimet. Jõudluse parandamiseks protsessorid spekuleerida või ennustada järgmist, mida nad peavad tegema, ja alates Spectre esmakordsest avalikustamisest on maailm õppinud, et spekuleerimine võib olla väga ebakindel, kui seda teha valesti.

Allikas: Tavis Ormandy

Protsessori registrid võivad sisaldada väikest hulka andmeid, tavaliselt käske, salvestusaadressi või muid väikeseid andmeid. XMM-registreid x86_64 arhitektuuris (seega kõiki mõjutatud Zen 2 protsessoreid) saab kasutada ainult andmete arvutuste tegemiseks, mitte mälu adresseerimiseks. Seda laiendatakse 256 bitini YMM-registrite puhul ja 512 bitini ZMM-registrite puhul. Sel juhul viitab XMM alumisele 128 bitile kokku ZMM-registrite 512 bitti.

Need registrid on uskumatult kasulikud paljude erinevate asjade jaoks, sealhulgas standardsete C-funktsioonide jaoks. Haavatavus kuritarvitab spekulatiivset täitmist ja haru väärennustusi, et sisuliselt sülitada mälust välja juhuslikud andmed, kuid need andmed võivad pärineda midagi. Standardsed C-teegi funktsioonid, nagu strlen, mis mõõdab stringi pikkust, saavad neid registreid andmete teisaldamiseks kasutada ja on võimalik, et juhuslikult võis teie kasutatav parool sattuda mõnesse neist registrid.

Haru ennustamine ja spekulatiivne täitmine viitavad üldiselt sellele, kui teie arvuti teeb toiminguid, mida pole veel vaja, kuid tõenäoliselt läheb vaja järgmistes tsüklites. Seda tehakse sageli aegadel, mil teie süsteemil on vabu ressursse, kuna see kiirendab üldist töötlemist, kui juhised või andmed pole muidu protsessori jaoks valmis. Kui tehtud tööd pole vaja, visatakse see tavaliselt kõrvale ja protsessor saab järgmise õige käsu täitmiseks hüpata tagasi sinna, kus ta vajab. Kui ta seda teeb, nimetatakse seda haru valesti ennustamiseks.

Probleemiks on käsk vzeroupper, mis nullib YMM ja ZMM registrite positsioonis 128 ja kõrgemal olevad bitid. Seda tehakse eriti AVX-i ja SSE pärandkoodi vahel üleminekul, kuna see välistab jõudluse karistused, mis on põhjustatud valesõltuvustest, vältides samal ajal mõju, mis sarnaneb täisarvude reklaamiga C.

Kui protsessor spekulatiivselt täidab käsku vzeroupper, ei toimu korralikku tagasipööramist. Mõjutatud Ryzeni protsessoreid saab aga sundida sellest taastuma, kuigi valesti. Selles olekus saab praegu töötav programm neid registreid reaalajas luurata, vaadates kogu süsteemis igal ajahetkel voolavaid andmeid.

Milliseid protsessoreid Zenbleed mõjutab ja millal on paigad saadaval?

Nagu varem öeldud, on Zenbleedi turvavea suhtes haavatavad ainult Zen 2 arhitektuuril põhinevad AMD protsessorid, kuid Zen 2 arhitektuur sisaldab kolmes seerias protsessoreid, mistõttu on räpane välja selgitada, millised protsessorid on haavatavad ja millised ei ole. Siin on tabel, mis peaks selle kõik selgeks tegema:

Mõjutatud protsessorid

Ryzen 3000 seeria

Kõik, välja arvatud APU-d (nt Ryzen 3 3200G)

Epyc Rooma

Kõik

Ryzen 4000 seeria

Kõik

Ryzen 5000 seeria

Ainult 5300U, 5500U ja 5700U

Ryzen 7000 seeria

Ainult 7020 APU-d (nt Ryzen 3 7320U)

See on päris suur hulk AMD protsessoreid ja need on vaid need, mis on seni kinnitust leidnud. Zen 2 kasutatakse ka APU-des, mis toidavad Steam Decki, Xbox Series S ja X ning PS5. Me pole kummalgi viisil kuulnud, kas need CPU-d on samuti mõjutatud, kuid selle ärakasutamise viisi järgi otsustades oleksin üllatunud, kui ka neid ei mõjutataks. Tundub ebatõenäoline, et AMD parandas selle Xboxis ja PS5-s, kuna mõju avaldab ka 7020-seeria kiipe, mis on uuemad.

Kirjutamise ajal mikrokood on esitatud Linuxi tuumale mis parandab selle haavatavuse ja teie operatsioonisüsteemil või BIOS-il võib juba olla värskendus, mis selle probleemi lahendab.

Mida see haavatavaid protsessoreid kasutavate arvutite jaoks tähendab?

Sellele on keeruline vastata, sest kõik arvutid pole võrdsed. Tavaliste inimeste jaoks, kes kasutavad lihtsalt mängulaua- ja sülearvuteid, ei pea te tõenäoliselt nii mures olema. See on üsna keerukas ärakasutamine ja kuigi see on praegu avalikkusele teada, pole veel teada ühtegi näidet ründajast, kes kasutaks Zenbleedi millegi sissemurdmiseks.

Kuid panused on palju suuremad andmekeskuste ja oluliste inimeste jaoks, kes käitlevad tundlikku teavet oma arvutites. On põhjus, miks AMD on väga selgelt öelnud, et Epyc Rome paigati enne haavatavuse avalikustamist: palju tundlikke teavet töötlevad Epyc CPU-d ja oleks katastroof, kui mõni suuremahulisi servereid toidavad protsessorid saaksid edukalt hakkama rünnatud. Linuxi kernel 6.4.6 on juba välja antud ja parandab selle haavatavuse, lisades selle ametlik mikrokoodi plaaster AMD-lt. Tundub tõenäoline, et Microsoft lisab midagi sarnast Windowsi.

Murettekitavalt, AMD ametlikud BIOS-i paigad ei pruugi välja tulla mitu kuud, sellisel juhul on olemas "kanatükk", mille saate seadistada, kui kasutate Linuxi või FreeBSD masinat. Linuxi masinates saate kasutada msr-tööriistu ja käivitada järgmine käsk.

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

FreeBSD-s saate kasutada ka järgmist.

cpucontrol(8)

SMT keelamisest haavatavuse leevendamiseks ei piisa.

Üks asi, mis Zenbleedi eriti halvaks teeb, on see, et Zen 2 oli üks AMD populaarsemaid protsessoriarhitektuure. See käivitas AMD tagasituleku aastatel 2019 ja 2020 ning paljud inimesed, ettevõtted ja organisatsioonid kasutavad endiselt 2023. aastal Zen 2 protsessoritega arvuteid, eriti Epyc Rome'i. protsessorid. See pole nii halb kui Spectre (mis mõjutab peaaegu kõiki 2019. aasta eelseid protsessoreid) ja Meltdown (mis mõjutab peaaegu kõiki 2019. aasta eelseid Inteli protsessoreid), kuid see on siiski üsna laialt levinud.

Selliste haavatavuste turvapaigad toovad sageli kaasa ka jõudluskaristuse, kuid AMD ütles Tomi riistvara et see karistus sõltub protsessorist ja töökoormusest. Spekulatsioonid ja prognoosid on olnud protsessori jõudluse jaoks üsna olulised, seega pole selge, kas mõni võimalik parandus võib jõudlust oluliselt vähendada.