FuzzBox: Blending Fuzzing into Emulation for Binary-Only Embedded Targets
It solves the problem of fuzzing closed-source embedded systems for security researchers and developers, though the approach is incremental as it combines existing techniques.
FuzzBox integrates emulation with fuzzing to enable coverage-guided fuzzing for binary-only embedded targets without source code or recompilation. It successfully found vulnerabilities in a proprietary MILS hypervisor and demonstrated portability across commercial IoT firmware.
Coverage-guided fuzzing has been widely applied to address zero-day vulnerabilities in general-purpose software and operating systems. This approach relies on instrumenting the target code at compile time. However, applying it to industrial systems remains challenging, due to proprietary and closed-source compiler toolchains and lack of access to source code. FuzzBox addresses these limitations by integrating emulation with fuzzing: it dynamically instruments code during execution in a virtualized environment, for the injection of fuzz inputs, failure detection, and coverage analysis, without requiring source code recompilation and hardware-specific dependencies. We show the effectiveness of FuzzBox through experiments in the context of a proprietary MILS (Multiple Independent Levels of Security) hypervisor for industrial applications. Additionally, we analyze the applicability of FuzzBox across commercial IoT firmware, showcasing its broad portability.