Bitte benutzen Sie diese Referenz, um auf diese Ressource zu verweisen: doi:10.22028/D291-41440
Titel: Compiler-based defenses against code execution attacks
VerfasserIn: Bauer, Markus
Sprache: Englisch
Erscheinungsjahr: 2022
DDC-Sachgruppe: 004 Informatik
Dokumenttyp: Dissertation
Abstract: Memory corruption attacks have haunted computer systems for decades. Attackers abuse subtle bugs in an application's memory management, corrupting data and executing arbitrary code and, consequently, taking over systems. In particular, C and C++ applications are at risk, while developers often fail or lack time to identify or rewrite risky parts of their software. In this thesis, we approach this problem with compilers that protect applications without requiring code changes or developer effort. We cover all treated aspects in legacy applications: returns, indirect forward jumps in both C and C++, and immutable libraries. First, we re-evaluate existing return address protections. In particular, we show that most adaption-preventing arguments have become less critical in the modern world and that already existing solutions can be deployable in production. Second, we protect virtual dispatch in C++ applications from hijacking. We employ a type analysis and a compiler transformation that implements virtual dispatch efficiently without hijackable pointers. Third, we protect indirect calls to function pointers in C applications. We use a new type-based analysis to find indirect call targets and transform indirect calls into a secure and fast version with limited targets. Finally, we propose a method to isolate potentially vulnerable code, particularly unprotected closed-source libraries, into compartments with restricted access to its environment.
Seit Jahrzehnten nutzen Angreifer Schwachstellen in der Speicherverwaltung nativer Programme aus. Mittels dieser Fehler korrumpieren sie Daten, führen beliebigen Code aus, und übernehmen angegriffene Systeme komplett. Besonders C- und C++-Anwendungen sind gefährdet. In dieser Dissertation beschreiben wir Compiler-basierte Lösungen, die bestehende Anwendungen schützen, ohne dass Entwickler dafür Code umschreiben oder viel Zeit aufwenden müssen. Alle gefährdeten Funktionen werden bedacht: Rücksprünge, indirekte Sprünge (in C und C++) sowie unveränderbare Libraries. Erstens evaluieren wir bestehende Schutzmaßnahmen für Rücksprungaddressen. Wir zeigen, dass viele Argumente gegen den Einsatz dieser Techniken auf modernen Systemen nicht mehr relevant sind, und dass bestehende Lösungen bereits eingesetzt werden können. Zweitens schützen wir virtuelle Funktionsaufrufe in C++-Anwendungen. Wir nutzen eine Typ-basierte Analyse und eine Transformation im Compiler, um diese Aufrufe effizient und ohne Funktionspointer zu implementieren. Drittens schützen wir indirekte Aufrufe von Funktionsadressen in C. Wir nutzen eine neue, typ-basierte Analyse um mögliche Aufrufziele zu finden und die Menge gültiger Sprungziele zu minimieren. Zuletzt zeigen wir eine Methode, um möglicherweise verwundbaren Code, beispielsweise ungeschützte Libraries ohne zugänglichen Quellcode, in einer isolierten Umgebung auszuführen.
Link zu diesem Datensatz: urn:nbn:de:bsz:291--ds-414407
hdl:20.500.11880/37255
http://dx.doi.org/10.22028/D291-41440
Erstgutachter: Rossow, Christian
Tag der mündlichen Prüfung: 11-Jan-2024
Datum des Eintrags: 6-Feb-2024
Fakultät: MI - Fakultät für Mathematik und Informatik
Fachrichtung: MI - Informatik
Professur: MI - Prof. Dr. Christian Rossow
Sammlung:SciDok - Der Wissenschaftsserver der Universität des Saarlandes

Dateien zu diesem Datensatz:
Datei Beschreibung GrößeFormat 
Compiler-based Defenses against Code Execution Attacks.pdf2,75 MBAdobe PDFÖffnen/Anzeigen


Alle Ressourcen in diesem Repository sind urheberrechtlich geschützt.