碉堡了!麻省理工学院开发出自动修复 Bug 的系统

MIT的研究团队开发了一种名为CodePhage的新系统,该系统能够通过从其他更安全的应用程序中自动导入功能来修复软件中的危险漏洞。CodePhage不需要访问捐赠程序的源代码,而是分析其执行情况并标记安全检查特征。即使捐赠程序使用的编程语言与目标程序不同,CodePhage也能导入必要的检查功能。研究人员已经在七个常见的开源项目上测试了CodePhage,每个项目都成功地从两到四个捐赠程序中引入了补丁。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在六月下旬的计算机学会的编程语言设计与实现大会上,MIT 的研究者们展示了一个新系统,可以通过从其他更加安全的应用中自动导入相关功能,借以修复原来软件中的危险漏洞。

这个引人注目的系统叫做 CodePhage ,它借用其他程序时并不需要访问借主应用的源码。相反,该系统分析这个应用的执行情况,并标记出其安全检查类别的特性。因此,即使所编写的语言与被修复应用的语言不同,该系统仍然可以从中导出检查功能用来修复应用。

CodePhage 将代码导入易受攻击的程序后,还会进行进一步分析以确保漏洞被修复。

MIT 计算机科学与人工智能研究室(CSAIL)的研究员,CodePhage 的研发领导人员 Stelios Sidiroglou-Douskos 表示:

“我们在开源库里有大量代码可用,数百万计项目,而且很多项目都有类似的实现了。这些项目总有一些可以与别的许多项目共享功能的子模块,即便那不一定是该程序的核心功能。”

有了 CodePhage,“你将逐渐建立一个集其他应用最优秀部分于一身的混合系统。”

Sidiroglou-Douskos 和他的共同作者——MIT 计算机科学和工程的教授 Martin Rinard,研究生 Fan Long 和 Rinard 组里的研究员 Eric Lahtinen——将 CodePhage 正在被修复的程序称作是接受程序,出借功能的程序称作是捐献程序。要开始分析,CodePhage 需要两个输入样本:一个导致接受程序崩溃,另一个则不会。今年三月,这个小组报告了一个名为 DIODE 的漏洞定位程序。该程序可以自动产生引起崩溃的输入信息。但是用户也许就很容易发现打开特定文件时会崩溃。

承接过去

首先,CodePhage 将“安全的”输入信息——那些不会导致崩溃的输入信息——传入捐献程序。 然后它将追踪捐献程序执行的一系列操作,并用一个符号表达式记录这些操作。这个符号表达式会是一串描述操作所施加的逻辑约束的字符。

比如说,在某个时候,捐献程序会检查输入信息的大小是否在某些临界值之下。若是,CodePhage 会在持续增长的符号表达式中加入一个特定的符号,来代表在临界值之下的状况。它不会记录文件的真实大小——仅仅是这次检查所施加的约束。

接下来,CodePhage 将会导致崩溃的输入信息传入捐献程序。像之前那样,它建立起一条代表捐献程序执行操作的符号表达式。当新的符号表达式与旧的不同的时候,CodePhage 就中断这个过程。这一差异表明,这是一个安全输入能够满足的限制条件,而能够引起程序崩溃的输入则不能满足。因此,它可能是一个接受程序缺失的安全检查。

CodePhage 分析接受程序,来寻找输入信息在什么位置能满足大多数但不是全部新符号表达式描述的限制。接受程序可以按与捐献程序不一样的顺序来执行操作,它也可以用不同的形式储存数据。但符号表达描述的是被处理过的数据的状态,而不是处理过程本身。

在每个识别出来的位置上,CodePhage 都可以免除符号表达式描述的大多数约束,其中也包括接受程序施加的约束。从第一个位置开始,它将剩下的少量约束转换成接受程序的语言,并将它们插入到源代码中去。然后,它会用之前引起过崩溃的输入再次运行接受程序。

假如程序运行良好,那么新代码就解决了问题。如果程序崩溃了,CodePhage 就移到接受程序的下一个候选位置。如果在尝试修补了所有的候选位置之后,接收程序依然崩溃,CodePhage 就回到捐献程序中继续构建符号表达式,直到它发现了另一个新旧符号表达相异的位置。

自动化未来

研究者们在七个常见的,并已被 DIODE 检查到漏洞的开源项目上测试了 CodePhage。每个项目从二到四个捐献程序处引进修补。在所有的实例里,CodePhage 都能够修补脆弱的代码,而且每次所花的时间通常在两分钟到十分钟。

这些研究者解释说,在现代商业软件里,安全检查可以占到代码的百分之八十甚至更多。希望未来版本的 CodePhage 能够通过自动插入这些检查,大幅度减少软件开发者们花费在枯燥工作上的时间。

Rinard 表示:

“长远愿景是,你再也不用写别人写过的代码。系统会找到那段代码,并自动帮你把这段代码,和其它你所需要的、能让你的程序运作起来的代码放在一起。”

马萨诸塞大学埃姆郝思特校区的计算机科学教授 Emery Berger 表示:

“这个从别的有相似功能的程序那里借代码,并且能用这个方法修补好一个本质上不能运作的程序的技术,是一个很酷的结果。老实说,我很惊讶这个方法居然真的可行。”

“捐献程序和接收程序不是同一群人写的,他们有不同的编程标准,他们使用不同方式命名变量,他们使用各种不同类型的变量,变量或许是本地的,或者,他们在栈的更高处。 而 CodePhage 可以识别出这些联系,然后说 ‘这些变量和那些变量有关联。’ 用器官捐献来比喻,它可以将从捐献程序借取的代码完美移植,就好像代码本来就是那样写的。CodePhage 可行并且有效的这个事实,令人惊讶,太酷了。”



出处:http://blog.jobbole.com/88668/
资源下载链接为: https://pan.quark.cn/s/9648a1f24758 这个HTML文件是一个专门设计的网页,适合在告白或纪念日这样的特殊时刻送给女朋友,给她带来惊喜。它通过HTML技术,将普通文字转化为富有情感和创意的表达方式,让数字媒体也能传递深情。HTML(HyperText Markup Language)是构建网页的基础语言,通过标签描述网页结构和内容,让浏览器正确展示页面。在这个特效网页中,开发者可能使用了HTML5的新特性,比如音频、视频、Canvas画布或WebGL图形,来提升视觉效果和交互体验。 原本这个文件可能是基于ASP.NET技术构建的,其扩展名是“.aspx”。ASP.NET是微软开发的一个服务器端Web应用程序框架,支持多种编程语言(如C#或VB.NET)来编写动态网页。但为了在本地直接运行,不依赖服务器,开发者将其转换为纯静态的HTML格式,只需浏览器即可打开查看。 在使用这个HTML特效页时,建议使用Internet Explorer(IE)浏览器,因为一些老的或特定的网页特效可能只在IE上表现正常,尤其是那些依赖ActiveX控件或IE特有功能的页面。不过,由于IE逐渐被淘汰,现代网页可能不再对其进行优化,因此在其他现代浏览器上运行可能会现问题。 压缩包内的文件“yangyisen0713-7561403-biaobai(html版本)_1598430618”是经过压缩的HTML文件,可能包含图片、CSS样式表和JavaScript脚本等资源。用户需要先解压,然后在浏览器中打开HTML文件,就能看到预设的告白或纪念日特效。 这个项目展示了HTML作为动态和互动内容载体的强大能力,也提醒我们,尽管技术在进步,但有时复古的方式(如使用IE浏览器)仍能唤起怀旧之情。在准备类似的个性化礼物时,掌握基本的HTML和网页制作技巧非常
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值