关于Heartbleed漏洞的消息在网络上引发了激烈的讨论。这个从OpenSSL项目中爆出的漏洞让攻击者可以在多种加密传输的网络数据中窃取用户信息,由于OpenSSL被广泛使用在Web服务器、邮件协议、通讯协议中,所以一时间受影响的用户数量难以估计。
Heartbleed漏洞事件再次显示出了网络安全的脆弱性,当然对于那些重视安全的厂商来说这也给了它们升级基础服务、增加安全强度的机会。看上去这也许是这次严重的安全威胁带来的为数不多的“好处”了。
那么下面我们来看看OpenSSL和开源之间有什么关系呢。
OpenSSL里存在的致命漏洞——SSL加密是通过开源方式实现的,(Secure Sockets Layer:安全套接层)。也许很多人会质疑:使用开源手段开发的技术在某种程度上是一种错误?如果使用闭源会出现这样的结果吗?不过我们还是先来听听安全专家们的解释把。
开源还是闭源?
首先来解释一下开源和闭源之间的区别。我们所谓的Source指的是程序的源代码,也就是真正驱动App运行的文本命令。
闭源App是不会向公众分享它的源代码的,其代码主要是由内部开发者进行编写和维护。我们所熟知的 Microsoft Office 和 Adobe Photoshop 就是商业化闭源的最好案例。
开源,顾名思义就是向大众公开软件代码,开源项目通常是协同合作来完成的,所以任何一个开发者都可以免费看到源代码,同时还可以编写代码、增加功能等等。比较典型的开源项目就包括 Linux、Apache Web server 和 OpenSSL。
开源项目里潜在的危险!
如果开发者A提交了对于开源项目的修改文档,而开发者B正在对项目里的代码进行修改,潜在的危险可能就来自这里。更糟糕的是,如果某些图谋不轨的开发者故意向开源项目里引入一些Heartbleed之类的漏洞的话,后果不堪想象。难道开源工具天生就不安全?还不如闭源安全?
“由此可得出一个论点:开源软件开发里协作性所带来安全问题是决定整个软件生命周期的重要因素之一。”ISC COO David Shearer如是说。
事实上,如果通过人工方式无法检测到项目里存在的错误,最好是利用一个简单的安全诊断功能来完成这一任务。Shearer说:“其实开源团队可以花一段时间集中精力对关键的安全架构/组件进行全方位的加固,尤其是要对开源软件里那些多人协作完成的部分做更紧密的管理和监控。”
当然,开源项目协作团队所存在的安全问题并不能一叶落便知天下秋,故此,加强开源安全性能的方法也不是唯一的。
“开源的优势在于整个过程是透明的,我们能够快速发现并及时修改程序里的bug。”Lancope CTO TK Keanini 说到。
虽说出现Heartbleed漏洞这类现象并不是意料之中的事情,但是如果把所有的责任都推到开源头上,未免有点太武断了。不管对软件源代码的开发、管理有多么严格,有些意想不到的安全漏洞都会在商业软件里出现,即使你在这个软件项目上花费了巨大的金额。
“只盯着开源社区、个人或者程序是根本解决不了多少问题的。开源软件和商业软件就像是一对好兄弟,但是bug永远是他们的影子。”CloudPassage公司DevOps高级总监Andrew Storms如是说。