类似于到垃圾场去找一辆老式车的便宜部件,麻省理工学院的研究人员找到了一种方法,通过插入来源于其它程序中的工作代码,修复软件漏洞。
研究者们使用一种被称为CodePahge的系统,通过测试找到七种流行开源软件中的漏洞,在每个案例中,函数都来源于两到四个“供体”程序。
修复这样的错误可以使程序更加安全,因为居心不轨的黑客经常利用漏洞来获得系统的访问权限。CodePahge能够识别并解决常见的程序错误,如越界访问、整数溢出、零作为除数等。
研究人员在本周一出版的Phys.Org杂志上描述了他们的方法。他们还在上个月美国计算机协会(ASSOciation for Computing Machinery)举行的编程大会上对其展开了讨论。
在修复存在漏洞的程序时,CodePhage会请求两个样本输入,其中一个会导致目标程序崩溃,另一个则不会。
CodePhage通过另一个程序加载这些输入,该程序被称为供体程序,拥有与目标程序相似的功能。互联网上能够作为供体的开源程序随处可见,但供体程序并不一定是开源的。
在观察供体程序处理不会导致崩溃的输入的过程时,CodePhage会记录程序的所有行动,还会通过符号逻辑将过程记录下来。然后,CodePhage会分析两种输入的处理过程有何不同,并使用得到的信息来更正目标程序。
在许多情况下,目标程序缺乏供体程序所具有的安全检查功能。一般的软件中***可能会有80%的代码被用于进行安全检查。通过将它们自动插入Build进程,CodePhage可以减少开发者用于编写安全检查的时间。
麻省理工大学并不是在此方向上努力的唯一机构。今年早些时候,安全公司Qualys发布了一款软件,可以对发现的漏洞打上虚拟补丁,从而使得人们不需要等待软件供应商发布更新。