《2020年开源安全和风险分析》报告:91%的商业应用程序包含过期或废弃的开源组件
开源组件和库几乎是每个行业中每个应用程序的基础。随着开源软件在商业软件中的使用量日益增加,识别、跟踪和管理开源的需求也呈现出指数级增长。许可证验证、已知漏洞修补流程、以及处理过时和不受支持的开源软件包的策略,对于负责任地使用开源代码都不可或缺。
美国新思科技公司(Synopsys)近日发布了《2020年开源安全和风险分析》报告(OSSRA)。该报告由新思科技网络安全研究中心(CyRC)制作,研究了由Black Duck审计服务团队执行的对超过1,250个商业代码库的审计结果。其中,研究样本涉及的行业覆盖了包括企业软件/SaaS、医疗保健、健康科技、生命科学、金融服务与金融科技,以及互联网和软件基础架构等。
报告重点介绍了在商业应用程序中开源应用的趋势和模式,并且提供见解和建议,以帮助企业从安全性、许可证合规性和操作角度更好地管理开源风险。
1.开源被广泛认可:样本中有效代码库至少包含一个开源组件,其中开源占70%
2020 OSSRA报告重申了开源在当今软件生态系统中的关键作用,揭示了过去一年中经过审计的所有有效代码库(99%)至少包含一个开源组件,其中开源占所有代码的70%。值得注意的是,老化或废弃的开源组件仍然被广泛使用,91%的代码库中包含的组件已经过期四年以上或过去两年中没有开发活动。
2.缺乏管理成为开源安全的最大问题
在今年的分析中,最令人担忧的趋势是未管理的开源代码带来的安全风险日益增加,经过审计的代码库中,75%包含具有已知安全漏洞的开源组件,而去年这一比例是60%。同样,将近一半(49%)的代码库包含高风险漏洞,去年则为40%。
99%的代码库包含至少一些开源,每个代码库中平均有445个开源组件,比2018年的298个有显著增加。被审计的代码中有70%是开源代码,这一数字从2018年的60%增至目前,并且自2015年(36%)以来几乎翻了一番。
91%的代码库包含已经过期四年以上或者近两年没有开发活动的组件。除了存在安全漏洞的可能性增加之外,使用过期的开源组件的风险在于更新它们还会带来不必要的功能和兼容性问题。
2019年,包含易受攻击的开源组件的代码库的比例从2017年的78%下降至2018年的60%之后增至了75%。同样地,包含高风险漏洞的代码库的比例由2018年的40%增至49%。幸运地是, 2019年审计的代码库中都没有受到臭名昭著的Heartbleed漏洞或2017年困扰Equifax的Apache Struts漏洞的影响。
尽管开源软件拥有“免费”的优势,但它与其它软件一样都要受到许可证的约束。67%的代码库包含某种形式的开源代码许可证冲突,33%的代码库包含没有可识别许可证的开源组件。许可证冲突的发生率因行业而异,从最高的93%(互联网和移动应用程序)到相对较低的59%(虚拟现实、游戏、娱乐和媒体)。
以上数据表明,现代应用中始终包含大量的开源组件,并可能存在安全性、许可和代码质量问题,如何管理开源的使用变得非常重要。
下是对企业开源安全管理的建议:
“如果没有最新的、准确的软件清单.-.即所谓的软件.BOM,内含正在使用的所有开源组及其版本以及正在使用或开发的每个开源项目的下载位置等信息”便不可能解决任何问题。BOM.中还应包含其他内容,如所有的依赖项、代码正在调用的库、以及这些依赖项链接到的库等等。
国家漏洞数据库等公共信息源是获取有关公开披露的开源软件漏洞信息的良好第一步。但请切记,国家漏洞数据库不仅受到运维组织对漏洞优先级分配的影响,而且.CVE. 条目在数据报告、评分和可操作性方面可能存在严重滞后的情况。
当然,开源管理工作不应止步于代码库在应用程序中的交付使用。只要应用程序还在运行,企业就需要不断监控新威胁。一旦发现威胁,企业便需要确定如何进行修复,将修复工作分配给适当的人员,并跟踪修复过程:正在审查哪些漏洞、哪些漏洞已被审查、哪些漏洞已被修复、哪些修复活动已被延期、以及哪些漏洞已打官方补丁。
企业需要对开发人员进行培训,让他们知道对开源的使用需要遵照管理。通过针对新开源组件的引入和文档化制定明确的政策和程序,企业将能够控制引入到代码库中的开源内容并确保对开源的引入符合相关策略。
相应的,企业也可以考虑建立自动化流程来跟踪开源组件、其许可证和已知安全漏洞、以及版本控制和重复等运营风险,并根据问题的严重程度对其进行优先级排序。当企业构建打包、嵌入式或商业.SaaS.软件时,始终应将开源许可合规性视为一个主要问题。
延伸阅读:点击下载2020年OSSRA报告。
安全牛编辑、安全行业见习新闻记者。安全牛新媒体运营、安全牛网站内容审核。