Titelaufnahme

Titel
Towards A write [oplus, direkte Summe] execute architecture for JIT interpreters : lobotomy / von Martin Jauernig
Weitere Titel
Towards A Write XOR Execute Architecture for JIT Interpreters
Verfasser / Verfasserin Jauernig, Martin
Begutachter / BegutachterinKastner, Wolfgang ; Platzer, Christian
Erschienen2014
UmfangX, 59 S. : graph. Darst.
HochschulschriftWien, Techn. Univ., Dipl.-Arb., 2014
Anmerkung
Abweichender Titel laut Übersetzung der Verfasserin/des Verfassers
Zsfassung in dt. Sprache
SpracheEnglisch
DokumenttypDiplomarbeit
Schlagwörter (DE)Browser Sicherheit / Just-in-Time Compilation
Schlagwörter (EN)Browser Security / Just-in-Time Compilation
URNurn:nbn:at:at-ubtuw:1-71802 Persistent Identifier (URN)
Zugriffsbeschränkung
 Das Werk ist frei verfügbar
Dateien
Towards A write [oplus, direkte Summe] execute architecture for JIT interpreters [0.61 mb]
Links
Nachweis
Klassifikation
Zusammenfassung (Deutsch)

Verschiedene Fortschritte im Bereich Software-Sicherheit, vor allem der großflächige Einsatz von Technologien wie ASLR, nicht ausführbarer Speicher, stack-cookies und ähnlichen Mechanismen haben die Durchführung von Angriffen auf Software-Systeme über Puffer-Überläufe deutlich erschwert. Andererseits werden Web-Browser auf Grund der zunehmenden Verlagerung von Applikationen auf externe Server immer bedeutender. Um potentiell interaktive Inhalte, die oft mit Javascript und anderen Scriptsprachen implementiert werden, in akzeptabler Zeit anzeigen zu können, müssen Web-Browser aber einige der oben genannten Sicherheitsvorkehrungen deaktivieren. Im besonderen werden einige Bereiche des Heaps als ausführbar markiert, um den dort generierten Maschinencode ausführen zu können. Dies erlaubt sogenannte Just-In-Time (JIT) Heap-Spraying-Attacken. Im Zuge dieser Diplomarbeit wird ein Mechanismus vorgestellt, der solcherart Angriffe erschwert. Dabei wird ein JIT Interpreter (im konkreten TraceMonkey von Firefox 5.0) in zwei unterschiedliche Prozesse aufgespalten, die zu keinem Zeitpunkt sowohl Schreib- als auch Ausführungsberechtigung für eine Speicherseite haben. Dabei wird sichergestellt das das auszuführende Skript in einem anderen Kontext läuft als der Rest des Interpreters. Damit wird die Angriffsfläche die zur Durchführung einer Attacke auf den Interpreter verwendet werden kann reduziert. Desweiteren wird die modifizierte Version des Interpreters auf ihr Laufzeitverhalten sowie ihren Speicherverbrauch evaluiert. Zur Überprüfung der Geschwindigkeit wird ein von Mozilla zur Verfügung gestelltes Benchmark-Werkzeug verwendet. Der Speicherbedarf wird mit Hilfe der standard- mäßig unter Linux installierten Werkzeuge ermittelt. Anschließend werden die erhobenen Daten mit einer unmodifizerten Version von TraceMonkey verglichen. Ausserdem wird die Resistenz der neuen Architektur gegenüber Angriffen auf den JIT-compiler getestet.

Zusammenfassung (Englisch)

JIT spraying is one of the main reasons why current web browsers still provide a large attack surface for remote exploits. It is capable of circumventing even the most sophisticated defense strategies against code injection, including address space layout randomization (ASLR), data execution prevention (DEP) or stack canaries. In this thesis, we present Lobotomy, an architecture for building injection-safe JIT engines by splitting compiler and executor into two different processes. We also present a proof-of-concept implementation of our approach by modifying the well-known JIT-Engine Tracemonkey as it is shipped with the Firefox Browser. Additionally, we provide a thorough evaluation of performance and code coverage of our version compared to the unmodified baseline.

Statistik
Das PDF-Dokument wurde 58 mal heruntergeladen.