开源组件在当今软件生态系统中扮演了关键角色,Synopsys 于 5 月 12 日发布了 2020 开源安全与风险分析报告,该报告强调了商业应用程序中开源软件使用的趋势和模式,也提供了有用的见解和建议来帮助组织更好地对他们的软件风险进行管理。
根据 5 月 12 日Synopsys发布的 2020开源安全与风险分析报告,如今几乎所有商业软件中都存在过时或废弃的开源组件,这会导致面向企业和消费者的许多应用程序都面临安全问题、违反许可和运维威胁等各种风险。
Synopsys 的研究人员分析了超过 1250 个商业代码库。Synopsys 的网络安全研究中心(CyRC)审查了由 Black Duck 审计服务团队所执行的基于代码基的审计。
该报告强调了商业应用程序中开源软件使用的趋势和模式。这份 2020 年的 OSSRA 报告再次肯定了开源组件在当今软件生态系统中扮演的关键角色。
Synopsys 发现,在过去一年所审计的代码库中,有 99%的代码库至少包含一个开源组件。总体而言,开源组件占据了代码总量 70%的内容。
2020 OSSRA 报告中所代表的行业,其中百分比反映了按行业划分的代码库中的开源内容占比
该报告特别强调了有很多过时或废弃的开源组件竟然还在广泛地被各行业持续使用,而这些老旧开源组件要么已经过期超过四年,要么在过去两年没有任何开发活动。
Synopsys 网络安全研究中心的首席安全战略官 Tim Mackey 针对该观察表示:“如今我们很难忽视开源在现代软件开发和部署中的重要作用,但是,从安全和许可合规的角度来看人们却往往很容易忽略这些开源组件对应用程序所产生的风险影响。”
他告诉 LinuxInsider 新闻网站,这份 2020 年 OSSRA 报告强调了组织如何奋力挣扎着试图去高效地跟踪和管理他们的开源风险。这些艰难的挣扎包括维护准确无误的第三方软件组件清单以及开源代码依赖关系。
他说:“在多个层面上,保持开源组件的及时更新都是解决应用程序风险的一个关键起点。”
重要发现
根据 Synopsys 的说法,在今年的分析中,最令人担忧的趋势是由非托管的开源代码所带来的不断增长的安全风险。代码审计显示,75%的代码库包含具有已知安全漏洞的开源组件。
这一数字高于去年报告,2019 年报告中这样的代码库比例还是 60%。类似的,今年审计中发现 49%的代码库包含高风险漏洞,而去年这一比例仅为 40%。
随着商业软件使用越来越多的开源软件,非托管开源代码带来的隐患也与日俱增。
根据今年的 Syopsys 报告显示,在所有被审计的代码库中,有 99%的代码库至少包含一个开源组件,而每个代码库平均包含 445 个开源组件。这与 2018 年报告显示的每个代码库平均包含 298 个开源组件相比,数量有了显著的增长。在所有被审计的代码中,有 70%的内容被认定为开源代码,这一比例也高于 2018 年 60%的比例,而 2015 年这个比例还是 36%,这几年来这一比例几乎翻了一番。
变化趋势
Mackey 说,与去年的分析结果相比,今年的报告显示了一些意想不到的发展,既有好的结果,也有坏的结果。
他说:“我们在今年的报告中既看到了总体安全趋势的变化,同时也看到了一些迹象显示出相关的监管流程并没有亦步亦趋地跟上大幅增加的使用量。”
好消息是,今年是该机构首次没有发现底层数据存在“心脏出血漏洞”(HeartBleed vulnerability)。这表明,尽管仍然存在长尾效应,但是一些措施已经开始产生效果,这些措施要么是进行了代码重构工作,要么是提高了对高危漏洞的认识。
另一方面,坏消息是,随着开源代码使用量的增加,商业软件中未修补的漏洞数量也在增加,这说明当前对开源代码的使用依然主要依赖于手动处理。Mackey 解释说,由于现在报告漏洞的各种机构越来越多,所以漏洞的数量有明显增长,在这个趋势下商业软件中的漏洞当然也会增加。
最终的结果是,如果企业没有采用自动解决方案来过滤不适用于自己的“通用漏洞披露(CVE)”,他们就不得不根据最新的漏洞报告一次又一次地去执行测试,哪怕是自身应用程序或系统集成不太可能中招的那些漏洞。
风险趋势
通过代码审计所发现的最值得注意的开源风险趋势总结如下:
91%的代码库所包含的组件要么已经过期超过四年,要么在过去两年没有任何开发活动。除了让安全漏洞存在的可能性增加之外,使用过时的开源组件的风险还在于,对它们进行更新也会引入一些不需要的功能或兼容性问题。
对易受攻击的开源组件的使用再次呈现上升趋势。包含易受攻击的开源组件的代码库的比例曾经从 2017 年的 78%下降到 2018 年的 60%,而在 2019 年这一比例又上升到 75%。
类似地,包含高风险漏洞的代码库比例从 2018 年的 40%上升到 2019 年的 49%。
但在 2019 年进行审计的代码库中,没有一个遭受了臭名昭著的“心脏出血漏洞”或 2017 年曾困扰 Equifax 的 Apache Struts 等高危漏洞的影响。
对知识产权和许可的威胁
报告指出,大量使用非托管的开源组件也可能导致产品的知识产权面临风险。尽管开源软件以免费著称,但这些代码也和商业代码一样,同样受某些许可协议的约束和监管。
研究人员发现,68%的代码库中存在着某种形式的开源许可冲突。而 33%的代码库还含有没有可识别许可的开源组件。
该报告得出的结论是,如今安全漏洞已经成为各类软件的一个主要问题。现在将近一半的代码库中包含高风险的漏洞。
其中有大约 73%的漏洞可能让代码库所有者面临某些法律问题。因为这些代码库所使用的某些开源组件的许可看上去与该代码库的整体许可有冲突,甚至有些使用根本就属于未经许可的行为。
报告还显示,此类软件许可冲突发生率在不同行业中存在着显著的差异。
许可冲突发生率在各行业中高低不等,其中最高的是互联网和移动 APP 行业高达 93%的许可冲突率,而最低的是虚拟现实、游戏、娱乐和媒体 APP 行业 59%的许可冲突率。
关于这份报告
这是 Synopsys 开源安全与风险分析报告的第五版。这份报告为商业软件中开源安全、合规性以及代码质量风险的当前状态提供了一份详细的快照。
该报告结果是基于 Synopsys 的开源审计服务团队在 2019 年所审查的匿名代码数据。出于代码审计的目的,Synopsys 将代码库定义为应用程序、服务或库提供基础的源代码和源库。
研究人员将托管软件定义为其来源、寿命、许可和版本信息均可识别并追踪的软件组件。研究人员同时还对这些软件组件所实施或缺失的更新和安全补丁进行了考察。
报告中的要点
2020 年 OSSRA 报告总结说,各个公司和组织需要对他们所使用的开源组件进行更好的维护。因为这些开源代码现在已经成为他们构建或使用的软件的关键部分。
“我们仍然建议企业在自动化方面进行更多投资,以便为其所使用的开源软件创建准确的清单,但在企业中真正需要发生的故事是一个流程的转变,” Mackey 说,“开发团队、企业 IT 部门和公司法律团队需要一起为开源软件的使用定义一套流程。”
下载一个开源组件、开源包或开源解决方案,然后直接就使用,这么做绝非明智之举。他补充说,如果对开源软件的下载没有得到适当的管理,那么这些开源软件为企业在监管方面带来的挑战并不亚于任何商业软件所带来的挑战。
开源软件和商业软件关键的区别在于,开源软件其背后并没有一个商业实体可以依托,从而让律师用法律手段来实现问题的解决。这个需要的补丁要么来自于支持这个开源组件的开源社区,要么来自一个企业的本地开发团队,而后者在理想情况下应该会将该组件的补丁提交回开源社区。
“无论补丁来自于哪种途径,如果修正补丁的过程中没有开源社区的参与,那么随着开源组件的发展要持续保持一个补丁的兼容状态就会变得更加困难,” Mackey 说。
安全性变差了还是变好了?
据 Mackey 说,OSSRA 的报告没有考虑开源软件的整体安全性。相反,该报告关注的是在商业环境中投入使用时的监管情况。
“话虽如此,我们的确也对数据集中所发现的几个比较突出的漏洞进行了更深入的分析,以便我们更好地理解核心风险是什么,” 他澄清说。
开源软件的安全性确实提出了新的挑战。SaltStack是一家为数字业务安全性和可靠性提供自动化基础设施的公司,其 CTOThomas Hatch 表示,如今一款专有软件将包括一些开源代码,这很常见,几乎能算是普遍现象了。
“但同样重要的是一定要记住,专有软件中到底包含了哪些开源软件版本,这一信息公开时可能并不太可靠,甚至该信息根本不会公开。这就让对相关开源软件的持续追踪变得几乎不可能,” 他告诉 LinuxInsider 新闻网站。
认为开源软件更安全的最初理由是,由于受众人关注,人们可以为之带来更多的修复。然而,Hatch 观察到,这一论断似乎并不能解释为何当今众多小型开源项目蔓延式的快速拓展。
“现在的开源代码实在是太多了,这让对代码的审计变得越来越困难。我想说,总体而言今年开源软件的安全状况比去年更差。”
虽然许多大型项目正在努力进行改善,但开源代码的整体增长速度远远超过了对其持续追踪能力的提升。Hatch 说,这份 OSSRA 报告非常有用,但作为一个还正处于探索阶段的项目,日后它将发挥更强大的作用。
这些努力是有用的
Mackey 保证说,他们年复一年地发布这类报告,其真正的目的是为了让软件行业在发展中得到纠正。
他解释说,当该公司 5 年前开始发布 OSSRA 报告时,对于开源活动对其业务整体运营的影响,许多企业领导人普遍缺乏认识。
正因为有这样的背景,于是滋生了许多备受关注的针对开源代码的漏洞攻击。五年后,随着开源代码的快速发展,对其监管所要求的复杂性也在增加。
OSSRA 的报告是基于这家公司通过之前并购而获得的商业应用完成的。Mackey 说,这些基础数据为开源代码提供了一个独特的视角,而这些是无法通过对开发团队简单地做个调查,或者用其他轻量级的数据收集方法所能获得的。
DevOps 安全需求
StackRox是一家为 Kubernate 和容器提供安全解决方案的公司,其 CTO Ali Golshan 说,Synopsys 公司提供的 2020 OSSRA 报告为一些高级别的发展趋势提供了很好的风向标。但是,一个公司自己在做出决策时还应该考虑更多的东西,尤其是与开源代码安全相关的东西。
他告诉 LinuxInsider 新闻网站:“随着 DevOps 实践与开源解决方案的结合,导致许多云端原生技术更广泛的大规模部署,这就让与开源相关的风险问题变得越来越捉摸不定。”
Golshan 还指出,利用漏洞的攻击面整体上在云端原生空间中也发生了重大变化——已经从传统的漏洞攻击和运行时攻击转向了在软件构建过程中所暴露的更大的攻击面。
从运维的角度来看,在使用云端原生技术的同时使用开源组件可能有很多好处,然而从安全的角度来看,这种做法是有一定挑战性的,他为此提醒说:“像 Synopsys 这样的报告应该被当作是一个很好的提醒,可以促使我们更仔细地去考虑应该如何保护软件的构建过程。”
作者介绍:
Jack M. Germain,自 2003 年起担任 ECT 新闻网络记者。他主要关注的领域是企业 IT、Linux 和开源技术。他写了许多关于 Linux 发行版和其他开源软件的文章。
延伸阅读:
Abandoned Open Source Code Heightens Commercial Software Security Risks
评论