一旦软件出现bug,除了“杀掉程序员祭天”,唯一能做的就是尽力消灭它们。毕竟,bug不仅会让软件崩溃,还有可能被黑客用来恶意攻击。
因此,如果有人告诉你,保留bug其实是个好主意,你一定会嗤之以鼻。最新一项研究却提出,bug其实还能充当诱饵,显著转移黑客的注意力,让软件躲过攻击。
图 | pixabay
这个方法有点令人困惑:bug基本只有百害而无一利,怎么就能派上用场了呢?
躲在bug之后
其实,有的bug并不算特别严重,它们顶多让程序崩溃。而一些后台程序会在用户不知情时重启软件,从而处理崩溃问题。这些bug是相对良性的,但黑客要寻找的,是那些能被恶意控制的bug。
然而,区分这两种bug并不容易,这一过程是复杂而且耗时的。
于是研究者们想到,何不利用良性bug填充代码,进而欺骗攻击者呢?这样可以使得攻击者耗尽资源来寻找和测试bug, 却最终发现它们可能没什么卵用。这些bug被称为“干扰箔bug”(chaff bug),它们就如同那些可以欺骗雷达的干扰箔一样。
图 | 图虫创意
虽然这是个好点子,但给程序人为添加bug,其实挺困难的,甚至有些冒险。毕竟,随意更改软件的代码,不仅仅会引入异常,软件很有可能彻底失去功能。
不过好在网络安全专家们已经有了自动添加bug的工具,它能利用不同的输入值运行代码,然后观察这些输入会有怎样的结果。于是,专家们就可以找到那些不再被用于计算输出的输入值。
图 | giphy
这些输入值就是所谓的“死亡输入”,它们能破坏内存,或者造成内存溢出。
研究者借用这种方法,在整段代码内添加破坏内存的bug。正常情况下,这些bug并没有严重危害。一旦它们被恶意攻击者发现和利用,也只引发程序崩溃,杀伤力十分有限。
主动添加bug真的没问题吗?
研究者指出,现有的检测进程,都会被他们的方法蒙骗,而且分类工具还会误认为它们是可被利用的。因此,无用bug可以作为一种有效的阻碍,以抵御黑客或自动网络推理系统。
图 | pixabay
然而,这种方法的有效性,都建立在这样的假设下:寻找可用于攻击的bug,一定非常困难和耗时。
如果存在快速且容易鉴别bug的方法,那么这种新方法就没有太大价值。
事实上,研究团队也不想试图隐藏或掩饰问题,他们指出,“bug中存在很多人为的特性,而攻击者们可以利用这些特性,去识别并忽略它们。”此外,这些添加的bug大同小异,攻击者也有可能识别出它们的模式。
图 | unsplash
就算这个方法可行,考虑到后期维护的麻烦,也很难说良性bug就不会让“程序员祭天”了。
不过目前来看,这种方法有巨大的发展潜力。主动向程序中添加而不是减少bug,是一个非常有“心机”的网络犯罪应对方案,它应该会给未来的研究带来一些灵感。
一个AI
程序员:现在除了熬夜清bug,还得管安bug……
编译:Eon,Olli
编辑:Ent
编译来源:MIT Technology Review, Why adding bugs to software can make it safer
本文由MIT Technology Review授权果壳编译
领取专属 10元无门槛券
私享最新 技术干货