EntrySign: en sårbarhed, der påvirker AMD Zen-processorer

EntrySign Vulnerability-logoet

For nylig har Det har Googles ingeniører meddelt detaljer om en kritisk sårbarhed identificeret som CVE-2024-56161. Døbt under navnet EntrySign, denne fejl gør det muligt at omgå den digitale signaturverifikationsmekanisme under mikrokodeopdatering på AMD-processorer, der bruger de første fire generationer af Zen-mikroarkitekturen.

EntrySign påvirker en lang række processorer, giver en hacker mulighed for at omgå sikkerhedskontroller, der sikrer mikrokodens integritet, hvilket potentielt åbner døren for ondsindede ændringer af hardwareadfærd.

Om sårbarhed

Oprindelsen til denne sårbarhed ligger i brugen af ​​AES-CMAC-algoritmen under verifikation af digital signatur i stedet for en betroet hash-funktion. AMD brugte denne algoritme til at signere mikrokoden ved at bruge en privat RSA-nøgle og tilføje en offentlig nøgle til patchen.

Verifikationsprocessen involverer, at processoren sammenligner hashen af ​​den offentlige nøgle, der er indlejret under fremstilling, med hashen for nøglen, der er specificeret i patchen. Imidlertid, siden CMAC blev brugt, hvilket faktisk ikke er en hash-funktion, men en godkendelseskode meddelelsestransmission er der åbnet et sikkerhedsbrud.

CMAC er baseret på AES-algoritmen og bruger XOR-operationer til at kombinere datablokke, men fordi det ikke er designet til at være kollisionsbestandigt, giver det en hacker, der kender krypteringsnøglen, mulighed for at beregne mellemværdier, der kompenserer for ændringer i inputtet, hvilket efterlader resultatet af operationen uændret.

Både Intel og AMD designede unikke RISC-baserede mikrokode-instruktionssæt, begge udokumenterede, men konceptuelt ligner andre RISC-instruktionssæt såsom ARM eller RISC-V. Ligesom software er det en udfordring at implementere kompleks hardware korrekt; Historisk set har dette ført til adskillige velkendte fejl, såsom Intels FDIV-fejl i Pentium i 1994.

AMD leverer en enkelt krypteringsnøgle til AES-CMAC i alle dens processorer fra Zen 1 til Zen 4, hvilket betyder, at hvis nogen uddrager denne nøgle fra én CPU, kan de anvende den på alle de andre. Faktisk har forskere fundet ud af, at disse processorer bruger en kendt nøgle, taget fra et eksempel i NIST SP 800-38B retningslinjerne.

Dette har i teorien gjort det muligt at generere falske patches ved at erstatte patchens offentlige nøgle med en, der producerer den samme hash, og vælg kollisioner for den digitale signatur. Sådanne kollisioner opnås ved at tilføje en ekstra blok af tilsyneladende tilfældige data til mikrokoden, så den modificerede patch bevarer AMDs originale digitale signatur.

EntrySign, CVE-2024-56161 sårbarheden, der gør det muligt for angribere at omgå sikkerhedskontrol

For at løse dette problemFor at udforske nye måder at manipulere mikrokode i AMD-processorer, Google-ingeniører De udviklede Zentool, en samling af kombinerede værktøjer til mikrokodepatch-undersøgelse, inklusive begrænset adskillelse, oprettelse af mikrokodepatches ved brug af en begrænset mængde reverse engineering-samling.

Zentool er designet til at lette analyse og modifikation af mikrokode, der tilbyder en række kommandoer, der tillader lige fra redigering af parametre og udskiftning af instruktioner til at indlæse den modificerede mikrokode i CPU'en og rette den digitale signatur af patchen.

For eksempel muliggør kommandoen "zentool edit" redigering af parametre i mikrokodefiler, mens "zentool print" viser detaljerede oplysninger om mikrokodens interne strukturer. Også «zentool load» indlæser mikrokoden i CPU'en, og «zentool resign» genberegner den digitale signatur, under hensyntagen til de foretagne ændringer. Derudover indeholder pakken hjælpeprogrammer såsom mcas og mcop, som giver assembler- og disassembler-funktionalitet til at arbejde direkte med mikrokode.

Evnen til Zentool giver udviklere mulighed for at forberede og anvende deres egne patches på AMD Zen-processorer Som et illustrativt eksempel er der udarbejdet en patch, der ændrer logikken i RDRAND-instruktionen. Efter at have anvendt denne patch, stopper RDRAND-instruktionen med at generere pseudo-tilfældige sekvenser og begynder konsekvent at returnere tallet 4, hvilket demonstrerer kraften i at ændre mikrokoden og ændre processorens forventede adfærd.

Det er værd at nævne det Zentool kommer med en detaljeret vejledning om RISC86-mikroarkitekturen, der bruges i AMD-mikrokode, samt en instruktionsnote, der forklarer, hvordan man opretter brugerdefineret mikrokode. Guiden viser blandt andet, hvordan man designer nye processorinstruktioner, ændrer adfærden af ​​eksisterende instruktioner og indlæser disse ændringer direkte i CPU'en.

Endelig, hvis du er interesseret i at vide mere om det, kan du konsultere detaljerne i følgende link.