ADFEmu: Enhancing Firmware Fuzzing with Direct Memory Access (DMA) Input Emulation Using Concolic Execution and Large Language Models (LLMs)
Source abstract
Abstract
Fuzz testing is a widely adopted technique for uncovering bugs and security vulnerabilities in embedded firmware. However, many embedded systems heavily rely on peripherals, rendering conventional fuzzing techniques ineffective. When peripheral responses are missing or incorrect, fuzzing a firmware may crash or exit prematurely, significantly limiting code coverage. While prior re-hosting approaches have made progress in simulating Memory-Mapped Input/Output (MMIO) and interrupt-based peripherals, they either ignore Direct Memory Access (DMA) or handle it oversimplified. In this work, we present ADFEmu, a novel automated firmware re-hosting framework that enables effective fuzzing of DMA-enabled firmware. ADFEmu integrates concolic execution with large language models (LLMs) to semantically emulate DMA operations and synthesize peripheral input sequences intelligently. Specifically, it learns DMA transfer patterns from the firmware’s context and employs guided symbolic execution to explore deeper and more diverse execution paths. This approach allows firmware to operate stably without hardware dependencies while achieving higher fidelity in emulation. Evaluated on real-world embedded firmware samples, ADFEmu achieves a 100% re-hosting success rate, improves total execution path exploration by 5.31%, and triggers more crashes compared to the state-of-the-art. These results highlight ADFEmu’s effectiveness in overcoming long-standing limitations of DMA emulation and its potential to advance automated vulnerability discovery in peripheral-rich embedded environments.
Source: openalex_inverted_index · Quality: baseline
Research context
OpenAlex topics: Software System Performance and Reliability · Scientific Computing and Data Management · Cloud Computing and Resource Management
SciVX discovery tags are terminology-based. OpenAlex topics are source-provided classifications.
References (36)
Show source-provided references
1. Global Embedded Security Market Statistical Analysis and Forecast. 2024. [Internet]. [cited 2024 Jul 5]. Available from: https://www.reportsinsights.com/industry-forecast/global-embedded-security-marketstatistical-analysis-673783.
2. SoK: Enabling security analyses of embedded systems via rehosting
3. Automatic firmware emulation through invalidity-guided knowledge inference
4. Jetset: targeted firmware rehosting for embedded systems
5. HALucinator: firmware re-hosting through abstraction layer emulation
6. IEmu: interrupt modeling from the logic hidden in the firmware10.1016/j.sysarc.2024.103237 ↗
7. Fuzzware: using precise MMIO modeling for effective firmware fuzzing
8. P2IM: scalable and hardware-independent firmware testing via automatic peripheral interface modeling
9. DICE: automatic emulation of DMA input channels for dynamic firmware analysis
10. What you corrupt is not what you crash: challenges in fuzzing embedded devices
11. FIRM-AFL: high-throughput greybox fuzzing of IoT firmware via augmented process emulation
12. FirmAE: towards large-scale emulation of IoT firmware for dynamic analysis
13. Towards automated dynamic analysis for Linux-based embedded firmware
14. Chen J, Deng L, Qiu Y, Zhao P, Lei H, Song J, et al. LLM-based automated modeling in symbolic execution for securing medical software; 2024. [cited 2024 Jun 25]. Available from: https://ssrn.com/abstract=4938953.10.2139/ssrn.4938953 ↗
15. Wang W, Liu K, Chen A, Li G, Jin Z, Huang G, et al. Python symbolic execution with LLM-powered code generation. arXiv:2409.09271. 2024. doi:10.48550/arXiv.2409.09271.
16. When fuzzing meets LLMs: challenges and opportunities
17. Fuzz4all: universal fuzzing with large language models
18. Enhancing dynamic symbolic execution by automatically learning search heuristics10.1109/TSE.2021.3101870 ↗
19. Jaffar · Fundamental Approaches to Software Engineering (FASE 2020) · 2020 · 53010.1007/978-3-030-45234-6_28 ↗
20. The fuzz odyssey: a survey on hardware fuzzing frameworks for hardware design verification
21. Mera A, Chen YH, Sun R, Kirda E, Lu L. D-box: DMA-enabled cocmpartmentalization for embedded applications; 2022. arXiv:2201.05199. doi:10.14722/ndss.2022.24053.10.14722/ndss.2022.24053 ↗
22. Breaking TrustZone memory isolation and secure boot through malicious hardware on a modern FPGA-SoC10.1007/s13389-021-00273-8 ↗
23. QEMU, a fast and portable dynamic translator
24. Gpt-4 documentation. [Internet]. [cited 2025 Jun 25]. Available from: https://platform.openai.com/docs/models/gpt-4-and-gpt-4-turbo.
25. Angr-the next generation of binary analysis
26. Modbus firmware image. [Internet]. [cited 2025 Jun 25]. Available from: https://github.com/DoHelloWorld/stm32f3_Modbus_Slave_UART-DMA-FreeRTOS.
27. Guitar pedal firmware image. [Internet]. [cited 2025 Jun 25]. Available from: https://github.com/Guitarman9119/Nucleo_Guitar_Effects_Pedal.
28. Soldering station firmware image. [Internet]. [cited 2025 Jun 25]. Available from: https://github.com/PTDreamer/stm32_soldering_iron_controller.
29. Stepper motor firmware image. [Internet]. [cited 2025 Jun 25]. Available from: https://github.com/omuzychko/StepperHub.
30. GPS receiver firmware image. [Internet]. [cited 2025 Jun 25]. Available from: https://github.com/MaJerle/stm32-usart-uart-dma-rx-tx.
31. MIDI synthesizer firmware image. [Internet]. [cited 2025 Jun 25]. Available from: https://github.com/mondaugen/stm32-codec-midi-mmdsp-test.
32. Oscilloscope firmware image. [Internet]. [cited 2025 Jun 25]. Available from: https://github.com/pingumacpenguin/STM32-O-Scope.
33. DDS-WaveGen firmware image. [Internet]. [cited 2025 Jun 25]. Available from: https://github.com/BojanSof/BluePillWaveGen.git.
34. GPS-Logger firmware image. [Internet]. [cited 2025 Jun 25]. Available from: https://github.com/MaJerle/stm32f429/blob/main/PROJECT-04-GPS_LOGGER/User/main.c.
35. PatternDriver firmware image. [Internet]. [cited 2025 Jun 25]. Available from: https://github.com/mnemocron/STM32_PatternDriver.
36. AFL++: combining incremental steps of fuzzing research