MIT开发出无需改源码即可修复bug的软件
肌肉桃 @ 2015.07.02 , 02:27 下午[-]
MIT开发的一款新软件被证实能通过借鉴其它程序和不同编程语言中来自主修复软件漏洞,不需要源代码访问权。这将节约开发者们数千小时的编程时间并让软件变得更稳定。
漏洞是软件开发者的痛苦之源。修复漏洞只需改变少数代码即可,但排查的过程却非常耗时耗力,在大型项目中简直令人烦恼不已。
但现在,MIT开发的新软件能改变这种情况。该系统被称作CodePhage,据MIT研究人员Stelios Sidiroglou-Douskos透露,该软件可在不接近源代码的情况下直接分析可执行文件从而进行动态代码转化和移植。
它如何工作
举例来说,你已经写出一个非常简单的电脑程序,要求用户输入两个数字,输出的是第一个数字除以第二个数字之后的结果。让我们假设在你的代码中,你忘了检查第二个数字是不是零。
CodePhage检查之后发现有错,这时它会利用其庞大的应用程序数据库,找到一个能准确输出结果的程序。Sidiroglou-Douskos说:“在开源存储库中我们拥有许多源代码和上百万个项目,因此找到类似项目很容易。虽然这并非该程序的核心功能,但许多项目的子组件均拥有共享功能。”
该系统会区分捐赠软件(被借鉴的软件)和受捐软件(出错软件)之间的差异。
第一步是将安全输入(不引发错误的输入)在捐赠软件中运行并动态追踪输入变量中被加入了何种限制。接着,该软件会对受捐软件做同样的事,比较不安全输入(引发错误的输入)并比较两套不同的限制。安全输入满足两种限制,但不安全输入无法同时满足,因此很有可能受捐软件中缺失了安全检查。
在上述例子中,安全输入为任何非零除数,不安全输入为零除数。MIT系统将会检测出安全输入满足“任何非零除数”的要求,但不安全输入不满足。这样漏洞的缘由就被排查出来了。
这时,CodePhage会将捐赠软件与出错软件的差异之处全部拿过来,并将其转化为受捐软件的程序语言。接着该系统会再次进行检查,直到受捐软件不再出错为止。
未来软件将不再出现漏洞?
参与研究的MIT教授Martin Rinard说:“我们的长期目标是人们不必再写别人早已写过的代码。不论你的程序工作需要什么样的代码,该系统都会为你找到它并自主将其拼凑起来。”
Rinard及其团队表示开发者可通过略去检查非法输入这一步来节约开发和测试时间,接着利用他们的工具在检查时自动植入更稳定的软件,包括封闭源码和专有应用程序。
研究人员们还表示,在现代商业软件中,安全检查占据所有代码的百分之八十,因此从理论上来说MIT开发出来的新软件将给编程时间带来巨大影响。更重要的是,该系统的能力目前仅限分析变量检查,研究人员们说只要该系统能够正确地鉴定出捐赠软件中的变量值,那么同样的技术就能够被用来追踪、提取并插入任何运算。
该MIT系统还能够被用来检查同一应用的不同版本,防止新发布的软件布丁和更新中出现新的漏洞。
当研究人员们在7个常见的开源项目中测试CodePhage之后,它每次都能够修补易受攻击的代码,每次修复耗时十分钟。未来,研究人员们希望能尽量减少这种滞后时间。
点此可看描述该系统的论文。
PREV : 一百万只猴子也很难敲出莎士比亚的剧本
NEXT : 10种日常物品的另类用途