EntrySign: pažeidžiamumas, turintis įtakos AMD Zen procesoriams

„EntrySign“ pažeidžiamumo logotipas

Neseniai, „Google“ inžinieriai pristatė išsami informacija apie kritinį pažeidžiamumą, identifikuotą kaip CVE-2024-56161. Pakrikštytas vardu EntrySign, ši nesėkmė leidžia apeiti skaitmeninio parašo tikrinimo mechanizmą atnaujinant mikrokodą AMD procesoriuose, naudojant pirmąsias keturias Zen mikroarchitektūros kartas.

EntrySign turi įtakos daugeliui procesorių, leidžia užpuolikui apeiti saugos valdiklius, užtikrinančius mikrokodo vientisumą, o tai gali atverti duris kenkėjiškiems aparatinės įrangos elgesio pakeitimams.

Apie pažeidžiamumą

Šio pažeidžiamumo priežastis randama naudojant AES-CMAC algoritmą. tikrinant skaitmeninį parašą vietoj patikimos maišos funkcijos. AMD naudojo šį algoritmą mikrokodui pasirašyti, naudodama privatų RSA raktą ir prie pataisos pridėdama viešąjį raktą.

Patvirtinimo procesas Tai reiškia, kad procesorius lygina gamybos metu įterpto viešojo rakto maišą su pataisoje nurodyto rakto maiša. Tačiau nes buvo naudojamas CMAC, kuris iš tikrųjų nėra maišos funkcija, o autentifikavimo kodas pranešimų, priklausančių nuo rakto, buvo atidarytas saugumo pažeidimas.

CMAC yra pagrįstas AES algoritmu ir naudoja XOR operacijas duomenų blokams sujungti, tačiau kadangi jis nėra sukurtas taip, kad būtų atsparus susidūrimams, jis leidžia užpuolikui, žinančiam šifravimo raktą, apskaičiuoti tarpines reikšmes, kurios kompensuoja įvesties pokyčius, o operacijos rezultatas nepakito.

Tiek „Intel“, tiek „AMD“ sukūrė unikalius RISC pagrindu sukurtus mikrokodų instrukcijų rinkinius, abu nedokumentuotus, bet iš esmės panašius į kitus RISC instrukcijų rinkinius, tokius kaip ARM arba RISC-V. Kaip ir programinę įrangą, taip ir teisingai įdiegti sudėtingą aparatinę įrangą yra sudėtinga; Istoriškai tai lėmė daug gerai žinomų klaidų, tokių kaip „Intel“ FDIV klaida „Pentium“ 1994 m.

AMD tiekia vieną šifravimo raktą skirtas AES-CMAC visuose procesoriuose nuo Zen 1 iki Zen 4, o tai reiškia, kad jei kas nors ištraukia šį raktą iš vieno procesoriaus, jis gali pritaikyti jį visiems kitiems. Tiesą sakant, mokslininkai patikrino, ar šie procesoriai naudoja žinomą raktą, paimtą iš NIST SP 800-38B gairių pavyzdžio.

Tai leido teoriškai sukurti netikrus pataisymus pakeitus pataisos viešąjį raktą kitu, kuris sukuria tą pačią maišą, ir pasirinkite skaitmeninio parašo susidūrimus. Tokie susidūrimai pasiekiami pridedant papildomą bloką iš pažiūros atsitiktinių duomenų prie mikrokodo, kad modifikuota pataisa išliktų originalus AMD skaitmeninis parašas.

EntrySign, CVE-2024-56161 pažeidžiamumas, leidžiantis užpuolikams apeiti saugos kontrolę

Norėdami išspręsti šią problemą„Google“ inžinieriai ieško naujų būdų, kaip manipuliuoti mikrokodu AMD procesoriuose sukūrė Zentool, kombinuotų mikrokodų pataisų tyrimo įrankių rinkinys, įskaitant ribotą išardymą, mikrokodo pataisų kūrimą naudojant ribotą atvirkštinės inžinerijos rinkinį.

Zentool buvo sukurta siekiant palengvinti mikrokodo analizę ir modifikavimą, siūlanti daugybę komandų, leidžiančių redaguoti parametrus ir pakeisti instrukcijas, įkelti pakeistą mikrokodą į centrinį procesorių ir pataisyti pataisos skaitmeninį parašą.

Pavyzdžiui, komanda „zentool edit“ leidžia redaguoti parametrus mikrokodo failuose, o „zentool print“ rodo išsamią informaciją apie vidines mikrokodo struktūras. Taip pat „zentool load“ įkelia mikrokodą į procesorių, o „zentool resign“ perskaičiuoja skaitmeninį parašą, atsižvelgdama į atliktus pakeitimus. Be to, į paketą įtrauktos tokios komunalinės paslaugos kaip mcas ir mcop, kurios teikia surinkėjo ir išmontavimo funkcijas, skirtas tiesiogiai dirbti su mikrokodu.

Galimybės „Zentool“ leidžia kūrėjams paruošti ir pritaikyti savo pataisas AMD Zen procesoriuose Kaip iliustratyvus pavyzdys buvo paruoštas pataisas, modifikuojantis RDRAND instrukcijos logiką. Pritaikius šį pataisą, RDRAND instrukcija nustoja generuoti pseudoatsitiktines sekas ir nuolat grąžina skaičių 4, taip parodydama galią modifikuoti mikrokodą ir pakeisti numatomą procesoriaus elgesį.

Verta tai paminėti „Zentool“ pateikiamas su išsamiu vadovu apie RISC86 mikroarchitektūrą, naudojamą AMD mikrokode, taip pat pastaba, paaiškinanti, kaip sukurti pasirinktinį mikrokodą. Vadove, be kita ko, parodyta, kaip sukurti naujas procesoriaus instrukcijas, modifikuoti esamų instrukcijų veikimą ir įkelti tuos pakeitimus tiesiai į procesorių.

Galiausiai, jei norite sužinoti daugiau apie tai, galite peržiūrėti išsamią informaciją sekanti nuoroda.