enhancing memory error detection for large scale
play

Enhancing Memory Error Detection for Large-Scale Applications and - PowerPoint PPT Presentation

Enhancing Memory Error Detection for Large-Scale Applications and Fuzz testing Wookhyun Han , Byunggil Joe, Byoungyoung Lee * , Chengyu Song , Insik Shin KAIST, * Purdue, UCR 1 Memory error glibc: getaddrinfo Heartbleed Shellshock


  1. Enhancing Memory Error Detection for Large-Scale Applications and Fuzz testing Wookhyun Han , Byunggil Joe, Byoungyoung Lee * , Chengyu Song † , Insik Shin KAIST, * Purdue, † UCR 1

  2. Memory error glibc: getaddrinfo Heartbleed Shellshock stack-based buffer overflow • Information leakage – Heartbleed • Privilege escalation – Shellshock • Remote code execution – Shellshock, glibc, Conficker 2

  3. Memory error detection • Pointer-based [SoftBound+CETS, Intel MPX] • Hardware support (cannot detect temporal memory errors) • Challenges to support complex applications • Redzone-based [AddressSanitizer (ASan)] • Compatible to complex applications • Most popular in practice  Google Chrome, Mozilla Firefox, Linux Kernel  American Fuzzy Lop (AFL), ClusterFuzz, OSS-Fuzz 3

  4. Redzone-based memory error detection • Buffer overflow (spatial memory errors) ptrX Shadow memory: a bitmap to validate all addresses objX Check before access Shadow memory Accessible 4

  5. Redzone-based memory error detection • Buffer overflow (spatial memory errors) ptrX Shadow memory: a bitmap to validate all addresses objX Check before Redzone: inaccessible access region between objects Shadow memory Accessible Inaccessible (redzone) 4

  6. Redzone-based memory error detection • Buffer overflow (spatial memory errors) ptrX Shadow memory: a bitmap to validate all addresses objX Redzone: inaccessible Error! region between objects Shadow memory Accessible Inaccessible (redzone) 4

  7. Redzone-based memory error detection • Use-after-free (temporal memory errors) ptrX objX Accessible Inaccessible Shadow memory 5

  8. Redzone-based memory error detection • Use-after-free (temporal memory errors) ptrX ptrX free(ptrX) objX Region is invalidated Quarantined and quarantined, but not actually deallocated Accessible Inaccessible Shadow memory 5

  9. Redzone-based memory error detection • Use-after-free (temporal memory errors) ptrX ptrX Hold the free(ptrX) objX region until Quarantined quarantine zone is full (FIFO) Accessible Inaccessible Shadow memory 5

  10. Redzone-based memory error detection • Use-after-free (temporal memory errors) ptrX ptrY ptrX ptrY = malloc() free(ptrX) objX objY Quarantined The region is actually deallocated, and can be allocated to a new object Accessible Inaccessible Shadow memory 5

  11. Limitations of redzone-based approach 1. What if a pointer accesses beyond redzone? ptrX objX objY 6

  12. Limitations of redzone-based approach 1. What if a pointer accesses beyond redzone? objX ptrX objY Spatial memory error 6

  13. Limitations of redzone-based approach 1. What if a pointer 2. What if a dangling pointer accesses beyond accesses after another object redzone? is allocated in the region? objX ptrX ptrX objX objY Spatial memory error 6

  14. Limitations of redzone-based approach 1. What if a pointer 2. What if a dangling pointer accesses beyond accesses after another object redzone? is allocated in the region? objX ptrX ptrX ptrX objX objZ objY Temporal memory error Spatial memory error 6

  15. Limitations of redzone-based approach 1. What if a pointer 2. What if a dangling pointer accesses beyond accesses after another object redzone? is allocated in the region? objX ptrX ptrX Cannot detect! ptrX objX objZ objY Temporal memory error Spatial memory error 6

  16. Motivation P1 • To enhance detectability of redzone- obj1 based memory error detection • P1. Large gap to detect spatial memory errors P1 • P2. Large quarantine zone to detect temporal memory errors obj1 P1 7

  17. Motivation P1 • To enhance detectability of redzone- P2 obj1 obj1 based memory error detection • P1. Large gap to detect spatial memory errors P1 • P2. Large quarantine zone to detect temporal memory errors P2 obj1 obj2 P1 7

  18. Motivation P1 • To enhance detectability of redzone- P2 obj1 obj1 based memory error detection • P1. Large gap to detect spatial memory errors P1 • P2. Large quarantine zone to detect temporal memory errors P2 obj1 obj2 Huge physical memory P1 required 7

  19. MEDS overview • Enhances detectability of redzone-based memory error detection • Idea: Fully utilize 64-bit virtual address space to support • P1. Large gap to detect spatial error • P2. Large quarantine zone to detect temporal error • Approach : minimize physical memory use • Page aliasing allocator and page protection • Hierarchical memory error detection 8

  20. Page aliasing (P1) • Maps multiple virtual pages to single physical page Virtual obj1 A memory page obj2 Allocated Redzone Page aliasing obj4 9

  21. Page aliasing (P1) • Maps multiple virtual pages to single physical page Virtual obj1 Physical obj1 obj2 A memory page obj3 obj2 obj4 Allocated Redzone Page aliasing obj4 9

  22. Page aliasing (P1) • Maps multiple virtual pages to single physical page Virtual obj1 Redzone itself does not occupy physical memory Physical obj1 obj2 A memory page obj3 obj2 obj4 Allocated Redzone Page aliasing obj4 9

  23. Page protection (P1) • Redzone only pages are unmapped Virtual obj1 Physical obj1 A memory page obj2 obj3 Unmapped page obj4 obj2 Allocated Redzone Page aliasing 10

  24. Page protection (P1) • Redzone only pages are unmapped Do not occupy shadow memory and physical Virtual memory obj1 Physical obj1 A memory page obj2 obj3 Unmapped page obj4 obj2 Allocated Redzone Page aliasing 10

  25. Page aliasing & Page protection (P2) Virtual obj1 Physical obj1 obj2 A memory page obj3 obj4 Unmapped page obj4 Allocated Redzone Page aliasing 11

  26. Page aliasing & Page protection (P2) Virtual Virtual obj1 Quarantined Physical Physical obj1 obj2 obj2 A memory page obj3 obj3 obj4 obj4 Unmapped page obj4 obj4 Allocated Redzone Page aliasing 11

  27. Page aliasing & Page protection (P2) Virtual Virtual obj1 Quarantined Physical Physical obj1 objX obj2 obj2 A memory page obj3 obj3 obj4 obj4 Unmapped page obj4 obj4 Allocated objX Redzone Page aliasing 11

  28. Page aliasing & Page protection (P2) Virtual Virtual Reuse physical obj1 memory immediately, Quarantined while not reusing virtual addresses Physical Physical obj1 objX obj2 obj2 A memory page obj3 obj3 obj4 obj4 Unmapped page obj4 obj4 Allocated objX Redzone Page aliasing 11

  29. Hierarchical memory error detection • Many different ways to represent redzones  Further optimizing physical memory uses ptr 12

  30. Hierarchical memory error detection • Many different ways to represent redzones  Further optimizing physical memory uses ptr #1. Shadow memory is invalid 12

  31. Hierarchical memory error detection • Many different ways to represent redzones  Further optimizing physical memory uses ptr #1. Shadow memory is invalid #2. Virtual page is unmapped 12

  32. Hierarchical memory error detection • Many different ways to represent redzones  Further optimizing physical memory uses ptr #1. Shadow memory is invalid #2. Virtual page is unmapped #3. Shadow memory is unmapped 12

  33. Evaluation • Configuration ASan MEDS Improv. Redzone 8-1024 bytes 4MB 16,384x Quarantine 128MB 80TB 65,536x • ASan cannot use configuration for MEDS (lack of memory) • Compatibility • Performance: 2 times slowdown • Detection (fuzz testing): 68% more detection 13

  34. Compatibility • Unit tests from real-world applications • Test cases in Chrome, Firefox, Nginx • All Passed • Memory error unit tests • ASan unit tests • All Passed • NIST Juliet test suites • All Passed except random access tests  ASan: 35% vs. MEDS: 98% 14

  35. Micro-scale performance overhead • TLB misses • 5 times more than ASan (more virtual pages with page aliasing ) • Number of system calls • mmap(), munmap(), and mremap() • 32 times more than ASan ( page aliasing and page protection ) • Memory footprint • 218% more than baseline • 68% more than ASan (much larger redzone and quarantine ) 15

  36. End-to-end performance overhead • 108% compared to baseline, 86% to ASan 4 3 2 1 Baseline 0 Chrome Firefox Apache Nginx ASan MEDS 16

  37. End-to-end performance overhead • 108% compared to baseline, 86% to ASan 4 41% to baseline 3 22% to ASan 2 1 Baseline 0 Chrome Firefox Apache Nginx ASan MEDS 16

  38. End-to-end performance overhead Large number of • 108% compared to baseline, 86% to ASan small objects on 4 stack 41% to baseline 3 243% to baseline 22% to ASan 211% to ASan 2 1 Baseline 0 Chrome Firefox Apache Nginx ASan MEDS 16

  39. Detection (fuzz testing) • Run AFL (8 cores, 6 hours) • Despite the performance overhead, explore 68.3% more unique crashes than ASan 4 3.5 3 2.5 2 1.5 ASan 1 0.5 0 17

  40. Detection (fuzz testing) • Run AFL (8 cores, 6 hours) • Despite the performance overhead, explore 68.3% more unique crashes than ASan MEDS finds more unique crashes in 4 3.5 initial phase, but saturated in the end 3 2.5 2 1.5 ASan 1 0.5 0 17

  41. Detection (fuzz testing) • Number of unique crashes with time spent (metacam) 70 Saturated 60 Found crashes 50 40 30 20 10 0 1 2 3 4 5 6 7 8 Time spent (hrs) ASan MEDS 18

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