AMD Zen 5 protsessorid on haavatavad haavatavuse suhtes, mis lubab mikroprotsessori koodi muutmist ja SEV-SNP isolatsiooni ümbersõitu.

AMD on lisanud Zen 5 mikroarhitektuuril põhinevad protsessorid tooteid, mis on vastuvõtlikud EntrySign haavatavusele, mis võimaldab ümbersõita digitaalallkirja kontrollimise mehhanismi mikrokoodi värskendamisel. Alguses arvati, et haavatavus mõjutab ainult AMD protsessoreid, mis põhinevad 1-4 põlvkonna Zen mikroarhitektuuril. Seega osutus haavatavus kehtivaks 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).

Peale mikrokoodi värskenduse on haavatavuse kõrvaldamiseks süsteemides, mis kasutavad SEV-SNP autentimist, samuti vajalik AMD SEV püsivara värskendamine, mis on osa BIOS-i värskendustest. Teatavaks on saanud, et AMD on edastanud seadme tootjatele muudetud püsivara (ComboAM5PI 1.2.0.3c AGESA), mis on vajalik probleemi lahendamiseks, kuid tarbijatele saadaval olevad lõplikud BIOS-i värskendused võivad tootjatelt ilmuda alles nädalate või kuude pärast.

AMD töötajad on samuti pakkunud Linuxi tuumasse lisamiseks plaastri, mis blokeerib mitteametlike mikrokoodi värskenduste laadimise (märgitakse, et õiged mikrokoodi värskendused tuleb installida 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 värskendusi.

EntrySign haavatavuse kaudu antud mikrokoodi muutmise võimalus võib ohustada AMD SEV (Secure Encrypted Virtualization) mehhanismi, mida kasutatakse virtualiseerimissüsteemide kaitsmiseks virtuaalmasinate hüpervisori või host-süsteemi administraatori sekkumise eest. Rünnaku käigus on võimalik kaasata kaitstud külgsüsteemide töö, mida kaitsevad AMD SEV (Secure Encrypted Virtualization) ja SEV-SNP (Secure Nested Paging) laiendused, mis pakuvad virtuaalmasinate mälutervekuse tagamise garantiisid, eraldades protsessori registrid ja tagades turvalise töö sisemiste mälulehe tabelitega.

Haavatavus tuleneb CMAC algoritmi mikrokoodi kontrollimise protsessis kasutamisest, mitte usaldusväärsest hash-funktsioonist. AMD kasutab allkirjastamiseks RSA privaatvõtit, et kinnitada protsessorisse laaditava mikrokoodi digiallkirja, samas kui mikrokoodipaketiga levitatakse avalikku võtit. Kontrollimiseks, et avalik võti vastab originaalsele RSA-võtme paarile, võrdleb protsessor AMD tootmisprotsessis kinnitatud avaliku võtme hash'i mikrokoodi paketis märgitud avaliku võtme hash'iga.

Mikrokoodi autentsuse kontrollimine paketis toimub võrreldes pakitud hash'i, mis on allkirjastatud digiallkirjaga (RSASSA-PKCS1-v1_5), ning hash'i, mis on arvutatud tegelikult paketis sisalduva mikrokoodi põhjal. Kui viidatud ja arvutatud hash'id kattuvad, laaditakse patch CPU sisemällu. Probleem seisneb selles, et soovitatud krüptograafilisi hash-funktsioone ei kasutatud, vaid rakendati CMAC algoritmi, mis ei ole ette nähtud selliste operatsioonide jaoks ja ei ole kollisioonide suhtes kaitstud.

CMAC ei ole hash-funktsioon, vaid realiseerib sõnumi autentimise koodi (Message Authentication Code), mis sõltub krüpteerimise võtme olemasolust. AES-CMAC tööpõhimõte on kasutada krüptograafilist algoritmi AES ja ühendada tulemused järgmise andmeploki abil XOR operatsiooniga. Selline skeem tagab, et sisendandmete muutmine toob kaasa ettearvamatu väljundandmete muutumise. Samas ei ole CMAC'i sobilik kasutada hash-funktsioonina, kuna igaüks, kes tunneb algset krüpteerimisvõtit, võib teada saada krüpteerimise vahelisi olekuid ja arvutada väärtusi, mis suudavad kompenseerida sisendandmete muutusi, nii et CMAC'i rakendamise tulemus jääb muutumatuks.

AMD kasutab AES-CMAC-i jaoks ühtset krüpteerimisvõtit, mis tarnitakse kõikidesse CPU-desse alates Zen 1. Seega on piisav, et saada see võti mis tahes AMD CPU-st ja see on rakendatav kõigis teistes CPU-des. Uurijad on avastanud, et AES-CMAC krüpteerimiseks on AMD-s kasutatud tuttavat võtit, mis on saadud näitest, millele viidatakse NIST SP 800-38B soovitustes plokkkrüptograafia kasutamiseks. Kuna AES-CMAC-i kasutatakse RSA võtme ja mikrokoodi sisu allkirjastamise jaoks, tähendab AES-CMAC krüpteerimisvõtme määramine, et tekkib võimalus asendada RSA võti muudatustega ja muuta mikrokoodi sisu.

Valepatši loomiseks tuleb vaid genereerida uus avalik võti, mis genereerib sama hash'i, mis originaalne AMD avalik võti, ning leida kollisioonid digitaalse allkirja jaoks. Kollisioonid luuakse, lisades mikrokoodile täiendava ploki, mis näeb välja nagu juhuslike andmete kogum. Nii saab ette valmistada muudetud patši mikrokoodiga, mis vastab originaalse AMD patši digitaalallkirjale. Zentooli tööriistakomplekt, mis sisaldab mikrokoodi analüüsi ja patšide loomiseks mõeldud utiliite, on saadaval Apache 2.0 litsentsi alusel. Mikrokoodi asendamiseks on vajalik juurdepääs nullkaitse taseme koodi täitmiseks (VT-x ja AMD-V tehnoloogiad võimaldavad külalisoperatsioonisüsteemil töötada Ring 0 õigustes).

Allikas: opennet.ru

Osta usaldusväärne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster