Implementations, Improvements & Implications of Hardware-Assisted
Total Page:16
File Type:pdf, Size:1020Kb
Implementations, Improvements &Implications of Hardware- Assisted CFG-BasedControl Flow Integrity Schemes DIPLOMARBEIT zur Erlangung des akademischen Grades Diplom-Ingenieur im Rahmen des Studiums Technische Informatik eingereicht von Mario Telesklav, BSc. Matrikelnummer 01252288 an der Fakultät für Informatik der Technischen Universität Wien Betreuung: Ao.Univ.Prof.Dipl.-Ing. Dr.techn. Andreas Steininger Mitwirkung: Univ.Ass.Dipl.-Ing. Stefan Tauner Wien, 9. März 2021 Mario Telesklav Andreas Steininger Technische UniversitätWien A-1040 Wien Karlsplatz 13 Tel. +43-1-58801-0 www.tuwien.at Implementations, Improvements &Implications of Hardware- Assisted CFG-BasedControl Flow Integrity Schemes DIPLOMA THESIS submitted in partial fulfillmentofthe requirements forthe degree of Diplom-Ingenieur in Computer Engineering by Mario Telesklav, BSc. Registration Number 01252288 to the Faculty of Informatics at the TU Wien Advisor: Ao.Univ.Prof.Dipl.-Ing. Dr.techn. Andreas Steininger Assistance: Univ.Ass.Dipl.-Ing. Stefan Tauner Vienna, 9th March, 2021 Mario Telesklav Andreas Steininger Technische UniversitätWien A-1040 Wien Karlsplatz 13 Tel. +43-1-58801-0 www.tuwien.at Erklärung zur Verfassungder Arbeit Mario Telesklav, BSc. Hiermit erkläre ich, dass ichdieseArbeit selbständig verfasst habe,dass ichdie verwen- detenQuellenund Hilfsmittel vollständig angegeben habeund dass ichdie Stellen der Arbeit–einschließlichTabellen,Karten undAbbildungen –, dieanderen Werken oder dem Internet im Wortlaut oder demSinn nach entnommensind, aufjeden Fall unter Angabeder Quelleals Entlehnung kenntlich gemacht habe. Wien, 9. März 2021 Mario Telesklav v Danksagung IchmöchteinsbesonderemeinemBetreuerStefan Tauner für seine Anleitungbei der Erstellung dieser Arbeitund für all unsere bereicherndenDiskussionen danken. Sein Feedbackhat wesentlichzur Qualitätbeigetragen.Des Weiterenbin ichProf. Steininger für die Beratung zum Themader Arbeitund die Möglichkeit, sie in seinem Forschungsbereich schreiben zu können, sehr dankbar. Außerdem möchte ichmichbei meinenFreunden und meiner Familie für ihre Unterstüt- zung in jederHinsicht während meines Studiumsbedanken,vor allem in herausfordernden und stressigenZeiten. Sie haben diese Arbeit überhaupterst möglich gemacht. vii Acknowledgements Iwouldliketoespeciallythank my supervisor Stefan Taunerfor his guidancethroughout creatingthis thesis and all of our enriching discussions. His feedbackhas contributed greatly to the qualityofthe finalwork.Anotherthank yougoestoProf. Steininger for advising on thetopicand the possibilityofwriting it in his department. MoreoverIwant to thank my dearfriendsand familyfor theirsupportinall respects throughout my studies, particularly in challenging and stressful times. Theymade this work possibleinthe first place. ix Kurzfassung Die Möglichkeit, Speicherbereiche mit böser Absicht zu überschreiben, ist immer noch eine ernstzunehmende Sicherheitslücke vieler moderner Systeme. DieseSchwachstellen ermöglichen Code-Reuse Attacks (CRAs), beidenen bereits existierender Code für einen Angriffanstellevon eingeschleustenAnweisungen verwendetwird. CRAs sindinden letzten Jahrenbesondersrelevantgeworden.InCRAs leiten Angreifer den Kontrollfluss einesProgramms so um,dass er vombeabsichtigtenControl Flow Graph (CFG) ab- weicht,der allegültigen Sprünge, Funktionsaufrufe und Rücksprünge in einemProgramm darstellt. Eine weit verbreitete Maßnahme gegen solcheAngriffe istes, ControlFlow Integrity(CFI) sicherzustellen.Inden letzten 15 Jahren hat es dazuviele Vorschläge fürImplementierungen sowohl in Software als auchinHardware gegeben.Das zugrunde liegende Ziel ist immer zu überprüfen, ob dieProgrammausführungdem vorgesehenen CFGentspricht,indemdie Gültigkeit der Ziele vonindirekten Sprüngenzur Laufzeit sichergestellt wird. Hardware-unterstützteAnsätze weisennormalerweise eine bessere Performance auf als ImplementierungeninSoftware. Die meisten existierendenAnsätze wurdenjedochauf unterschiedlichen Plattformen und mitunterschiedlichen Benchmark- Anwendungen evaluiert,was quantitative Vergleiche der vorgestelltenErgebnisse kaum aussagekräftigmacht. In dieser Arbeitgehen wirzunächst auf dieGrundlagen vonCRAs einund geben einen Überblick über CFIimAllgemeinen. Wir konzentrieren unsanschließend auf Hardware- unterstützte CFI-Ansätze und beschreibenfünf solcher SchemataimDetail,die ver- schiedeneSchutzkonzepte einsetzen. Unser Hauptbeitrag bestehtinder Implementierung der verschiedenen Ansätze auf einer gemeinsamen Plattform,umeinen aussagekräftigen quantitativenVergleich zu ermöglichen. Außerdem präsentierenwir ein neues Schema, dasauf den unsererMeinungnachbesten Konzepten aufbautund diese verbessert. Unsere Ergebnissezeigen, dassCFG-basiertesDurchsetzen vonCFI in Hardware mit geringeren Kosten in Bezug auf Laufzeitund Codegröße erzieltwerden kann, als zuvor in akademischen Konzeptengezeigt wurde.Zugleichwerdenanderswo vernachlässigte Featuresberücksichtigt und die Hardwareanforderungen auf einem ähnlichen Niveau gehalten. Schlüsselwörter —CRA, ROP, JOP, CFG, CFI, RISC-V,SoftwareSecurity, Shadow Stack, Control Flow Transfer, EXCEC xi Abstract Potentialmemory corruption errorsare still aserious vulnerability of manymodern systems and can be maliciously exploited. Code-Reuse Attacks (CRAs), where code already presentinsome application is used for an attackinstead of injected instructions, are enabled by sucherrorsand have become particularly relevantinrecent years.InCRAs attackers redirectthe control flowofaprogram in away thatitdeviates from itsintended Control Flow Graph (CFG), thatrepresents all valid jumps,functioncalls and returns in aprogram. The enforcementofControl Flow Integrity (CFI)isawell-established mitigation technique against such CRAs, backedbymanyproposalsfor implementations both in software and hardware in the past 15years. Their underlying goalisalwaysto checkwhether program execution follows itsintendedCFG by checking the validityof control flowtransfer targets at runtime.Hardware-assisted approachesusuallyhavea better performance compared to implementationsinsoftware. However, most schemes proposed by academiawere evaluated on differentplatforms and differentbenchmark applications were used, whichmakes quantitativecomparisons of thepresented results hardlymeaningful. In this work we firstreprise the basics of CRAs and giveanoverviewofCFI in general. We then focus on hardware-assisted CFI approaches and describefive concreteschemesin detail, thatcoverawide range of differentprotection concepts. The maincontributionof this work is ameaningfulquantitative comparisonbasedonour implementations of these approachesonacommon platform.Inaddition, we presentanovel hardware-assistedCFI scheme called EXtensiveCFI EnforcementConcept(EXCEC), whichisbased on what we consider thebest conceptsand ideas of theexisting approaches. EXCEC improves some details and offers amore sound protection than most other schemes. Our finalresults showthathardware-enforcedCFG-based CFI can be achieved with significantlylower overheads on runtime and code size than previously presentedin academicconcepts, while stillimplementingfeatures that have been neglected elsewhere and keepinghardware utilization at asimilarlevel. Keywords —CRA, ROP, JOP, CFG, CFI, RISC-V,SoftwareSecurity, Shadow Stack, ControlFlowTransfer, EXCEC xiii Contents Kurzfassung xi Abstract xiii 1Introduction1 1.1 Motivation .................................2 1.2 Code-Reuse Attacks (CRAs) ....................... 5 1.3 Defense Concepts ..............................10 1.4 Aims and Contributions...........................11 2Control Flow Integrity(CFI)13 2.1 Threat Model................................13 2.2 Introduction to Control Flow Integrity (CFI)..............14 2.3 Control Flow Graph (CFG) ........................ 18 2.4 Implementing CFI ..............................21 3Hardware-Based CFI23 3.1 Concepts ..................................23 3.2 Challenges .................................. 29 3.3 Hardware-BasedCFI Implementations ...................31 4Implementation 41 4.1 DevelopmentPlatform &Environment...................41 4.2 Instruction SetArchitecture (ISA) Extension .............. 43 4.3 Implementation Details..........................44 4.4 Common Implementation Parameters ..................48 4.5 EXtensiveCFI EnforcementConcept (EXCEC)............. 49 5Instrumentation 57 5.1 Introduction ................................. 57 5.2 Challenges for CFI Instrumentation................... 60 5.3 GCC Plugin for CFI Instrumentation. .................. 62 6Evaluation 67 xv 6.1 Methodology ................................ 67 6.2 Benchmarks .................................69 6.3 Security ................................... 73 6.4 Performance .................................74 6.5 Code Size .................................. 78 6.6 Utilization ................................... 81 6.7 Final Comparison .............................. 84 7Conclusion 87 7.1 Future Work ................................88 ARaw Data91 A.1 Performance Overhead ............................ 91 A.2CodeSizeOverhead ............................ 92 ListofFigures 95 ListofTables 97 List of Listings 99 Acronyms 101 Bibliography 105 CHAPTER 1 Introduction To this day, errorsinprograms can stillbeexploited on most processors.Vulnerabilities, whichenable the manipulationofmemorycontents, are particularly common. We refer to such errorsasmemory errors in theremainderofthis work. An attackertypically wants to change program behavior, e.g., in order to execute malicious code with the privileges of some