Fuzz testing (or fuzzing) is an effective technique used to find security vulnerabilities. It consists of feeding a software under test with malformed inputs, waiting for a weird system behaviour (often a crash of the system). Over the years, different approaches have been developed, and among the most popular lies the coverage-based one. It relies on the instrumentation of the system to generate inputs able to cover as much code as possible. The success of this approach is also due to its usability as fuzzing techniques research approaches that do not require (or only partial require) human interactions. Despite the efforts, devising a fully-automated fuzzer still seems to be a challenging task. Target systems may be very complex; they may integrate cryptographic primitives, compute and verify check-sums and employ forks to enhance the system security, achieve better performances or manage different connections at the same time. This paper introduces the fork-awareness property to express the fuzzer ability to manage systems using forks. This property is leveraged to evaluate 14 of the most widely coverage-guided fuzzers and highlight how current fuzzers are ineffective against systems using forks.
翻译:Fuzz测试(或fuzzing)是用来寻找安全弱点的有效技术,它包括用错误的投入输入正在测试的软件,等待奇怪的系统行为(通常是系统崩溃)。多年来,已经开发了不同的方法,最受欢迎的方法之一是基于覆盖的方法。它依靠系统的仪器来生成能够覆盖尽可能多的代码的投入。这个方法的成功还由于它作为不要求(或只是部分需要)人类互动的模糊技术研究方法的可用性。尽管做了这些努力,设计一个完全自动化的烟雾器似乎仍是一项挑战性的任务。目标系统可能非常复杂;它们可能整合加密原始系统、编译和核查校验总和,并同时使用叉子加强系统安全、实现更好的性能或管理不同的连接。本文介绍了用于表达用于控制系统而不需要(或只是部分需要)的模糊技术的特性。这个特性被用来评估14个最广泛覆盖的烟雾器,并突出当前烟雾器如何对使用系统无效。