Ö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 | Mikrokod + återkompilering av programvara | Inte påverkad | |||||
Återblod | 2022-29900 | 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
- Linux-kärna: Hårdvarasårbarheter
- Sårbarheter associerade med CPU spekulativt exekvering
- En systematisk utvärdering av övergående avrättningsattacker och försvar
- Ett dynamiskt träd av övergående exekveringssårbarheter för Intel, AMD och ARM-processorer
- Transient Execution Attacks av Daniel Gruss, 20 juni 2019
- CPU-buggar
- Intel: Förfinad spekulativ exekveringsterminologi