Attacking Intel TXT fi via SINIT code execution hijacking

We present a software attack against Intel TXT that exploits an implementation problem within a so called SINIT module. The attack allows to fully bypass Intel TXT, Intel Launch Control Policy (LCP), and additionally also provides yet-another-way to compromise SMM code on the platform. 1 What is Intel TXT? For a basic introduction to Intel® Trusted Execution Technology (TXT), the reader is referenced to our previous paper on this topic [1], or alternatively, for a much more complete and in-depth introduction, to the updated book by David Grawrock [3], and also to the MLE Developer’s Guide [4]. 2 Prior work on attacking Intel TXT In early 2009 our team presented an attack against Intel TXT that exploited a design problem with System Management Mode (SMM) being over privileged on PC platforms and able to interfere with TXT launch [1]. A year later we demonstrated a different attack against Intel TXT, this time exploiting an implementation bug in a so called SINIT module, an internal part of the Intel TXT infrastructure. The attack worked by tricking SENTER into mis-configuring VT-d setup, so that the attacker could compromise the newly loaded hypervisor using a DMA attack[2]. 3 On Attacking Intel TXT The attack presented in this paper assumes, as usual, that the attacker can execute code before the TXT launch, i.e. before the SENTER instruction. The attacker’s goal is to either 1) be able to compromise the newly loaded hypervisor, even though is has just been “securely” loaded by TXT (and this is exactly how our previous two attacks worked), or 2) be able to load arbitrary hypervisor, yet make it seem as if it was a trusted one by making all the PCR hashes to be correct. This is how the attack presented today works. Our new attack exploits a bug in an SINIT module. Before describing the bug, let’s make a quick recap on what is the role of SINIT in Intel TXT. 4 About Authenticated Code (AC) modules and SINIT SINIT is an important binary module that is used by Intel TXT. SINIT binaries are distributed by Intel for specific chipsets/processors, and the task of an SINIT module is to prepare the platform for entering the TXT secure mode. SINIT module is loaded and 1One can download SINIT modules from http://software.intel.com/en-us/articles/