Fuzz testing is often automated, but also frequently augmented by experts who insert themselves into the workflow in a greedy search for bugs. In this paper, we propose Homo in Machina, or HM-fuzzing, in which analyses guide the manual efforts, maximizing benefit. As one example of this paradigm, we introduce compartment analysis. Compartment analysis uses a whole-program dominator analysis to estimate the utility of reaching new code, and combines this with a dynamic analysis indicating drastically under-covered edges guarding that code. This results in a prioritized list of compartments, i.e., large, uncovered parts of the program semantically partitioned and largely unreachable given the current corpus of inputs under consideration. A human can use this categorization and ranking of compartments directly to focus manual effort, finding or fashioning inputs that make the compartments available for future fuzzing. We evaluate the effect of compartment analysis on seven projects within the OSS-Fuzz corpus where we see coverage improvements over AFL++ as high as 94%, with a median of 13%. We further observe that the determination of compartments is highly stable and thus can be done early in a fuzzing campaign, maximizing the potential for impact.
翻译:模糊测试通常是自动化的,但也经常有专家在贪婪地寻找错误时插入工作流程。 在本文中,我们建议Machina 的智者或 HM-fozzing, 分析指导手工工作, 最大化效益。 作为这一范例的一个例子, 我们引入了隔间分析。 分解分析使用全程序管理器分析来估计达到新代码的效用, 并结合动态分析, 显示保护该代码的边缘覆盖程度极低。 这导致一个优先的包厢清单, 即, 大型的、 未披露的部分, 程序在语义上被分割, 并且由于目前考虑的投入量众多, 基本上无法查阅。 人可以使用这种隔间分类和排序来直接集中手工工作, 寻找或形成投入, 使隔间能够在未来进行模糊。 我们评估对开放源码软件中七个项目的包厢分析的效果, 在那里我们看到AFL++的覆盖率高达94%, 中位为13 % 。 我们还观察到, 车厢的确定是高度稳定的, 因此, 能够尽早完成烟雾运动的潜力。