开源的代码就真的绝对安全?

2015-11-05 09:06


Jeep 黑客大众汽车排放丑闻这样的汽车软件问题成为了今年的头条,表明公众开始重视之前从未考虑过的汽车软件安全问题了。一些专家认为强制要求某些软件开源是解决问题的一个好办法。尽管如此可以让软件被公众监督,但开放代码这个事情本身却不能给你带来保障。就像 Sam Liles 最近发给我的邮件所说的一样,开源并不能够阻止破壳漏洞ShellShock的出现 。

Liles 博士曾是普渡大学网络取证专业的教授。在那时,他和他的学生研究汽车以及其他物联网设备的网络安全问题。他说,多层防御已经接近死亡,换言之我们不能再依赖于多弄几层的安全保护了。我们的手机和其他个人设备可能泄露我们正在做的事情,例如:我们去了哪儿,我们正在和谁交流,或其他更加隐私的活动等。这些设备和它们所包含的信息,存在于我们的私人和工作网络中。显然一个被入侵的手机可能被利用,入侵者可以访问其发现的所有信息,甚至把病毒传播给与它相连接的所有电子设备。

单就这些设备的数量本身就是一个巨大挑战。Liles 提出一些问题:“谁来做这个级别的事件响应?”更重要的是,谁来审核所有的代码? Eric S. Raymond 在《大教堂与集市》中写道,“只要有足够多的眼睛,所有的问题都将不是问题,” 此称之为林纳斯定律。但我们不能仅仅只依赖于足够多的眼睛来发现问题。假如像 OpenSSL 这样重大的项目都会由于缺少资金而导致 Heartbleed 这类漏洞的话,那么谁来检查这些我们每天都用到的数以百万行代码的软件呢?

开源的代码就真的绝对安全?

虽然 2011 年美国航空航天局和国家公路交通安全管理局做的关于丰田汽车意外加速事件的调查表明:“没有证据证明电子故障是导致大量意外加速的原因”,但是其他研究人员已经确定汽车可以通过软件来加速。IOActive 报告中写道:“如果电源管理 ECU 被破坏,我们将能够很容易的改变速度,这个时候汽车是非常不安全”。显然,软件已经是现代汽车安全的重要组成部分之一。

然而,与 Liles 团队做类似研究的仍然很少。单纯分析软件是非常困难的。Liles 认为:“计算机取证模块几乎很少被内置到系统中,但是为了使证据具有法律效力,往往需要借助逆向工程。”此外,物联网设备所带来的威胁需要从研究方式上进行根本解决。解决掉一些旧的信息保障,安全体系学说,基于神学、半真理性的,过时的技术理论等。

那么,到底要不要将开源思想融入进去呢?不管代码是否开源,一些意外的错误仍然存在。心脏滴血Heartbleed破壳漏洞ShellShock等漏洞的存在确实证实了许多开源软件同样存在一定的漏洞。有些人为的错误在开源代码中有着更加巨大的风险。开源在某种程度只是给我们提供了一种监管方式,我们可以方便的查看、检验源代码实际的运作情况。当汽车成为开放的系统并与我们的电话,互联网相连之后,这其中的安全问题也变得愈加突出。