TU Darmstadt / ULB / TUprints

Code-Reuse Attacks and Defenses

Davi, Lucas Vincenzo (2015)
Code-Reuse Attacks and Defenses.
Technische Universität Darmstadt
Ph.D. Thesis, Primary publication

[img]
Preview
Text
Davi-PhD-Code-Reuse-Attacks-and-Defenses.pdf
Copyright Information: CC BY-NC-ND 3.0 Unported - Creative Commons, Attribution, NonCommercial, NoDerivs.

Download (2MB) | Preview
Item Type: Ph.D. Thesis
Type of entry: Primary publication
Title: Code-Reuse Attacks and Defenses
Language: English
Referees: Sadeghi, Prof. Ahmad-Reza ; Shacham, Prof. Hovav
Date: 22 April 2015
Place of Publication: Darmstadt
Date of oral examination: 3 June 2015
Abstract:

Exploitation of memory corruption vulnerabilities in widely used software has been a threat for almost three decades and no end seems to be in sight. In particular, code-reuse techniques such as return-oriented programming offer a robust attack technique that is extensively used to exploit memory corruption vulnerabilities in modern software programs (e.g. web browsers or document viewers). Whereas conventional control-flow attacks (runtime exploits) require the injection of malicious code, code-reuse attacks leverage code that is already present in the address space of an application to undermine the security model of data execution prevention (DEP). In addition, code-reuse attacks in conjunction with memory disclosure attack techniques circumvent the widely applied memory protection model of address space layout randomization (ASLR). To counter this ingenious attack strategy, several proposals for enforcement of control-flow integrity (CFI) and fine-grained code randomization have emerged.

In this dissertation, we explore the limitations of existing defenses against code-reuse attacks. In particular, we demonstrate that various coarse-grained CFI solutions can be effectively undermined, even under weak adversarial assumptions. Moreover, we explore a new return-oriented programming attack technique that is solely based on indirect jump and call instructions to evade detection from defenses that perform integrity checks for return addresses.

To tackle the limitations of existing defenses, this dissertation introduces the design and implementation of several new countermeasures. First, we present a generic and fine-grained CFI framework for mobile devices targeting ARM-based platforms. This framework preserves static code signatures by instrumenting mobile applications on-the-fly in memory. Second, we tackle the performance and security limitations of existing CFI defenses by introducing hardware-assisted CFI for embedded devices. To this end, we present a CFI-based hardware implementation for Intel Siskiyou Peak using dedicated CFI machine instructions. Lastly, we explore fine-grained code randomization techniques.

Alternative Abstract:
Alternative AbstractLanguage

Laufzeitangriffe nutzen Speicher- und Programmierfehler aus, um beliebiges Schadverhalten auf einem Computersystem zu verursachen. Obwohl diese Angriffe seit über zwei Jahrzehnten bekannt sind, stellen sie immer noch eine große Bedrohung für moderne Software-Programme dar. Dabei benutzen heutige Angriffe eine ausgeklügelte Technik, die sich Return-Oriented Programming (ROP) nennt. Im Gegensatz zu klassischen Laufzeitangriffen, die auf das Einschleusen von Schadcode in den Speicher eines Programmes angewiesen waren, können ROP Angriffe allein über das Zusammensetzen von vorhandenen gutartigen Code Schadverhalten erzeugen. Weil hierbei kein neuer Schadcode explizit eingeschleust wird, umgehen ROP Angriffe weit verbreitete Abwehrmechanismen wie beispielsweise Ausführungsschutz für den Arbeitsspeicher. Insbesondere können ROP Angriffe in Kombination mit sogenannten Speicherlecks -in der englischen Fachliteratur häufig als Memory Disclosure bezeichnet- dazu verwendet werden, um Adress Randomisierung zu umgehen. Um effektiv gegen diese neuartigen Laufzeitangriffe vorzugehen, wurden in den letzten Jahre eine Vielzahl an Abwehrmethoden vorgeschlagen, die meistens entweder auf Kontrollfluss-Integrität oder auf fortgeschrittenen Speicheradressen Randomisierungstechniken basieren.

In dieser Dissertation erforschen wir die Grenzen und Einschränkungen von existierenden Schutzmechanismen gegen ROP Angriffe und demonstrieren praktische Angriffe gegen kürzlich präsentierte Kontrollfluss-Integritätslösungen sowie Speicheradressen Randomisierungstechniken, die nicht selten mit nur minimalen Anforderungen angegriffen werden können. Insbesondere präsentieren wir einen neuartigen ROP Angriff, der ausschließlich indirekte Sprungbefehle missbraucht, um Detektion von Schutzmechanismen zu umgehen, die Integritätsprüfungen für Funktionsrücksprünge ausführen.

Um den Sicherheitsproblemen von vorhandenen Schutzmechanismen effektiv entgegenzutreten, stellen wir in dieser Dissertation die Konzepte und die Implementierungen von mehreren neuartigen Abwehrmethoden vor. Zuerst präsentieren wir eine allgemeine und fortgeschrittene Kontrollflussintegritäts-Lösung für mobile Geräte. Unsere Lösung ist kompatibel zu digitalen Code Signaturen, weil sie nur bereits verifizierten Code dynamisch im Adressspeicher um Integritätsprüfungen erweitert. Zudem erforschen wir einen neuen Hardware-basierten Ansatz zur Kontrollflussintegrität, der im Besonderen die Leistungseinbußen von existierenden Ansätzen löst. Unser Prototyp basiert auf der Intel-basierten Platform Siskiyou Peak, die besonders für eingebettete Systeme geeignet ist. Zuletzt erforschen wir fortgeschrittene Speicheradressen Randomisierungstechniken.

German
Alternative keywords:
Alternative keywordsLanguage
security; return-oriented programming; control-flow integrity; memory randomization; buffer overflowEnglish
URN: urn:nbn:de:tuda-tuprints-46226
Classification DDC: 000 Generalities, computers, information > 004 Computer science
Divisions: 20 Department of Computer Science
Date Deposited: 31 Jul 2015 07:58
Last Modified: 09 Jul 2020 00:58
URI: https://tuprints.ulb.tu-darmstadt.de/id/eprint/4622
PPN: 386800871
Export:
Actions (login required)
View Item View Item