一、来源
1、2017,S&P
2、作者:Junjie Wang, Bihuan Chen†, Lei Wei, and Yang Liu Nanyang Technological University, Singapore {wang1043, bhchen, l.wei, yangliu}@ntu.edu.sg †Corresponding Author
3、主题:fuzzing、种子生成、PCSG
二、摘要
1、内容
将高度结构化文件作为输入的程序通常分阶段处理输入:语法分析,语义检查和应用程序执行。深度错误通常隐藏在应用程序执行阶段,自动生成测试输入以触发它们并非易事。基于突变的模糊测试通过随机或启发式修改良好形成的种子输入来生成测试输入。大多数输入在早期语法分析阶段被拒绝。 不同的是,基于生成的模糊测试从规范(例如,语法)生成输入。他们可以在语法分析阶段之外快速进行模糊测试。然而,大多数输入未能通过语义检查(例如,违反语义规则),这限制了它们发现深度错误的能力。
在本文中,我们提出了一种新的数据驱动的种子生成方法,名为Skyfire,它利用大量现有样本中的知识,为处理高度结构化输入的模糊程序生成分布均匀的种子输入。Skyfire将语料库和语法作为输入,包括两个步骤。Skyfire的第一步学习概率上下文敏感语法(PCSG)以指定语法特征和语义规则,然后第二步利用学习的PCSG生成种子输入。
我们将收集的样本和Skyfire生成的输入作为AFL的种子,以模糊几个开源XSLT和XML引擎(即Sablotron,libxslt和libxml2)。结果表明,Skyfire可以生成分布均匀的输入,从而显着提高代码覆盖率(即线路覆盖率为20%,平均功能覆盖率为15%)以及模糊器的漏洞发现能力。我们还使用了Skyfire生成的输入来模糊闭源JavaScript和Internet Explorer 11的渲染引擎。总共发现了19个新的内存损坏错误(其中有16个新的漏洞)和32个拒绝服务的错误。
三、重点
1、PCSG学习
2、种子生成
3、实验结果评估
四、优缺点
1、优点
- 对XML、XSL这样的高度结构化文本的效果较好。
- 提升了代码覆盖率。
2、缺点 - 对javascript的效果并不佳。
网友评论