Transient execution CPU vulnerabilities are vulnerabilities in a computer system in which a speculative execution optimization implemented in a microprocessor is exploited to leak secret data to an unauthorized party. The classic example is Spectre but since January 2018 many different vulnerabilities have been identified.
Modern computers are highly parallel devices, composed of components with very different performance characteristics. If an operation (such as a branch) cannot yet be performed because some earlier slow operation (such as a memory read) has not yet completed, a microprocessor may attempt to predict the result of the earlier operation and execute the later operation speculatively, acting as if the prediction was correct. The prediction may be based on recent behavior of the system. When the earlier, slower operation completes, the microprocessor determines whether prediction was correct or incorrect. If it was correct then execution proceeds uninterrupted; if it was incorrect then the microprocessor rolls back the speculatively executed operations and repeats the original instruction with the real result of the slow operation.
In terms of the directly visible behavior of the computer it is as if the speculatively executed code "never happened". However, this speculative execution may affect the state of certain components of the microprocessor, such as the cache, and this effect may be discovered by careful monitoring of the timing of subsequent operations.
If an attacker can arrange that the speculatively executed code (which may be directly written by the attacker, or may be a suitable gadget that they have found in the targeted system) operates on secret data that they are unauthorized to access, and has a different effect on the cache for different values of the secret data, they may be able to discover the value of the secret data.
Starting in 2017, multiple examples of such vulnerabilities were identified, with publication starting in early 2018.
Hardware mitigations impose close to zero performance loss, while microcode and/or OS mitigations might incur quite a significant performance loss (depending on workload).
Various CPU microarchitectures not included in this table are also affected, among them are IBM Power, ARM, MIPS and others.[1][2][3][4]
Vulnerability | N | CVE | Public Vulnerability Name
(codename) |
Affected CPU architectures and mitigations | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Intel[5] | AMD[6] | |||||||||
Ice Lake[7] | Cascade Lake, | Whiskey Lake,
Amber Lake |
Coffee Lake (9th gen)[8] | Coffee Lake (8th gen)* | Zen 1 / Zen 1+ | Zen 2[9] | ||||
Spectre | 1 | 2017-5753 | Bounds Check Bypass | OS/VMM | Microcode + OS/VMM | Hardware + OS/VMM | ||||
Spectre | 2 | 2017-5715 | Branch Target Injection | Hardware + OS | Microcode + OS | Microcode + OS | ||||
SpectreRSB[10]/ret2spec[11] | 2 | 2018-15572 | Return Mispredict | |||||||
Meltdown | 3 | 2017-5754 | Rogue Data Cache Load | Not affected | Microcode | Not affected | ||||
Spectre-NG | 3a | 2018-3640 | Rogue System Register Read | Not affected[12] | Microcode | |||||
Spectre-NG | 4 | 2018-3639 | Speculative Store Bypass | Hardware + OS/VMM[12] | Microcode + OS | OS/VMM | Hardware + OS/VMM | |||
Foreshadow | 5 | 2018-3615 | L1 Terminal Fault (L1TF) | Not affected | Microcode | Not affected | ||||
Spectre-NG | 2018-3665 | Lazy FP State Restore | OS/VMM[13] | |||||||
Spectre-NG | 1.1 | 2018-3693 | Bounds Check Bypass Store | OS/VMM[14] | ||||||
Spectre-NG | 1.2 | Read-only Protection Bypass (RPB) | ||||||||
Foreshadow-OS | 2018-3620 | L1 Terminal Fault (L1TF) | Not affected | Microcode + OS | Not affected | |||||
Foreshadow-VMM | 2018-3646 | L1 Terminal Fault (L1TF) | ||||||||
RIDL/ZombieLoad | 2018-12130 | Microarchitectural Fill Buffer Data Sampling (MFBDS) | ||||||||
RIDL | 2018-12127 | Microarchitectural Load Port Data Sampling (MLPDS) | Not affected | Not affected [1] | Not affected | Microcode + OS [15] | ||||
RIDL | 2019-11091 | Not affected | Microcode + OS | |||||||
Fallout | 2018-12126 | Microarchitectural Store Buffer Data Sampling (MSBDS) | Not affected | Not affected [2] | Not affected | Microcode + OS | ||||
Spectre SWAPGS | 1 | 2019-1125 | None yet[16][17][18] | Same as Spectre 1 | ||||||
RIDL/ZombieLoad v2 | 2019-11135 | Transactional Asynchronous Abort (TAA)[19][20][21] | Not Affected[22] | Microcode + OS |
The 8th generation Coffee Lake architecture in this table also applies to a wide range of previously released Intel CPUs, not limited to the architectures based on Intel Core, Pentium 4 and Intel Atom starting with Silvermont.[23][24]