ITEM METADATA RECORD
Title: Security of Software on Mobile Devices (Beveiliging van software op mobiele toestellen)
Other Titles: Security of Software on Mobile Devices
Authors: Philippaerts, Pieter
Issue Date: 20-Oct-2010
Abstract: Het beveiligen van een groot softwaresysteem is een bijzonder moeilijke opdracht. Uit de ervaring met desktop- en servercomputers weten we dat de onveiligheid van een systeem meestal proportioneel is met een aantal dingen, waaronder de grootte van het aanvalsoppervlak (d.w.z. hoe makkelijk het is voor een aanvaller om te `spreken' met de computer) en hoeveel vrijheid de gebruiker krijgt om applicaties te installeren en uit te voeren.Mobiele telefoons maken momenteel een bijzonder snelle evolutie mee, waardoor ze vaker als doelwit gezien worden voor aanvallers. In een tijdspanne van slechts enkele jaren zijn mobiele telefoons geëvolueerd van een elektronische baksteen die enkel gebruikt kon worden om te bellen en om berichtjes te sturen, tot een hoogtechnologisch multimediatoestel, waarmee gebruikers kunnen surfen op het internet, films en muziek afspelen, foto's nemen, navigeren door het verkeer, en applicaties installeren. Alhoewel dit een bijzonder interessante evolutie is, brengt ze ook een aantal praktische problemen met zich mee. Omwille van de vele extra functies wordt het ook makkelijker voor aanvallers om een beveiligingslek te vinden dat kan misbruikt worden. Daarnaast zijn de verschillende beveiligingsmaatregelen vaak niet meegeëvolueerd.Het hoofdopzet van deze thesis is om de huidige stand van de techniek te verbeteren op vlak van beveiligingsmechanismen tegen aanvallen op mobiele toestellen. Dit kan bereikt worden op twee verschillende manieren. Bestaande software kan beveiligd worden door het incorporeren van nieuwe beveiligingstechnieken. Dit heeft als voordeel dat het slechts een kleine moeite vergt om bestaande software te updaten, maar deze aanpak heeft ook zijn beperkingen. Een andere optie is om de software volledige te herschrijven. Dit kan leiden tot veiligere programmacode, maar vereist wel veel meer werk. Echter, vooraleer oplossingen voor diverse beveiligingsproblemen aangedragen worden, moet eerst aangetoond worden dat mobiele toestellen wel degelijk kwetsbaar zijn.Deze thesis beschrijft drie contributies.1) Alfanumerieke en Turingvolledige ShellcodeWe tonen aan dat een aanvaller die een code-injectie-aanval uitvoert, waarbij hij zeer gelimiteerd is in het type van data dat hij kan gebruiken, nog altijd arbitraire code kan uitvoeren. Beveiligingssystemen die speciale gevaarlijke patronen proberen te detecteren kunnen op deze manier omzeild worden, zonder de mogelijkheden van de aanvaller te beperken. We tonen aan dat voor de ARM-architectuur de subset van instructies die bestaan uit alfanumerieke karakters Turingvolledig is. Een aanvaller die enkel gebruik kan maken van dergelijke alfanumerieke instructies is dus niet gelimiteerd in computationele mogelijkheden.2) Een Tegenmaatregel voor Code-injectie-aanvallenWe stellen een nieuwe tegenmaatregel voor die beschermt tegen code-injectie-aanvallen. Een aangepaste compiler zal extra veiligheidscontroles genereren tijden de compilatie van een C-applicatie. Deze controles maken gebruik van een maskeermechanisme dat verzekert dat codewijzers niet naar geheugenadressen kunnen verwijzen waar ze niet naar zouden mogen verwijzen. Indien een aanvaller erin slaagt om nieuwe programmacode in het geheugen van een applicatie te injecteren, zal het maskeermechanisme voorkomen dat de aanvaller de geinjecteerde code kan uitvoeren.3) Een Implementatie en Evaluatie van Security-by-ContractWe hebben een implementatie gemaakt en geëvalueerd van het nieuwe Security-by-Contract (SxC) paradigma op het volledige en het compacte .NET Framework. Het SxC-raamwerk probeert statisch te garanderen dat een applicatie nooit misbruik zal maken van de beschikbare systeembronnen. Als deze garantie niet statisch gegeven kan worden, dan zal het raamwerk extra beveiligingschecks in de code van de applicatie verweven die ervoor zorgen dat misbruik nooit kan voorkomen.Zoals de evaluatie aantoont, zijn onze beveiligingsmechanismen heel performant en zeer compatibel met bestaande code. De code-injectietegenmaatregel heeft een performantieoverhead van een paar percenten, en heeft een geheugenoverhead van bijna nul percent. Het is zeer compatibel met bestaande code, zoals aangetoond door de SPEC benchmark. De SxC-implementatie deelt dezelfde karakteristieken. Als het systeem statisch kan aantonen dat een applicatie nooit de systeembronnen zal misbruiken, dan zorgt het SxC-systeem voor geen enkele performantie- of geheugenoverhead. Bij applicaties waar dat niet aangetoond kan worden, zullen extra beveiligingschecks worden ingeweven. De overhead van deze extra checks zijn bijna volledig afhankelijk van de complexiteit van de regels die moeten afgedwongen worden. De SxC-implementatie is heel compatibel met bestaande code; er is geen enkele applicatie gevonden die niet bleek te werken met het prototype.
Table of Contents: Abstract iii
Acknowledgements vii
Contents ix
1 Challenges in Mobile Phone Security 1
1.1 The Importance of Mobile Phone Security . . . . . . . . . . . . . . 1
1.2 Challenges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.3 Goals and Approach . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.4 Context and Technical Challenges . . . . . . . . . . . . . . . . . . 5
1.5 Assumptions and Attack Model . . . . . . . . . . . . . . . . . . . . 6
1.6 Main Contributions . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.6.1 Alphanumeric and Turing Complete Shellcode . . . . . . . 7
1.6.2 A Countermeasure against Code Injection Attacks . . . . . 8
1.6.3 An Implementation and Evaluation of Security-by-Contract 8
1.6.4 Other Contributions . . . . . . . . . . . . . . . . . . . . . . 9
1.7 Structure of this Dissertation . . . . . . . . . . . . . . . . . . . . . 10
2 Background 11
2.1 The ARM Architecture . . . . . . . . . . . . . . . . . . . . . . . . 12
2.1.1 Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.1.2 Instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.1.3 Function Calls . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.1.4 Addressing Modes . . . . . . . . . . . . . . . . . . . . . . . 13
2.1.5 Conditional Execution . . . . . . . . . . . . . . . . . . . . . 15
2.1.6 Thumb Instructions . . . . . . . . . . . . . . . . . . . . . . 16
2.2 Code Injection Attacks . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.2.1 Stack-based Buffer Overflows . . . . . . . . . . . . . . . . . 17
2.2.2 Countermeasures and Advanced Attacks . . . . . . . . . . . 19
2.3 Mobile Security Architectures . . . . . . . . . . . . . . . . . . . . . 21
2.3.1 Application Signing . . . . . . . . . . . . . . . . . . . . . . 22
2.3.2 Sandboxing with Virtual Machines . . . . . . . . . . . . . . 23
2.3.3 The Mobile Information Device Profile . . . . . . . . . . . . 24
2.3.4 Android’s Permissions-based Scheme . . . . . . . . . . . . . 25
2.3.5 Advanced Security Architectures . . . . . . . . . . . . . . . 26
3 Filter-resistant Shellcode 27
3.1 Alphanumeric Instructions . . . . . . . . . . . . . . . . . . . . . . . 28
3.1.1 Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
3.1.2 Conditional Execution . . . . . . . . . . . . . . . . . . . . . 29
3.1.3 The Instruction List . . . . . . . . . . . . . . . . . . . . . . 30
3.1.4 Self-modifying Code . . . . . . . . . . . . . . . . . . . . . . 34
3.2 Writing Shellcode . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
3.2.1 Conditional Execution . . . . . . . . . . . . . . . . . . . . . 35
3.2.2 Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
3.2.3 Arithmetic Operations . . . . . . . . . . . . . . . . . . . . . 38
3.2.4 Bitwise Operations . . . . . . . . . . . . . . . . . . . . . . . 39
3.2.5 Memory Access . . . . . . . . . . . . . . . . . . . . . . . . . 39
3.2.6 Control Flow . . . . . . . . . . . . . . . . . . . . . . . . . . 40
3.2.7 System Calls . . . . . . . . . . . . . . . . . . . . . . . . . . 42
3.2.8 Thumb Mode . . . . . . . . . . . . . . . . . . . . . . . . . . 43
3.3 Proving Turing-Completeness . . . . . . . . . . . . . . . . . . . . . 44
3.3.1 Initialization . . . . . . . . . . . . . . . . . . . . . . . . . . 46
3.3.2 Parsing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
3.3.3 BF Operations . . . . . . . . . . . . . . . . . . . . . . . . . 47
3.3.4 Branches and System Calls . . . . . . . . . . . . . . . . . . 47
3.4 Related Work . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
3.5 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
4 Code Pointer Masking 51
4.1 Design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
4.1.1 Masking the Return Address . . . . . . . . . . . . . . . . . 53
4.1.2 Mask Optimization . . . . . . . . . . . . . . . . . . . . . . . 55
4.1.3 Masking Function Pointers . . . . . . . . . . . . . . . . . . 56
4.1.4 Masking the Global Offset Table . . . . . . . . . . . . . . . 57
4.1.5 Masking Other Code Pointers . . . . . . . . . . . . . . . . . 57
4.2 Implementation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
4.2.1 Return Addresses . . . . . . . . . . . . . . . . . . . . . . . . 58
4.2.2 Function Pointers . . . . . . . . . . . . . . . . . . . . . . . . 60
4.2.3 Global Offset Table Entries . . . . . . . . . . . . . . . . . . 60
4.2.4 Limitations of the Prototype . . . . . . . . . . . . . . . . . 62
4.3 Evaluation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
4.3.1 Compatibility, Performance and Memory Overhead . . . . . 62
4.3.2 Security Evaluation . . . . . . . . . . . . . . . . . . . . . . 63
4.4 Discussion and Ongoing Work . . . . . . . . . . . . . . . . . . . . . 67
4.5 Related Work . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
4.6 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
5 Security-by-Contract 71
5.1 General Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
5.1.1 Policies and Contracts . . . . . . . . . . . . . . . . . . . . . 72
5.1.2 Enforcement Technologies . . . . . . . . . . . . . . . . . . . 75
5.1.3 Developing SxC Applications . . . . . . . . . . . . . . . . . 77
5.2 S3MS.NET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
5.2.1 Policy Management and Distribution . . . . . . . . . . . . . 81
5.2.2 Application Deployment and Loading . . . . . . . . . . . . 82
5.2.3 Execution Monitoring and Runtime Enforcement . . . . . . 83
5.3 Evaluation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
5.4 Related Work . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
5.5 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
6 Conclusion 91
6.1 Contributions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
6.2 Ongoing Work . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
6.3 Future Challenges . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
A Alphanumeric ARM Instructions 97
Bibliography 101
Curriculum Vitae 115
Relevant Publications 117
ISBN: 978-94-6018-266-2
Publication status: published
KU Leuven publication type: TH
Appears in Collections:Informatics Section

Files in This Item:
File Status SizeFormat
Thesis_Final-with_cover.pdf Published 1175KbAdobe PDFView/Open

 


All items in Lirias are protected by copyright, with all rights reserved.