Zenbleed: Viskas, ką reikia žinoti apie šią AMD saugos klaidą

Naujausias iš ilgos CPU saugos klaidų serijos „Zenbleed“ yra dar vienas dalykas, kurį reikia pataisyti. Štai ką reikia žinoti.

Po to, kai 2018 m. buvo paskelbti Spectre ir Meltdown CPU išnaudojimai, kompiuterių pasaulis buvo gana budrus. apie saugumo klaidų ir spragų radimą procesoriuose, o per pastaruosius penkerius metus mokslininkai aptiko daugybę. Liepos 24 d. buvo viešai paskelbtas dar vienas išnaudojimas, pirmą kartą apie jį pranešus gegužę. Šį kartą jis skirtas AMD procesoriams, sukurtiems ant Zen 2 architektūros, ir pavadintas "Zenbleedas". Štai viskas, ką reikia žinoti apie Zenbleed ir ką tai reiškia pasauliui.

Kaip veikia Zenbleed?

„Zenbleed“ yra labai panašus į kitas aparatinės įrangos saugos klaidas, tokias kaip „Spectre“, nes išnaudoja spekuliacines procesorių galimybes. Siekiant pagerinti našumą, CPU spėlioti arba nuspėti, ką jiems reikia padaryti, ir nuo tada, kai pirmą kartą buvo atskleista „Spectre“, pasaulis sužinojo, kad spėlionės gali būti labai nesaugios. netinkamai.

Šaltinis: Tavis Ormandy

CPU registruose gali būti nedidelis duomenų kiekis, paprastai nurodymas, saugyklos adresas arba bet kokie kiti nedideli duomenys. XMM registrai x86_64 architektūroje (taigi, bet kuris iš paveiktų Zen 2 procesorių) gali būti naudojami tik duomenų skaičiavimams, o ne adresams atminti. Tai išplečiama iki 256 bitų YMM registrų atveju ir 512 bitų ZMM registruose. Šiuo atveju XMM reiškia apatinius 128 bitus viso 512 bitų ZMM registrų.

Šie registrai yra neįtikėtinai naudingi daugeliui skirtingų dalykų, įskaitant standartines C funkcijas. Pažeidžiamumas piktnaudžiauja spekuliaciniu vykdymu ir klaidingais atšakos numatymais, kad iš esmės išspjaustų atsitiktinius duomenis iš atminties, tačiau šie duomenys gali būti bet ką. Standartinės C bibliotekos funkcijos, tokios kaip strlen, kuri matuoja eilutės ilgį, gali naudoti šiuos registrus duomenims perkelti ir gali būti, kad atsitiktinai jūsų naudojamas slaptažodis galėjo nelaimei patekti į vieną iš šių registrai.

Atšakos numatymas ir spekuliacinis vykdymas iš esmės reiškia, kai jūsų kompiuteris atlieka operacijas, kurių dar nereikia, bet greičiausiai jų prireiks vėlesniais ciklais. Tai dažnai daroma tada, kai jūsų sistemoje yra laisvų išteklių, nes tai pagreitina bendrą apdorojimą, kai kitu atveju instrukcijos ar duomenys dar nebūtų paruošti CPU. Jei atliktas darbas nereikalingas, jis paprastai atmetamas ir procesorius gali grįžti ten, kur reikia, kad įvykdytų kitą teisingą instrukciją. Kai tai daroma, tai vadinama klaidingu filialo numatymu.

Iškyla problema vzeroupper instrukcijoje, kuri nuluoja bitus, esančius 128 ir aukštesnėse YMM ir ZMM registrų padėtyje. Tai ypač daroma pereinant iš AVX į senąjį SSE kodą, nes tai sumažina našumą nuobaudos, sukeltos dėl klaidingų priklausomybių, kartu išvengiant efekto, panašaus į sveikųjų skaičių reklamą C.

Jei procesorius spekuliatyviai vykdo vzeroupper instrukciją, tinkamo atšaukimo nėra. Tačiau paveikti „Ryzen“ procesoriai gali būti priversti nuo to atsigauti, nors ir neteisingai. Atsidūrusi šioje būsenoje, šiuo metu vykdoma programa gali šnipinėti tuos registrus realiuoju laiku ir bet kuriuo metu peržiūrėti visoje sistemoje tekančius duomenis.

Kokius procesorius paveikia „Zenbleed“ ir kada bus pasiekiami pataisymai?

Kaip minėta anksčiau, žinoma, kad Zenbleed saugos klaidos pažeidžiami tik AMD CPU, pagrįsti Zen 2 architektūra, tačiau „Zen 2“ architektūra turi trijų serijų procesorių, todėl sunku išsiaiškinti, kurie procesoriai yra pažeidžiami ir kurie nėra. Štai lentelė, kurioje viskas turėtų būti aišku:

Paveikti procesoriai

Ryzen 3000 serija

Visi, išskyrus APU (pvz., Ryzen 3 3200G)

Epyc Roma

Visi

Ryzen 4000 serija

Visi

Ryzen 5000 serija

Tik 5300U, 5500U ir 5700U

Ryzen 7000 serija

Tik 7020 APU (pvz., Ryzen 3 7320U)

Tai gana didelis AMD procesorių kiekis, ir tai tik tie, kurie iki šiol buvo patvirtinti. Zen 2 taip pat naudojamas APU, kurie maitina Steam Deck, Xbox Series S ir X bei PS5. Negirdėjome, ar šie procesoriai taip pat būtų paveikti, tačiau, vertinant pagal tai, kaip veikia šis išnaudojimas, nustebčiau, jei jie taip pat nebūtų paveikti. Atrodo mažai tikėtina, kad AMD jį pataisė Xbox ir PS5, nes taip pat turi įtakos naujesni 7020 serijos lustai.

Rašymo metu mikrokodas buvo pateiktas Linux branduoliui kuris ištaisys šį pažeidžiamumą, o jūsų operacinėje sistemoje arba BIOS jau gali būti naujinimas, kuris išsprendžia šią problemą.

Ką tai reiškia kompiuteriams, kuriuose naudojami pažeidžiami procesoriai?

Į šį klausimą sunku atsakyti, nes ne visi kompiuteriai yra vienodi. Paprastiems žmonėms, kurie tik naudojasi žaidimų staliniais ir nešiojamaisiais kompiuteriais, tikriausiai nereikia taip jaudintis. Tai gana sudėtingas išnaudojimas ir, nors dabar tai viešai žinoma, kol kas nėra žinomų pavyzdžių, kad užpuolikas naudotų Zenbleed, kad į ką nors įsilaužtų.

Tačiau duomenų centrams ir svarbiems žmonėms, tvarkantiems slaptą informaciją savo kompiuteriuose, rizika yra daug didesnė. Yra priežastis, kodėl AMD labai aiškiai pasakė, kad Epyc Rome buvo pataisyta prieš paviešinant pažeidžiamumą: daug jautrių informaciją tvarko „Epyc“ procesoriai, ir būtų katastrofa, jei bet kurie procesoriai, maitinantys didelio masto serverius, būtų sėkmingai užpuolė. Linux branduolys 6.4.6 jau išleistas ir ištaiso šį pažeidžiamumą įdiegdami oficialus mikrokodo pleistras iš AMD. Panašu, kad „Microsoft“ į „Windows“ įtrauks kažką panašaus.

nerimą kelianti Oficialios AMD BIOS pataisos gali būti neišleistos keletą mėnesių, tokiu atveju yra "vištienos gabaliukas“, kurį galite nustatyti, jei naudojate „Linux“ ar „FreeBSD“ įrenginį. Linux kompiuteriuose galite naudoti msr-tools ir vykdyti šią komandą.

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

FreeBSD taip pat galite naudoti šiuos dalykus.

cpucontrol(8)

SMT išjungimo nepakanka pažeidžiamumui sumažinti.

Vienas dalykas, dėl kurio „Zenbleed“ ypač blogas, yra tai, kad „Zen 2“ buvo viena populiariausių AMD procesoriaus architektūrų. Tai paskatino AMD sugrįžimą 2019 ir 2020 m., o daugelis žmonių, įmonių ir organizacijų 2023 m. vis dar naudoja kompiuterius su Zen 2 procesoriais, ypač Epyc Rome. CPU. Tai nėra taip blogai kaip Spectre (kuri veikia beveik visus iki 2019 m. pagamintus procesorius) ir Meltdown (kuri veikia beveik visus iki 2019 m. pagamintus „Intel“ procesorius), bet vis tiek gana plačiai paplitęs.

Tokių pažeidžiamumų saugos pataisos taip pat dažnai sukelia našumo nuobaudą, tačiau AMD papasakojo Tomo aparatinė įranga kad ši bauda priklausys nuo procesoriaus ir darbo krūvio. Spekuliacijos ir prognozės buvo gana svarbios procesoriaus veikimui, todėl neaišku, ar dėl kokių nors galimų pataisymų našumas labai sumažės.