数据说话:关于软件供应链的真相

2024-03-06 06:18

本文主要是介绍数据说话:关于软件供应链的真相,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

数据说话:关于软件供应链的真相

开源组件可以帮助开发人员更快地进行创新,但有时也需要付出高昂的代价。

企业环境(以及商业软件公司)中的开发人员已经意识到,为了快速提供产品功能,没有比利用一些代码重新构建属于自身的软件更方便快捷的方法了。因此,他们开始越来越多地通过在其代码库中混合和匹配开源软件组件的方式来构建属于他们的软件,以最大限度地缩短其软件开发时间,留出精力编写真正能够为其应用程序增加价值和差异性的组件。

这种对开源组件的依赖性极大地加速了开发人员的创新速度,但往往也需要付出高昂的代价:许多可供下载的组件都包含危险的安全漏洞。

我们从一个简单的,定义明确的示例来看软件供应链,是这样子的:

 数据说话:关于软件供应链的真相

那么开源的情况则是混乱的:未经验证的许可证、未经测试的软件仓库、以及狂野的西部牛仔(开发者),这一切所导致的软件供应链看起来似乎是不可管理的,漏斗的形状更像是这样:

 数据说话:关于软件供应链的真相

正如上图所直观显示的一样,开源至少导致了一个额外层次的增加。或许你并不这么认为,而是说,将开源组件简单的插入产品中,和过去授权插入第三方的组件没有任何本质上的差别。这里要说明的是,虽然看起来没什么大的变化,但是有一个隐性的知识需要考虑。关于上游的开源组件,多数的源代码仓库时候是没有任何的商业保证的。作为供应链或产品经理,最不愿意的事情就是被别人掐住喉咙,一旦出错,是无法补救的。

目前,一些公司已经制定了有关开发人员如何以及何时使用这些开源组件的策略,并且正在积极地管理这些组件以跟踪安全缺陷;但是另有一些公司并没有这些安全实践。最新的研究结果表明,那些进行了良好安全实践的企业可以最大限度地降低将这些组件引入软件的风险,同时也能最大限度地提高收益。

美国新思科(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个请求。PHP大马

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%。制定了相关策略和最佳实践的组织更倾向于使用包含较少已知漏洞的最新更新的组件。

这篇关于数据说话:关于软件供应链的真相的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/779074

相关文章

SpringBoot多环境配置数据读取方式

《SpringBoot多环境配置数据读取方式》SpringBoot通过环境隔离机制,支持properties/yaml/yml多格式配置,结合@Value、Environment和@Configura... 目录一、多环境配置的核心思路二、3种配置文件格式详解2.1 properties格式(传统格式)1.

解决pandas无法读取csv文件数据的问题

《解决pandas无法读取csv文件数据的问题》本文讲述作者用Pandas读取CSV文件时因参数设置不当导致数据错位,通过调整delimiter和on_bad_lines参数最终解决问题,并强调正确参... 目录一、前言二、问题复现1. 问题2. 通过 on_bad_lines=‘warn’ 跳过异常数据3

C#监听txt文档获取新数据方式

《C#监听txt文档获取新数据方式》文章介绍通过监听txt文件获取最新数据,并实现开机自启动、禁用窗口关闭按钮、阻止Ctrl+C中断及防止程序退出等功能,代码整合于主函数中,供参考学习... 目录前言一、监听txt文档增加数据二、其他功能1. 设置开机自启动2. 禁止控制台窗口关闭按钮3. 阻止Ctrl +

java如何实现高并发场景下三级缓存的数据一致性

《java如何实现高并发场景下三级缓存的数据一致性》这篇文章主要为大家详细介绍了java如何实现高并发场景下三级缓存的数据一致性,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 下面代码是一个使用Java和Redisson实现的三级缓存服务,主要功能包括:1.缓存结构:本地缓存:使

在MySQL中实现冷热数据分离的方法及使用场景底层原理解析

《在MySQL中实现冷热数据分离的方法及使用场景底层原理解析》MySQL冷热数据分离通过分表/分区策略、数据归档和索引优化,将频繁访问的热数据与冷数据分开存储,提升查询效率并降低存储成本,适用于高并发... 目录实现冷热数据分离1. 分表策略2. 使用分区表3. 数据归档与迁移在mysql中实现冷热数据分

C#解析JSON数据全攻略指南

《C#解析JSON数据全攻略指南》这篇文章主要为大家详细介绍了使用C#解析JSON数据全攻略指南,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录一、为什么jsON是C#开发必修课?二、四步搞定网络JSON数据1. 获取数据 - HttpClient最佳实践2. 动态解析 - 快速

MyBatis-Plus通用中等、大量数据分批查询和处理方法

《MyBatis-Plus通用中等、大量数据分批查询和处理方法》文章介绍MyBatis-Plus分页查询处理,通过函数式接口与Lambda表达式实现通用逻辑,方法抽象但功能强大,建议扩展分批处理及流式... 目录函数式接口获取分页数据接口数据处理接口通用逻辑工具类使用方法简单查询自定义查询方法总结函数式接口

SQL中如何添加数据(常见方法及示例)

《SQL中如何添加数据(常见方法及示例)》SQL全称为StructuredQueryLanguage,是一种用于管理关系数据库的标准编程语言,下面给大家介绍SQL中如何添加数据,感兴趣的朋友一起看看吧... 目录在mysql中,有多种方法可以添加数据。以下是一些常见的方法及其示例。1. 使用INSERT I

Python使用vllm处理多模态数据的预处理技巧

《Python使用vllm处理多模态数据的预处理技巧》本文深入探讨了在Python环境下使用vLLM处理多模态数据的预处理技巧,我们将从基础概念出发,详细讲解文本、图像、音频等多模态数据的预处理方法,... 目录1. 背景介绍1.1 目的和范围1.2 预期读者1.3 文档结构概述1.4 术语表1.4.1 核

MySQL 删除数据详解(最新整理)

《MySQL删除数据详解(最新整理)》:本文主要介绍MySQL删除数据的相关知识,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录一、前言二、mysql 中的三种删除方式1.DELETE语句✅ 基本语法: 示例:2.TRUNCATE语句✅ 基本语