Leveraging SystemC-TLM-based Virtual Prototypes for Embedded Software Fuzzing
By: Chiara Ghinami , Jonas Winzer , Nils Bosbach and more
Potential Business Impact:
Tests computer programs before they are built.
SystemC-based virtual prototypes have emerged as widely adopted tools to test software ahead of hardware availability, reducing the time-to-market and improving software reliability. Recently, fuzzing has become a popular method for automated software testing due to its ability to quickly identify corner-case errors. However, its application to embedded software is still limited. Simulator tools can help bridge this gap by providing a more powerful and controlled execution environment for testing. Existing solutions, however, often tightly couple fuzzers with built-in simulators that lack support for hardware peripherals and of- fer limited flexibility, restricting their ability to test embedded software. To address these limitations, we present a framework that allows the integration of American-Fuzzy-Lop-based fuzzers and SystemC-based simulators. The framework provides a harness to decouple the adopted fuzzer and simulator. In addition, it intercepts peripheral accesses and queries the fuzzer for values, effectively linking peripheral behavior to the fuzzer. This solution enables flexible interchangeability of peripher- als within the simulation environment and supports the interfacing of different SystemC-based virtual prototypes. The flexibility of the pro- posed solution is demonstrated by integrating the harness with different simulators and by testing various softwares.
Similar Papers
Scalable Software Testing in Fast Virtual Platforms: Leveraging SystemC, QEMU and Containerization
Software Engineering
Tests computer parts before they are made.
TurboFuzz: FPGA Accelerated Hardware Fuzzing for Processor Agile Verification
Hardware Architecture
Tests computer chips faster and better.
FuzzBox: Blending Fuzzing into Emulation for Binary-Only Embedded Targets
Cryptography and Security
Finds hidden bugs in closed software without source code.