Title: Towards A write [oplus, direkte Summe] execute architecture for JIT interpreters; lobotomy
Language: English
Authors: Jauernig, Martin 
Qualification level: Diploma
Keywords: Browser Sicherheit; Just-in-Time Compilation
Browser Security; Just-in-Time Compilation
Advisor: Kastner, Wolfgang 
Assisting Advisor: Platzer, Christian 
Issue Date: 2014
Number of Pages: 59
Qualification level: Diploma
Abstract: 
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.

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.
URI: https://resolver.obvsg.at/urn:nbn:at:at-ubtuw:1-71802
http://hdl.handle.net/20.500.12708/8366
Library ID: AC12059364
Organisation: E183 - Institut für Rechnergestützte Automation 
Publication Type: Thesis
Hochschulschrift
Appears in Collections:Thesis

Files in this item:

Show full item record

Page view(s)

12
checked on Feb 21, 2021

Download(s)

88
checked on Feb 21, 2021

Google ScholarTM

Check


Items in reposiTUm are protected by copyright, with all rights reserved, unless otherwise indicated.