Spectre Attacks: Exploiting Speculative Execution
Paul Kocher, Daniel Genkin, Daniel Gruss, Werner Haas, Mike Hamburg,, Moritz Lipp, Stefan Mangard, Thomas Prescher, Michael Schwarz, Yuval Yarom

TL;DR
Spectre attacks exploit speculative execution in modern CPUs to leak sensitive information through side channels, challenging many existing security assumptions and requiring hardware and software redesigns.
Contribution
This paper demonstrates practical Spectre attacks that breach confidentiality by exploiting speculative execution, revealing vulnerabilities in widely used microprocessors and security mechanisms.
Findings
Spectre attacks can read arbitrary memory from victim processes.
Speculative execution violates security assumptions of OS, JIT, and container security.
Vulnerable CPUs are present in billions of devices from major manufacturers.
Abstract
Modern processors use branch prediction and speculative execution to maximize performance. For example, if the destination of a branch depends on a memory value that is in the process of being read, CPUs will try guess the destination and attempt to execute ahead. When the memory value finally arrives, the CPU either discards or commits the speculative computation. Speculative logic is unfaithful in how it executes, can access to the victim's memory and registers, and can perform operations with measurable side effects. Spectre attacks involve inducing a victim to speculatively perform operations that would not occur during correct program execution and which leak the victim's confidential information via a side channel to the adversary. This paper describes practical attacks that combine methodology from side channel attacks, fault attacks, and return-oriented programming that can…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
