Zenbleed: Alt hvad du behøver at vide om denne AMD-sikkerhedsfejl

Den seneste i en lang række af sikkerhedsfejl til CPU'er, Zenbleed er endnu en ting, der skal repareres. Her er hvad du behøver at vide.

Efter at Spectre og Meltdown CPU-udnyttelsen blev offentliggjort i 2018, har computerverdenen været temmelig årvågen om at finde sikkerhedsfejl og smuthuller i processorer, og i de seneste fem år har forskere fundet et væld. Den 24. juli blev endnu en udnyttelse offentliggjort efter først at være blevet rapporteret i maj. Denne gang er den specifik for AMD-processorer bygget på Zen 2-arkitekturen, og den kaldes "Zenbleed". Her er alt, hvad du behøver at vide om Zenbleed, og hvad det betyder for verden.

Hvordan virker Zenbleed?

Zenbleed minder meget om andre hardwarebaserede sikkerhedsfejl som Spectre, idet den udnytter CPU'ernes spekulative evner. For at forbedre ydeevnen, CPU'er spekulere eller forudsige den næste ting, de skal gøre, og siden Spectre først blev afsløret, har verden lært, at spekulation kan være meget usikker, hvis det gøres uretmæssigt.

Kilde: Tavis Ormandy

Registre i en CPU kan indeholde en lille mængde data, typisk en instruktion, en lageradresse eller enhver anden form for små data. XMM-registre i en x86_64-arkitektur (så enhver af de berørte Zen 2-processorer) kan kun bruges til at foretage beregninger på data, ikke adressering af hukommelse. Dette udvides til 256 bit i tilfælde af YMM-registre og 512 bit i ZMM-registre. I dette tilfælde refererer XMM til de nederste 128 bit af Total 512 bit af ZMM-registrene.

Disse registre er utroligt nyttige til mange forskellige ting, inklusive standard C-funktioner. Sårbarheden misbruger spekulativ eksekvering og forgrenede fejlforudsigelser til i det væsentlige at spytte et tilfældigt stykke data ud fra hukommelsen, men disse data kan være fra hvad som helst. Standard C-biblioteksfunktioner som strlen, der måler længden af ​​en streng, kan bruge disse registre til at flytte data rundt, og det er muligt, at en adgangskode, som du bruger, ved et tilfælde uheldigvis kunne være faldet ind i en af ​​disse registre.

Branch-forudsigelse og spekulativ eksekvering refererer bredt til, hvornår din computer udfører handlinger, der endnu ikke er nødvendige, men som sandsynligvis vil blive nødvendige i efterfølgende cyklusser. Det gøres ofte på tidspunkter, hvor dit system har ledige ressourcer, da det fremskynder den samlede behandling, når instruktioner eller data ellers endnu ikke ville være klar til CPU'en. Hvis det udførte arbejde ikke er nødvendigt, kasseres det typisk, og processoren kan hoppe tilbage til hvor den skal for at udføre den næste, korrekte instruktion. Når den gør dette, kaldes dette en gren fejlforudsigelse.

Hvor der opstår et problem er i vzeroupper-instruktionen, som nulstiller bits i position 128 og højere i YMM- og ZMM-registre. Dette gøres især ved overgang mellem AVX og ældre SSE-kode, da det eliminerer ydeevne sanktioner forårsaget af falske afhængigheder, samtidig med at man undgår en effekt, der ligner heltalspromovering i C.

Hvis processoren spekulativt udfører en vzeroupper-instruktion, er der ingen ordentlig rollback. De berørte Ryzen-processorer kan dog blive tvunget til at komme sig fra det, selvom det er forkert. Når først det er i denne tilstand, kan det program, der kører i øjeblikket, spionere på disse registre i realtid og se data, der flyder gennem hele systemet på ethvert givet tidspunkt.

Hvilke CPU'er påvirkes af Zenbleed, og hvornår vil patches være tilgængelige?

Som tidligere nævnt er det kun AMD CPU'er baseret på Zen 2-arkitekturen, der er kendt for at være sårbare over for Zenbleed-sikkerhedsfejlen, men Zen 2-arkitekturen har drevet CPU'er i tre serier, hvilket gør det rodet at finde ud af, hvilke CPU'er der er sårbare, og hvilke er det ikke. Her er en tabel, der burde gøre det hele klart:

Påvirkede CPU'er

Ryzen 3000-serien

Alle undtagen APU'er (f.eks. Ryzen 3 3200G)

Epik Rom

Alle

Ryzen 4000-serien

Alle

Ryzen 5000-serien

Kun 5300U, 5500U og 5700U

Ryzen 7000-serien

Kun 7020 APU'er (f.eks. Ryzen 3 7320U)

Dette er en ret stor mængde AMD-processorer, og det er kun dem, der er blevet bekræftet indtil videre. Zen 2 bruges også i APU'erne, der driver Steam Deck, Xbox Series S og X og PS5. Vi har på ingen måde hørt, om disse CPU'er også er berørt, men at dømme efter den måde, denne udnyttelse fungerer på, ville jeg blive overrasket, hvis de ikke også blev påvirket. Det virker usandsynligt, at AMD har patchet det i Xbox og PS5, da 7020-seriens chips, som er nyere, også er påvirket.

I skrivende stund, mikrokode er blevet sendt til Linux-kernen som vil rette denne sårbarhed, og dit operativsystem eller BIOS har muligvis allerede en opdatering, der løser dette problem.

Hvad betyder det for computere, der bruger sårbare CPU'er?

Dette er en vanskelig ting at svare på, fordi ikke alle computere er lige. For normale mennesker, der bare bruger gaming stationære og bærbare computere, behøver du sandsynligvis ikke at være så bekymret. Dette er en ret sofistikeret udnyttelse, og selvom det er offentligt kendt nu, er der ingen kendte eksempler på, at en angriber bruger Zenbleed til at hacke sig ind i noget endnu.

Men indsatsen er meget højere for datacentre og vigtige personer, der håndterer følsomme oplysninger på deres egne computere. Der er en grund til, at AMD har været meget klar over, at Epyc Rome blev rettet, før sårbarheden blev offentliggjort: masser af følsomme information bliver håndteret af Epyc CPU'er, og det ville være en katastrofe, hvis nogen CPU'er, der driver storskala servere, lykkedes angrebet. Linux-kerne 6.4.6 er allerede udgivet og løser denne sårbarhed ved at rulle ind officiel mikrokode patch fra AMD. Det virker sandsynligt, at Microsoft vil inkorporere noget lignende i Windows.

bekymrende, AMD's officielle BIOS-patches rulles muligvis ikke ud i flere måneder, i så fald er der en "lidt kylling", som du kan indstille, hvis du er på en Linux- eller FreeBSD-maskine. På Linux-maskiner kan du bruge msr-tools og udføre følgende kommando.

wrmsr -a 0xc0011029 $(($(rdmsr -c 0xc0011029) | (1<<9)))

På FreeBSD kan du også bruge følgende.

cpucontrol(8)

Deaktivering af SMT er ikke nok til at afbøde sårbarheden.

En ting, der gør Zenbleed særligt dårlig, er, at Zen 2 var en af ​​AMDs mest populære CPU-arkitekturer. Det kickstartede AMDs comeback i 2019 og 2020, og masser af mennesker, virksomheder og organisationer bruger stadig computere med Zen 2-processorer i 2023, især Epyc Rome CPU'er. Dette er ikke så slemt som Spectre (som påvirker stort set alle før 2019 CPU'er) og Meltdown (som påvirker stort set alle før 2019 Intel CPU'er), men det er stadig rimeligt udbredt.

Sikkerhedsrettelser til sårbarheder som denne resulterer også ofte i en præstationsstraf, men AMD fortalte Toms hardware at denne straf vil afhænge af CPU'en og arbejdsbyrden. Spekulationer og forudsigelser har været ret vigtige for CPU-ydeevnen, så det er uklart, om nogen potentiel rettelse vil se en væsentlig reduktion i ydeevnen.