Bounded model checking (BMC) and fuzzing techniques are among the most effective methods for detecting errors and security vulnerabilities in software. However, there are still shortcomings in detecting these errors due to the inability of extant methods to cover large areas in target code. We propose FuSeBMC v4, a test generator that synthesizes seeds with useful properties, that we refer to as smart seeds, to improve the performance of its hybrid fuzzer thereby achieving high C program coverage. FuSeBMC works by first analyzing and incrementally injecting goal labels into the given C program to guide BMC and Evolutionary Fuzzing engines. It ranks these goal labels according to a user-defined strategy. After that, the engines are employed for an initial period to produce the so-called smart seeds. Finally, the engines are run again, with these smart seeds as starting seeds, in an attempt to achieve maximum code coverage / find bugs. During both seed generation and normal running, coordination between the engines is aided by the Tracer subsystem. This subsystem carries out additional coverage analysis and updates a shared memory with information on goals covered so far. Furthermore, the Tracer evaluates test cases dynamically to convert cases into seeds for subsequent test fuzzing. Thus, the BMC engine can provide the seed that allows the fuzzing engine to bypass complex mathematical guards (e.g., input validation). As a result, we received three awards for participation in the fourth international competition in software testing (Test-Comp 2022), outperforming all state-of-the-art tools in every category, including the coverage category.
翻译:测试模型检查(BMC)和模糊技术是发现软件错误和安全弱点的最有效方法之一。然而,由于现有方法无法覆盖目标代码中的大片地区,检测这些错误方面仍然存在缺陷。我们提议FusBMC v4, 测试生成器将种子合成有用特性,我们称之为智能种子,以提高混合模糊器的性能,从而实现高C程序覆盖率。FOSBMC首先分析并逐步向给给定的C类程序注入目标标签,以指导BMC和进化模糊引擎。它根据用户定义的战略排列这些目标标签。此后,这些引擎被初步用于生产所谓的智能种子。最后,引擎再次运行,这些智能种子作为种子,以达到最大代码覆盖率/找到错误。在种子生成和正常运行期间,引擎之间的协调由 Tracer 子系统协助。这个子系统可以进行更多的覆盖分析,并更新目标信息中的共享记忆。此外, Trackrestr 将所有种子测试案例转换为FORCR, 包括FI IMR 测试中的所有动态测试案例。</s>