Exponential growth in embedded systems is driving the research imperative to develop fuzzers to automate firmware testing to uncover software bugs and security vulnerabilities. But, employing fuzzing techniques in this context present a uniquely challenging proposition; a key problem is the need to deal with the diverse and large number of peripheral communications in an automated testing framework. Recent fuzzing approaches: i) employ re-hosting methods by executing code in an emulator because fuzzing on resource limited embedded systems is slow and unscalable; and ii) integrate models of hardware behaviour to overcome the challenges faced by the massive input-space to be explored created by peripheral devices and to generate inputs that are effective in aiding a fuzzer to make progress. Our efforts expounds upon program execution behaviours unique to firmware to address the resulting input-space search problem. The techniques we propose improve the fuzzer's ability to generate values likely to progress execution and avoids time consumed on mutating inputs that are functionally equivalent to other test cases. We demonstrate the methods are highly efficient and effective at overcoming the input-space search problem. Our emulation-based implementation, Ember-IO, when compared to the existing state-of-the-art fuzzing framework across 21 firmware binaries, demonstrates up to 255% improvement in blocks covered. Further Ember-IO discovered 6 new bugs in the real-world firmware, previously not identified by state-of-the-art fuzzing frameworks. Importantly, Ember-IO integrated with the state-of-the-art fuzzer, Fuzzware, demonstrates similar or improved coverage across all firmware binaries whilst reproducing 3 of the 6 new bugs discovered by Ember-IO.
翻译:嵌入系统内存系统中的显微增长正在推动研究的当务之急,即开发模糊器,将固态软件测试自动化,以发现软件错误和安全弱点。 但是,在此背景下使用模糊技术,提出了一个独特的富有挑战性的建议;一个关键问题是需要在自动测试框架内处理多种和大量外围通信。最近的模糊方法:i)在模拟器中执行代码,采用重新接收方法,因为对资源有限的嵌入系统进行模糊不清的缓慢和无法伸缩;ii)整合硬件行为模型,以克服即将通过外围装置探索的大规模输入空间所面临的挑战,并生成能够有效帮助模糊器取得进展的投入。我们的努力阐明了程序执行行为的独特性,以固态软件处理由此产生的输入空间搜索问题。我们提议的方法是提高模糊器生成可能推进执行的值的能力,避免对与其它测试案例相同的变异性投入消耗时间。我们证明这些方法在克服输入空间中由外围装置所生成的大规模输入空间搜索问题时是高效和有效的。我们的努力,在公司内存的精度上,在公司内存的精度框架中显示,在公司内部的升级,在公司内部内部内部内部,在前的升级框架内,在新的容器内,以显示新的显示新的升级。