Zenbleed: Allt du behöver veta om denna AMD-säkerhetsbugg

click fraud protection

Zenbleed är det senaste i en lång rad säkerhetsbuggar för processorer, ännu en sak som behöver åtgärdas. Här är vad du behöver veta.

Efter att Spectre och Meltdown CPU-utnyttjandet offentliggjordes 2018, har datorvärlden varit ganska vaksam om att hitta säkerhetsbuggar och kryphål i processorer, och under de senaste fem åren har forskare hittat massor. Den 24 juli avslöjades ännu en exploatering offentligt efter att ha rapporterats först i maj. Den här gången är den specifik för AMD-processorer byggda på Zen 2-arkitekturen, och den kallas för "Zenbleed". Här är allt du behöver veta om Zenbleed och vad det betyder för världen.

Hur fungerar Zenbleed?

Zenbleed är väldigt lik andra hårdvarubaserade säkerhetsbuggar som Spectre genom att den utnyttjar CPU: ernas spekulativa förmåga. För att förbättra prestanda, processorer spekulera eller förutsäga nästa sak de behöver göra, och sedan Spectre först avslöjades har världen lärt sig att spekulationer kan vara mycket osäkra om de görs otillbörligt.

Källa: Tavis Ormandy

Register i en CPU kan innehålla en liten mängd data, vanligtvis en instruktion, en lagringsadress eller någon annan typ av liten data. XMM-register i en x86_64-arkitektur (alltså vilken som helst av de berörda Zen 2-processorerna) kan endast användas för att göra beräkningar på data, inte för att adressera minne. Detta utökas till 256 bitar i fallet med YMM-register och 512 bitar i ZMM-register. I det här fallet hänvisar XMM till de lägre 128 bitarna av total 512 bitar av ZMM-registren.

Dessa register är otroligt användbara för många olika saker, inklusive vanliga C-funktioner. Sårbarheten missbrukar spekulativ exekvering och förgrenade felförutsägelser för att i huvudsak spotta ut en slumpmässig bit data från minnet, men den data kan komma från något. Standard C-biblioteksfunktioner som strlen, som mäter längden på en sträng, kan använda dessa register för att flytta data runt, och det är möjligt att ett lösenord som du använder av en slump olyckligtvis kan ha hamnat i ett av dessa register.

Grenförutsägelse och spekulativ exekvering hänvisar i stort sett till när din dator utför operationer som ännu inte behövs men som troligen kommer att behövas i efterföljande cykler. Det görs ofta i tider när ditt system har lediga resurser, eftersom det påskyndar den totala bearbetningen när instruktioner eller data annars inte skulle vara redo för CPU: n. Om det utförda arbetet inte behövs kasseras det vanligtvis och processorn kan hoppa tillbaka dit den behöver för att utföra nästa korrekta instruktion. När den gör detta kallas detta en grenfelförutsägelse.

Där ett problem uppstår är i vzeroupper-instruktionen, som nollställer bitarna i position 128 och högre i YMM- och ZMM-register. Detta görs särskilt vid övergång mellan AVX och äldre SSE-kod, eftersom det eliminerar prestanda straff som orsakas av falska beroenden samtidigt som man undviker en effekt som liknar heltalspromotion i C.

Om processorn spekulativt exekverar en vzeroupper-instruktion, finns det ingen korrekt återställning. De drabbade Ryzen-processorerna kan dock tvingas återhämta sig från det, men felaktigt. Väl i detta tillstånd kan det program som körs för närvarande spionera på dessa register i realtid och se data som flödar genom systemet vid varje given tidpunkt.

Vilka processorer påverkas av Zenbleed, och när kommer patchar vara tillgängliga?

Som nämnts tidigare är endast AMD-processorer baserade på Zen 2-arkitekturen kända för att vara sårbara för Zenbleed-säkerhetsbuggen, men Zen 2-arkitekturen har drivit processorer i tre serier, vilket gör det rörigt att ta reda på vilka processorer som är sårbara och vilka är det inte. Här är en tabell som borde göra allt klart:

Påverkade processorer

Ryzen 3000-serien

Alla utom APU: er (t.ex. Ryzen 3 3200G)

Episka Rom

Allt

Ryzen 4000-serien

Allt

Ryzen 5000-serien

Endast 5300U, 5500U och 5700U

Ryzen 7000-serien

Endast 7020 APU: er (t.ex. Ryzen 3 7320U)

Det här är en ganska stor mängd AMD-processorer, och det här är bara de som har bekräftats hittills. Zen 2 används också i APU: erna som driver Steam Deck, Xbox Series S och X och PS5. Vi har inte hört på något sätt om dessa processorer också påverkas, men att döma av hur detta utnyttjande fungerar skulle jag bli förvånad om de inte också påverkades. Det verkar osannolikt att AMD har patchat det i Xbox och PS5 eftersom 7020-seriens chips, som är nyare, också påverkas.

I skrivande stund, mikrokod har skickats till Linux-kärnan som kommer att korrigera denna sårbarhet, och ditt operativsystem eller BIOS kanske redan har en uppdatering som löser problemet.

Vad betyder detta för datorer som använder sårbara processorer?

Detta är en knepig sak att svara på eftersom inte alla datorer är lika. För vanliga människor som bara använder stationära och bärbara speldatorer behöver du förmodligen inte vara så orolig. Detta är en ganska sofistikerad exploatering och även om det är allmänt känt nu, finns det inga kända exempel på en angripare som använder Zenbleed för att hacka sig in i någonting ännu.

Insatserna är dock mycket högre för datacenter och viktiga personer som hanterar känslig information på sina egna datorer. Det finns en anledning till att AMD har varit väldigt tydlig med att Epyc Rome lappades innan sårbarheten offentliggjordes: massor av känsliga informationen hanteras av Epyc-processorer, och det skulle vara en katastrof om några processorer som driver storskaliga servrar lyckades attackerade. Linuxkärnan 6.4.6 är redan släppt och åtgärdar denna sårbarhet genom att rulla in officiell mikrokodpatch från AMD. Det verkar troligt att Microsoft kommer att införliva något liknande i Windows.

Oroande, AMD: s officiella BIOS-patchar kanske inte rullas ut på flera månader, i så fall finns det en "lite kyckling" som du kan ställa in om du är på en Linux- eller FreeBSD-maskin. På Linux-maskiner kan du använda msr-tools och köra följande kommando.

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

På FreeBSD kan du även använda följande.

cpucontrol(8)

Att inaktivera SMT är inte tillräckligt för att mildra sårbarheten.

En sak som gör Zenbleed särskilt dålig är att Zen 2 var en av AMDs mest populära CPU-arkitekturer. Det kickstartade AMD: s comeback 2019 och 2020, och många människor, företag och organisationer använder fortfarande datorer med Zen 2-processorer 2023, särskilt Epyc Rome CPU: er. Det här är inte lika illa som Spectre (som påverkar i stort sett alla processorer före 2019) och Meltdown (som påverkar i stort sett alla processorer från före 2019), men det är fortfarande ganska utbredd.

Säkerhetskorrigeringar för sårbarheter som denna resulterar också ofta i prestationsstraff, men AMD berättade Toms hårdvara att detta straff kommer att bero på CPU: n och arbetsbelastningen. Spekulationer och förutsägelser har varit ganska viktiga för CPU-prestanda, så det är oklart om någon potentiell fix kommer att se en betydande minskning av prestanda.