An Exploratory Analysis of Microcode as a Building Block for System Defenses Benjamin Kollenda, Philipp Koppe, Marc Fyrbiak Christian Kison, Christof Paar, Thorsten Holz Ruhr-Universität Bochum
[email protected] ABSTRACT 1 INTRODUCTION Microcode is an abstraction layer used by modern x86 processors New vulnerabilities, design flaws, and attack techniques with devas- that interprets user-visible CISC instructions to hardware-internal tating consequences for the security and safety of computer systems RISC instructions. The capability to update x86 microcode enables a are announced on a regular basis [20]. The underlying faults range vendor to modify CPU behavior in-field, and thus patch erroneous from critical memory safety violations [22] or input validation [21] microarchitectural processes or even implement new features. Most in software to race conditions or side-channel attacks in the under- prominently, the recent Spectre and Meltdown vulnerabilities lying hardware [3, 27, 37, 39, 40, 45, 53]. To cope with erroneous were mitigated by Intel via microcode updates. Unfortunately, mi- behavior and to reduce the attack surface, various defenses have crocode is proprietary and closed source, and there is little publicly been developed and integrated in software and hardware over the available information on its inner workings. last decades [75, 78]. In this paper, we present new reverse engineering results that Generally speaking, defenses implemented in software can be cat- extend and complement the public knowledge of proprietary mi- egorized in either compiler-assisted defenses [5, 9, 19, 54, 60, 65, 70] crocode. Based on these novel insights, we show how modern or binary defenses [1, 25, 32, 64, 80].