Övergående körning CPU-sårbarhet

Övergående exekvering CPU-sårbarheter är sårbarheter i ett datorsystem där en spekulativ exekveringsoptimering implementerad i en mikroprocessor utnyttjas för att läcka hemlig data till en obehörig part. Det klassiska exemplet är Spectre som gav sitt namn till den här typen av sidokanalsattack , men sedan januari 2018 har många olika sårbarheter identifierats.

Översikt

Moderna datorer är mycket parallella enheter, sammansatta av komponenter med mycket olika prestandaegenskaper. Om en operation (som en gren) ännu inte kan utföras eftersom någon tidigare långsam operation (som en minnesläsning) ännu inte har slutförts, kan en mikroprocessor försöka förutsäga resultatet av den tidigare operationen och utföra den senare operationen spekulativt , agera som om förutsägelsen var korrekt. Förutsägelsen kan baseras på systemets senaste beteende. När den tidigare, långsammare operationen är klar, avgör mikroprocessorn om förutsägelsen var korrekt eller felaktig. Om det var korrekt fortsätter exekveringen oavbrutet; om det var felaktigt rullar mikroprocessorn tillbaka de spekulativt utförda operationerna och upprepar den ursprungliga instruktionen med det verkliga resultatet av den långsamma operationen. Specifikt hänvisar en transient instruktion till en instruktion som behandlas av fel av processorn (som inkriminerar grenprediktorn i fallet med Spectre ) som kan påverka det mikroarkitektoniska tillståndet hos processorn, vilket lämnar det arkitektoniska tillståndet utan några spår av dess exekvering.

När det gäller datorns direkt synliga beteende är det som om den spekulativt exekverade koden "aldrig hände". Denna spekulativa exekvering kan emellertid påverka tillståndet för vissa komponenter i mikroprocessorn, såsom cachen, och denna effekt kan upptäckas genom noggrann övervakning av tidpunkten för efterföljande operationer.

Om en angripare kan ordna att den spekulativt exekverade koden (som kan vara direkt skriven av angriparen, eller kan vara en lämplig gadget som de har hittat i det riktade systemet) fungerar på hemlig data som de är obehöriga att komma åt, och har en annan effekt på cachen för olika värden av den hemliga datan, kan de kanske upptäcka värdet av den hemliga datan.

Från och med 2017 identifierades flera exempel på sådana sårbarheter, med publicering i början av 2018.

I mars 2021 upptäckte AMD-säkerhetsforskare att algoritmen Predictive Store Forwarding i Zen 3 -processorer kunde användas av skadliga applikationer för att komma åt data som den inte borde komma åt. Enligt Phoronix har det liten effekt att inaktivera funktionen.

upptäcktes två nya sårbarheter, Speculative Code Store Bypass (SCSB, CVE-2021-0086 ) och Floating Point Value Injection (FPVI, CVE-2021-0089 ), som påverkar alla moderna x86-64-processorer både från Intel och AMD . För att mildra dem måste programvaran skrivas om och kompileras om. ARM-processorer påverkas inte av SCSB men vissa ARM-arkitekturer påverkas av FPVI.

I augusti 2021 avslöjades en sårbarhet som kallas "Transient Execution of Non-canonical Accesses" som påverkar vissa AMD-processorer. Det kräver samma begränsningar som MDS-sårbarheten som påverkar vissa Intel-processorer. Den tilldelades CVE-2020-12965 . Eftersom de flesta x86-programvara redan är patchade mot MDS och denna sårbarhet har exakt samma begränsningar, behöver programvaruleverantörer inte åtgärda denna sårbarhet.

I oktober 2021 avslöjades för första gången någonsin en sårbarhet liknande Meltdown som påverkar alla AMD-processorer, men företaget tror inte att några nya begränsningar behöver tillämpas och de befintliga är redan tillräckliga.

I mars 2022 avslöjades en ny variant av Spectre-sårbarheten som heter Branch History Injection. Det påverkar vissa ARM64-processorer och följande Intel-processorfamiljer: Cascade Lake , Ice Lake , Tiger Lake och Alder Lake . Enligt Linux-kärnutvecklare påverkas också AMD-processorer.

I mars 2022 avslöjades en sårbarhet som påverkar ett stort antal AMD-processorer under CVE-2021-26341 .

tillkännagavs flera sårbarheter för MMIO Intel-processorer relaterade till exekvering i virtuella miljöer . Följande CVE:er betecknades: CVE-2022-21123 , CVE-2022-21125 , CVE-2022-21166 .

I juli 2022 avslöjades Retbleed- sårbarheten som påverkar Intel Core 6 till 8:e generationens processorer och AMD Zen 1, 1+ och 2 generationens processorer. Nyare Intel mikroarkitekturer samt AMD som börjar med Zen 3 påverkas inte. Åtgärderna för sårbarheten minskar prestandan för de berörda Intel-processorerna med upp till 39 %, medan AMD-processorer tappar upp till 14 %.

I augusti 2022 avslöjades SQUIP-sårbarheten som påverkar processorer i Ryzen 2000–5000-serien. Enligt AMD är de befintliga begränsningarna tillräckliga för att skydda mot det.

Enligt en recension av Phoronix som släpptes i oktober, 2022 bromsas Zen 4 / Ryzen 7000- processorerna inte ned av begränsningar, i själva verket leder det till en prestandaförlust att inaktivera dem.

I februari 2023 avslöjades en sårbarhet som påverkar ett brett spektrum av AMD CPU-arkitekturer som kallas "Cross-Thread Return Address Predictions".

Framtida

Spectre klass sårbarheter kommer att förbli ofixade eftersom CPU-designers annars måste inaktivera spekulativ exekvering vilket kommer att medföra en massiv prestandaförlust. [ citat behövs ] Trots detta har AMD lyckats designa Zen 4 så att dess prestanda inte påverkas av begränsningar.

Sammanfattning av sårbarheter och begränsningar

Begränsningstyp Helhetsgrad Effektivitet Prestandapåverkan
Hårdvara Full Full Ingen...liten
Mikrokod Partiell Delvis...Full Ingen...Stor
OS/VMM Partiell Delvis...Full Liten stor
Omkompilering av programvara Fattig Partiell...Full Medium...Stor

Hårdvarubegränsningar kräver förändring av CPU-designen och därmed en ny iteration av hårdvara, men medför nästan noll prestandaförlust. Mikrokoduppdateringar ändrar programvaran som CPU:n körs på, vilket kräver att patchar släpps och integreras i varje operativsystem och för varje CPU. OS/VMM -reduceringar tillämpas på operativsystem- eller virtuell maskinnivå och (beroende på arbetsbelastning) medför ofta en ganska betydande prestandaförlust. Omkompilering av programvara kräver omkompilering av varje mjukvara och brukar drabbas av en allvarlig prestandaträff.

Sårbarhetens namn

(alias)

CVE Påverkade CPU-arkitekturer och begränsningar
Intel AMD
Issjön
Cascade Lake , Comet Lake

Whiskey Lake , Amber Lake

Coffee Lake (9:e generationen)

Coffee Lake (8:e generationen)*
Zen 1 / Zen 1+ Zen 2

Spectre v1 Bounds Check Bypass
2017-5753 Omkompilering av programvara Omkompilering av programvara

Spectre v2 Branch Target Injection
2017-5715 Hårdvara + OS Mikrokod + OS Mikrokod + OS Mikrokod + OS/VMM Hårdvara + OS/VMM

SpectreRSB / ret2spec Återgå felförutsäga
2018-15572 OS

Meltdown Rogue Data Cache Load
2017-5754 Inte påverkad Mikrokod Inte påverkad
Spectre-NG v3a 2018-3640 Inte påverkad Mikrokod

Spectre-NG v4 Speculative Store Bypass
2018-3639 Hårdvara + OS/VMM Mikrokod + OS OS/VMM Hårdvara + OS/VMM

Foreshadow L1 Terminal Fault (L1TF)
2018-3615 Inte påverkad Mikrokod Inte påverkad

Spectre-NG Lazy FP State Restore
2018-3665 OS/VMM

Spectre-NG v1.1 Bounds Check Bypass Store
2018-3693 OS/VMM

Foreshadow-OS L1 terminalfel (L1TF)
2018-3620 Inte påverkad Mikrokod + OS Inte påverkad

Foreshadow-VMM L1 terminalfel (L1TF)
2018-3646

RIDL/ZombieLoad Microarchitectural Fill Buffer Data Sampling (MFBDS)
2018-12130

RIDL Microarchitectural Load Port Data Sampling (MLPDS)
2018-12127 Inte påverkad Inte påverkad Inte påverkad Mikrokod + OS

RIDL Microarchitectural Data Sampling Uncacheable Memory (MDSUM)
2019-11091 Inte påverkad Mikrokod + OS

Fallout Microarchitectural Store Buffer Data Sampling (MSBDS)
2018-12126 Mikrokod Inte påverkad Inte påverkad Mikrokod + OS
Spectre SWAPGS 2019-1125 Samma som Spectre 1

RIDL/ZombieLoad v2 Transactional Asynchronous Abort (TAA)
2019-11135 Inte påverkad Mikrokod + OS

RIDL/CacheOut/ZombieLoad L1D Eviction Sampling (L1DES)
2020-0549 Inte påverkad

RIDL Vector Register Sampling (VRS)
2020-0548
Load Value Injection (LVI) 2020-0551 Omkompilering av programvara

CROSSTalk Special Register Buffer Data Sampling (SRBDS)
2020-0543 Inte påverkad Mikrokod Inte påverkad
Branch History Injection (BHI) 2022-0001

2022-0002

Mikrokod + återkompilering av programvara Inte påverkad
Återblod 2022-29900

2022-29901

Inte påverkad Omkompilering av programvara
Cross-Thread Return Address Predictions 2022-27672 Inte påverkad Omkompilering av programvara

Den 8:e generationens Coffee Lake-arkitektur i den här tabellen gäller även för ett brett utbud av tidigare släppta Intel-processorer, inte begränsat till arkitekturerna baserade på Intel Core , Pentium 4 och Intel Atom som börjar med Silvermont . Olika CPU-mikroarkitekturer som inte ingår ovan påverkas också, bland dem är IBM Power , ARM , MIPS och andra.

Intel-processorer förbi Ice Lake, t.ex. Rocket Lake och Tiger Lake, påverkas inte av Fallout/MSBDS.

Anteckningar

1. ^ Steg 5 av 2:a generationens Intel® Xeon® skalbara processorer baserade på Cascade Lake-mikroarkitektur påverkas av både MSBDS och MLPDS.

externa länkar