一句话:提出静态分析与二进制重写平台 InstruGuard,自动发现并修复覆盖率灰盒模糊测试中的插桩错误,提升漏洞发现能力。
基于覆盖率的灰盒模糊测试依赖编译期轻量插桩获取细粒度覆盖率反馈,但插桩存在漏插与冗余插桩两类错误;实验表明这类问题在不同模糊器与不同编译优化级别下普遍且严重,会损害模糊测试效果。本文设计并实现开源平台 InstruGuard:通过对目标二进制进行静态分析检测插桩错误,并基于二进制重写提供通用修复方案。作者构建了包含 15 个真实程序的数据集,选取 6 个代表性模糊器,在不同编译优化选项下检查并修复插桩二进制,从执行路径、行覆盖率和真实漏洞发现三方面对比修复前后的模糊测试效果。结果表明 InstruGuard 能纠正不同模糊器的插桩错误,帮助发现更多缺陷,并发现了一个此前被其他模糊器遗漏的新零日漏洞。
As one of the most successful methods at vulnerability discovery, coverage-based greybox fuzzing relies on the lightweight compile-time instrumentation to achieve the fine-grained coverage feedback of the target program. Researchers improve it by optimizing the coverage metrics without questioning the correctness of the instrumentation. However, instrumentation errors, including missed instrumentation locations and redundant instrumentation locations, harm the ability of fuzzers. According to our experiments, it is a common and severe problem in various coverage-based greybox fuzzers and at different compiler optimization levels.In this paper, we design and implement InstruGuard, an open-source and pragmatic platform to find and fix instrumentation errors. It detects instrumentation errors by static analysis on target binaries, and fixes them with a general solution based on binary rewriting. To study the impact of instrumentation errors and test our solutions, we built a dataset of 15 real-world programs and selected 6 representative fuzzers as targets. We used InstruGuard to check and repair the instrumented binaries with different fuzzers and different compiler optimization options. To evaluate the effectiveness of the repair, we ran the fuzzers with original instrumented programs and the repaired ones, and compared the fuzzing results from aspects of execution paths, line coverage, and real bug findings. The results showed that InstruGuard had corrected the instrumentation errors of different fuzzers and helped to find more bugs in the dataset. Moreover, we discovered one new zero-day vulnerability missed by other fuzzers with fixed instrumentation but without any changes to the fuzzers.
DOI 原文 ·
@inproceedings{paperbot6597,
title = {InstruGuard: Find and Fix Instrumentation Errors for Coverage-based Greybox Fuzzing},
author = {Yuwei Liu and Yanhao Wang and Purui Su and Yuanping Yu and Xiangkun Jia},
booktitle = {ASE},
year = {2021},
doi = {10.1109/ase51524.2021.9678671}
}