Die Möglichkeit, Speicherbereiche mit böser Absicht zu überschreiben, ist immer noch eine ernstzunehmende Sicherheitslücke vieler moderner Systeme. Diese Schwachstellen ermöglichen Code-Reuse Attacks (CRAs), bei denen bereits existierender Code für einen Angriff anstelle von eingeschleusten Anweisungen verwendet wird. CRAs sind in den letzten Jahren besonders relevant geworden. In CRAs leiten Angreifer den Kontrollfluss eines Programms so um, dass er vom beabsichtigten Control Flow Graph (CFG) abweicht, der alle gültigen Sprünge, Funktionsaufrufe und Rücksprünge in einem Programm darstellt. Eine weit verbreitete Maßnahme gegen solche Angriffe ist es, Control Flow Integrity (CFI) sicherzustellen. In den letzten 15 Jahren hat es dazu viele Vorschläge für Implementierungen sowohl in Software als auch in Hardware gegeben. Das zugrunde liegende Ziel ist immer zu überprüfen, ob die Programmausführung dem vorgesehenen CFG entspricht, indem die Gültigkeit der Ziele von indirekten Sprüngen zur Laufzeit sichergestellt wird. Hardware-unterstützte Ansätze weisen normalerweise eine bessere Performance auf als Implementierungen in Software. Die meisten existierenden Ansätze wurden jedoch auf unterschiedlichen Plattformen und mit unterschiedlichen Benchmark-Anwendungen evaluiert, was quantitative Vergleiche der vorgestellten Ergebnisse kaum aussagekräftig macht.In dieser Arbeit gehen wir zunächst auf die Grundlagen von CRAs ein und geben einen Überblick über CFI im Allgemeinen. Wir konzentrieren uns anschließend auf Hardwareunterstützte CFI-Ansätze und beschreiben fünf solcher Schemata im Detail, die verschiedene Schutzkonzepte einsetzen. Unser Hauptbeitrag besteht in der Implementierung der verschiedenen Ansätze auf einer gemeinsamen Plattform, um einen aussagekräftigen quantitativen Vergleich zu ermöglichen. Außerdem präsentieren wir ein neues Schema, das auf den unserer Meinung nach besten Konzepten aufbaut und diese verbessert.Unsere Ergebnisse zeigen, dass CFG-basiertes Durchsetzen von CFI in Hardware mit geringeren Kosten in Bezug auf Laufzeit und Codegröße erzielt werden kann, als zuvor in akademischen Konzepten gezeigt wurde. Zugleich werden anderswo vernachlässigte Features berücksichtigt und die Hardwareanforderungen auf einem ähnlichen Niveau gehalten.
de
Potential memory corruption errors are still a serious vulnerability of many modern systems and can be maliciously exploited. Code-Reuse Attacks (CRAs), where codealready present in some application is used for an attack instead of injected instructions, are enabled by such errors and have become particularly relevant in recent years. In CRAs attackers redirect the control flow of a program in a way that it deviates from its intended Control Flow Graph (CFG), that represents all valid jumps, function calls and returns in a program. The enforcement of Control Flow Integrity (CFI) is a well-established mitigation technique against such CRAs, backed by many proposals for implementations both in software and hardware in the past 15 years. Their underlying goal is always to check whether program execution follows its intended CFG by checking the validity of control flow transfer targets at runtime. Hardware-assisted approaches usually have a better performance compared to implementations in software. However, most schemes proposed by academia were evaluated on different platforms and different benchmark applications were used, which makes quantitative comparisons of the presented results hardly meaningful.In this work we first reprise the basics of CRAs and give an overview of CFI in general.We then focus on hardware-assisted CFI approaches and describe five concrete schemes in detail, that cover a wide range of different protection concepts. The main contribution of this work is a meaningful quantitative comparison based on our implementations of these approaches on a common platform. In addition, we present a novel hardware-assisted CFI scheme called EXtensive CFI Enforcement Concept (EXCEC), which is based on what we consider the best concepts and ideas of the existing approaches. EXCEC improves some details and offers a more sound protection than most other schemes.Our final results show that hardware-enforced CFG-based CFI can be achieved with significantly lower overheads on runtime and code size than previously presented in academic concepts, while still implementing features that have been neglected elsewhere and keeping hardware utilization at a similar level.
en
Additional information:
Abweichender Titel nach Übersetzung der Verfasserin/des Verfassers