TL;DR
This paper introduces pararehosting, a systematic approach to rehost microcontroller firmware on commodity hardware by abstracting MCU functionalities and replacing hardware-specific logic, enabling easier bug detection and testing.
Contribution
It proposes a portable MCU abstraction (PMCU) and HAL-based peripheral replacement, facilitating seamless rehosting of MCU OSs on x86 hardware with high reusability and efficiency.
Findings
Successfully rehosted nine MCU OSs including FreeRTOS, Mbed OS, Zephyr, LiteOS.
Discovered 28 previously unknown bugs using dynamic analysis tools.
Confirmed 5 bugs with CVE, others verified by vendors.
Abstract
Finding bugs in microcontroller (MCU) firmware is challenging, even for device manufacturers who own the source code. The MCU runs different instruction sets than x86 and exposes a very different development environment. This invalidates many existing sophisticated software testing tools on x86. To maintain a unified developing and testing environment, a straightforward way is to re-compile the source code into the native executable for a commodity machine (called rehosting). However, ad-hoc re-hosting is a daunting and tedious task and subject to many issues (library-dependence, kernel-dependence and hardware-dependence). In this work, we systematically explore the portability problem of MCU software and propose pararehosting to ease the porting process. Specifically, we abstract and implement a portable MCU (PMCU) using the POSIX interface. It models common functions of the MCU cores.…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Code & Models
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
