麻省理工学院测试“软件移植” 修复代码中的漏洞

类似于到垃圾场去找一辆老式车的便宜部件,麻省理工学院的研究人员找到了一种方法,通过插入来源于其它程序中的工作代码,修复软件漏洞。


研究者们使用一种被称为CodePahge的系统,通过测试找到七种流行开源软件中的漏洞,在每个案例中,函数都来源于两到四个“供体”程序。

修复这样的错误可以使程序更加安全,因为居心不轨的黑客经常利用漏洞来获得系统的访问权限。CodePahge能够识别并解决常见的程序错误,如越界访问、整数溢出、零作为除数等。

研究人员在本周一出版的Phys.Org杂志上描述了他们的方法。他们还在上个月美国计算机协会(ASSOciation for Computing Machinery)举行的编程大会上对其展开了讨论。

在修复存在漏洞的程序时,CodePhage会请求两个样本输入,其中一个会导致目标程序崩溃,另一个则不会。

CodePhage通过另一个程序加载这些输入,该程序被称为供体程序,拥有与目标程序相似的功能。互联网上能够作为供体的开源程序随处可见,但供体程序并不一定是开源的。

在观察供体程序处理不会导致崩溃的输入的过程时,CodePhage会记录程序的所有行动,还会通过符号逻辑将过程记录下来。然后,CodePhage会分析两种输入的处理过程有何不同,并使用得到的信息来更正目标程序。

在许多情况下,目标程序缺乏供体程序所具有的安全检查功能。一般的软件中最高可能会有80%的代码被用于进行安全检查。通过将它们自动插入Build进程,CodePhage可以减少开发者用于编写安全检查的时间。

麻省理工大学并不是在此方向上努力的唯一机构。今年早些时候,安全公司Qualys发布了一款软件,可以对发现的漏洞打上虚拟补丁,从而使得人们不需要等待软件供应商发布更新。

作者:Venvoo

来源:51CTO

时间: 2024-07-30 16:35:52

麻省理工学院测试“软件移植” 修复代码中的漏洞的相关文章

我需要完全理解这部分代码才能确保它能够正常工作,如果由我来修复代码中的问题,我是不会这么写的,因此希望你也不要这么来写(转)

  Jim Bird是一位经验丰富的软件开发经理.项目经理与CTO,专注于软件开发与维护.软件质量与安全等领域中疑难问题的解决.在过去的15年间,Jim曾管理过团队建设并主导过高性能的财务系统的建设.他的主要兴趣在于如何提升小团队的效率以构建真正的软件:高质量.安全.可靠.高性能及适应性强.近日,Jim撰写了一篇博文,谈到了代码审查的价值,如何进行代码审查,代码审查的过程以及在代码审查中需要注意的问题,希望能为大家平日的代码审查带来一些启示. 开始代码审查 从一开始,开发者就会互相帮助,如果测试

“软件移植”如何修复受损代码?

何谓软件移植?它们如何修复受损代码?它会在企业软件生命周期中占据一席之地吗?此外,它们是否会导致更多的软件漏洞和安全漏洞? Michael Cobb:软件开发人员喜欢从网上复制和粘贴密码.不管是关于一个函数如何工作的.一个代码片段还是多行开源库.这节省了大量的时间和金钱,且可以让开发人员能快速添加特性和功能,而无需从头开始创建. 在开发一个应用时,开发团队可以很轻易地使用从网上找来的一百种以上的开源库.框架和带有代码片段的工具.<2014 Sonatype开源开发调查>发现,一个典型应用的90

如何将c++代码部分移植到c中?

问题描述 如何将c++代码部分移植到c中? 现在有一个在linux上跑的c写的通信程序.原本用的udp协议写的,现在需要改成用udt协议完成网络传输部分.网上找到的udt源码全都是用c++写的,库函数和头文件也都是c++.请问如何将用c++写的这部分udt协议移植到原本的c写的程序中? 解决方案 建议你不如反过来把c程序升级成c++程序. 解决方案二: 需要花时间把c++的代码转换成C语法,使用C++集成udt更好. 解决方案三: 没啥捷径,基本就是用gcc编译,然后修改错误. 主要是修改头文件

使用JUnit来测试Java代码中的异常

使用JUnit来测试Java代码中的异常有很多种方式,你知道几种? 给定这样一个class. Person.java public class Person { private String name; private int age; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; }

麻省理工学院、南加大等美国名校的网络安全:勉强及格

大学--特别是一些规模庞大.声名显赫的机构--常常面临更多网络威胁和攻击活动. 名校,不一定安全 九月秋风送爽,又吹来一个开学季,期末考试的烦恼暂时被小鲜肉们抛之脑后.然而,有几所名校却因互联网威胁情报和风险意识的总体安全状况不佳,收到低分成绩单.不知道这些傲娇的"学霸们"会如何对待这样的结果? 一家运用互联网传感器及工具进行安全状况测试的公司SecurityScorecard近日首次发布了一份关于高等教育安全报告,针对近500所大学进行了测评.令人惊讶的是,以科技见长的麻省理工学院(

开源代码中的安全隐患 要从DevOps的角度 进行6个方面的预防

各行各业的组织,无论规模大小,都会使用开源应用,眼下这种趋势有增无减.在开发阶段,将源代码嵌入软件中既经济.又高效.借助于其他资源,开发人员可以将更多的精力集中于组织的内部代码.但 DevSecOps 的问题不容忽视. 据GitHub调查,94%的受访者表示至少会时不时地使用开源应用,而81%的人则经常使用.实际上,82%的开发人员透露,所在单位接受使用开源软件,而84%的人被鼓励在应用中使用开源代码. 虽然使用开源代码 还需要在持续交付中确保安全 虽然开源部件可节约时间和成本,但其许可协议中均

浅谈CAM软件在实际生产中的应用

问题描述 [b]​本文选自中国制造业企业信息化门户网e-works,CAM专栏到目前为止,计算机辅助制造(CAM,ComputerAidedManufacturing)有狭义和广义的两个概念.CAM的狭义概念指的是从产品设计到加工制造之间的一切生产准备活动,它包括CAPP.NC编程.工时定额的计算.生产计划的制订.资源需求计划的制订等.这是最初CAM系统的狭义概念.到今天,CAM的狭义概念甚至更进一步缩小为NC编程的同义词.CAPP已被作为一个专门的子系统,而工时定额的计算.生产计划的制订.资源

ARM服务器厂商提供移植x86代码的云服务

ARM处理器主要用于智能手机,但通过Boston公司提供的服务,开发人员可以将现有的x86应用程序放在ARM服务器上运行,然后应用程序通过云服务来测试. Boston公司还与软件公司Ellexus合作,以帮助开发人员移植代码到ARM服务器,并且Boston公司通过云端提供四核ARM处理器,用以测试移植过去的代码.这使企业不再需要购买ARM服务器来测试代码. Boston公司营销主管Apostolos Lambrianides 指出,"我们并不是针对那些希望在云中托管服务(web或者电子邮件等)的

麻省理工的 Picture 语言:代码瘦身的秘诀

如今,机器学习算法已经进入了主流的计算机,而麻省理工学院正在研究一款让每日的编程变得更加简单的技术. MIT 研究者将在六月发布一款新的叫做 Picture 的编程语言,当计算机在视频或者图像上识别目标时,它能从根本上降低代码量.这是一个相对较新的编程原型,叫概率编程,它能减少复杂任务所需的代码量. 在一个新语言测试中,研究者从一个图像识别程序中减掉了数千行代码,最终的代码量更是少于50行.他们计划在六月的"计算机视觉及模式识别会议"上公布这一结果. Josh Tenenbaum 是