开源:好处与风险并存
作者: 日期:2015年06月25日 阅:6,059

2开源现在已是IT行业势力庞大的一支生力军,它免费、开放、可定制、受整个社区的监督。鉴于开源在IT界的地位和影响力,任何关于其价值的大讨论已经没有必要。

“当源代码向全世界开放,你将会被多双眼睛检查同一配置。因而,一旦发现问题,代码拥有者也可以更快地进行修复。”

好处与风险

但另一方面,这些好处却也是风险的来源。一些安全和法律界专家,尽管总体上认可开源的好处,却依然不断地警告各类组织和个人:开源并不完美,也许并不适合所有人。

开源的优点同时也是风险的根源。很明显,如果代码里的漏洞每个人都可见,那么罪犯也可以看到。而且即使百万双眼睛盯着开源代码也并不能保证每个漏洞都能被发现并补上。

“有种说法称开源软件由于其开放性和‘有百万双眼睛检查源代码’而天生更安全。这种说法已经被诸如心脏滴血和其他一些漏洞彻底打脸。”(Accuvant解决方案研究主管拉法尔·洛斯)

而KNOS项目共同创始人兼主要架构师凯文·迈克李维就略带嘲讽地将开源称之为“开伤”(Open Sores)。

“开源将源代码公布,许多双眼睛宣称将检查它,因而任何可能的不良代码都逃不脱众人之眼。然而,心脏滴血出现了。自2012年2月发布之日起,这段有问题的代码就一直暴露在‘众人之眼’前,但没有任何一个人发现它,直到两年之后,漏洞都被利用滥了才忽然醒悟。”

另一个例子是GNTTLS里的“Ghost”漏洞利用,漏洞可追溯到2005年,但直到去年才被发现。然后是,大名鼎鼎的Bash shell,同样是公开源代码,同样是被众人之眼监督,而且历史都可追溯到1989年,照样潜藏了破壳(Shellshock)漏洞。这是因为百万双眼睛并不意味着所有这些眼睛都有发现漏洞的能力。

首先,开源社区检查过的代码根本谈不上认证。再者代码开放给所有人,并不意味着大家都能理解代码实际上干了什么,或者,干错了什么。最后,即使漏洞被发现,补丁已公布,也不能保证受影响的每台设备每个系统都会打上补丁。

有两个最近的开源风险的例子,Park’n Fly和OneStopParking.com就因为Joomla内容管理平台中的开源安全漏洞而遭受攻击。而且,在攻击发生前就已经发布了安全补丁,但很不幸,补丁并未被安装。

忽略与遗忘

问题的存在很大程度上是因为开源往往由“两个独立的实体”支撑。以Linux为例,有“内核团队”和“应用维护团队”。虽然任何对Linux内核自身的改变依然需要经过Linux创造者林纳斯·托瓦兹的首肯或由他信任的少数内核维护者之一批准,但是对维护Linux单个应用程序或软件包(package)的其他众多开源项目,他们却毫无兴趣。

这就引发了用户领域的绝对无政府状态,当然也就对稳定性和安全性毫无益处,因为根本没人负责。

另一方面,商业应用中使用的开源组件也是一个巨大的问题,因为它们太容易被人遗忘。例如OpenSSL库和它一系列重大漏洞被发现时所引发的问题。开源和商业软件都迫切需要修复,但当OpenSSL用于商业应用程序时,很多终端用户根本意识不到它在那里,所以不知道需要进行修复。虽然可能已经开发出补丁,还是需要有人来安装补丁。而通常情况下,开源应用并没有“自动更新”这种选项。

根据开发者和公司的需要定制或修改代码是开源的好处之一,但这一好处同时也是双刃剑,不知道什么时候就会被伤害。所有这些修改,会造成开源程序出现各种修改版。而很多这些修改的应用程序会重新发布供全世界享用。然后,问题来了:你到底用的是哪个版本呢?有时候你根本不知道。

这意味着,用户或开发人员以为自己已经打了补丁,但实际上,他有可能仅仅是安装了该应用的另一个版本,而这个版本很可能就是基于没打补丁的代码。漏洞依然存在。

正方与反方

好处:

·免费。
·用户无需经过任何人同意便可修改代码。
·百万双眼睛共同盯着,协作发现漏洞。
·任何人均可修复漏洞,无需告知厂商。
·通常与专有系统一样安全,甚至更安全。

缺陷:

·漏洞一旦曝光,对罪犯和好人的可见性是一样的。
·没有特定的个人或实体负责修复漏洞。
·补丁即便推出,也没有强制性要求必须安装。
·被漏洞影响的受害者不会得到任何人的赔偿。
·如果出现法律问题,比如侵害了第三方的知识产权,要找到另一方来负责非常困难。
·没有特定的实体或个人负责保证开源软件合规。

开放修改也意味着代码可能遭到恶意修改,甚至被注入恶意软件。或者,更糟糕的情况,从一开始恶意软件就藏在其中。很不幸,这些情况并不是理论上的,实际例子已经发生。

开源社区人数众多,但想找个人出来对法律或合规问题负责很难。根本没人负责,出了问题,无人可告。

开源拥护者认为,开源社区比开发私有软件的公司更靠得住。比如,如果开发专有系统的公司破产,使用这个系统的客户怎么办?而开源软件有自己的生命周期,不属于任何一家实体。因此可以说,其支撑网络和稳定基础总是存在的,开源社区就是开源软件的稳定性之源。

那么,用户有没有可能既享用开源的好处又免受开源之害呢?

可信与审查

公司应当像对待其他闭源软件一样对待开源软件。

首先需要知道来源,保证来源可信,并且从其他可信源收集软件的可用更新也是必须的。

即使来源是可靠的,还需要有适当的受控的过程和程序来审查软件,审查通过之后才可以在企业内部进行部署。

最后,还需要部署程序来管理和监控进入企业系统的软件,包括确保企业了解漏洞和可用补丁的情况,最重要的是,确保补丁得到安装。

相关阅读:

众人之眼--开源软件的安全状况

OpenSSL的过去、现在和未来

关键词:

申明:本文系厂商投稿收录,所涉观点不代表安全牛立场!


相关文章