一句话:提出持续内核模糊测试的六项配置选择需求,并调优 syzkaller 配置策略,显著发现更多新漏洞。
Linux 内核每天接收数百个补丁,模糊测试器需持续重建并重启;但现有内核模糊测试器使用预定义配置,导致多数新补丁未进入内核二进制,持续模糊测试收益被削弱。现有配置测试技术要么遗漏必要选项,要么所需配置文件过多,难以用于持续场景。本文提炼持续测试最关键的六项属性,系统分析配置选择策略空间并给出可操作建议,发现可在不牺牲性能下提升配置多样性。作者修改 syzkaller 的配置选择策略进行实证评估,新发现漏洞从 13 增至 35(超过两倍),唯一漏洞从 2 增至 24(12 倍),其中一个安全漏洞获 CVE 编号。
The Linux kernel is actively-developed and widely-used. It supports billions of devices of all classes, from high-performance computing to the Internet-of-Things, in part because of its sophisticated configuration system, which automatically tailors the source code according to thousands of user-provided configuration options. Fuzzing has been highly successful at finding kernel bugs, being among the top bug reporters. Since the kernel receives 100s of patches per day, fuzzers run continuously, stopping regularly to rebuild the kernel with the latest changes before restarting fuzzing. But kernel fuzzers currently use predefined configuration settings that, as we show, exclude the majority of new patches from the kernel binary, nullifying the benefits of continuous fuzzing. Unfortunately, state-of-the-art configuration testing techniques are generally ill-suited to the needs of continuous fuzzing, excluding necessary options or requiring too many configuration files to be tractable. We distill down the needs of continuous testing into six properties with the most impact, systematically analyze the space of configuration selection strategies, and provide actionable recommendations. Through our analysis, we discover that continuous fuzzers can improve configuration variety without sacrificing performance. We empirically evaluate our discovery by modifying the configuration selection strategy for syzkaller, the most popular Linux kernel fuzzer, which subsequently found more than twice as many new bugs (35 vs. 13) than with the original configuration file and 12x more (24 vs. 2) when considering only unique bugs-with one security vulnerability being assigned a CVE.