What You Corrupt Is Not What You Crash: Challenges in Fuzzing Embedded Devices

What You Corrupt Is Not What You Crash: Challenges in Fuzzing Embedded Devices

What You Corrupt Is Not What You Crash: Challenges in Fuzzing Embedded Devices Marius Muench1 Jan Stijohann2;3 Frank Kargl3 Aur´elienFrancillon1 Davide Balzarotti1 1EURECOM 2Siemens AG 3Ulm University Introduction • Embedded devices are becoming increasingly more important • Vulnerabilities go beyond misconfigurations, weak authentication, hard-coded keys, etc. • Fuzz testing is a popular and effective method for uncovering programming errors • A variety of work improves input generation and fault detection for fuzzing 1 Problem Statement How efficient are we at fuzzing embedded devices? Can we do it better? 2 Fuzzing, Corruptions & Crashes Starting Point Corruption =6 Crash 3 Embedded Devices: A minimalistic classification Type-I: Type-II: General purpose OS-based Embedded OS-based Type-III: No OS-Abstraction 4 Challenge #1: Fault Detection • Lack of basic features, such as: • Memory Management Unit (MMU) • Heap consistency checks • Canaries • Often only solution: Basic liveness checks 5 Challenge #2: Performance & Scalability • Fuzzing greatly benefits from parallelization • This would mean 1 device per instance • Frequent restarts are required • Fast for software, slow for full systems 6 Challenge #3: Instrumentation • Hard to retrieve coverage information • Tools for turning silent corruptions into observable ones rarely available • Unsupported instruction set architecturess • Operation tied to OS-specific features 7 Measuring the effect of memory corruptions • Five common types of memory corruptions • Insertion of artificial bugs in two popular open source programs • Expat • mbedTLS • Trigger condition inspired by LAVA [1] • Vulnerable programs are compiled for four different devices [1] Dolan-Gavitt, Brendan, et al. "Lava: Large-scale automated vulnerability addition." IEEE Symposium on Security and Privacy (SP), 2016. 8 Effects of Corruptions accross different systems Platform Desktop Type-I Type-II Type-III Format String 3 3 7 7 3 ! Stack-based buffer overflow 3 3 (opaque) (hang) ! Heap-based buffer overflow 3 7 7 (late crash) 7 Double Free 3 3 7 (malfunc.) 3 7 Null Pointer Dereference 3 3 (reboot) (malfunc.) 9 Possible Directions for Improvement • Static Instrumentation • Binary Rewriting • Pysical Re-Hosting • Full Emulation • Partial Emulation • Hardware-Supported Instrumentation 10 Possible Directions for Improvement • Static Instrumentation • Binary Rewriting • Pysical Re-Hosting • Full Emulation • Partial Emulation • Hardware-Supported Instrumentation 10 Leveraging (partial) emulation to improve fuzz testing Set-up: Overview Avatar2 boofuzz PANDA Embedded Device Fuzz Inputs Analysis Emulation MMIO Peripherals Plugis Figure 1: Setup for fuzzing utilizing partial emulation Code will be available at: https://github.com/avatartwo/ndss18_wycinwyc 11 Set-up: Target • The vulnerable expat program, as seen in the last part • Focus on a Type-III device • Fuzzed in four different configurations 12 Set-up: Native Avatar2 boofuzz PANDA Embedded Device Fuzz Inputs Analysis Emula�on MMIO Peripherals Plugis 1. Native (NAT) 2. Partial Emulation with Memory Forwarding (PE/MF) 3. Partial Emulation with Peripheral Modeling (PE/PM) 4. Full Emulation (FE) 13 Set-up: PE/MF Avatar2 boofuzz PANDA Embedded Device Fuzz Inputs Analysis Emula�on MMIO Peripherals Plugis 1. Native (NAT) 2. Partial Emulation with Memory Forwarding (PE/MF) 3. Partial Emulation with Peripheral Modeling (PE/PM) 4. Full Emulation (FE) 14 Set-up: PE/PM Avatar2 boofuzz PANDA Embedded Device Fuzz Inputs Analysis Emula�on MMIO Peripherals Plugis 1. Native (NAT) 2. Partial Emulation with Memory Forwarding (PE/MF) 3. Partial Emulation with Peripheral Modeling (PE/PM) 4. Full Emulation (FE) 15 Set-up: FE Avatar2 boofuzz PANDA Embedded Device Fuzz Inputs Analysis Emula�on MMIO Peripherals Plugis 1. Native (NAT) 2. Partial Emulation with Memory Forwarding (PE/MF) 3. Partial Emulation with Peripheral Modeling (PE/PM) 4. Full Emulation (FE) 16 Set-up: Fuzzer • boofuzz [2], a python-based fuzzer based on Sulley • Configured to trigger the corruptions with different ratios • Used for 100 fuzzing sessions over one hour each [2] https://github.com/jtpereyda/boofuzz 17 Set-up: Corruption Detection Avatar2 boofuzz PANDA Embedded Device Fuzz Inputs Analysis Emula�on MMIO Peripherals Plugis 1. Native (NAT) 2. Partial Emulation with Memory Forwarding (PE/MF) 3. Partial Emulation with Peripheral Modeling (PE/PM) 4. Full Emulation (FE) 18 Set-up: Corruption Detection Avatar2 boofuzz PANDA Embedded Device Fuzz Inputs Analysis Emula�on MMIO Peripherals Plugis 1. Native (NAT) 2. Partial Emulation with Memory Forwarding (PE/MF) 3. Partial Emulation with Peripheral Modeling (PE/PM) 4. Full Emulation (FE) 19 Set-up: Corruption detection • 6 simple heuristics, monitoring the execution: 1. Segment Tracking 2. Format Specifier Tracking 3. Heap Object Tracking 4. Call Stack Tracking 5. Call Frame Tracking 6. Stack Object Tracking 20 Measuring Fuzzing Throughput No Heuristics: Native Partial Emulation/Memory Forwarding Partial Emulation/Peripheral Modeling Full Emulation 104 Combined Heuristics: Partial Emulation/Memory Forwarding' Partial Emulation/Peripheral Modeling' Full Emulation' #Inputs 103 102 0 5 10 Corruption Ratio [%] 21 Discussion, Future Work & Conclusion Insights from the experiments • Liveness checks only is a poor strategy • Full emulation is good - but rarely possible • Partial emulation can already help • But introduces significant performance overhead 22 Limitations and Future Work • We focused on improving fault detection • Other challenges of fuzzing (e.g., input generation) not addressed in this work • Our experiments focused on artificial vulnerabilities • Good for improving our initial understanding • We investigated solutions based on partial emulation • Other approaches still open for research 23 Conclusion • Fuzzing embedded devices requires a paradigm shift • (Partial) emulation can improve fault detection • We need good emulators • Fuzzing of embedded devices needs more investigation 24.

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    29 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us