EntrySign: haavatavus, mis mõjutab AMD Zeni protsessoreid

EntrySigni haavatavuse logo

Hiljuti, Google'i insenerid teatasid üksikasjad kriitilise haavatavuse kohta, mis on tuvastatud kui CVE-2024-56161. Ristiti nime all EntrySign, see läbikukkumine võimaldab digitaalallkirja kontrollimise mehhanismist kõrvale hiilida mikrokoodi värskendamise ajal AMD protsessoritel, kasutades Zeni mikroarhitektuuri esimest nelja põlvkonda.

EntrySign mõjutab paljusid protsessoreid, võimaldab ründajal mööda minna turvakontrollidest, mis tagavad mikrokoodi terviklikkuse, avades potentsiaalselt ukse riistvarakäitumise pahatahtlikele muudatustele.

Haavatavuse kohta

Selle haavatavuse põhjuseks on AES-CMAC algoritmi kasutamine digitaalallkirja kontrollimise ajal usaldusväärse räsifunktsiooni asemel. AMD kasutas seda algoritmi mikrokoodi allkirjastamiseks, kasutades privaatset RSA-võtit ja lisades plaastrile avaliku võtme.

Kinnitusprotsess tähendab, et protsessor võrdleb tootmise ajal manustatud avaliku võtme räsi ja plaastris määratud võtme räsi. Siiski kuna kasutati CMAC-i, mis tegelikult ei ole räsifunktsioon, vaid autentimiskood sõnumi edastamisel on avanenud turvarikkumine.

CMAC põhineb AES-algoritmil ja kasutab XOR-operatsioone andmeplokkide kombineerimiseks, kuid kuna see ei ole loodud kokkupõrkekindlaks, võimaldab see krüpteerimisvõtit tundval ründajal arvutada välja vaheväärtused, mis kompenseerivad sisendi muutusi, jättes toimingu tulemuse muutumatuks.

Nii Intel kui ka AMD kujundasid ainulaadsed RISC-põhised mikrokoodide käsukomplektid, mis mõlemad olid dokumenteerimata, kuid põhimõtteliselt sarnased teiste RISC-käsukomplektidega, nagu ARM või RISC-V. Sarnaselt tarkvaraga on keerulise riistvara õige rakendamine väljakutse; Ajalooliselt on see kaasa toonud mitmed tuntud vead, näiteks Inteli FDIV-viga Pentiumis 1994. aastal.

AMD pakub ühte krüpteerimisvõtit AES-CMAC jaoks kõigis selle protsessorites Zen 1-st Zen 4-ni, mis tähendab, et kui keegi eraldab selle võtme ühest CPU-st, saab ta seda rakendada kõigile teistele. Tegelikult on teadlased leidnud, et need protsessorid kasutavad teadaolevat võtit, mis on võetud NIST SP 800-38B juhiste näitest.

See on teoreetiliselt võimaldanud luua valeplaastreid asendades plaastri avaliku võtme võtmega, mis toodab sama räsi, ja valige digitaalallkirja jaoks kokkupõrked. Sellised kokkupõrked saavutatakse, lisades mikrokoodile täiendava ploki pealtnäha juhuslikke andmeid, nii et muudetud plaaster säilitab AMD algse digitaalallkirja.

EntrySign, haavatavus CVE-2024-56161, mis võimaldab ründajatel turvakontrollidest mööda minna

Selle probleemi lahendamiseksGoogle'i insenerid, et uurida uusi viise mikrokoodiga manipuleerimiseks AMD protsessorites Nad töötasid välja Zentooli, kombineeritud tööriistade kogumik mikrokoodi plaastrite uurimiseks, sealhulgas piiratud lahtivõtmine, mikrokoodiplaastrite loomine, kasutades piiratud arvu pöördprojekteerimiskoostu.

Zentool on loodud mikrokoodi analüüsi ja muutmise hõlbustamiseks, pakkudes rida käske, mis võimaldavad alates parameetrite redigeerimisest ja juhiste asendamisest kuni muudetud mikrokoodi laadimiseni protsessorisse ja plaastri digitaalallkirja parandamiseni.

Näiteks käsk "zentool edit" võimaldab redigeerida parameetreid mikrokoodifailides, samas kui "zentool print" kuvab üksikasjalikku teavet mikrokoodi sisemiste struktuuride kohta. Samuti laadib «zentool load» mikrokoodi CPU-sse ja «zentool resign» arvutab tehtud muudatusi arvesse võttes digiallkirja ümber. Lisaks sisaldab pakett utiliite, nagu mcas ja mcop, mis pakuvad monteerimis- ja lahtimonteerimisfunktsioone otse mikrokoodiga töötamiseks.

Võimalused Zentool võimaldab arendajatel ise plaastreid ette valmistada ja rakendada AMD Zen protsessoritel Illustreeriva näitena on koostatud plaaster, mis muudab RDRANDi käsu loogikat. Pärast selle paiga rakendamist lõpetab RDRANDi käsk pseudojuhuslike jadade genereerimise ja hakkab järjekindlalt tagastama numbrit 4, näidates nii mikrokoodi muutmise võimet ja protsessori eeldatava käitumise muutmist.

Tasub seda mainida Zentooliga on kaasas üksikasjalik juhend AMD mikrokoodis kasutatava RISC86 mikroarhitektuuri kohta, samuti juhised, mis selgitavad kohandatud mikrokoodi loomist. Juhend näitab muuhulgas, kuidas kujundada uusi protsessori juhiseid, muuta olemasolevate juhiste käitumist ja laadida need muudatused otse CPU-sse.

Lõpuks, kui soovite selle kohta rohkem teada saada, vaadake üksikasju jaotisest järgmine link.