1479
需用时 02:57
主动添加bug会使软件更安全?

(Olli/译,EON/校)说到雷达跟踪,成片放置铝条或导电塑料是最有效的“反跟踪”手段之一。这些材料具有导电性,因此能够有效反射雷达(电磁能),并产生数以千计的目标来干扰和蒙蔽雷达。这种手段能够蒙蔽所有想要跟踪你的物体,例如雷达制导导弹。

许多军用飞机、舰艇和弹道导弹,都配备具有欺骗性的假目标系统。目前,网络安全研究员们正将这种方法运用到软件中。

这个想法在原理上很简单。软件通常都存在漏洞,而开发者和合法用户恰恰注意不到大部分漏洞。但那些恶意攻击者会主动寻找漏洞,利用它们进行针对性的攻击。攻击者的目的是接管目标主机,甚至完全操控它。

图片来源:图虫创意

但是漏洞各有不同。有一部分漏洞并不能够被用作恶意攻击,只能引起程序崩溃。程序崩溃当然不是小事,不过有一大类软件,像是后台微服务,则在用户不知情时重启软件,从而处理软件崩溃的情况。相比那些能够让黑客利用并实施恶意控制的漏洞,这类只会引起程序崩溃的漏洞并不算严重。

然而,要区分漏洞是否能被用于恶意攻击并非易事。在恶意攻击者发现漏洞后,他们要区分“真正危险的漏洞”和“相对良性的漏洞”,而这一过程复杂耗时。

据此,纽约大学的胡正浩(音译)及其同事们提出:何不利用良性漏洞填充代码,进而欺骗潜在攻击者呢?

这个方法迫使攻击者耗尽资源,来寻找和测试那些毫无攻击用途的漏洞。研究者们称这些漏洞为“干扰bug”,它们就如同那些欺骗雷达的干扰物。

图片来源:图虫创意

在信息安全专家与黑客日渐复杂的猫鼠游戏中,这个点子不过是最新的举动。近年来,许多研究小组开发出检测程序,在代码里搜寻那些可能会被黑客利用的漏洞。安全专家通过这种方法,在代码公开前寻找和清除漏洞,然而恶意攻击者也用同样的方法寻找可以利用的漏洞。

但是对于安全研究人员来说,开发这样的程序很难,而且前提是软件里得有漏洞。于是,他们又开发出可以自动向软件添加漏洞的工具,以便检测程序“发现”漏洞。

事实上,添加漏洞绝不简单。随意更改代码往往会使它失去功能,而不仅仅是引入有趣的异常。相反,这个添加漏洞的过程包括利用不同的输入值运行代码,然后观察这些输入会有怎样的结果。

这个过程用于寻找程序中那些不再被用于计算输出的输入值。这样一来,这些 “死亡输入”就能被恶意使用,破坏内存或者造成内存溢出。

寻找漏洞的程序会发现这些可以被用作攻击的“死角”。

事实上, C语言或C++编程的代码里,这些潜在漏洞十分常见,因为这些语言并没有监视内存的系统。

胡正浩和同事们利用这个方法,在整段代码内添加破坏内存的漏洞。正常情况下,这些漏洞并没有严重危害。一旦它们被恶意用户发现和利用,就只能引发程序崩溃,但不会带来其他更严重的影响。这也是为什么它们是“干扰bug”。

图片来源:Pixabay

研究团队表示,“在软件中寻找和利用漏洞的黑客们,很可能会找到一个故意放置的无用漏洞,然后耗费宝贵的资源,想方设法利用这个漏洞实施攻击。”

他们继续指出,现有的检测潜在漏洞的进程,都会被他们的方法“蒙骗”。“我们的研究表明,当使用这种方法时,软件的功能并没有遭到破坏。此外,现有的分类工具还会误以为,添加的漏洞是可被利用的。”

这个方法很有意思,有可能显著转移恶意攻击者的注意力。“我们认为,无用漏洞可以作为一种有效的阻碍,以抵御黑客或自动网络推理系统。”

但这种方法也引发了一些有趣的问题。例如,目前并没有实际证据表明, 利用分类来寻找可用于攻击的漏洞,一定非常困难和耗时。而理论上,寻找这些漏洞的快速方法是存在的。

如果存在容易鉴别漏洞的方法,那么这种新方法便没有太大的价值。事实上,研究团队并不想试图隐藏或掩饰他们添加的漏洞。”这意味着漏洞中存在很多人为的特性,而攻击者们可以利用这些特性,去识别并忽略漏洞。”

这些添加的漏洞也大同小异。“这就让攻击者可以识别出漏洞的模式,据此排除符合模式的漏洞。”

但是这种方法有巨大的发展潜力。主动向程序中添加而不是减少漏洞,是一个应对网络犯罪非常“心机”的方法,而这种方法应该会给未来的研究带来一些灵感。(编辑:Ent)

本文经授权翻译自MIT Technology Review点击这里阅读原文。

参考文献:

  1. arxiv.org/abs/1808.00659 : Chaff Bugs: Deterring Attackers by Making Software Buggier
The End

发布于2018-08-29, 本文版权属于果壳网(guokr.com),禁止转载。如有需要,请联系果壳

举报这篇文章

MIT Technology Review

pic