开放源代码包含较少的缺陷,但是有一个问题

研究表明,使用开放源代码开发的软件比使用专有代码构建的软件包含更少的缺陷。另一方面,开放源代码很少能从专门负责查找bug的安全团队中获益。

思想库

开放源代码的质量比专有代码低。至少,现在有很多人是这么认为的。

直到今年,您还可以提出一个有说服力的论点,即自由可用源代码中的缺陷比专有软件中的缺陷更容易被发现和及时修复。后来出现了转到失败,Heartbleed,弹震症贵宾犬。在某些情况下,尽管任何人都可以免费查看代码,但这四个开源软件中引人注目的bug多年来都没有被发现和修复。

这已经让很多人对开源软件的开发方式产生了疑问——以及依赖某人在某个地方分析代码并发现缺陷是否足够。存在这样一种风险,即每个人都假设其他人分析代码,而实际上,拥有必要技能的人都没有这样做。这就对在企业中采用开源软件是否明智产生了疑问。

【调查:安全,质量是顶级公司使用开源的原因]

但是专有软件常常包含缺陷,包括安全漏洞。有没有真正的证据表明开放源代码比封闭源代码更好或更差?

一年一度的Coverity扫描报告提供关于开源和专有软件中代码缺陷数量的客观信息来源。该报告分析了使用两种不同模型开发的软件中发现的缺陷级别,并通过其静态分析系统运行这两种模型。

重要的是要记住,扫描报告只包括提交扫描的软件;从某种意义上说,这是一个自我选择的样本。也就是说,开源软件和专有软件的缺陷密度——每1000行代码中的缺陷数量——是非常相似的。

事实上,最近的报告(2013年)发现用C和c++编写的开源软件比专有代码的缺陷密度更低。所有大小的项目的平均缺陷密度对于开放源码是0.59,对于专有软件是0.72。

一般来说,少行代码的应用程序的缺陷密度比大的应用程序要低,尽管超过100万行代码的大应用程序的缺陷密度实际上比一些中等大小的应用程序要低。

开放源代码可能是安全的,但是保护它的团队较少

就代码质量而言,这似乎是对开源软件的认可。Coverity的高级产品总监Zack Samocha说,当谈到安全漏洞时,许多开源项目没有采取足够的措施来防止它们。

一个典型的专有软件公司会有一个安全团队来确保最佳实践的实施。他们有维持这些团队的预算,”他说。“我在开源社区中看不到这些实体。”

(特点:为什么开源软件没有你想的那么安全]

对于较小的项目来说可能是这样的,但是像Red Hat这样的商业开源公司,以及许多大型开源项目——尤其是那些为企业部署而设计的软件——几乎总是有协调一致的安全措施。

Samocha说,Linux社区正在采取措施提高安全性——尽管在他看来还需要做更多的事情——但是他补充说,所有开源项目都需要在他们的日常思维中增加安全性。“在商业软件公司中,开发人员和首席信息官一直在考虑安全问题。在开源项目中,我不确定是否会发生这种情况。”

Samocha还认为开源项目可以更好地利用安全生态系统和现有的商业工具。“大多数工具是针对安全团队而不是开发人员的,”他说。“安全团队应该过滤缺陷,并将相关的缺陷交给开发人员社区进行修复。”

静态分析工具有帮助,但只是在一定程度上

当然,没有安全团队的项目不能以这种方式工作。运行分析工具的单个开发人员有被太多无关的错误或误报淹没的风险。这可能会导致他们完全忽略这些工具。

Coverity的高级技术经理Jon Jarboe说:“如果开发人员不得不浪费宝贵的周期来调查太多‘不在乎’的结果,或者如果他们花费太多时间等待分析完成,他们将不可避免地停止使用这些工具。”

安全团队也被证明是有用的,因为通过静态分析工具运行代码可以发现许多代码缺陷,但肯定不能捕获所有缺陷。

Heartbleed bug就是一个很好的例子:在发现它之前,Coverity的静态分析是无法检测到它的。(该公司增加了一种新的分析启发式,现在确实可以探测到它,但这不是重点。)Shellshock缺陷是另一个:一些静态分析工具可以发现它,但是只有在大量错误的情况下才会发现它。

静态分析可以找到已知的漏洞。未知的漏洞怎么办?迈克Gualtieri他是弗雷斯特研究公司的首席分析师。“这就是威胁建模的用武之地。这种技术可以让你发现应用程序面临的威胁,并为每种威胁确定缓解策略。”

有疑问时,审核代码

在有许多参与者且没有安全团队进行协调的项目中,这种整体的安全性方法可能很难实现。那么,如何才能提高开放源码软件的信任度呢?

[相关:获得开源软件支持的5种方法]

对于那些决定使用开源代码的企业来说,他们的项目可能没有足够的资源来致力于安全性,所以总是可以选择让有资格的人或团队来审计这些代码。

然而,这样的审计既昂贵又耗时,因此,大公司甚至行业组织最终可能会为这些项目提供资金,以造福于更广泛的用户社区。或者,众筹资金审计TrueCrypt审计已经得到资助了吗关闭在五月-可能变得越来越普遍。

当涉及到核心开源项目时,比如OpenSSL,它构成了互联网运行的大部分软件基础设施,Linux基金会的核心基础设施计划可能会有很大的不同。它由微软、IBM、谷歌和戴尔等公司资助,旨在提供资源帮助这些项目提高安全性,并支付外部代码审查费用。

对开源软件的信心在过去几个月里确实受到了打击——但是,最后值得记住的是,所有的软件都有代码缺陷。更重要的是,当然没有证据表明使用开放源码模型开发的软件比任何其他类型的软件更可能包含严重的缺陷。

“开放源代码包含较少的缺陷,但是有一个陷阱”这篇文章最初是由首席信息官

加入网络世界社区有个足球雷竞技app脸谱网LinkedIn对最重要的话题发表评论。

版权©2014Raybet2

工资调查:结果在