compiler design
play

Compiler Design Spring 2018 Thomas R. Gross Computer Science - PowerPoint PPT Presentation

Compiler Design Spring 2018 Thomas R. Gross Computer Science Department ETH Zurich, Switzerland 1 What I hope you learned in this class 1. Compiler design: Structure of a simple compiler Simple: 2-3K lines of Java code (maybe a bit more)


  1. Compiler Design Spring 2018 Thomas R. Gross Computer Science Department ETH Zurich, Switzerland 1

  2. What I hope you learned in this class 1. Compiler design: Structure of a simple compiler § Simple: 2-3K lines of Java code (maybe a bit more) § Industry: C1 compiler in HotSpot VM is considered “simple” § 30K lines of C/C++/assembly code 2. Software engineering: How to design a large(r) software system § Sometimes there is no “right” or ”wrong” § Sometimes there is 3. Programming § What the programming language design document should tell you § How to use that information 2

  3. Beyond (basic) "Compiler Design" Many possible extensions § Optimizations § Intermediate representations § Program transformations § Tool support § System security § New language concepts, new languages 6

  4. Compilers and system security 7

  5. Attack types § Code corruption attack § Control-flow hijack attack § Data-only attack § Information leak Attack model according to: „sok: eternal war in memory“ laszlo szekeres, mathias payer, tao wei, dawn song Http://www.cs.berkeley.edu/~dawnsong/papers/oakland13-sok-cr.pdf

  6. Control-flow hijack attacks § Most powerful attack § Hijack control-flow § To attacker-supplied arbitrary machine code § To existing code (code-reuse attack) § Corrupt code pointers § Return addresses, function pointers, vtable entries, exception handlers, jmp_bufs

  7. Control-flow hijack attacks § Most ISAs support indirect branch instructions § E.g., x86 “ret“, indirect “jmp“, indirect “call“ § fptr is a value in memory fptr: 0x8056b30 0xafe08044 at 0xafe08044 Code § branch *fptr 0x08056b30 good_func:

  8. Control-flow hijack attacks § fptr is a value in memory at 0xafe08044 § branch *fptr § fptr was corrupted by an attacker fptr: Corrupted 0xafe08044 Code § Attacker goal: hijack control-flow to evil_code: injected machine code or to “evil functions“

  9. State of the art defenses § Non-executable data § NX bit § Data Execution Prevention (DEP) § OS support 14

  10. Bypassing NX / DEP 0xffffffff § Only use existing code Stack attacker code & rw- § Code-reuse attack data § ret2libc, ret2bin, ret2* attacks Heap § Return-oriented programming (ROP) attacker code & rw- data § Jump/Call-oriented programming r-x Code § Use code-reuse technique to change protection flags § Alllocate or make memory executable § mprotect/VirtualProtect 0x00000000 § mmap/VirtualAlloc

  11. Return-oriented programming (ROP) %ebp address gadget4 § Use available code snippets ending address gadget3 with ret instruction dummy value address § Called gadgets or ROP chain Stack address gadget2 § E.g., write primitive value address gadget1 %esp arguments saved ebp dummy ebp pop %edx; 1 return address ret; buf[1024] rw- pop %eax; 2 pop %ebx; ret; r-x Code mov %edx, (%eax); 3 mov $0x0, %eax; ret;

  12. ASLR § Today most operating systems implement Address Space Layout Randomization (ASLR) § Mapping program addresses to hardware addresses § What can be randomized? § OS: Stack, heap and memory mapping base addresses § OS, compiler, linker: Exectuables and libraries § Position-independent or relocatable code

  13. Generic defense: DEP & ASLR § DEP: Data Execution Protection § ASLR: Address Space Layout Randomization § Exploitation becomes harder for all vulnerability classes & attack techniques § Together quite effective § If implemented correctly and used continuously § But DEP and ASLR not enough

  14. Compile-time protection Usually require source code changes (annotations) and/or recompilation of the application § § To add run-time checks § Stack canaries / Cookies Pointer obfuscation § /GS (buffer security check) § /SAFESEH (link-time, provide list of valid handlers) § SEHOP (run-time, walk down SEH chain to final handler before dispatching / integrity check) § Virtual Table Verification (VTV) & vtguard § Control-Flow Guard (new in Visual Studio 2015) §

  15. Stack canary / cookie Stack during vulnFunc() main() stack frame void vulnFunc() { return address arguments <copy canary> saved ebp saved ebp char buf[1024]; %ebp stack canary read(STDIN, buf, 2048); return address <verify canary> } buf[1024] copy canary rw- %esp stack canary Stack at function exit verify canary overwritten frame overwritten retaddr arguments saved ebp overwritten ebp %ebp overwritten canary return address buf[1024] rw- %esp

  16. Stack canary / cookie § Detects linear buffer overflows on stack § At function exit § Corruption of local stack not detected § Only if canary / cookie value is overwritten § Incurs runtime overhead § Effectiveness relies on secret § Leaking, predicting, guessing or brute-forcing might work in special cases

  17. Attacker model § Let's assume a powerful attacker § Can arbitrarily corrupt data and pointers § Can read entire address space of a process § Only restriction on attacker: § No data execution and no code corruption (NX/DEP/W^X)

  18. Question § Can we still prevent arbitrary code execution and code-reuse attacks?

  19. Observations § Attacker needs to hijack control-flow § To injected or existing code § VM/runtime system must ensure that control-flow stays on the intended legitimate path § As allowed by compiler resp. control-flow graph (CFG)

  20. Control-flow integrity (CFI) § Construct a control-flow graph (CFG) § Should be as strict as possible § Ensure that control-flow stays within CFG

  21. Control-flow integrity (CFI) § Original publication in 2005 § “Control-Flow Integrity – Principles, Implementations, and Applications“ § M. Abadi, M. Budiu, U. Erlingsson, J. Ligatti CCS'05 (ACM Trans. on Information and System Security (TISSEC) 13(1) Oct 2009) § § Many CFI implementations were proposed during recent years § Compiler-based § Binary-only (static rewriting)

  22. Control-flow integrity (CFI) § Construct a control-flow graph (CFG) § Should be as strict as possible § Ensure that control-flow stays within CFG § If no path within the CFG can be misused by an attacker then the CFI policy can be considered secure

  23. Control-flow integrity (CFI) Basic block Direct branch Indirect branch

  24. Hijacked control-flow ret Basic block Direct branch Indirect branch

  25. Control-flow integrity (CFI) Basic block Direct branch Indirect branch

  26. Control-flow integrity (CFI) Basic block Direct branch Indirect branch under CFI

  27. Control-flow integrity (CFI) Basic block Direct branch Indirect branch under CFI

  28. Control-flow integrity (CFI) CFI VIOLATION Basic block Direct branch Indirect branch under CFI

  29. Control-flow integrity (CFI) § Drawbacks of proposed solutions § Too permissive CFG due to over-approximation § Need to recompile § No support for shared libraries § Most solutions shown to be ineffective § “Hardened” exploits still worked under CFI

  30. Control-flow integrity (CFI) § Static CFI not enough: Dynamic approach necessary § Dynamic CFI 41

  31. Lockdown – dynamic CFI § Enforces a strict CFI policy for binaries § Supports shared libraries & dynamic loading § Constructs and enforces CFG at runtime § Using static and dynamic information

  32. Lockdown – dynamic CFI Lockdown Lockdown Loader Binary Translator CFT Verifier Domain translate() Loads ELF DSOs Code Cache /bin/<exe> libc.so.6 printf() main' main() Application Run-time ICF func1() func2' ELF validation Domain Files func2() printf' lib* ... func*() User Kernel System Call Interface read only readable + executable CFT: Control-Flow Transfer, ICF: Indirect Control-Flow, ELF: Executable and Linkable Format, DSO: Dynamic Shared Object

  33. Beyond basic compilers § Many interesting problems exist § Opportunities for projects (BS, MS, research) § Contact me or the TAs for further information 44

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