Zenbleed: Alt du trenger å vite om denne AMD-sikkerhetsfeilen

Den siste i en lang rekke sikkerhetsfeil for CPUer, Zenbleed er enda en ting som må lappes. Her er det du trenger å vite.

Etter at Spectre og Meltdown CPU-utnyttelsene ble publisert i 2018, har dataverdenen vært ganske årvåken om å finne sikkerhetsfeil og smutthull i prosessorer, og i løpet av de siste fem årene har forskere funnet massevis. 24. juli ble nok en utnyttelse offentliggjort etter først å ha blitt rapportert i mai. Denne gangen er den spesifikk for AMD-prosessorer bygget på Zen 2-arkitekturen, og den kalles "Zenbleed". Her er alt du trenger å vite om Zenbleed og hva det betyr for verden.

Hvordan virker Zenbleed?

Zenbleed er veldig lik andre maskinvarebaserte sikkerhetsfeil som Spectre ved at den utnytter den spekulative evnen til CPUer. For å forbedre ytelsen, CPUer spekulere eller forutsi den neste tingen de må gjøre, og siden Spectre først ble avslørt, har verden lært at spekulasjoner kan være veldig usikre hvis de gjøres feilaktig.

Kilde: Tavis Ormandy

Registre i en CPU kan inneholde en liten mengde data, vanligvis en instruksjon, en lagringsadresse eller andre typer små data. XMM-registre i en x86_64-arkitektur (så enhver av de berørte Zen 2-prosessorene) kan bare brukes til å gjøre beregninger på data, ikke adresseringsminne. Dette utvides til 256 biter for YMM-registre, og 512 biter i ZMM-registre. I dette tilfellet refererer XMM til de nedre 128 bitene av

Total 512 biter av ZMM-registrene.

Disse registrene er utrolig nyttige for mange forskjellige ting, inkludert standard C-funksjoner. Sårbarheten misbruker spekulativ utførelse og forgrening av feilspådommer til å spytte ut et tilfeldig stykke data fra minnet, men disse dataene kan være fra hva som helst. Standard C-biblioteksfunksjoner som strlen, som måler lengden på en streng, kan bruke disse registrene for å flytte data rundt, og det er mulig at et passord du bruker ved en tilfeldighet kan ha falt inn i et av disse registrerer.

Grenprediksjon og spekulativ utførelse refererer stort sett til når datamaskinen din utfører operasjoner som ennå ikke er nødvendige, men som sannsynligvis vil være nødvendig i påfølgende sykluser. Det gjøres ofte i tider når systemet ditt har ledige ressurser, ettersom det øker hastigheten på den totale behandlingen når instruksjoner eller data ellers ennå ikke ville være klare for CPU. Hvis arbeidet som er utført ikke er nødvendig, blir det vanligvis forkastet og prosessoren kan hoppe tilbake dit den skal for å utføre den neste, riktige, instruksjonen. Når den gjør dette, kalles dette en grenfeilprediksjon.

Der et problem oppstår er i vzeroupper-instruksjonen, som nullstiller bitene i posisjon 128 og høyere i YMM- og ZMM-registrene. Dette gjøres spesielt ved overgang mellom AVX og eldre SSE-kode, da det eliminerer ytelsen straffer forårsaket av falske avhengigheter samtidig som man unngår en effekt som ligner på heltallsopprykk i C.

Hvis prosessoren spekulativt utfører en vzeroupper-instruksjon, er det ingen riktig tilbakerulling. Imidlertid kan de berørte Ryzen-prosessorene bli tvunget til å komme seg fra det, men feil. Når det er i denne tilstanden, kan programmet som kjører for øyeblikket spionere på disse registrene i sanntid, og se data som flyter gjennom systemet til enhver tid.

Hvilke CPUer påvirkes av Zenbleed, og når vil patcher være tilgjengelige?

Som nevnt før, er det kun AMD-prosessorer basert på Zen 2-arkitekturen som er kjent for å være sårbare for Zenbleed-sikkerhetsfeilen, men Zen 2-arkitekturen har drevet prosessorer i tre serier, noe som gjør det rotete å finne ut hvilke prosessorer som er sårbare og hvilke er det ikke. Her er en tabell som burde gjøre alt klart:

Berørte CPUer

Ryzen 3000-serien

Alle unntatt APU-er (f.eks. Ryzen 3 3200G)

Epik Roma

Alle

Ryzen 4000-serien

Alle

Ryzen 5000-serien

Bare 5300U, 5500U og 5700U

Ryzen 7000-serien

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

Dette er en ganske stor mengde AMD-prosessorer, og dette er bare de som har blitt bekreftet så langt. Zen 2 brukes også i APU-ene som driver Steam Deck, Xbox Series S og X og PS5. Vi har ikke hørt om disse CPU-ene også er berørt, men å dømme etter måten denne utnyttelsen fungerer på, ville jeg bli overrasket om de ikke også ble påvirket. Det virker usannsynlig at AMD har lappet den i Xbox og PS5 siden 7020-seriens brikker, som er nyere, også er berørt.

I skrivende stund, mikrokode er sendt til Linux-kjernen som vil korrigere dette sikkerhetsproblemet, og operativsystemet eller BIOS kan allerede ha en oppdatering som løser dette problemet.

Hva betyr dette for datamaskiner som bruker sårbare CPUer?

Dette er en vanskelig ting å svare på fordi ikke alle datamaskiner er like. For vanlige mennesker som bare bruker spillstasjonære og bærbare datamaskiner, trenger du sannsynligvis ikke å være så bekymret. Dette er en ganske sofistikert utnyttelse, og selv om det er offentlig kjent nå, er det ingen kjente eksempler på en angriper som bruker Zenbleed for å hacke seg inn i noe ennå.

Men innsatsen er mye høyere for datasentre og viktige personer som håndterer sensitiv informasjon på sine egne datamaskiner. Det er en grunn til at AMD har vært veldig tydelig på at Epyc Rome ble lappet før sårbarheten ble offentliggjort: mye sensitivt informasjon blir håndtert av Epyc CPUer, og det ville være en katastrofe hvis noen CPUer som driver storskala servere var vellykket angrepet. Linux-kjerne 6.4.6 er allerede utgitt og fikser dette sikkerhetsproblemet ved å rulle inn offisiell mikrokodeoppdatering fra AMD. Det virker sannsynlig at Microsoft vil inkorporere noe lignende i Windows.

Bekymringsfullt, AMDs offisielle BIOS-oppdateringer vil kanskje ikke rulle ut før om flere måneder, i så fall er det en "litt kylling" som du kan angi hvis du er på en Linux- eller FreeBSD-maskin. På Linux-maskiner kan du bruke msr-tools og utføre følgende kommando.

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

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

cpucontrol(8)

Deaktivering av SMT er ikke nok til å redusere sårbarheten.

En ting som gjør Zenbleed spesielt dårlig er at Zen 2 var en av AMDs mest populære CPU-arkitekturer. Det kickstartet AMDs comeback i 2019 og 2020, og mange mennesker, selskaper og organisasjoner bruker fortsatt datamaskiner med Zen 2-prosessorer i 2023, spesielt Epyc Rome CPUer. Dette er ikke så ille som Spectre (som påvirker stort sett alle før 2019 CPUer) og Meltdown (som påvirker stort sett alle før 2019 Intel CPUer), men det er fortsatt ganske utbredt.

Sikkerhetsoppdateringer for sårbarheter som dette resulterer også ofte i en ytelsesstraff, men AMD fortalte Toms maskinvare at denne straffen vil avhenge av CPU og arbeidsbelastningen. Spekulasjoner og spådommer har vært ganske viktige for CPU-ytelsen, så det er uklart om noen potensiell løsning vil se en betydelig reduksjon i ytelsen.