@ 2015.07.02 , 14:27
50

MIT开发出无需改源码即可修复bug的软件

[-]

MIT开发的一款新软件被证实能通过借鉴其它程序和不同编程语言中来自主修复软件漏洞,不需要源代码访问权。这将节约开发者们数千小时的编程时间并让软件变得更稳定。

漏洞是软件开发者的痛苦之源。修复漏洞只需改变少数代码即可,但排查的过程却非常耗时耗力,在大型项目中简直令人烦恼不已。

但现在,MIT开发的新软件能改变这种情况。该系统被称作CodePhage,据MIT研究人员Stelios Sidiroglou-Douskos透露,该软件可在不接近源代码的情况下直接分析可执行文件从而进行动态代码转化和移植。

它如何工作

举例来说,你已经写出一个非常简单的电脑程序,要求用户输入两个数字,输出的是第一个数字除以第二个数字之后的结果。让我们假设在你的代码中,你忘了检查第二个数字是不是零。

CodePhage检查之后发现有错,这时它会利用其庞大的应用程序数据库,找到一个能准确输出结果的程序。Sidiroglou-Douskos说:“在开源存储库中我们拥有许多源代码和上百万个项目,因此找到类似项目很容易。虽然这并非该程序的核心功能,但许多项目的子组件均拥有共享功能。”

该系统会区分捐赠软件(被借鉴的软件)和受捐软件(出错软件)之间的差异。

第一步是将安全输入(不引发错误的输入)在捐赠软件中运行并动态追踪输入变量中被加入了何种限制。接着,该软件会对受捐软件做同样的事,比较不安全输入(引发错误的输入)并比较两套不同的限制。安全输入满足两种限制,但不安全输入无法同时满足,因此很有可能受捐软件中缺失了安全检查。

在上述例子中,安全输入为任何非零除数,不安全输入为零除数。MIT系统将会检测出安全输入满足“任何非零除数”的要求,但不安全输入不满足。这样漏洞的缘由就被排查出来了。

这时,CodePhage会将捐赠软件与出错软件的差异之处全部拿过来,并将其转化为受捐软件的程序语言。接着该系统会再次进行检查,直到受捐软件不再出错为止。

未来软件将不再出现漏洞?

参与研究的MIT教授Martin Rinard说:“我们的长期目标是人们不必再写别人早已写过的代码。不论你的程序工作需要什么样的代码,该系统都会为你找到它并自主将其拼凑起来。”

Rinard及其团队表示开发者可通过略去检查非法输入这一步来节约开发和测试时间,接着利用他们的工具在检查时自动植入更稳定的软件,包括封闭源码和专有应用程序。

研究人员们还表示,在现代商业软件中,安全检查占据所有代码的百分之八十,因此从理论上来说MIT开发出来的新软件将给编程时间带来巨大影响。更重要的是,该系统的能力目前仅限分析变量检查,研究人员们说只要该系统能够正确地鉴定出捐赠软件中的变量值,那么同样的技术就能够被用来追踪、提取并插入任何运算。

该MIT系统还能够被用来检查同一应用的不同版本,防止新发布的软件布丁和更新中出现新的漏洞。

当研究人员们在7个常见的开源项目中测试CodePhage之后,它每次都能够修补易受攻击的代码,每次修复耗时十分钟。未来,研究人员们希望能尽量减少这种滞后时间。

点此可看描述该系统的论文

本文译自 gizmag,由译者 肌肉桃 基于创作共用协议(BY-NC)发布。


给这篇稿打赏,让译者更有动力
支付宝打赏 [x]
您的大名: 打赏金额:

0.0
赞一个 (18)

+1

  1. fewstrong
    @3 years ago
    2848478

    然并卵

  2. 要十载
    @3 years ago
    2848479

    程序猿!出来看神仙啊!

  3. 飞过回忆
    @3 years ago
    2848484

    然而修复后的程序颇为诡异

  4. 五爷
    @3 years ago
    2848489

    程序猿工资会不会因此下降

  5. 兔子
    @3 years ago
    2848490

    非常希望编辑能开一个站内搜索功能,有时想找一个帖子,需要耗费好长时间都找不到。如果资金上有需要,可以发起众筹……

  6. 挣脱地平线
    @3 years ago
    2848493

    推广后码农将每天五次向MIT方向朝拜

  7. forvord
    @3 years ago
    2848494

    修复后,输出了非希望的结果怎么办?更可怕的是,这时候程序猿看不懂代码了。

  8. 2848495

    上面的帖子刚说完首页六块丑 就去掉了 哈哈 果然人性化!

  9. 绿色小花
    @3 years ago
    2848500

    诶。。。。那怎么保证这个CodePhage不出任何漏洞?

  10. 张柏芝
    @3 years ago
    2848501

    谁来保证这个程序没有bug

  11. 百毒卫士
    @3 years ago
    2848503

    天网指日可待。。。

  12. 蛮人
    @3 years ago
    2848519

    恩,我需要自己检查一下自己的代码
    唔!这个地方需要改一下!
    ····
    修改完成,软件重启中
    ······
    启动完毕!
    恩,我需要自己检查一下自己的代码
    唔!这个地方需要改一下!
    ····
    修改完成,软件重启中
    ······

  13. 2848521

    @兔子: 你怎么能对我们侧栏上面的搜索框视而不见

  14. 2848523

    修复后代码变得更难读懂了,没注解,风格又各不一样,以后你的程序就只有完全依赖这修复工具了

  15. Vanessa
    @3 years ago
    2848524

    不访问源码,是不是说这是治标不治本的做法

  16. hiknight
    @3 years ago
    2848526

    那里居然有个搜索栏啊。。。。。

  17. 湿一鞋大师
    @3 years ago
    2848527

    @sein: 界面优化得太具有惊喜感了,这兄弟视”搜索”二字为无物.

  18. 昵称
    @3 years ago
    2848539

    这样下去……程序会不会产生自我意识???

  19. 2848540

    相当于自主基因突变,矩阵的生成就靠它了!

  20. 2848547

    @sein 我去,现在才发现那是搜索框

  21. 蒸烧饼
    @3 years ago
    2848549

    能阻止机器人觉醒的最后防御也被排除了。。。。

  22. 阿了个乐
    @3 years ago
    2848558

    作为程序猿,我认为这个东西并没有什么卵用,可能最终程序和需求相差十万八千里

  23. solatrader
    @3 years ago
    2848567

    @Ion: 如果系统能在风格各异的代码中分辨出哪些已有代码能实现你要的效果,那么早晚这个系统就能统一风格或者将代码调整成接近你的风格吧

  24. 2848573

    不用这个,只要机器能把反编译出来的程序和已有代码库进行比对,相似度高就映射变量名抄上注解,这样就已经够了。

  25. 瓦男刀疤六
    @3 years ago
    2848610

    @兔子: 好像右上角有个搜索框吧。。。好吧那货确实不太好使。。。我来提供一个搜索煎蛋文章的小技巧,我们可以google如下关键字: [你要搜索的内容] site:jandan.net

  26. fuckfaggot
    @3 years ago
    2848619

    这功能和Exception有什么关系?

  27. 2848644

    别整这个,弄个内存占用模块比什么都强

  28. 兔子
    @3 years ago
    2848645

    @sein: 谢谢,之前粗心了…

  29. hrdbkh
    @3 years ago
    2848647

    把人类DNA输入进去看看啊~

  30. 马赛克
    @3 years ago
    2848678

    这个软件也有BUG!!!LOLOLOLOLOLOLO

  31. 我就随便说说
    @3 years ago
    2848680

    为什么我还是没有看到搜索框……

  32. _(:зゝ∠)_
    @3 years ago
    2848691

    鼠标点进去才知道那个是框啊。。。。

  33. 2848694

    还只是在数据库里找代码,什么时候能自己写代码,人类就完蛋了。

  34. _(:зゝ∠)_
    @3 years ago
    2848695

    然后犯抽把所有灰色的字都用鼠标点一下。。。。

  35. 小猪娃
    @3 years ago
    2848697

    select *from XXX where title like”%MIT开发%” 小编收好 不用众筹了

  36. 2848728

    先看看现在的自动翻译什么效果吧。真有哪家大企业敢用这个东西,就好比外交部的新闻发布会全部用谷歌翻译一样……

  37. 2848807

    所以AI出來後還能自主修復完美排錯
    難怪終結者T-800這麼抗打

  38. (#゚Д゚)
    @3 years ago
    2848878

    @sein: 可是我在煎蛋APP上並沒有發現他呀_(:з」∠)_難道是我打開方式不對?(๑°3°๑)而且想把手抽打開的妹紙圖的那個關掉也不行

  39. 大西瓜
    @3 years ago
    2848887

    @(#゚Д゚): 请活用搜索引擎的site关键字

  40. 阿萨法
    @3 years ago
    2848890

    @兔子: 搜索引擎有site命令~

  41. moonsun
    @3 years ago
    2848896

    扯淡得象那么个高科技的玩意.
    其实就是金山游侠改游戏一样的道理.

  42. sarcophile
    @3 years ago
    2849090

    然而修复后的程序就不能通过图灵测试了

  43. ayahuasec
    @3 years ago
    2849155

    想编个hello world……
    没发现漏打分号了,提示报错……
    不想看错误信息,调用CodePhage……
    然后发现生成目录下多了个Linux系统镜像……

  44. yellow
    @3 years ago
    2849162

    在开源存储库中我们拥有许多源代码和上百万个项目,因此找到类似项目很容易。

    难道码农现在不都是人工去干这事儿的?

  45. 2849190

    看大意就是能找到那种大家都犯的错误并修复……

    然而真正的bug很多都出在产品本身定义自相矛盾,也就是正确的程序根本不存在,就像让万能的上帝造出自己也举不起来的石头这种需求。

    另外我想问,能解决死锁、竞争冒险么?

  46. 二楼
    @3 years ago
    2849590

    @sein: 求一个能看到首页每日最佳的评论的功能

  47. 2849601

    @二楼: 首页无聊图最右就有优评排行

  48. →_→
    @3 years ago
    2851244

    @sein: 要是手机上也可以搜索就好了

  49. Shelikhoo
    @3 years ago
    2851267

    要是有一天人再也不能理解电脑中的代码。。。。。

发表评论


24H最赞