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

安妮 编译自 MIT News 量子位 出品 | 公众号 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

原文发布于微信公众号 - 量子位(QbitAI)

原文发表时间:2017-09-29

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏腾讯移动品质中心TMQ的专栏

腾讯TMQ在线沙龙|测试与图像识别

测试与图像识别 活动时间:2016年3月16日 QQ群视频交流 活动介绍:TMQ在线沙龙第十七期分享 本次分享的主题是:测试与图像识别 共有43位测试小伙伴报名...

2656
来自专栏编程

基于Python的人脸识别库,离线识别率高达99.38%!

-欢迎 原文该项目是要构建一款免费、开源、实时、离线的网络 app,支持组织者使用人脸识别技术或二维码识别所有受邀人员。有了世界上最简单的人脸识别库,使用 Py...

2848
来自专栏数据小魔方

细分饼图

今天跟大家分享的是一种叫做细分饼图的图表制作技巧! 它所用到的技巧很简单,表达的数据也不很复杂,就是三层数据结构,每一层都是上一层的细分数据。 首先我们还是来看...

3565
来自专栏杨建荣的学习笔记

通过图表分析oracle的parallel性能(r2第37天)

并行特性在数据库里对于性能的提升很有帮助,尤其是大批量的数据处理。今天对于并行的性能情况进行了简单的图表分析。 为了能够比较合理的比较数据,对数据库里的2张大...

3045
来自专栏AI研习社

Github 项目推荐 | SpaceX Falcon 9 Box2D 回收降落动作模拟器

这是一款 SpaceX Falcon 9 第一级火箭的垂直火箭着陆模拟器,该模拟器用 Python 3.5 开发并且在 OpenAI Gym 环境中编写。该模拟...

1262
来自专栏机器之心

教程 | Docker Compose + GPU + TensorFlow 所产生的奇妙火花

选自 hackernoon 机器之心编译 参与:黄小天、路雪 Docker 有很多优势,但是在数据科学和深度学习方面,使用 Docker 也存在一些阻碍。本文介...

36313
来自专栏机器之心

我的深度学习开发环境详解:TensorFlow + Docker + PyCharm等,你的呢(附问卷)

选自Upflow.co 作者:Killian 机器之心编译 参与:Nurhachu Null、李亚洲 在这篇文章中,研究员 Killian 介绍了自己的深度学习...

6416
来自专栏ATYUN订阅号

人工智能为什么能做的事情这么多?密码猜测在它面前也能行得通

密码猜测之所以有效是因为… 人类是可预测的 ? 如果你要求小明设置一个密码。他可能只是简单地把密码设置为“xiaoming”。现在,系统告诉他密码必须包含数字...

3456
来自专栏云时之间

Tensorflow简述和初步上手

AI这个概念好像突然就火起来了,年初大比分战胜李世石的AlphaGo成功的吸引了大量的关注,但其实看看你的手机上的语音助手,相机上的人脸识别,今日头条上帮你自动...

3096
来自专栏磐创AI技术团队的专栏

YOLO_Online: 将深度学习最火的目标检测做成在线服务(附项目代码)

1464

扫码关注云+社区

领取腾讯云代金券