What you corrupt is not what you crash: Challenges in fuzzing embedded devices

Muench, Marius; Stijohann, Jan; Kargl, Frank; Francillon, Aurélien; Balzarotti, Davide

As networked embedded systems are becoming more ubiquitous, their security is becoming critical to our daily life. While manual or automated large scale analysis of those systems regularly uncover new vulnerabilities, the way those systems are analyzed follows often the same approaches used on desktop systems. More specifically, traditional testing approaches relies on observable crashes of a program, and binary instrumentation techniques are used to improve the detection of those faulty states. In this paper, we demonstrate that memory corruptions, a common class of security vulnerabilities, often result in different behavior on embedded devices than on desktop systems. In particular, on embedded devices, effects of memory corruption are often less visible. This reduces significantly the effectiveness of traditional dynamic testing techniques in general, and fuzzing in particular. Additionally, we analyze those differences in several categories of embedded devices and show the resulting impact on firmware analysis. We further describe and evaluate relatively simple heuristics which can be applied at run time (on an execution trace or in an emulator), during the analysis of an embedded device to detect previously undetected memory corruptions.

San Diego
Digital Security
Eurecom Ref:
© ISOC. Personal use of this material is permitted. The definitive version of this paper was published in and is available at : http://dx.doi.org/10.14722/NDSS.2018.23166

PERMALINK : https://www.eurecom.fr/publication/5417