在全球范围内,开源软件(open source software)得到了越来越广泛的应用,互联网、IT、金融无不涉及。据国家互联网应急中心实验室数据统计,超过80%的商业专有软件(proprietary software)使用开源软件或开源组件。
首先我们来看一组数据,由网站监测服务提供商Pingdom给出的关于世界排名前10000的网站中,有74.6%使用的是开源的Web服务器,这一数字仍在逐年递增。
再来看另外一组数据,据Black Duck(开源代码审计和管理服务商)调研发现,78%的企业组织正在使用开源软件,承载部分或全部业务,五年前的这一数字仅为42%;66%企业表示在考虑专有软件之前会先考虑开源软件;并且在未来2-3年内,云计算、大数据、操作系统和物联网领域会受到开源代码的影响。
下面我们来看一些我们熟悉的身影:
Hadoop、Hypertable、Spark
OpenStack、Cloud Foundry
Redhat、Ubuntu
Apache、Nginx
Bugzilla、Eclipse
DNN、Joomla!
包括谷歌、Facebook、IBM、亚马逊、阿里巴巴、百度在内的企业都使用了以上一项或多项开源应用软件,其涉及领域广,应用范围大。
开源软件安全性问题近两年成井喷式爆发,包含多起严重的安全漏洞事件,打破了我们传统观念中的开源=安全的概念。
开源(open source software)和专有软件(proprietary software)的安全性问题一直以来都是见仁见智的,没有定论。前文中也提到,当前很多专有软件同样会使用开源组件,这就使得影响面进一步扩大,其安全性问题也变得格外重要。
开源软件的定义是其源码可以被公众使用的软件,并且此软件的使用,修改和分发也不受许可证的限制。由定义不难看出,开源软件的源代码开放是其与专有软件的根本区别,因此源代码开放产生的安全优劣势就成为了开源软件安全性的重要指标:
通常而言,开源软件由于源代码开放的原因,始终宣称即使存在漏洞和程序BUG,也能及时被软件开发者发现并进行修复。但是其在快速迭代过程中,安全开发规范的执行与开发人员安全开发能力得不到保障,成为潜在的安全隐患。
漏洞利用情况相对于专有软件更易被利用,其处于完全的白盒状态,整个运行模式及运行流程被掌握,攻击者越多的了解这些信息,完成漏洞POC也就越容易。
有别于专有软件的定期发布补丁,开源软件在漏洞被发现后修补的周期要更短,大量的开发人员可以对漏洞进行修复及代码优化。以Linux为例,其对漏洞的平均修复时间从早期的122天缩短到现在的6天。
Synopsys公司在2014年发布的报告中显示,开源软件的代码质量已经超过专有软件,其通过Coverity的分析发现,开源C/C++项目的代码平均缺陷密度为0.59,而企业项目的C/C++代码平均缺陷密度为.72。(缺陷密度,既每1000行代码的缺陷量,是常用的软件质量衡量标准)
早期的开源软件规模与影响较小,开发文档重视程度及安全开发成熟度都不高。
现今成熟的开源软件都会有在线及离线的文档,其中一些会有Wiki系统,方便使用者学习及反馈,创建完善的文档管理模式,这也是开源软件影响安全的因素之一。
对于应用开源软件的机构组织,为保证自身所使用的开源软件安全,可以遵循以下建议,提高安全水平:
参考文献: