Static analysis is an important approach for finding bugs and vulnerabilities in software. However, inspecting and confirming static warnings are challenging and time-consuming. In this paper, we present a novel solution that automatically generates test cases based on static warnings to validate true and false positives. We designed a syntactic patching algorithm that can generate syntactically valid, semantic preserving executable code fragments from static warnings. We developed a build and testing system to automatically test code fragments using fuzzers, KLEE and Valgrind. We evaluated our techniques using 12 real-world C projects and 1955 warnings from two commercial static analysis tools. We successfully built 68.5% code fragments and generated 1003 test cases. Through automatic testing, we identified 48 true positives and 27 false positives, and 205 likely false positives. We matched 4 CVE and real-world bugs using Helium, and they are only triggered by our tool but not other baseline tools. We found that testing code fragments is scalable and useful; it can trigger bugs that testing entire programs or testing procedures failed to trigger.


翻译:静态分析是找到软件中的错误和弱点的一个重要方法。 然而, 检查和确认静态警告是具有挑战性和耗时性的。 在本文中, 我们提出了一个新颖的解决方案, 根据静态警告自动生成测试案例, 以验证真实和假正数。 我们设计了一个合成补丁算法, 可以在静态警告中生成合成有效、 语义保存可执行代码碎片。 我们开发了一个构建和测试系统, 使用模糊器、 KLEEE 和 Valgrind 自动测试代码碎片。 我们用12个真实世界C 工程和两个商业静态分析工具的1955 警告评估了我们的技术 。 我们成功创建了68.5% 的代码碎片并生成了1003 个测试案例。 通过自动测试, 我们发现了48个真实正和27个假正数, 以及205个可能的假正数。 我们匹配了4个CVE和真实世界错误错误的代码碎片, 使用Helium, 它们只是由我们的工具而不是其他基线工具触发的。 我们发现测试代码碎片是可缩略和有用的。 我们发现测试的; 它可以触发错误检测整个程序无法触发 。

0
下载
关闭预览

相关内容

【干货书】Linux命令行与shell脚本编程大全,第3版818页pdf
专知会员服务
62+阅读 · 2020年12月30日
专知会员服务
40+阅读 · 2020年9月6日
迁移学习简明教程,11页ppt
专知会员服务
108+阅读 · 2020年8月4日
Linux导论,Introduction to Linux,96页ppt
专知会员服务
79+阅读 · 2020年7月26日
商业数据分析,39页ppt
专知会员服务
161+阅读 · 2020年6月2日
【哈佛大学商学院课程Fall 2019】机器学习可解释性
专知会员服务
104+阅读 · 2019年10月9日
MIT新书《强化学习与最优控制》
专知会员服务
277+阅读 · 2019年10月9日
《软件方法》自测题链接二维码汇总
UMLChina
3+阅读 · 2019年8月25日
【泡泡汇总】CVPR2019 SLAM Paperlist
泡泡机器人SLAM
14+阅读 · 2019年6月12日
Transferring Knowledge across Learning Processes
CreateAMind
28+阅读 · 2019年5月18日
人工智能 | UAI 2019等国际会议信息4条
Call4Papers
6+阅读 · 2019年1月14日
Unsupervised Learning via Meta-Learning
CreateAMind
42+阅读 · 2019年1月3日
carla 学习笔记
CreateAMind
9+阅读 · 2018年2月7日
【论文】变分推断(Variational inference)的总结
机器学习研究会
39+阅读 · 2017年11月16日
【计算机类】期刊专刊/国际会议截稿信息6条
Call4Papers
3+阅读 · 2017年10月13日
【推荐】Python机器学习生态圈(Scikit-Learn相关项目)
机器学习研究会
6+阅读 · 2017年8月23日
Arxiv
0+阅读 · 2021年8月4日
Arxiv
0+阅读 · 2021年8月3日
VIP会员
相关VIP内容
【干货书】Linux命令行与shell脚本编程大全,第3版818页pdf
专知会员服务
62+阅读 · 2020年12月30日
专知会员服务
40+阅读 · 2020年9月6日
迁移学习简明教程,11页ppt
专知会员服务
108+阅读 · 2020年8月4日
Linux导论,Introduction to Linux,96页ppt
专知会员服务
79+阅读 · 2020年7月26日
商业数据分析,39页ppt
专知会员服务
161+阅读 · 2020年6月2日
【哈佛大学商学院课程Fall 2019】机器学习可解释性
专知会员服务
104+阅读 · 2019年10月9日
MIT新书《强化学习与最优控制》
专知会员服务
277+阅读 · 2019年10月9日
相关资讯
《软件方法》自测题链接二维码汇总
UMLChina
3+阅读 · 2019年8月25日
【泡泡汇总】CVPR2019 SLAM Paperlist
泡泡机器人SLAM
14+阅读 · 2019年6月12日
Transferring Knowledge across Learning Processes
CreateAMind
28+阅读 · 2019年5月18日
人工智能 | UAI 2019等国际会议信息4条
Call4Papers
6+阅读 · 2019年1月14日
Unsupervised Learning via Meta-Learning
CreateAMind
42+阅读 · 2019年1月3日
carla 学习笔记
CreateAMind
9+阅读 · 2018年2月7日
【论文】变分推断(Variational inference)的总结
机器学习研究会
39+阅读 · 2017年11月16日
【计算机类】期刊专刊/国际会议截稿信息6条
Call4Papers
3+阅读 · 2017年10月13日
【推荐】Python机器学习生态圈(Scikit-Learn相关项目)
机器学习研究会
6+阅读 · 2017年8月23日
Top
微信扫码咨询专知VIP会员