Jauernig, M. (2014). Towards A write [oplus, direkte Summe] execute architecture for JIT interpreters : lobotomy [Diploma Thesis, Technische Universität Wien]. reposiTUm. https://doi.org/10.34726/hss.2014.23177
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.
de
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.
en
Additional information:
Abweichender Titel laut Übersetzung der Verfasserin/des Verfassers Zsfassung in dt. Sprache