APP下载

Digger:采用新路径记录方法的fuzzing工具

2021-03-19梁洪亮陈奕修裴霄潇谢卓思

北京理工大学学报 2021年2期
关键词:程序

梁洪亮, 陈奕修, 裴霄潇, 谢卓思

(北京邮电大学 计算机学院,北京 100876)

本文关注软件测试的两个重要技术:fuzzing和混合执行. fuzzing背后的关键思想是生成大量测试用例并将其提供给目标程序,以便发现潜在的缺陷. fuzzing的原则之一是最大化计算资源的使用. 研究人员可能希望他们的fuzzer(即fuzzing工具)每秒评估上百万个测试用例[1]. 然而,由于其固有的盲目性(即在测试用例生成过程期间缺乏足够的引导),fuzzer通常不能到达目标程序较深的代码分支. 相比之下,混合执行使用白盒方法来生成测试用例,这可以引导目标程序执行某些路径. 从理论上讲,它可以覆盖大多数程序路径. 然而,路径爆炸、约束求解等实际挑战使其成为一种耗时且相对复杂的技术[2].

因此,fuzzing和混合执行之间互补的优势使得它们的组合成为有价值的研究方向. 例如,Stephens等[3]实现了一个名为Driller的二进制分析工具. Driller的设计基于以下观察:程序的输入可以分为两类:“一般输入”,具有广泛的有效值,“特定输入”,只能从几个可能的值中选择. “特定输入”将程序分成几个区域,这些区域中不同的程序路径映射到不同的“一般输入”,并且这些“一般输入”可以通过fuzzing来产生. 此外,由于混合执行有出色的约束求解能力,因此它适合于生成“特定输入”. 实验显示,这种以混合执行为辅、fuzzing为主的方法找的程序缺陷数量要超过单独使用fuzzing和混合执行找到的程序缺陷数量的总和.

但是,由于无法区分同一函数的不同调用,Driller可能会……

登录APP查看全文

猜你喜欢

程序
给Windows添加程序快速切换栏
试论我国未决羁押程序的立法完善
失能的信仰——走向衰亡的民事诉讼程序
“程序猿”的生活什么样
英国与欧盟正式启动“离婚”程序程序
基于VMM的程序行为异常检测
侦查实验批准程序初探
我国刑事速裁程序的构建
创卫暗访程序有待改进
恐怖犯罪刑事诉讼程序的完善