论文标题
二进制级别的指示fuzzing用于无使用后的漏洞
Binary-level Directed Fuzzing for Use-After-Free Vulnerabilities
论文作者
论文摘要
定向模糊的重点是利用其他信息,例如(部分)错误堆栈跟踪,补丁或风险操作来自动测试代码的特定部分。关键应用程序包括错误复制,补丁测试和静态分析报告验证。尽管最近有指导的模糊引起了很多关注,但诸如无用后(UAF)之类的难以检测的漏洞仍未得到很好的解决,尤其是在二进制层面上。我们提出了Uafuzz,这是专门针对UAF错误的第一个(二进制)的灰色灰盒绒毛。该技术采用了针对UAF细节量身定制的模糊引擎,轻质代码仪器和有效的错误分类步骤。实际病例中的错误复制的实验评估表明,就故障检测率,暴露时间和虫子分庭而言,UAFUZZ的表现明显优于最先进的指示绒毛。 UAFUZZ也已被证明在补丁测试中有效,从而在Perl,GPAC和GNU补丁等程序中发现了30个新错误(7 CVE)。最后,我们为社区提供了专门针对UAF的大型基准,并建立在真实的代码和实际错误上。
Directed fuzzing focuses on automatically testing specific parts of the code by taking advantage of additional information such as (partial) bug stack trace, patches or risky operations. Key applications include bug reproduction, patch testing and static analysis report verification. Although directed fuzzing has received a lot of attention recently, hard-to-detect vulnerabilities such as Use-After-Free (UAF) are still not well addressed, especially at the binary level. We propose UAFuzz, the first (binary-level) directed greybox fuzzer dedicated to UAF bugs. The technique features a fuzzing engine tailored to UAF specifics, a lightweight code instrumentation and an efficient bug triage step. Experimental evaluation for bug reproduction on real cases demonstrates that UAFuzz significantly outperforms state-of-the-art directed fuzzers in terms of fault detection rate, time to exposure and bug triaging. UAFuzz has also been proven effective in patch testing, leading to the discovery of 30 new bugs (7 CVEs) in programs such as Perl, GPAC and GNU Patch. Finally, we provide to the community a large fuzzing benchmark dedicated to UAF, built on both real codes and real bugs.