开源软件是提高生产力和软件质量的关键因素,正确的使用开源软件,可以提高产品的竞争力,因此开源现在已是IT行业势力庞大的一支生力军,它免费、开放、可定制、受整个社区的监督。鉴于开源在IT界的地位和影响力,任何关于其价值的大讨论已经没有必要。
“当源代码向全世界开放,你将会被多双眼睛检查同一配置。因而,一旦发现问题,代码拥有者也可以更快地进行修复。”
另一方面,在产品功能不断更新,开发周期不断缩短的压力下,很多公司难以有效的对代码中的开源软件进行有效的识别和管理而失去管理的开源软件可能会带来多种风险。因此,开源的好处却也是风险的来源。一些安全和法律界专家,尽管也认可开源的好处,却依然不断地警告各类组织和个人:“开源并不完美,也许并不适合所有人。”
风险之安全漏洞
开源软件可能存在安全漏洞,很明显,如果代码里的漏洞每个人都可见,那么罪犯也可以看到。而且即使百万双眼睛盯着开源代码也并不能保证每个漏洞都能被发现并补上。
Accuvant解决方案研究主管拉法尔·洛斯曾说过:“有种说法称开源软件由于其开放性和‘有百万双眼睛检查源代码’而天生更安全。这种说法已经被诸如心脏滴血和其他一些漏洞彻底打脸。”而KNOS项目共同创始人兼主要架构师凯文·迈克李维就略带嘲讽地发表过类似的观点,将开源称之为“开伤”(Open Sores)。
“开源将源代码公布,许多双眼睛宣称将检查它,因而任何可能的不良代码都逃不脱众人之眼。然而,心脏滴血出现了。自2012年2月发布之日起,这段有问题的代码就一直暴露在‘众人之眼’前,但没有任何一个人发现它,直到两年之后,漏洞都被利用滥了才忽然醒悟。”
这是因为百万双眼睛并不意味着所有这些眼睛都有发现漏洞的能力。首先,开源社区检查过的代码根本谈不上认证。再者代码开放给所有人,并不意味着大家都能理解代码实际上干了什么,或者,干错了什么。最后,即使漏洞被发现,补丁已公布,也不能保证受影响的每台设备每个系统都会打上补丁。
忽略与遗忘
这种问题的存在很大程度上是因为开源往往由“两个独立的实体”支撑。以Linux为例,有“内核团队”和“应用维护团队”。虽然任何对Linux内核自身的改变依然需要经过Linux创造者林纳斯·托瓦兹的首肯或由他信任的少数内核维护者之一批准,但是对维护Linux单个应用程序或软件包(package)的其他众多开源项目,他们却毫无兴趣。这就引发了用户领域的绝对无政府状态,当然也就对稳定性和安全性毫无益处,因为根本没人负责。
另一方面,商业应用中使用的开源组件也是一个巨大的问题,因为它们太容易被人遗忘。例如OpenSSL库和它一系列重大漏洞被发现时所引发的问题。开源和商业软件都迫切需要修复,但当OpenSSL用于商业应用程序时,很多终端用户根本意识不到它在那里,所以不知道需要进行修复。虽然可能已经开发出补丁,还是需要有人来安装补丁。而通常情况下,开源应用并没有“自动更新”这种选项。
根据开发者和公司的需要定制或修改代码是开源的好处之一,但这一好处同时也是双刃剑,不知道什么时候就会被伤害。所有这些修改,会造成开源程序出现各种修改版。而很多这些修改的应用程序会重新发布供全世界享用。然后,问题来了:你到底用的是哪个版本呢?有时候你根本不知道。
这意味着,用户或开发人员以为自己已经打了补丁,但实际上,他有可能仅仅是安装了该应用的另一个版本,而这个版本很可能就是基于没打补丁的代码。漏洞依然存在。
好处与风险
使用开源的好处
·免费。
·用户无需经过任何人同意便可修改代码。
·百万双眼睛共同盯着,协作发现漏洞。
·任何人均可修复漏洞,无需告知厂商。
·通常与专有系统一样安全,甚至更安全。
潜在风险
·漏洞一旦曝光,对罪犯和好人的可见性是一样的。
·没有特定的个人或实体负责修复漏洞。
·补丁即便推出,也没有强制性要求必须安装。
·被漏洞影响的受害者不会得到任何人的赔偿。
·如果出现法律问题,比如侵害了第三方的知识产权,要找到另一方来负责非常困难。
·没有特定的实体或个人负责保证开源软件合规。
开放修改也意味着代码可能遭到恶意修改,甚至被注入恶意软件。或者,更糟糕的情况,从一开始恶意软件就藏在其中。很不幸,这些情况并不是理论上的,实际例子已经发生。开源社区人数众多,但想找个人出来对法律或合规问题负责很难。根本没人负责,出了问题,无人可告。
那么,用户有没有可能既享用开源的好处又免受开源之害呢?那就需要对所使用的开源代码进行有效的管理。需注意以下几点:
1、制定一套开源管理策略,并在该策略的指导下去使用开源软件,才能更加安全和高效的使用开源软件,让开源为公司带来更大的价值。
2、及时、有效的发现所使用的开源软件及其风险
3、让开源管理成为研发流程的一部分
总的来说,开源管理是一个极其复杂同时又很专业的事情,单靠人工管理很难很好对开源代码进行管理。因此通常要借助专业的工具,如何在研发的过程中有效的使用开源管理工具,而又不对研发流程和开发周期造成不良的影响,这是对开源审查和管理工具提出的要求。
FOSSID 是一个软件解决方案,能够单独部署使用,也可以与现有的开发流程进行无缝集成,能够有效的检测到您的代码库中任何的开源代码痕迹,不论是整个开源组件的引用,还是仅仅引用了一小段代码片段。FOSSID 可以帮您有效的发现并展示出您的软件涉及到的开源License 及相关的合规性,也能够发现并展示出这些开源软件存在的安全漏洞,帮助公司从开源审查这种繁杂的工作中解脱出来,将精力更多的用于如何为用户提供更有价值的产品。
了解更多 有关FOSSID 产品和服务的更多信息,请访问:www.fossid.com 中国地区请咨询: (+86) 177 9251 9176 sam.ext@fossid.com |
开源大潮不可阻挡,我们既要“拥抱”开源,又要避免其风险,尤其是在市场竞争日趋激烈、知识产权保护力度不断加大、自主可控要求不断强化的今天,如何安全、合规的使用开源软件,是我们需要解决的问题。FOSSID 可以在这方面为您提供帮助,让开源为您带来更大的价值!