论文标题

基于功能重要性的模糊性通过摘要控制流程图

Fuzzing Based on Function Importance by Interprocedural Control Flow Graph

论文作者

Wang, Wenshuo, Cheng, Liang, Zhang, Yang

论文摘要

诸如AFL之类的基于覆盖范围的Graybox Fuzzer(CGF),由于其易于使用和发现漏洞的能力,在脆弱性检测中取得了巨大成功。由于某些代码片段(例如内存分配)比其他代码片段更脆弱,因此已经提出了各种改进的技术来通过从测试程序或其执行程序中收集额外信息来探索更脆弱的领域。但是,这些改进仅考虑有限类型的信息源,而忽略了这样一个事实,即要掩盖的种子输入的优先级可能会受到其涵盖的所有代码的影响。基于上述观察结果,我们根据功能的重要性提出了一种模糊方法。首先,设计了一个称为属性的概要控制流程图(AICFG)的数据结构,以结合代码片段的不同特征。其次,根据改进的Pagerank算法计算AICFG中每个节点的重要性,该算法也建模了连接的节点之间的影响。在模糊过程中,节点重要性通过传播算法定期更新。然后,种子输入的种子选择和能量调度取决于其执行跟踪的重要性。我们在AFL的顶部将这种方法在名为Funafl的工具中实施,并对针对AFL及其两个改进的14个现实世界计划进行评估。 Funafl平均比其他分支高17%,发现13个错误,其中3个错误在72小时后被CVE确认。

Coverage-based graybox fuzzer (CGF), such as AFL has gained great success in vulnerability detection thanks to its ease-of-use and bug-finding power. Since some code fragments such as memory allocation are more vulnerable than others, various improving techniques have been proposed to explore the more vulnerable areas by collecting extra information from the program under test or its executions. However, these improvements only consider limited types of information sources and ignore the fact that the priority a seed input to be fuzzed may be influenced by all the code it covers. Based on the above observations, we propose a fuzzing method based on the importance of functions. First, a data structure called Attributed Interprocedural Control Flow Graph (AICFG) is devised to combine different features of code fragments. Second, the importance of each node in the AICFG is calculated based on an improved PageRank algorithm, which also models the influence between connected nodes. During the fuzzing process, the node importance is updated periodically by a propagation algorithm. Then the seed selection and energy scheduling of a seed input are determined by the importance of its execution trace. We implement this approach on top of AFL in a tool named FunAFL and conduct an evaluation on 14 real-world programs against AFL and two of its improvements. FunAFL, with 17% higher branch coverage than others on average, finds 13 bugs and 3 of them are confirmed by CVE after 72 hours.

扫码加入交流群

加入微信交流群

微信交流群二维码

扫码加入学术交流群,获取更多资源