stephen checkoway lucas davi alexandra dmitrienko ahmad
play

Stephen Checkoway , Lucas Davi , Alexandra Dmitrienko, Ahmad-Reza - PowerPoint PPT Presentation

Stephen Checkoway , Lucas Davi , Alexandra Dmitrienko, Ahmad-Reza Sadeghi, Hovav Shacham, Marcel Winandy ACM CCS 2010, Chicago, USA System Security Lab Ruhr-University Bochum Ad hoc defense against code injection: W X DEP


  1. Stephen Checkoway , Lucas Davi , Alexandra Dmitrienko, Ahmad-Reza Sadeghi, Hovav Shacham, Marcel Winandy ACM CCS 2010, Chicago, USA System Security Lab Ruhr-University Bochum

  2.  Ad hoc defense against code injection: ◆ W ⊕ X ◆ DEP  Code injection unnecessary for arbitrary computation  Use existing code to synthesize new behavior 2 System Security Lab Ruhr-University Bochum

  3. (data)  Stack is the program insns…ret ◆ Pointers to code (data) ◆ Data insns…ret  Execution proceeds insns…ret by changing the (data) (data) stack pointer insns…ret  Turing-complete esp 3 System Security Lab Ruhr-University Bochum

  4.  Control-flow integrity [Abadi et al. CCS’05, Erlingsson et al. OSDI’06] ◆ Defends against an entire class of memory error vulnerabilities  Count frequency of ret instructions  Use LIFO invariant of the call stack ◆ Maintain shadow call stack  Modify compiler to avoid emitting ret instructions 4 System Security Lab Ruhr-University Bochum

  5.  Copy top of stack to instruction pointer Transfers control  Increment stack pointer Updates processor state 5 System Security Lab Ruhr-University Bochum

  6. pop %eax add $4,%eax jmp *%eax jmp *(%eax) pop %eax inc %eax jmp *(%eax) jmp *(%ebx,%eax,4) 6 System Security Lab Ruhr-University Bochum

  7. add %eax, %ecx add %eax, %ecx ret pop %ebx jmp *%ebx 7 System Security Lab Ruhr-University Bochum

  8. add %eax, %ecx  Only need one jmp *%edx update-load-branch sequence pop %ebx  edx points to ULB jmp *%ebx 8 System Security Lab Ruhr-University Bochum

  9. • ARM stands for Advanced RISC Machine • Application area: Embedded systems ◆ Mobile phones, smartphones (Apple iPhone, Google Android), music players, tablets, netbooks • Advantage: Low power consumption • ARM features XN (eXecute Never) Bit • Follows RISC design ◆ Mostly single-cycle execution ◆ Dedicated load and store instructions ◆ Fixed instruction length System Security Lab Ruhr-University Bochum

  10. • ARM‘s 32 Bit processor features 16 registers • In contrast to Intel x86, each register is directly accessible ◆ E.g., it is possible to directly change the program counter (r15) Scratch Register Function r0 � r4 � r12 � arguments Stack Pointer r1 � r5 � r13/sp � and results Link Register r2 � r6 � r14/lr � from function Register Program Counter r3 � r7 � r15/pc � variables (callee saved) r8 � r9 � r10 � Control Program r11 � cpsr � Status Register 10 System Security Lab Ruhr-University Bochum

  11. • AAPCS - ARM Architecture Procedure Call Standard • No dedicated call and return instructions ◆ Instead any jump instruction can be used as call and return resp. • Function Call ◆ BL – Branch with Link ◆ BLX – Branch with Link and Exchange (allows indirect calls) ◆ BL and BLX load the return address into the link register (r14) • Function Return ◆ Loading return address into program counter 11 System Security Lab Ruhr-University Bochum

  12. • Candidates for an attack on ARM ◆ All indirect jump instructions not part of a function epilogue » Instructions where pc is used as destination register » Indirect branch instructions, e.g., BLX • We inspected libc and libwebcore on Android 2.0 ◆ Result: Many sequences end with a BLX instruction Branch to register Store return address BLX register � in link register Instruction set exchange 12 System Security Lab Ruhr-University Bochum

  13. • Trampoline sequence for ARM ◆ Unfortunately no POP-BLX sequence in our libraries ◆ Update-Load-Branch sequence » Initialize a register (r j ) so that it points to injected jump addresses » Update the state of r j after each sequence » Load a second register (r s ) with the address of the next sequence pointed by r j » Branch with BLX to the address stored in r s Sequence 1 Register r s Jump instruction � Jump Address 1 instruction � Addresses BLX Trampoline � Jump Address 1 Trampoline r j – points to jump … addresses � ADDS r6,#4 � r j � r s – address of next Memory under LDR r5,[r6,#124] � sequence � control of adversary BLX r5 � 13 System Security Lab Ruhr-University Bochum

  14. GADGET 2 Trampoline Sequence 1 Jump Addresses instruction � 8 9 10 instruction � Jump Address 3 BLX Trampoline � 5 Jump Address 2 GADGET 1 Jump Address 1 r j � 6 Sequence 2 2 Setup Argument 1 r a � instruction � Argument 2 • Take control over instruction � 7 pc 3 BLX Trampoline � • Setup r a , and r j Arguments Sequence 1 1 Memory under instruction � instruction � 4 control of adversary Adversary BLX Trampoline � r a – Pointer to arguments (sp) � r j - Pointer to jump addresses � 14 System Security Lab Ruhr-University Bochum

  15. • Our results ◆ Return address checkers can be bypassed ◆ Showed return-oriented programming without returns ◆ We derived a Turing-complete gadget set for x86 and ARM ◆ Attack instantiation on Debian (x86) and Android (ARM) • Implications ◆ Return-oriented programming (without returns) is a serious problem ◆ Will become crucial attack technique in future and effective countermeasures are needed ◆ We show how to use it to mount a privilege escalation attack on Android (upcoming paper at ISC 2010) 15 System Security Lab Ruhr-University Bochum

  16. 16 System Security Lab Ruhr-University Bochum

  17. 2007 Intel x86 2008 SPARC Atmel AVR Z80 PowerPc 2009 ARM Internet Adobe Explorer Reader 2010 Apple Quicktime Jailbreak Player 17 System Security Lab Ruhr-University Bochum

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend