AMD Zen 5 CPU'er er sårbare over for en sårbarhed, der tillader ændring af microkode og omgåelse af SEV-SNP-isoleringen.

AMD har inkluderet processorer baseret på Zen 5 mikroarkitekturen på listen over produkter, der er sårbare over for EntrySign sårbarheden, som gør det muligt at omgå mekanismen for validering af digitale signaturer ved opdatering af mikrocode. Det blev oprindeligt antaget, at sårbarheden kun påvirker AMD CPU'er baseret på 1.-4. generation af Zen mikroarkitekturen. Derfor viste sårbarheden sig at gælde for processorer som Ryzen 9000 (Granite Ridge), EPYC 9005 (Turin), Ryzen AI 300 (Strix Halo, Strix Point, Krackan Point) og Ryzen 9000HX (Fire Range).

Ud over opdatering af mikrocode kræves der også en opdatering af AMD SEV firmware for at afhjælpe sårbarheden på systemer, der anvender SEV-SNP certificering, hvilket leveres som en del af BIOS opdateringerne. Det påstås, at AMD har sendt en ændret firmware (ComboAM5PI 1.2.0.3c AGESA) til hardwareproducenterne, som er nødvendig for at løse problemet, men de endelige BIOS-opdateringer, der er tilgængelige for forbrugerne, kan blive udgivet af producenterne flere uger eller måneder senere.

AMD's medarbejdere har også foreslået at inkludere en patch i Linux-kernen, der blokkerer indlæsningen af uofficielle mikrocodeopdateringer (det bemærkes, at korrekte mikrocodeopdateringer skal installeres sammen med BIOS fra hardwareproducenten, men der er allerede opstået forsøg på at skabe uofficielle rettelser baseret på fragmenter af mikrocode, der er udskåret fra BIOS). Brugere anbefales at vente på officielle BIOS-opdateringer.

Den sårbarhed, der tilbydes af EntrySign, muligheden for at ændre mikrocode, tillader kompromittering af AMD SEV (Secure Encrypted Virtualization) mekanismen, der anvendes i virtualiseringssystemer til beskyttelse virtual machines mod indgreb fra hypervisoren eller administratoren af værtssystemet. Under et angreb kan man indtrænge i driften af gæstesystemer, der er beskyttet ved hjælp af AMD SEV (Secure Encrypted Virtualization) og SEV-SNP (Secure Nested Paging) udvidelser, der giver garantier for integriteten af hukommelsen af virtuelle maskiner, isolerer processorregistre og sikrer sikker håndtering af indlejrede hukommelsessider.

Sårbarheden skyldes brugen af en usikker metode til verifikation af mikrokoden for CMAC algoritmen i stedet for en pålidelig hash-funktion. AMD bruger en hemmelig RSA-nøgle til at sikre den digitale signatur for den mikrokode, der indlæses i processoren, og distribuerer den offentlige nøgle sammen med mikrokode-patchen. For at bekræfte, at den offentlige nøgle svarer til originalen i RSA-nøgleparret, udfører processoren et sammenligningshash af den indlejrede AMD-offentlige nøgle, der blev inkluderet under produktionen af CPU'en, med hashen fra den offentlige nøgle angivet i patchen.

Autentificeringen af mikrokoden i patchen udføres ved at sammenligne den medfølgende hash, der er certificeret med en digital signatur (RSASSA-PKCS1-v1_5), og hashen beregnet ud fra den mikrokode, der faktisk er leveret i patchen. Hvis de reference- og beregnede hashes stemmer overens, indlæses patchen i CPU'ens interne hukommelse. Problemet er, at der er anvendt CMAC-algoritmen i stedet for de anbefalede kryptografisk sikre hash-funktioner, hvilket ikke er beregnet til sådanne operationer og ikke er beskyttet mod kollisionsangreb.

CMAC er ikke en hash-funktion, men implementerer en nøgleafhængig Message Authentication Code (MAC). AES-CMAC arbejder ved at anvende den kryptografiske algoritme AES og kombinere resultatet af dens anvendelse med den næste data blok ved hjælp af XOR-operationen. En sådan ordning sikrer, at ændringer i inputdataene fører til uforudsigelige ændringer i outputdataene. CMAC er dog uacceptabel som hash-funktion, da enhver, der kender den hemmelige krypteringsnøgle, kan få kendskab til de mellemliggende tilstande af krypteringen og beregne værdier, der kan kompensere for ændringerne i inputdataene, således at resultatet af anvendelsen af CMAC forbliver uændret.

AMD anvender en fælles krypteringsnøgle til AES-CMAC, som leveres med alle CPU'er, der starter fra Zen 1. Dermed er det tilstrækkeligt at trække denne nøgle ud fra en hvilken som helst AMD CPU, og den vil være anvendelig for alle andre CPU'er. Forskere har opdaget, at der til AES-CMAC kryptering i AMD er anvendt en kendt nøgle fra et eksempel nævnt i anbefalingerne for brug af blokkrypter NIST SP 800-38B. Da AES-CMAC bruges til at hashe den indlejrede RSA-nøgle og indholdet af mikrokoden, har identificeringen af AES-CMAC krypteringsnøglen muliggjort substitutionen af en anden offentlig RSA-nøgle i patchen samt ændringen af indholdet i mikrokoden.

For at skabe en falsk patch er det tilstrækkeligt at generere en ny offentlig nøgle, der producerer den samme hash som den oprindelige AMD offentlige nøgle, samt at finde kollisioner for den digitale underskrift. Kollisioner dannes ved at tilføje et ekstra blok, der ligner et sæt tilfældige data, til mikrokoden. På denne måde kan en modificeret patch med mikrokode, der svarer til den digitale underskrift, som den oprindelige patch fra AMD blev certificeret med, forberedes. Værktøjet Zentool, der inkluderer værktøjer til analyse af mikrokode og oprettelse af patches til ændring af mikrokode, er tilgængeligt under en Apache 2.0-licens. For at udskifte mikrokoden kræves det, at der er rettigheder til at køre kode på niveau 0 (VT-x og AMD-V teknologier gør det muligt for gæsteoperativsystemet at køre med Ring 0 rettigheder).

Kilde: opennet.ru

Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster