MIT研究人员发明漏洞修复系统,可自动给代码打补丁 | 附论文

简介:
本文来自AI新媒体量子位(QbitAI)

点开许久不用的“XX旅行”,你想买张回家的车票。页面上弹出的升级提示写着:

本次升级将修复系统XX功能漏洞。

“这些App怎么天天升级。”你心里有些不耐烦。

如果有系统能自动修复补丁,可能就没这么麻烦了。你别说,还真有。

麻省理工学院(MIT)电子工程和计算机科学教授Martin Rinard就曾开发出一些通用模板,算法可以通过模板生成并评估一系列备用补丁。

最近,Rinard的学生Fan Long和加州大学圣地亚哥分校的Peter Amidon又研发出一个新系统,通过分析软件已经打出的补丁,学习生成自己的模板。

在一个手工编码的补丁生成系统中,可能有5至10个模板,但这个新系统创建了85个,帮助它生成更多样化的精确补丁。它的模板可适用于特定类型软件,不会产生很多无用的备用补丁。在测试中,被称为“Genesis”的新系统修复的漏洞数量是最好的手工编码模板系统的两倍。

循环评估

“这是一个权衡的过程,”Long说,“一方面,你想生成足够多的备用补丁,让你可以从中挑选出有用的那几个。另一方面,你又不想让备用补丁数量过多,多到无法找到它。”

训练Genesis的数据集中包含两组代码块:原始代码、漏洞及修复的补丁的代码。Genesis先构造出几对训练实例,这样数据集中的每一项都能与其他项配对。

之后,Genesis分析每一对实例,并创建一个通用的表示形式,即模板草稿,它将两个原始版本的两个补丁合成在一起,也可能合成其他无用的备用补丁。

接下来,Genesis测试了训练集中所有示例的每个模板。每个模板仅基于两个示例合成,但也可能适用于其他几个例子。模板有两个标准,即漏洞的数量和产生的无用备选模板的数量。

例如,一个模板生成了10个备用补丁,其中4个在训练数据中出现错误,而另一个模板生成了1000个备用补丁,其中只有5个可以用的补丁。相比之下,还是前者更合适。

在这些评分标准的基础上,Genesis选择了500个最有能力胜任的模板。对每个模板来说,它都以此用其他示例增强最初两个示例的训练集,创建了一个庞大的三例训练集。每个训练集都会改变草稿模板,产生更通用的模板,然后执行同样的评估程序。

巨大潜力

这个过程循环四轮后,500个最好的模板都接受了五个示例的训练。最后,用稍微有些不同的评估标准进行筛选,确保训练集中每个错误都被纠正了。

在研究人员的实验中,最终的筛选将模板的数量从500减少到85。在Genesis里用Java编写的程序中,MIT的研究人员将其性能与表现最好的手工编码的Java补丁生成器做了对比。

从41个开源编程项目中抽取的49个测试用例中,Genesis正确修补了其中21个漏洞,而手工编码的系统则修补了11个。

研究人员表示,如果训练数据更充足、计算能力更强大,评估的备用模板可能结果还能更好。

最后,附研究论文地址:

https://people.csail.mit.edu/rinard/paper/fse17.genesis.pdf

本文作者:安妮
原文发布时间:2017-09-29
相关文章
|
人工智能
ChatGPT的显著特点
【1月更文挑战第14天】ChatGPT的显著特点
907 1
ChatGPT的显著特点
|
JavaScript 小程序 前端开发
|
运维 算法 前端开发
评委角度看晋升,建议做好这几件事
作者总结了今年作为评委参加的很多晋升场子,其中以前端和客户端技术栈为主,总结了一些收获分享出来。
|
人工智能 运维 监控
AI时代云基础设施的技术创新与展望丨ODCC2023
AI时代云基础设施的技术创新与展望丨ODCC2023
|
机器人 C++
ROS问题汇总以及vsode配置问题
ROS问题汇总以及vsode配置问题
ROS问题汇总以及vsode配置问题
|
12月前
|
安全 算法 中间件
OASA 厂商三未信安完成与 Anolis OS 及其衍生版适配,密码卡性能与稳定性获验证
验证了 Anolis OS 能够满足用户对于数据保护和隐私安全的高标准要求,可以为广大用户提供更可靠的数据保护。
|
编解码 前端开发 JavaScript
跨平台兼容性
【10月更文挑战第31天】跨平台兼容性
669 2
|
机器学习/深度学习 编解码 自然语言处理
文生图大模型
DALL·E 是由 OpenAI 开发的基于深度学习的图像生成模型,能够根据文本描述生成原创图像。从 2021 年初的 DALL·E 到 2022 年的 DALL·E 2,再到最新的 DALL·E 3,其功能不断升级,包括生成、扩展、修改图像及生成变体图像。DALL·E 3 在提示优化、清晰度和多风格支持方面进行了增强,广泛应用于定制图像生成、虚拟设定、产品设计和广告营销等领域。
|
数据采集 机器学习/深度学习 自然语言处理
如何提升模型对特定小语种的理解和生成能力?
如何提升模型对特定小语种的理解和生成能力?
|
机器学习/深度学习 算法 数据挖掘
YOLO系列算法
8月更文挑战第13天

热门文章

最新文章