Daniël Trujillo and Johannes Wikner

From Phantom to Inception: Leaking Data Using Branch-Free Predictor Training

Abstract

Violating the Von Neumann sequential processing principle at the micro-architectural level is commonplace to reach high performing CPU hardware — violations are safe as long as software executes correctly at the architectural interface. Speculative execution attacks exploit these violations and queue up secret-dependent memory accesses allowed by long speculation windows due to the late detection of these violations in the pipeline. In this talk, we show that recent AMD and Intel CPUs speculate very early in their pipeline, even before they decode the current instruction. This mechanism enables new sources of speculation to be triggered from almost any instruction, enabling a new class of attacks that we refer to as Phantom. Although Phantom speculation windows are short since the violations are detected early, they allow us to compromise system confidentiality. Furthermore, Phantom makes it practical to enable a novel class of transient execution attacks that do their Training in Transient Execution (TTE) to train a target micro-architectural buffer after switching to the victim context. To show the impact of combining TTE with Phantom, we build an end-to-end exploit called Inception that creates an infinite transient loop in hardware to train the return stack buffer with an attacker-controlled target in all existing AMD Zen microarchitectures. Inception leaks arbitrary kernel memory at a rate of 39 bytes/s on AMD Zen 4 despite all mitigations against transient control-flow hijacks, including the recent Automatic IBRS.

BIO

Daniël Trujillo is a PhD student in Computer Science at MIT, focusing on microarchitectural security. He holds a MSc from ETH Zürich and a BSc from VU Amsterdam, both in Computer Science. His research includes hardware reverse engineering and transient execution attacks on commodity CPUs. He recently won an ETH Medal for his Master’s thesis, which resulted in security patches on all systems with an AMD CPU produced since 2017.

Johannes is a 4th year PhD student at the COMSEC group in ETH Zurich and researches branch (mis)prediction, primarily on x86 processors. After 4 years working in industry as a software engineer, he returned to academia to study microarchitectural security. Since then, his work has led to the security patching of processor microcode, operating systems, and web browsers.