search menu icon-carat-right cmu-wordmark

CERT Coordination Center

CPU hardware vulnerable to side-channel attacks

Vulnerability Note VU#584653

Original Release Date: 2018-01-04 | Last Revised: 2022-01-07

Overview

CPU hardware implementations are vulnerable to cache side-channel attacks. These vulnerabilities are referred to as Meltdown and Spectre.

Description

CPU hardware implementations are vulnerable to side-channel attacks referred to as Meltdown and Spectre. Both Spectre and Meltdown take advantage of the ability to extract information from instructions that have executed on a CPU using the CPU cache as a side-channel. These attacks are described in detail by Google Project Zero, the Institute of Applied Information Processing and Communications (IAIK) at Graz University of Technology (TU Graz) and Anders Fogh. The issues are organized into three variants:

    • Variant 1 (CVE-2017-5753, Spectre): Bounds check bypass
    • Variant 2 (CVE-2017-5715, also Spectre): Branch target injection
    • Variant 3 (CVE-2017-5754, Meltdown): Rogue data cache load, memory access permission check performed after kernel memory read

Spectre

Spectre attacks take advantage of a CPU's branch prediction capabilities. Modern CPUs include a feature called branch prediction, which speculatively executes instructions at a location that the CPU believes it will branch to. Such speculative execution helps to more fully utilize the parts of the CPU, minimizing the time waiting, and therefore improving performance. When a branch is successfully predicted, instructions will retire, which means the outcomes of the instructions such as register and memory writes will be committed. If a branch is mispredicted, the speculatively-executed instructions will be discarded, and the direct side-effects of the instructions are undone. What is not undone are the indirect side-effects, such as CPU cache changes. By measuring latency of memory access operations, the cache can be used to extract values from speculatively-executed instructions.

With Spectre variant 1 (CVE-2017-5753), the instructions after a conditional branch are speculatively executed as the result of a misprediction. With Spectre variant 2 (CVE-2017-5715), the CPU executes instructions at a location determined by a mispredicted branch target.

With both variants of the Spectre attack, the impact is that a process may leak sensitive data to other processes on a system. Spectre may also allow one part of an application to access other parts of the same process memory space that would otherwise not be permitted.

While the Spectre attack itself does not cross a user/kernel memory privilege boundary, depending on the configuration of the target platform, the Spectre attack may indirectly allow a user-space application to access kernel memory. For example, the Project Zero blog post describes a scenario that uses eBPF to exfiltrate kernel memory contents into user-space code. This is made possible because eBPF JIT allows for userspace applications to inject code that is executed in kernel space. While this code is verified by the kernel, eBPF-compliant code will be allowed to execute with kernel permissions. The exploit described by Project Zero leverages eBPF to execute the Spectre attack in kernel space, while exfiltrating the data to user space. It is possible that other technologies that allow in-kernel code execution may also possibly be leveraged to leak kernel memory using Spectre.

Meltdown

Meltdown is related to the Spectre attack in that it also uses a cache side channel to access data that otherwise wouldn't be available. The main difference is that it leverages out-of-order execution capabilities in modern CPUs. Like speculative execution due to branch prediction, as used by Spectre, out-of-order execution on a CPU is a technique for ensuring fullest utilization of the CPU's parts. Although instructions may appear sequentially in the machine language, a CPU that supports out-of-order execution may execute instructions in a non-sequential manner, which can minimize the time that a CPU spends idle.

Meltdown leverages insecure behavior that has been demonstrated in Intel CPUs and may affect CPUs from other vendors. Vulnerable CPUs allow memory reads in out-of-order instruction execution, and also contain a race condition between the raising of exceptions and the out-of-order instruction execution. The Meltdown attack reads a kernel memory value, which raises an exception because code running with user-space privileges are not permitted to directly read kernel memory. However, due to the race condition, out-of-order instructions following the faulting instruction may also execute. Even though instructions appear after the faulting instruction, out-of-order execution allows them to execute, using data retrieved from the instruction that raises the exception. By the time the exception is raised, some number of out-of-order instructions have executed. Although the raised exception causes the CPU to roll back the out-of-order instructions, the cache state is not reverted. This allows data from out-of-order instructions to persist beyond the point when the exception has been raised.

The impact of Meltdown is that a process running in user space is able to view the contents of kernel memory. Meltdown may also allow Spectre-like memory content leaking that does not cross the user/kernel privilege boundary.

The Linux kernel mitigations for Meltdown are referred to as KAISER, and subsequently KPTI, which aim to improve separation of kernel and user memory pages. Because the Spectre attacks do not cross user/kernel boundaries, the protections introduced with KAISER/KPTI do not add any protection against them.

The following table compares Spectre and Meltdown.

SpectreMeltdown
CPU mechanism for triggeringSpeculative execution from branch predictionOut-of-order execution
Affected platformsCPUs that perform speculative execution from branch predictionCPUs that allow memory reads in out-of-order instructions
Difficulty of successful attackHigh - Requires tailoring to the software environment of the victim processLow - Kernel memory access exploit code is mostly universal
ImpactCross- and intra-process (including kernel) memory disclosureKernel memory disclosure to userspace
Software mitigationsVariant 1: Compiler changes. Web browser updates to help prevent exploitation from JavaScript
Variant 2: Indirect Branch Restricted Speculation (IBRS).
Note: The software mitigation for Spectre variant 2 requires CPU microcode updates
Kernel page-table isolation (KPTI)

Impact

An attacker able to execute code with user privileges can achieve various impacts. The Meltdown attack allows reading of kernel memory from userspace. This can result in privilege escalation, disclosure of sensitive information, or it can weaken kernel-level protections, such as KASLR. The Spectre attack can allow inter-process or intra-process data leaks.

To execute code locally, an attacker would require a valid account or independent compromise of the target. Attacks using JavaScript in web browsers are possible. Multi-user and multi-tenant systems (including virtualized and cloud environments) likely face the greatest risk. Systems used to browse arbitrary web sites are also at risk. Single-user systems that do not readily provide a way for attackers to execute code locally face significantly lower risk.

Solution

Apply updates

Operating system, CPU microcode updates, and some application updates mitigate these attacks. Note that in many cases, the software fixes for these vulnerabilities will have a negative affect on system performance. Also note that Microsoft Windows systems will no longer receive security updates via Windows Update if they are not running compliant anti-virus software. As with deploying any software updates, be sure to prioritize and test updates as necessary.

Consider CPU Options

Initial reports from the field indicate that overall system performance is impacted by many of the available patches for these vulnerabilities. Depending on the software workflow and the CPU capabilities present, the performance impact of software mitigations may be non-trivial and therefore may become an ongoing operational concern for some organizations. While we recognize that replacing existing CPUs in already deployed systems is not practical, organizations acquiring new systems should evaluate their CPU selection in light of the expected longevity of this vulnerability in available hardware as well as the performance impacts resulting from the various platform-specific software patches. Deployment contexts and performance requirements vary widely, and must be balanced by informed evaluation of the associated security risks. Contact your system vendor to determine if the CPU and operating system combination will experience a performance penalty due to software mitigations for these vulnerabilities.

Acknowledgements

These issues were researched and reported by researchers at Google Project Zero (Jann Horn) the Institute of Applied Information Processing and Communications (IAIK) at Graz University of Technology (Gruss et. al.), Paul Kocher, and Anders Fogh.

This document was written by Art Manion and Will Dormann.

Vendor Information

584653
 

AMD Affected

Updated: 2018-01-03

CVE-2017-5715 Affected
CVE-2017-5753 Affected
CVE-2017-5754 Affected

Vendor Statement

We have not received a statement from the vendor.

ARM Limited Affected

Updated: 2022-01-07

CVE-2017-5715 Affected
CVE-2017-5753 Affected
CVE-2017-5754 Affected

Vendor Statement

We have not received a statement from the vendor.

References

CERT Addendum

https://lwn.net/Articles/740393/

Amazon Affected

Updated: 2018-01-05

CVE-2017-5715 Affected
CVE-2017-5753 Affected
CVE-2017-5754 Affected

Vendor Statement

We have not received a statement from the vendor.

Android Open Source Project Affected

Updated: 2018-01-05

CVE-2017-5715 Affected
CVE-2017-5753 Affected
CVE-2017-5754 Affected

Vendor Statement

We have not received a statement from the vendor.

Apple Affected

Updated: 2018-02-02

CVE-2017-5715 Affected
CVE-2017-5753 Affected
CVE-2017-5754 Affected

Vendor Statement

We have not received a statement from the vendor.

CentOS Affected

Updated: 2018-01-05

CVE-2017-5715 Affected
CVE-2017-5753 Affected
CVE-2017-5754 Affected

Vendor Statement

We have not received a statement from the vendor.

Cisco Affected

Updated: 2018-01-05

CVE-2017-5715 Affected
CVE-2017-5753 Affected
CVE-2017-5754 Affected

Vendor Statement

We have not received a statement from the vendor.

Citrix Affected

Updated: 2018-01-05

CVE-2017-5715 Affected
CVE-2017-5753 Affected
CVE-2017-5754 Affected

Vendor Statement

We have not received a statement from the vendor.

Debian GNU/Linux Affected

Updated: 2018-01-05

CVE-2017-5715 Affected
CVE-2017-5753 Affected
CVE-2017-5754 Affected

Vendor Statement

We have not received a statement from the vendor.

Dell Affected

Updated: 2018-01-08

CVE-2017-5715 Affected
CVE-2017-5753 Affected
CVE-2017-5754 Affected

Vendor Statement

We have not received a statement from the vendor.

DragonFly BSD Project Affected

Updated: 2018-01-08

CVE-2017-5715 Affected
CVE-2017-5753 Affected
CVE-2017-5754 Affected

Vendor Statement

We have not received a statement from the vendor.

Fedora Project Affected

Updated: 2018-01-05

CVE-2017-5715 Affected
CVE-2017-5753 Affected
CVE-2017-5754 Affected

Vendor Statement

We have not received a statement from the vendor.

Fortinet Affected

Updated: 2018-01-05

CVE-2017-5715 Affected
CVE-2017-5753 Affected
CVE-2017-5754 Affected

Vendor Statement

We have not received a statement from the vendor.

FreeBSD Project Affected

Updated: 2018-01-05

CVE-2017-5715 Affected
CVE-2017-5753 Affected
CVE-2017-5754 Affected

Vendor Statement

We have not received a statement from the vendor.

Fujitsu Affected

Updated: 2018-01-11

CVE-2017-5715 Affected
CVE-2017-5753 Affected
CVE-2017-5754 Affected

Vendor Statement

We have not received a statement from the vendor.

Google Affected

Updated: 2018-01-03

CVE-2017-5715 Affected
CVE-2017-5753 Affected
CVE-2017-5754 Affected

Vendor Statement

We have not received a statement from the vendor.

Hewlett Packard Enterprise Affected

Updated: 2018-01-08

CVE-2017-5715 Affected
CVE-2017-5753 Affected
CVE-2017-5754 Affected

Vendor Statement

We have not received a statement from the vendor.

IBM Affected

Updated: 2018-01-05

CVE-2017-5715 Affected
CVE-2017-5753 Affected
CVE-2017-5754 Affected

Vendor Statement

We have not received a statement from the vendor.

Intel Affected

Updated: 2018-01-22

CVE-2017-5715 Affected
CVE-2017-5753 Affected
CVE-2017-5754 Affected

Vendor Statement

We have not received a statement from the vendor.

Lenovo Affected

Updated: 2018-01-05

CVE-2017-5715 Affected
CVE-2017-5753 Affected
CVE-2017-5754 Affected

Vendor Statement

We have not received a statement from the vendor.

Linux Kernel Affected

Updated: 2018-01-04

CVE-2017-5715 Affected
CVE-2017-5753 Affected
CVE-2017-5754 Affected

Vendor Statement

We have not received a statement from the vendor.

Microsoft Affected

Updated: 2018-01-11

CVE-2017-5715 Affected
CVE-2017-5753 Affected
CVE-2017-5754 Affected

Vendor Statement

We have not received a statement from the vendor.

Mozilla Affected

Updated: 2018-01-03

CVE-2017-5715 Affected
CVE-2017-5753 Affected
CVE-2017-5754 Affected

Vendor Statement

We have not received a statement from the vendor.

NVIDIA Affected

Updated: 2018-01-05

CVE-2017-5715 Affected
CVE-2017-5753 Affected
CVE-2017-5754 Affected

Vendor Statement

We have not received a statement from the vendor.

NetBSD Affected

Updated: 2018-01-08

CVE-2017-5715 Affected
CVE-2017-5753 Affected
CVE-2017-5754 Affected

Vendor Statement

We have not received a statement from the vendor.

OpenBSD Affected

Updated: 2018-01-08

CVE-2017-5715 Affected
CVE-2017-5753 Affected
CVE-2017-5754 Affected

Vendor Statement

We have not received a statement from the vendor.

OpenSUSE (Inactive) Affected

Updated: 2018-01-05

CVE-2017-5715 Affected
CVE-2017-5753 Affected
CVE-2017-5754 Affected

Vendor Statement

We have not received a statement from the vendor.

Oracle Corporation Affected

Updated: 2018-02-23

CVE-2017-5715 Affected
CVE-2017-5753 Affected
CVE-2017-5754 Affected

Vendor Statement

We have not received a statement from the vendor.

Qualcomm Affected

Updated: 2018-01-11

CVE-2017-5715 Affected
CVE-2017-5753 Affected
CVE-2017-5754 Affected

Vendor Statement

We have not received a statement from the vendor.

Red Hat Affected

Updated: 2018-01-05

CVE-2017-5715 Affected
CVE-2017-5753 Affected
CVE-2017-5754 Affected

Vendor Statement

We have not received a statement from the vendor.

SUSE Linux Affected

Updated: 2018-01-05

CVE-2017-5715 Affected
CVE-2017-5753 Affected
CVE-2017-5754 Affected

Vendor Statement

We have not received a statement from the vendor.

Synology Affected

Updated: 2018-01-05

CVE-2017-5715 Affected
CVE-2017-5753 Affected
CVE-2017-5754 Affected

Vendor Statement

We have not received a statement from the vendor.

Trend Micro Affected

Updated: 2018-01-05

CVE-2017-5715 Affected
CVE-2017-5753 Affected
CVE-2017-5754 Affected

Vendor Statement

We have not received a statement from the vendor.

Ubuntu Affected

Updated: 2018-01-05

CVE-2017-5715 Affected
CVE-2017-5753 Affected
CVE-2017-5754 Affected

Vendor Statement

We have not received a statement from the vendor.

VMware Affected

Updated: 2018-01-05

CVE-2017-5715 Affected
CVE-2017-5753 Affected
CVE-2017-5754 Affected

Vendor Statement

We have not received a statement from the vendor.

Xen Affected

Updated: 2018-01-24

CVE-2017-5715 Affected
CVE-2017-5753 Affected
CVE-2017-5754 Affected

Vendor Statement

We have not received a statement from the vendor.

NetApp Not Affected

Updated: 2018-01-08

CVE-2017-5715 Not Affected
CVE-2017-5753 Not Affected
CVE-2017-5754 Not Affected

Vendor Statement

We have not received a statement from the vendor.

Raspberry Pi Not Affected

Updated: 2018-01-08

CVE-2017-5715 Not Affected
CVE-2017-5753 Not Affected
CVE-2017-5754 Not Affected

Vendor Statement

We have not received a statement from the vendor.

Technicolor Not Affected

Updated: 2018-01-08

CVE-2017-5715 Not Affected
CVE-2017-5753 Not Affected
CVE-2017-5754 Not Affected

Vendor Statement

We have not received a statement from the vendor.

ASUSTeK Computer Inc. Unknown

Updated: 2018-01-05

CVE-2017-5715 Unknown
CVE-2017-5753 Unknown
CVE-2017-5754 Unknown

Vendor Statement

We have not received a statement from the vendor.

Acer Unknown

Updated: 2018-01-05

CVE-2017-5715 Unknown
CVE-2017-5753 Unknown
CVE-2017-5754 Unknown

Vendor Statement

We have not received a statement from the vendor.

F5 Networks Unknown

Updated: 2018-01-05

CVE-2017-5715 Unknown
CVE-2017-5753 Unknown
CVE-2017-5754 Unknown

Vendor Statement

We have not received a statement from the vendor.

GIGABYTE Unknown

Updated: 2018-01-05

CVE-2017-5715 Unknown
CVE-2017-5753 Unknown
CVE-2017-5754 Unknown

Vendor Statement

We have not received a statement from the vendor.

HP Inc. Unknown

Updated: 2018-01-05

CVE-2017-5715 Unknown
CVE-2017-5753 Unknown
CVE-2017-5754 Unknown

Vendor Statement

We have not received a statement from the vendor.

Samsung Semiconductor Unknown

Updated: 2018-01-05

CVE-2017-5715 Unknown
CVE-2017-5753 Unknown
CVE-2017-5754 Unknown

Vendor Statement

We have not received a statement from the vendor.

Toshiba Corporation Unknown

Updated: 2018-01-05

CVE-2017-5715 Unknown
CVE-2017-5753 Unknown
CVE-2017-5754 Unknown

Vendor Statement

We have not received a statement from the vendor.

View all 46 vendors View less vendors


CVSS Metrics

Group Score Vector
Base 4.4 AV:L/AC:M/Au:S/C:C/I:N/A:N
Temporal 3.4 E:POC/RL:OF/RC:C
Environmental 5.1 CDP:ND/TD:H/CR:H/IR:ND/AR:ND

References

Other Information

CVE IDs: CVE-2017-5715 CVE-2017-5753 CVE-2017-5754
Date Public: 2018-01-03
Date First Published: 2018-01-04
Date Last Updated: 2022-01-07 19:17 UTC
Document Revision: 231

Sponsored by CISA.