Embedded systems with their diverse, interconnected components form the backbone of our digital infrastructure. Despite their importance, analyzing their security in a scalable way has remained elusive and challenging. Recent firmware rehosting work has brought scalable, dynamic analyses to embedded systems, making fuzzing for automated vulnerability assessments feasible. As these works focus on modeling device behavior rather than fuzzing, they integrate with off-the-shelf fuzzers in an ad-hoc manner. They re-interpret traditional flat binary fuzzing input as a sequence of hardware responses. In practice, this presents the fuzzer with an input layout that is fragile, opaque, and hard to mutate effectively.
Our work is based on the insight that while firmware emulation recently matured significantly, the input space is presented to the fuzzer in an ineffective manner. We propose a novel method for a firmware-aware fuzzing integration based on multi-stream inputs. We reorganize the previously flat, sequential, and opaque firmware fuzzing input into multiple strictly typed and cohesive streams. This allows our fuzzer, HOEDUR, to perform type-aware mutations and maintain its progress. It also enables firmware fuzzing to use state-of-theart mutation techniques. Overall, we find that these techniques significantly increase fuzzing effectiveness. Our evaluation shows that HOEDUR achieves up to 5x the coverage of stateof-the-art firmware fuzzers, finds bugs that other fuzzers do not, and discovers known bugs up to 550x faster. In total, HOEDUR uncovered 23 previously unknown bugs.
History
Primary Research Area
Threat Detection and Defenses
Name of Conference
Usenix Security Symposium (USENIX-Security)
Journal
USENIX Security Symposium
Page Range
2885-2902
BibTeX
@conference{Scharnowski:Wörner:Buchmann:Bars:Schloegel:Holz:2023,
title = "Hoedur: Embedded Firmware Fuzzing using Multi-Stream Inputs.",
author = "Scharnowski, Tobias" AND "Wörner, Simon" AND "Buchmann, Felix" AND "Bars, Nils" AND "Schloegel, Moritz" AND "Holz, Thorsten",
year = 2023,
month = 8,
journal = "USENIX Security Symposium",
pages = "2885--2902"
}