现在,无论是商业软件还是程序员自行开发的小程序,开源代码已经变得越来越普遍了,而开源似乎也已经成为了一种趋势。但需要注意的是,Black Duck软件公司的研究人员根据他们对开源项目所收集到的统计数据预测到,基于开源软件漏洞的网络攻击活动数量在2017年将增长20%。
Black Duck软件公司的安全策略副总裁Mike Pittenger表示,商业软件项目的免费版本数量已经超过了50%甚至更多,而开源软件产品所占比重从2011年的3%增长到了现在的33%。平均每一款商业软件都会使用超过100个开源组件,而且三分之二的商业应用代码中已知是存在安全漏洞的。
最糟糕的是,买家和用户通常都没有办法知道他们所购买的产品使用了哪些开源组件。一般来说,公司在这一方面做的都不是很到位,有些公司可能会给客户提供一份产品组件清单,但这些清单所名列出的组件数量和类型往往是不完整的。如果你打算在没有得到厂商允许的情况下对产品代码进行分析,那么你很有可能会违反他们的产品许可协议,而这将会给你带来一大堆麻烦,所以我们不建议用户这样做。但是由于行业地位和影响力等因素,某些大型企业在购买第三方软件产品时会要求厂商提供产品的完整技术细节,并且还会请类似Black Duck这样的第三方厂商来对产品代码进行安全审查。
Pittenger认为,避免使用开源软件其实并不可取。很多开源代码库的开发是完全符合行业标准的,而重复造车轮绝对是在浪费时间,这样不仅会延迟产品的上市时间,而且还会使公司的行业竞争力大大降低。因此,越来越多的商业软件开发商会开始在自己的产品中使用开源代码,而这种趋势目前正在加速发展。
目前,任何一个活跃的开源项目背后都有社区的积极支持,而这将会给这款产品带来可靠的安全保证和稳定的功能更新。在某些情况下,如何某款产品允许用户自行对软件源码进行安全审计,或者可以对该产品进行高度定制,那么将会对产品的安全性提升有很大的帮助。就我们的经验来看,如果某一款商业工具可以做到这件事情的话,那么肯定会有相应的开源工具可以做到同样的事情。
但是,这种“多渠道”的漏洞检查方法并不总是百分之百有效的,仍然会有很多开源代码中的漏洞会成为漏网之鱼。
“任何人都可以对代码进行审计,但并非每个人都会这样做,因为似乎每一个人都认为其他人已经对这些代码进行过安全审查了,这也就是问题之所在。”
因此,管理开源组件的问题已经成为了一个非常棘手的问题,而且网络犯罪分子们似乎也已经意识到了这一点,并逐渐开始利用我们的这一薄弱点来实施攻击。
在目前的互联网中,开源代码几乎无处不在,所以攻击者只需要利用一个漏洞就可以攻击大量的目标。对开源代码的追踪其实是非常困难的,隐私用户通常无法对产品中的开源代码进行及时地修复和更新,所以攻击者就可以利用很多已知的漏洞和安全研究专家所发布的漏洞PoC来实施攻击。
除此之外,物联网在去年也得到了非常迅速的发展,而物联网设备的安全性也成为了目前的一个令人头疼的问题。毫无疑问,这个问题在2017年仍将困扰着我们。
Malik认为,现在很多智能设备和物联网设备都会使用大量的开源工具,而臭名昭著的Mirai僵尸网络就是一个很好的例证。
与此同时,开发人员通常都不会去检测开源代码中的安全漏洞,而且有时候迫于产品开发期限的压力,他们明知代码中存在安全问题,却仍然选择直接使用它们。这也就意味着,即便是开源项目的维护人员及时发布了更新,外面也仍然存在很多未打补丁的产品。当你的新产品使用了旧版本的开源组件时,你的新产品中也会存在已知的安全漏洞。而且据统计数据显示,商业软件项目中的安全漏洞平均年龄为五年,有些产品中的某一漏洞甚至存在了有十年之久。
OpenSSL代码库中的Heartbleed漏洞在2014年初被发现,而该漏洞的曝光也引起了业界的广泛关注。但是在去年,仍然有10%左右的应用软件正在使用包含漏洞的OpenSSL版本。而且Pittenger表示,安全研究专家平均每一年都可以在开源软件中找出2000到4000个安全漏洞。
解决这个问题则需要软件厂商和广大客户的共同努力,而且企业的软件开发人员也需要培养良好的安全意识。但我们应该做好心理准备,因为在情况好转之前,目前的安全状况只会变得更加糟糕。