Processor vulnerability
CVE-2019-11091
A load that faults or needs a microcode assist picks up stale data from uncacheable accesses, left there by other code, and leaks it through the cache.
- Name
- Microarchitectural Data Sampling Uncacheable Memory
- Also known as
- MDSUM, RIDL
- Vulnerability
- Microarchitectural Data Sampling
- Kind
- Data sampling
- CVE published
- 2019-05-30 CVE record
- Advisories
- INTEL-SA-00233
- Linux reports it in
mds
This variant of MDS samples the buffers that carry accesses to uncacheable memory, which bypass the caches. A load that faults or needs a microcode assist can receive data that is still in it from code that ran before, on the same thread or, with SMT, on the sibling thread, and pass it to later instructions that leave a trace in the cache.
Linux reports all variants in one file; on Silvermont, Airmont and Xeon Phi processors it reports only the store buffer variant.
Affected processors
14 of the 38 microarchitectures listed are affected in all or some of their models.
| Microarchitecture | Status | Detail | Source |
|---|---|---|---|
| NetBurst (Prescott, Nocona) | Affected | Linux 7.3 sets the bug on INTEL_P4_CEDARMILL, INTEL_P4_PRESCOTT, INTEL_P4_PRESCOTT_2M: cpu_vuln_whitelist does not list them with NO_SPECULATION or NO_MDS or MSBDS_ONLY; and a processor released before 2018 does not report MDS_NO | Linux 7.3 |
| Core (Merom, Conroe) | Affected | Linux 7.3 sets the bug on INTEL_CORE2_MEROM, INTEL_CORE2_MEROM_L: cpu_vuln_whitelist does not list them with NO_SPECULATION or NO_MDS or MSBDS_ONLY; and a processor released before 2018 does not report MDS_NO | Linux 7.3 |
| Penryn | Affected | Linux 7.3 sets the bug on INTEL_CORE2_DUNNINGTON, INTEL_CORE2_PENRYN: cpu_vuln_whitelist does not list them with NO_SPECULATION or NO_MDS or MSBDS_ONLY; and a processor released before 2018 does not report MDS_NO | Linux 7.3 |
| Nehalem | Affected | Linux 7.3 sets the bug on INTEL_NEHALEM, INTEL_NEHALEM_EP, INTEL_NEHALEM_EX, INTEL_NEHALEM_G: cpu_vuln_whitelist does not list them with NO_SPECULATION or NO_MDS or MSBDS_ONLY; and a processor released before 2018 does not report MDS_NO | Linux 7.3 |
| Westmere | Affected | Linux 7.3 sets the bug on INTEL_WESTMERE, INTEL_WESTMERE_EP, INTEL_WESTMERE_EX: cpu_vuln_whitelist does not list them with NO_SPECULATION or NO_MDS or MSBDS_ONLY; and a processor released before 2018 does not report MDS_NO | Linux 7.3 |
| Sandy Bridge | Affected | Linux 7.3 sets the bug on INTEL_SANDYBRIDGE, INTEL_SANDYBRIDGE_X: cpu_vuln_whitelist does not list them with NO_SPECULATION or NO_MDS or MSBDS_ONLY; and a processor released before 2018 does not report MDS_NO | Linux 7.3 |
| Ivy Bridge | Affected | Linux 7.3 sets the bug on INTEL_IVYBRIDGE, INTEL_IVYBRIDGE_X: cpu_vuln_whitelist does not list them with NO_SPECULATION or NO_MDS or MSBDS_ONLY; and a processor released before 2018 does not report MDS_NO | Linux 7.3 |
| Haswell | Affected | Linux 7.3 sets the bug on INTEL_HASWELL, INTEL_HASWELL_G, INTEL_HASWELL_L, INTEL_HASWELL_X: cpu_vuln_whitelist does not list them with NO_SPECULATION or NO_MDS or MSBDS_ONLY; and a processor released before 2018 does not report MDS_NO | Linux 7.3 |
| Broadwell | Affected | Linux 7.3 sets the bug on INTEL_BROADWELL, INTEL_BROADWELL_D, INTEL_BROADWELL_G, INTEL_BROADWELL_X: cpu_vuln_whitelist does not list them with NO_SPECULATION or NO_MDS or MSBDS_ONLY; and a processor released before 2018 does not report MDS_NO | Linux 7.3 |
| Skylake | Affected | Linux 7.3 sets the bug on INTEL_SKYLAKE, INTEL_SKYLAKE_L: cpu_vuln_whitelist does not list them with NO_SPECULATION or NO_MDS or MSBDS_ONLY; and a processor released before 2018 does not report MDS_NO | Linux 7.3 |
| Kaby Lake | Affected | Linux 7.3 sets the bug on INTEL_KABYLAKE stepping 9, INTEL_KABYLAKE_L steppings 9 to 12: cpu_vuln_whitelist does not list them with NO_SPECULATION or NO_MDS or MSBDS_ONLY; and a processor released before 2018 does not report MDS_NO | Linux 7.3 |
| Coffee Lake | Affected | Linux 7.3 sets the bug on INTEL_KABYLAKE steppings 10 to 13, INTEL_KABYLAKE_L steppings 10 to 12: cpu_vuln_whitelist does not list them with NO_SPECULATION or NO_MDS or MSBDS_ONLY; and a processor released before 2018 does not report MDS_NO | Linux 7.3 |
| Skylake-SP | Affected | Linux 7.3 sets the bug on INTEL_SKYLAKE_X steppings 3 to 4: cpu_vuln_whitelist does not list it with NO_SPECULATION or NO_MDS or MSBDS_ONLY; and a processor released before 2018 does not report MDS_NO | Linux 7.3 |
| Airmont | Some models | Linux 7.3 sets the bug on INTEL_ATOM_AIRMONT, INTEL_ATOM_AIRMONT_NP: cpu_vuln_whitelist does not list them with NO_SPECULATION or NO_MDS or MSBDS_ONLY; and a processor released before 2018 does not report MDS_NO | Linux 7.3 |
| Bonnell | Not affected | Linux 7.3 lists INTEL_ATOM_BONNELL, INTEL_ATOM_BONNELL_MID in cpu_vuln_whitelist with NO_SPECULATION | Linux 7.3 |
| Saltwell | Not affected | Linux 7.3 lists INTEL_ATOM_SALTWELL, INTEL_ATOM_SALTWELL_MID, INTEL_ATOM_SALTWELL_TABLET in cpu_vuln_whitelist with NO_SPECULATION | Linux 7.3 |
| Silvermont | Not affected | Linux 7.3 lists INTEL_ATOM_SILVERMONT, INTEL_ATOM_SILVERMONT_D, INTEL_ATOM_SILVERMONT_MID, INTEL_ATOM_SILVERMONT_MID2 in cpu_vuln_whitelist with MSBDS_ONLY | Linux 7.3 |
| Goldmont | Not affected | Linux 7.3 lists INTEL_ATOM_GOLDMONT, INTEL_ATOM_GOLDMONT_D in cpu_vuln_whitelist with NO_MDS | Linux 7.3 |
| Goldmont Plus | Not affected | Linux 7.3 lists INTEL_ATOM_GOLDMONT_PLUS in cpu_vuln_whitelist with NO_MDS | Linux 7.3 |
| Knights Landing | Not affected | Linux 7.3 lists INTEL_XEON_PHI_KNL in cpu_vuln_whitelist with MSBDS_ONLY | Linux 7.3 |
| Knights Mill | Not affected | Linux 7.3 lists INTEL_XEON_PHI_KNM in cpu_vuln_whitelist with MSBDS_ONLY | Linux 7.3 |
| K8 (Hammer) | Not affected | Linux 7.3 lists AMD family Fh in cpu_vuln_whitelist with NO_MDS | Linux 7.3 |
| K10 (Family 10h) | Not affected | Linux 7.3 lists AMD family 10h, AMD family 12h in cpu_vuln_whitelist with NO_MDS | Linux 7.3 |
| Bulldozer | Not affected | Linux 7.3 lists AMD family 15h in cpu_vuln_whitelist with NO_MDS | Linux 7.3 |
| Piledriver | Not affected | Linux 7.3 lists AMD family 15h in cpu_vuln_whitelist with NO_MDS | Linux 7.3 |
| Steamroller | Not affected | Linux 7.3 lists AMD family 15h in cpu_vuln_whitelist with NO_MDS | Linux 7.3 |
| Excavator | Not affected | Linux 7.3 lists AMD family 15h in cpu_vuln_whitelist with NO_MDS | Linux 7.3 |
| Zen | Not affected | Linux 7.3 lists AMD family 17h in cpu_vuln_whitelist with NO_MDS | Linux 7.3 |
| Zen+ | Not affected | Linux 7.3 lists AMD family 17h in cpu_vuln_whitelist with NO_MDS | Linux 7.3 |
| Zen 2 | Not affected | Linux 7.3 lists AMD family 17h in cpu_vuln_whitelist with NO_MDS | Linux 7.3 |
| Zen 3 | Not affected | Linux 7.3 lists AMD family 19h in cpu_vuln_whitelist with NO_MDS | Linux 7.3 |
| Zen 4 | Not affected | Linux 7.3 lists AMD family 19h in cpu_vuln_whitelist with NO_MDS | Linux 7.3 |
| Zen 5 | Not affected | Linux 7.3 lists AMD family 1Ah in cpu_vuln_whitelist with NO_MDS | Linux 7.3 |
| Zen 6 | Not affected | Linux 7.3 lists AMD family 1Ah in cpu_vuln_whitelist with NO_MDS | Linux 7.3 |
| Bobcat | Not affected | Linux 7.3 lists AMD family 14h in cpu_vuln_whitelist with NO_MDS | Linux 7.3 |
| Jaguar | Not affected | Linux 7.3 lists AMD family 16h in cpu_vuln_whitelist with NO_MDS | Linux 7.3 |
| Puma | Not affected | Linux 7.3 lists AMD family 16h in cpu_vuln_whitelist with NO_MDS | Linux 7.3 |
| Dhyana | Not affected | Linux 7.3 lists Hygon family 18h in cpu_vuln_whitelist with NO_MDS | Linux 7.3 |
Mitigations
- Kernel: Microcode makes the old VERW instruction clear the processor's internal buffers; Linux executes it before returning to user space and before entering a guest. On processors with SMT the sibling thread is not protected unless SMT is off. Instructions: VERW. Source.
How to check a machine
On Linux, /sys/devices/system/cpu/vulnerabilities/mds holds one of these lines:
Not affectedVulnerableMitigation: Clear CPU buffersVulnerable: Clear CPU buffers attempted, no microcode
On an affected processor the line ends with the SMT state, such as SMT vulnerable or SMT disabled. Source.
Related CVEs
- CVE-2018-12126 Microarchitectural Store Buffer Data Sampling
- CVE-2018-12127 Microarchitectural Load Port Data Sampling
- CVE-2018-12130 Microarchitectural Fill Buffer Data Sampling