开源组件可以帮助开发人员更快地进行创新,但有时也需要付出高昂的代价。
企业环境(以及商业软件公司)中的开发人员已经意识到,为了快速提供产品功能,没有比利用一些代码重新构建属于自身的软件更方便快捷的方法了。因此,他们开始越来越多地通过在其代码库中混合和匹配开源软件组件的方式来构建属于他们的软件,以最大限度地缩短其软件开发时间,留出精力编写真正能够为其应用程序增加价值和差异性的组件。
这种对开源组件的依赖性极大地加速了开发人员的创新速度,但往往也需要付出高昂的代价:许多可供下载的组件都包含危险的安全漏洞。
我们从一个简单的,定义明确的示例来看软件供应链,是这样子的:
那么开源的情况则是混乱的:未经验证的许可证、未经测试的软件仓库、以及狂野的西部牛仔(开发者),这一切所导致的软件供应链看起来似乎是不可管理的,漏斗的形状更像是这样:
正如上图所直观显示的一样,开源至少导致了一个额外层次的增加。或许你并不这么认为,而是说,将开源组件简单的插入产品中,和过去授权插入第三方的组件没有任何本质上的差别。这里要说明的是,虽然看起来没什么大的变化,但是有一个隐性的知识需要考虑。关于上游的开源组件,多数的源代码仓库时候是没有任何的商业保证的。作为供应链或产品经理,最不愿意的事情就是被别人掐住喉咙,一旦出错,是无法补救的。
目前,一些公司已经制定了有关开发人员如何以及何时使用这些开源组件的策略,并且正在积极地管理这些组件以跟踪安全缺陷;但是另有一些公司并没有这些安全实践。最新的研究结果表明,那些进行了良好安全实践的企业可以最大限度地降低将这些组件引入软件的风险,同时也能最大限度地提高收益。
美国新思科(Sonatype)公司于上周发布的《2019年软件供应链状况报告》,该报告由新思科技网络安全研究中心(CyRC)制作,审查了由黑鸭(BlackDuck)审计服务团队执行的超过1,200个商业应用程序和库的审计结果。报告重点介绍了开源应用的趋势和模式,以及不安全的开源组件和许可证冲突的普遍性。在该报告中,Sonatype公司首席执行官Wayne Jackson表示:
“对于那些通过更好的供应商选择、组件选择和自动化来实现其软件供应链的组织来说,其得到的回报是巨大的。”
1. 几乎所有软件都是开源软件
最新的研究结果表明,如今几乎所有的现代软件都包含至少一些开源组件。根据Synopsys今年早些时候发布的《2019开源安全和风险分析(OSSRA)报告》显示,在至少包含1000个文件的应用程序中,99%的应用程序至少包含一些开源组件。同时,针对Sonatype所研究的500个现代应用程序的分析结果也显示,平均来看,85%的代码是由开源组件组成的。
2. 开源组件可用性激增
Sonaypte的研究表明,过去两年开源组件的平均增长速度提高了75%。开发人员越多地使用开源组件,他们就越有可能为自己的项目做出贡献——这也推动了各种在线存储库不断提供新的开放代码,形成了一个新开放代码协作世界。自2018年初以来,开发人员平均每天可以访问超过21,448个新的开源组件版本。
3. 对开源组件的需求也呈现飙升趋势
上图显示Java项目在可用组件的总体量和增长方面处于领先地位。不仅有更多的Java组件可供下载,而且在现实世界中也可以更多地使用这些组件。对于Java组件发布的下载请求总数在2018年增长了68%,达到了1460亿。Sonatype估算如果假设世界上大概有1200万Java开发人员,这一数字就相当于平均每人12,166个请求。
4. 持续增长5年的开源漏洞
Sonatype研究显示,自2014年以来,确认或疑似与开源有关的违规行为增长了71%。好消息是,开源漏洞的数量似乎在2018年达到了顶峰,过去一年略有下降趋势。尽管如此,Sonatype的研究数据仍然显示,1/4的受访组织表示他们在过去12个月内遭遇过一次安全事件。
5. 组件饱受漏洞困扰
研究表明,开源软件的使用本身并不是问题,相反地,还会对软件创新产生重要意义。但是未能积极主动地鉴别和管理任何与开源组件使用有关的安全和许可证风险,可能极具破坏性。根据OSSRA报告显示,在此次审计的代码库中有60%包含至少一个漏洞,虽然这一比例相比2017年的78%已经改善不少,但仍然是一个很大的比例。除此之外,OSSRA报告还指出,对于漏洞严重程度的深入研究显示,超过40%的代码库包含至少一个高风险开源漏洞。
6. 开源下载缺陷率仍然很高
在实践中,组织实际使用的易受攻击的组件要远低于OSSRA报告中提及的40%,但下载缺陷率仍然很高。Sonatype的分析结果表明,企业组织中大约8.8%的组件下载包含已知的安全漏洞。在最受欢迎的Java组件中,这一缺陷率甚至高达10.3%。然而,真正令人不安的是,在这些下载的漏洞中,67%的通用漏洞评分指数(CVSS)为7.0或更高。
7. 仅有一半组织对已知漏洞进行了检测
由于存在众多具有已知漏洞的开源组件,因此组织有责任对这些漏洞进行检查,以确保其软件组件的采购过程安全。不幸的是,WhiteSource于本月早些时候发布的另一项研究显示,在选择开源组件之前,只有一半的北美公司和42%的欧洲公司进行了这些检查。此外,只有1/3的组织使用了能够自动检测现有应用程序中这些漏洞的工具。
8. 管理软件供应链,管理风险
Sonatype的研究表明,积极管理其软件供应链、定期更新其开源依赖关系以及采用自动化开源策略的开发团队可以有效地降低其开源缺陷率。与未经管理的供应链相比,经过管理的供应链的易受攻击组件减少了55%。制定了相关策略和最佳实践的组织更倾向于使用包含较少已知漏洞的最新更新的组件。
本文翻译自:https://www.darkreading.com/application-security/the-truth-about-your-software-supply-chain/d/d-id/1335067?image_number=9如若转载,请注明原文地址: https://www.4hou.com/info/news/19099.html