图片 1

Synopsys 公司近日发布了“2018
年开源代码安全和风险分析”
Black
Duck(黑鸭)报告,深入考察了商业软件中开源安全性,许可证合规以及代码质量风险的状况。本次报告讨论的是从
2017 年审计的超过 1,100
个商业代码库中的匿名数据所得出的结果,行业包括汽车、大数据(主要是人工智能和商业智能)、网络安全、企业软件、金融服务、医疗保健、物联网(IoT)、制造业和移动应用市场。

随着开源代码在商业和家用应用上越来越流行,基于它的漏洞的攻击也日益增多,据黑鸭子软件对收集的开源项目的数据统计,其预计今年的攻击增长
20% 。

图片 2

黑鸭子软件安全战略部的副总经理
Mike Pittenger 介绍说,包含了 50%
以上的自由、开放源软件的商业软件项目占比从 2011 年的 3% 上升到今天的
33%。

开源软件与定制代码相比,既不是更不安全,也不是更安全。但是,开源软件的某些特性使得流行组件中的漏洞对攻击者非常有吸引力。Black
Duck(黑鸭)审计结果显示,现在,开源代码在商业应用和内部应用中无处不在,这在漏洞被披露时为攻击者提供了目标非常丰富的环境。漏洞以及对漏洞的利用通常是通过全国漏洞数据库(NVD,National
Vulnerability Database)、邮件列表和项目主页等来源进行披露的。

他说,平均每个商业应用使用超过 100
个开源组件,而三分之二的商业应用代码带有已知漏洞。

商业软件把更新自动推送给用户,而开源软件与之不同,后者采用一种拉动支持(pull
support)模式,即:用户自行负责跟踪他们所使用的开源软件的漏洞、修复和更新。开源代码可以通过多种方式进入代码库,不仅可以通过第三方供应商和外部开发团队进入,也可以通过内部开发人员进入。如果一个组织机构不了解其所使用的所有开源代码,它就不可能抵御针对这些组件中已知漏洞的常见攻击,并且它自己也会暴露在许可证合规风险之中。

更糟糕的是,软件的买家常常无法知道他们购买的软件中有哪些开源组件。

图片 3

相关阅读: 浪漫开发:如何避免使用开源时易受攻击感

2017 年,Black Duck On-Demand(黑鸭按需)审计在每个代码库中发现了 257
个开源组件。到 2018 年,每个代码库中开源组件的数量增长了约
75%。审计发现,96%
的被扫描应用中存在开源组件,这一比例与去年的报告相似。而在被扫描的应用的代码库中,开源代码的平均比例从去年的
36% 增长到
57%,这表明开源代码的使用量在持续大幅度增长,同时也表明,目前大量的应用所包含的开源代码要多于专有代码。

“一般来说,公司并不乐于提供这些”,他说到。他们为客户提供的组件列表常常是不完整的。“如果你未经他们同意就扫描二进制码,你很可能违反了他们的许可协议,给自己带来很多麻烦”。

某些开源组件对开发人员来说非常重要,以至于这些组件在极大部分的应用中都能找到。今年,用于开发
HTML、CSS 和 JavaScript 的开源工具包
Bootstrap 出现在 40%
的全部被扫描应用中;紧随其后的是
jQuery,有36%的应用包括该开源组件。在各行业常见的组件中,值得注意的是
Lodash,这是一个为编程任务提供实用函数的 JavaScript
库。Lodash
是诸如医疗保健、物联网、互联网、市场营销、电子商务和电信等
行业所采用的应用中最经常使用的开源组件。

一些大公司买家可能有权要求他们完整披露,并由第三方比如黑鸭子软件进行扫描验证。

图片 4

完全避免开源软件并不是一个好的选择。很多开源库是事实上的工业标准,而且从头开始写同样的代码太耗费时间,延误了投放市场的时间,损害了公司的竞争力。因此,商业软件商使用开源代码的越来越多,这个趋势在加速,Pittenger 说到。

审计还发现,每个代码库中开源漏洞的数量增长了 134%,而 78%
的被检查代码库中包含至少一个漏洞,每个代码库平均包含 64
个漏洞。这一高增长率部分归因于2017年报告的创记录的漏洞数量。仅美国国家漏洞数据库(NVD,National
Vulnerability Database)就列出了超过 14,700 个漏洞,而 2016 年仅列出
6,400 个漏洞。其他报告给出的漏洞总数超过 2 万个,其中近8000 是
NVD 报告未列出的。这些数字说明了 2017
年所报告的所有已知漏洞的情况,但其中超过 4,800
个是开源漏洞,这延续了已知开源漏洞为期五年的增长趋势。过去 17
年来,已经有超过 40,000 个开源漏洞被报道。

同样的逻辑适用于企业自建软件, ISACA 思维领导与研究部门总监
Ed Moyle 说。ISACA 是 IT 和 网络安全专业人员的一个全球化组织。

扫描揭示的另一个重要数据点是,所发现的漏洞的平均年龄正在增加。平均而言,审计中发现的漏洞大约在六年前已经被披露了,而在
2017
年报告则显示是四年前被披露。这表明,负责修复工作的人员需要花费更长时间才能完成修复(如果他们确实正在着手修复的话),这就使得越来越多的漏洞在代码库中积累起来。

“也有很多社区支持活跃的项目,带来可靠的安全和功能更新”,他补充说。“在特定情况下,如果能够审计代码会带来安全的好处,当然也带来了高度定制软件的能力。按照以往经验,如果一个商业工具能够做什么事,很可能就会有开源工具提供同样的功能。”但是,“多个眼睛”来检查开源代码漏洞的方式并不总能有好的效果。

图片 5

“任何人都可以审计代码,但也可能每个人都认为有人来审计,结果最终谁都没有做此事。” 来自 AlienVault 的安全顾问 Javvad
Malik 说。“这是一个问题。”

此外,这些开源组件还广泛存在许可证问题,企业不太可能使用传统的电子表格方法来跟踪这么大量的许可证义务,而如果没有一套自动化流程的话,这可能就是件不可能的工作。这也导致
74% 的被审计代码库中包含存在许可证冲突的组件,其中最常见的是违反 GPL
许可证协议,存在于 44% 的代码库中。该报告进行审计的代码库中,85%
或存在许可证冲突,或包含不具备许可证的组件。

结果,管理开源组件越来越棘手,而那些坏家伙们也意识到这一点。

图片 6

开源代码到处都是,所以攻击者可以使用同样的利用方式寻找一大批目标。由于跟踪开源代码的困难,使用者常常不打补丁和更新,这样,黑客可以利用已知漏洞和已公布的缺陷利用例子。

其中,互联网和软件基础设施垂直行业的应用包含高风险开源漏洞的比例最高,为
67%;其次是互联网和移动应用行业,比例为
60%。具有讽刺意味的是,网络安全行业的仍然被发现存在很高比例的高风险开源漏洞,虽然低于去年的59%,但依然高达41%,这使得该垂直行业处于第四高的位置。

物联网的兴起去年也成为了一个主要的安全问题,今年将继续是一个主要问题,专家们预测。

在金融服务和金融科技市场中,34%
的被扫描应用包含高风险漏洞,而医疗保健、健康技术和生命科学垂直行业中的应用紧随其后,有
31%
的应用包含高风险漏洞。制造业、工业和机器人技术在这方面的比例最低,为
9%,这可能是由于
OEM(制造商)对整个软件供应链上的供应商施加压力,要求后者提供经过审查的、干净的代码。相反,制造业垂直行业在所有垂直行业中占据了第三大许可证冲突的位置,比例高达 
91%。

“智能设备和物联网中使用了许多开源软件,这正是 Mirai
僵尸网络病毒利用的漏洞,”Malik 说。(LCTT 译注:自 2016 年 9
月黑客操控感染了恶意软件 Mirai 的物联网设备发起了 DDoS
攻击,影响波及很多著名网站,并导致服务中断,影响颇深颇广。)

事实上,根据黑鸭按需审计集团(Black Duck
On-Demand)提供的审计数据,所有垂直行业的企业都应该关注开源许可证问题,也应该关注由于未能遵守开源许可证协议而导致的代码知识产权诉讼或侵权(compromise)所带来的潜在风险。存在许可证冲突的应用在各个行业分布情况互不相同:在零售和电子商务行业中低至
61%,而在电信和无线行业则很高 – 他们 100%
的被扫描代码都存在某种形式的开源许可冲突。

同时,开发者常常不检查开源代码漏洞,或者怀疑有问题但由于最后期限的压力,而直接使用了。所以,不只是未打补丁的漏洞存在着,还有新写的代码会集成进去旧的、已知的漏洞,黑鸭子软件的
Pittenger 说到。

图片 7

商业软件项目中的漏洞平均存活时间为 5 年,他说到。

负责分析此报告的由 Synopsys
开源研究与创新中心(COSRI)表示,再争辩是否应该使用开源代码已经没有什么意义了。可以证明的是,目前,大多数应用程序代码都是开源的。在经过审计的包含开源代码的代码库中,这些代码库中平均
57%
的代码都是开源组件,这就证明,目前许多应用中所包含的开源代码要多于自有代码。随着开放源代码使用量的增长,风险也如影随形,主要原因在于企业缺乏适当的工具来识别他们内部的以及面向公众的应用程序中使用了多少或者什么样的开源组件。通过将策略、流程和自动化的解决方案集成到软件开发生命周期中,以便识别、管理和保护开源代码,企业才能够最大限度地发挥开源的优势,同时有效管理漏洞和许可风险。

心血漏洞这个漏洞早在
2014 年初就在 OpenSSL 库中发现,并被广泛宣传。但去年,在测试的应用中仍有
10% 存在此漏洞。

(文/开源中国)    

此外,每年有 2000 到 4000 个新漏洞被发现,Pittenger 补充说。

要解决这个问题,需要软件商和顾客的切实行动,以及企业级软件开发者的安全意识——不过目前看在最终改善前,形势很可能还要恶化。

欢迎对此提出您的评论。

编译自: 作者:
Maria Korolov 译者: jasminepeng

来自:Linux.CN