Firma AMD on lisanud Zen 5 mikroarhitektuuril põhinevad protsessorid toodete loetellu, mis on haavatavad EntrySign haavatavuse suhtes. See haavatavus võimaldab mööda minna digitaalse allkirja kontrollimist mikrokoodi värskendamise ajal. Alguses arvestati, et haavatavus mõjutab ainult AMD protsessoreid, mis põhinevad Zen mikroarhitektuuri 1.–4. põlvkonna versioonidel. Seega on see haavatavus kohaldatav ka sellistele protsessoritele nagu Ryzen 9000 (Granite Ridge), EPYC 9005 (Turin), Ryzen AI 300 (Strix Halo, Strix Point, Krackan Point) ja Ryzen 9000HX (Fire Range).
Lisaks mikrokoodi värskendusele on SEV-SNP autentimist kasutavates süsteemides haavatavuse kõrvaldamiseks vajalik ka AMD SEV firmware'i värskendamine, mis tuleb BIOS-i värskenduste koosseisus. Teatatakse, et AMD on edastanud seadme tootjatele muudetud firmware'i (ComboAM5PI 1.2.0.3c AGESA), mis on vajalik probleemi lahendamiseks, kuid tarbijatele kergesti ligipääsetavad lõplikud BIOS-i värskendused võivad tootjatelt ilmuda alles nädalate või kuude pärast.
AMD töötajad pakkusid Linuxi tuumikusse lisamiseks patši, mis blokeerib mitteametlike mikrokoodi uuenduste laadimise (märgitakse, et õigesti toimivad mikrokoodi uuendused tuleb installeerida koos seadme tootja BIOS-iga, kuid entusiastide katsetused mitteametlike paranduste loomiseks, mis põhinevad BIOS-ist välja lõigatud mikrokoodi fragmentidel, on juba alanud). Kasutajatele soovitatakse oodata ametlikke BIOS-i uuendusi.
EntrySigni pakutav haavatavus mikrokoodi muutmise võimalusega võimaldab kompromiteerida AMD SEV (Secure Encrypted Virtualization) mehhanismi, mida kasutatakse virtualiseerimise süsteemides kaitseks. virtuaalmasinad küberhüppajate või host-süsteemi administraatori sekkumise eest. Rünnaku käigus saab tungida külalissüsteemide tööle, mida kaitstakse AMD SEV (Secure Encrypted Virtualization) ja SEV-SNP (Secure Nested Paging) laiendustega, mis pakuvad terviklikkuse garantiisid virtuaalmasinate mälu osas, isolatsiooni protsessori registrite vahel ja tagavad ohutu töötamise mälulehede pesad.
Haavatavus tuleneb CMAC'i viidatud autentimise algoritmi kasutamisest, mitte usaldusväärsest räsi-funktsioonist protsessi verifitseerimise käigus. AMD kasutab allkirjastamiseks RSA privaatvõtit, et tõestada protsessorisse laaditava mikrokoodi digitaalset allkirja ning jagab mikrokoodi patšiga koos avaliku võtmega. Et kontrollida, kas avalik võti vastab originaal RSA võtme paarile, teostab protsessor hash'i võrdlemise AMD avaliku võtme hash'iga, mis on CPU-sse tootmise käigus kirjutatud, ning patšis märgitud avaliku võtme hash'iga.
Mikrokoodi autentimine patšis toimub patšiga kaasas oleva, digitaalse allkirjaga (RSASSA-PKCS1-v1_5) allkirjastatud hash'i ja tõeliselt patšiga kaasas oleva mikrokoodi põhjal arvutatud hash'i võrdlemise kaudu. Kui võrreldavad hash'id kattuvad, laaditakse patš CPU sisemisse mällu. Probleem on see, et soovitatud krüptograafiliselt tugevate hash-funktsioonide asemel on kasutatud CMAC algoritmi, mis ei ole selliste operatsioonide jaoks ette nähtud ja ei ole kollisioonide vastu kaitstud.
CMAC ei ole häššifunktsioon, vaid rakendab sõnumi autentimise koodi (Message Authentication Code), mis sõltub krüpteerimisvõtmetest. AES-CMAC töö põhimõte seisneb krüptograafilise algoritmi AES kasutamises ja rakendamise tulemuse ühendamises järgmise andmeplokiga XOR-operatsiooni abil. Selline skeem tagab, et sisendi muutmine toob kaasa ettearvamatud muutused väljundandmetes. Samuti ei ole CMACi lubatud kasutada häššifunktsioonina, kuna igaüks, kes teab algset krüpteerimisvõtit, võib teada intermediaarseid krüpteerimis seisundeid ja arvutada väärtusi, mis suudavad kompenseerida sisendi muutust, nii et CMACi rakendamise tulemus jääb samaks.
AMD kasutab AES-CMAC-i jaoks ühist krüptovõtme, mida tarnitakse kõigis CPU-des alates Zen 1-st. Seega piisab, kui tõmmata see võti igast AMD CPU-st, ja see sobib kõikidele teistele CPU-dele. Uurijad avastasid, et AES-CMAC-i krüpteerimiseks on AMD-s kasutatud tuntud võtit, mis on saadud näitest, mis on mainitud plokkšifrite kasutamise soovitustes NIST SP 800-38B. Kuna AES-CMAC-i kasutatakse RSA-võtme ja mikrokoodi sisu sisseehitatud allkiri hälbena, võimaldab AES-CMAC-i krüptovõtme määramine asendada patšis teise avaliku RSA-võtme ja muuta mikrokoodi sisu.
Vale faux-patchi loomis piisab, et genereerida uus avalik võti, mis genereerib sama hajusväärtuse nagu autentne AMD avalik võti, ja leida digitaalallkirja kollisioonid. Kollisioonid genereeritakse, lisades mikrokoodile lisabloki, mis näeb välja nagu juhuslike andmete kogum. Nii saab ette valmistada muudetud patchi mikrokoodi, mis vastab digitaalallkirjale, millega originaalpatch AMD poolt kinnitati. Zentool tööriistakomplekt, mis sisaldab utiliite mikrokoodi analüüsimiseks ja patchide loomiseks mikrokoodi muutmiseks, on saadaval Apache 2.0 litsentsi alusel. Mikrokoodi asendamiseks on vajalik õiguste olemasolu koodi käitamiseks nullkaitserõngas (VT-x ja AMD-V tehnoloogiad võimaldavad külalisüsteemil töötada Ring 0 õigustega).
Allikas: opennet.ru
