On the Security of ARM TrustZone-Based Trusted Execution Environments
Language
Document Type
Issue Date
Issue Year
Authors
Editor
Abstract
In this thesis, we investigate Trusted Execution Environments (TEEs), isolated execution contexts that provide integrity and confidentiality guarantees for security-critical code and data. In particular, we study TEEs based on ARM TrustZone (TZ) which is a Central Processing Unit (CPU) extension for ARM chipsets. The hardware-enforced isolation offered by TZ is deployed on almost all modern mobile devices to support a wide range of security-critical use cases. These use cases include user authentication, mobile banking, and Digital Rights Management (DRM).
The focus of our work is the analysis of software-based design and implementation flaws in TZ TEEs. First, we review the previously unexplored TEE implementation of a market-leading mobile device manufacturer and unveil several critical design flaws. These flaws make us realize that TZ is not an all-in-one-solution, but rather a construction kit for TEEs. An end product’s capabilities to guarantee integrity and confidentiality, highly depend on the system designer’s choices of hardware and software components. We demonstrate that a well-designed system cannot be compensated by security-by-obscurity practices, especially concerning confidentiality guarantees.
Then, we identify a pattern of bugs affecting all commercially used TEEs. This pattern’s root cause is an Application Programming Interface (API) design that defaults to a dangerous type-confusion bug within Trusted Applications (TAs) if specific validations are accidentally missing or imprecise. Due to the severity of the resulting bugs and the wide adoption of this API, we introduce TEECheck, a static analysis framework capable of automatically detecting these type-confusion bugs in commercially-used TEEs. The large-scale study we conduct using TEECheck yields numerous affected TAs underlining the relevance of our findings.
Next, to address the problem of memory corruption bugs in TEEs in general, we propose TEEzz. TEEzz is a novel, automated fuzzing framework capable of effectively fuzzing production TAs and the first framework addressing the challenges occurring when fuzzing TEEs on real devices. Our system uses an automated, dynamic-analysis-based technique for inferring field types of messages, and their dependencies, to facilitate type-aware black-box mutational fuzzing of stateful TAs. We thoroughly evaluate TEEzz against other state-of-the-art fuzzing techniques applied to production TAs. Using TEEzz, we discovered and disclosed more than 50 unique bugs, where, at least, one of which was a previously unknown zero-day bug. The high number of triggered bugs indicates that memory corruptions within TAs are not rare, but occur rather frequently.
Further, we investigate a novel re-hosting approach for TAs to enable dynamic analyses without the limited access to the TEE internals, which usually is exclusive to the manufacturer. Our re-hosting solution, called SimTA, provides dynamic analysis capabilities to examine security-critical patches in TAs. Using SimTA, we re-discover the bug of a known CVE and unveil two previously unknown critical issues silently patched by the vendor.
Moreover, we elaborate on the severity of memory corruption bugs in TEEs by examining exploits on real devices. This perspective of an adversary allows us to conclude that commercially used TEEs are lacking behind the state-of-the-art regarding exploit mitigation techniques. As real-world exploits are difficult to reproduce but are relevant for industry, researchers, and educators, we provide a set of real-world inspired vulnerable examples and their corresponding exploits targeting a free and open-source TEE platform.
Lastly, given we have overcome all design and implementation flaws discussed before, this thesis gives an opportunistic outlook by proposing two new application scenarios based on TZ TEEs. First, we present TEEMo, a solution for the trusted monitoring of peripheral configurations. TEEMo securely reports peripheral configurations of embedded devices (i.e., optical network elements in our case) to remote log servers. Finally, we introduce TEE-BI, a TEE-based translation table introspection framework for Android devices that can reliably and stealthily extract cryptographic keys of secured communications from running applications. We examine TEE-BI in the context of remote forensic investigations and conclude that it provides higher evidential value for acquired data from suspects’ devices than other commonly used investigation practices.
Abstract
In der vorliegenden Arbeit untersuchen wir vertrauenswürdige Ausführungsumgebungen (TEEs). TEEs bieten einen isolierten Ausführungskontext, der die Integrität und Vertraulichkeit von sicherheitskritischen Daten und Code schützen soll. Im Speziellen betrachten wir TEEs, die auf einer Hardware-Erweiterung namens ARM TrustZone (TZ) basieren. Die durch TZ bereitgestellte hardwaregestützte Isolation ist auf nahezu allen mobilen Endgeräten im Einsatz und unterstützt ein breites Spektrum an Anwendungsfällen, wie zum Beispiel die Authentifikation von Nutzern, Mobile Banking und den Schutz von urheberrechtlich geschützten Inhalten.
Der Fokus unserer Arbeit liegt auf der Analyse von Software-basierten Design- und Implementie-rungsschwachstellen von TZ TEEs. Zuerst analysieren wir eine bisher wenig erforschte TEE eines marktführenden Mobiltelefonherstellers und decken mehrere kritische Designschwachstellen auf. Diese Schwachstellen zeigen, dass es sich bei dieser Technologie nicht um eine Komplettlösung handelt, sondern um einen Baukasten für TEEs. Die Fähigkeiten dieser Lösung, Garantien für Integrität und Vertraulichkeit zu gewährleisten, hängen stark von den Entscheidungen des Systemdesigners ab und variieren je nach verbauter Hard- und Software. Wir zeigen insbesondere, dass ein gutes Design nicht durch Verschleierungstechniken kompensiert werden kann.
Anschließend identifizieren wir ein Muster von Softwarefehlern, das alle kommerziellen TEEs betrifft. Die Ursache für dieses Muster liegt im Design einer Programmierschnittstelle in vertrauenswürdigen Applikationen (TAs), das zu einer gefährlichen Datentypverwechselung führt, wenn bestimmte Validierungen von Daten ungenau implementiert sind. Wegen der Schwere der resultierenden Fehler und der weiten Verbreitung der betreffenden Programmierschnittstelle, präsentieren wir TEECheck, ein statisches Analysesystem, welches das vorliegende Fehlermuster automatisiert erkennen kann. In einer umfangreichen Studie verwenden wir TEECheck und entdecken zahlreiche betroffene TAs.
Weiterhin erforschen wir Speicherzugriffsfehler in TEEs im Allgemeinen. Dazu stellen wir TEEzz vor, ein neuartiges, automatisiertes Fuzzingsystem, das TAs auf kommerziellen mobilen Endgeräten testen kann. TEEzz ist das erste System, das die Herausforderungen beim Fuzzen von TEEs adressiert. Wir setzen eine auf dynamischer Analyse basierende Technik ein, um Datentypen in und Abhängigkeiten von Nachrichten zu rekonstruieren. Diese Technik erlaubt es zustandsbehaftete TAs durch das typgewahre Mutieren aufgezeichneter Nachrichten unter Verwendung eines Blackbox Fuzzing-Ansatzes zu testen. Wir evaluieren TEEzz gegen andere moderne Fuzzingtechniken, indem wir produktive TAs fuzzen. Mithilfe von TEEzz konnten wir über 50 unterschiedliche Speicherzugriffsfehler erkennen und melden. Die hohe Anzahl der von uns gefundenen Speicherzugriffsfehler deutet darauf hin, dass derartige Fehler nicht die Ausnahme, sondern die Regel in TEEs sind.
Als Nächstes untersuchen wir einen neuartigen Rehosting-Ansatz, um die dynamische Analyse von TAs zu ermöglichen. Der Zugriff auf die Interna der TEE ist dem Hersteller vorbehalten, was die Analyse von Software zur Laufzeit verhindert. Mit unserer Rehosting-Lösung namens SimTA, fokussieren wir uns insbesondere auf die dynamische Analyse von bereits geschlossenen Sicherheitslücken in TAs. Durch SimTA konnten wir eine bereits bekannte CVE rekapitulieren und zwei weitere unbekannte Schwachstellen, die unbemerkt vom Hersteller beseitigt wurden, aufdecken.
Des Weiteren prüfen wir die Ausnutzbarkeit von Speicherzugriffsfehlern. Hierzu reproduzieren wir echte Exploits und stellen fest, dass kommerziell genutzte TEEs keinen modernen Schutz vor Angriffen bieten. Da das Experimentieren mit echten Exploits diverse Herausforderungen birgt, erstellen wir eine Reihe von verwundbaren TAs, die auf einer quelloffenen TEE lauffähig sind. Die Verwundbarkeiten sind den von uns beobachteten Schwachstellen in kommerziellen TEEs nachempfunden. Wir veröffentlichen unsere Beispiele zur Unterstützung von Forschung und Lehre.
Zuletzt, nachdem wir alle Design- und Implementierungsschwachstellen diskutiert haben, geben wir einen opportunistischen Ausblick, indem wir zwei neuartige Anwendungsszenarien für TEEs vorstellen. Als erstes präsentieren wir TEEMo, eine Lösung zur vertrauenswürdigen Überwachung von Peripheriekonfigurationen. TEEMo erlaubt es, die aktuelle Konfiguration von Peripheriehardware sicher an eine entfernte Partei zu melden. Als zweites stellen wir TEE-BI vor, ein TEE-gestütztes System zur Hautspeicherintrospektion auf Android-Geräten, das wir im Kontext moderner Telekommunikationsüberwachung betrachten. TEE-BI kann zuverlässig Daten aus laufenden Android Applikationen extrahieren, ohne erkannt zu werden.