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

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

相关文章

使用Java解析JSON数据并提取特定字段的实现步骤(以提取mailNo为例)

《使用Java解析JSON数据并提取特定字段的实现步骤(以提取mailNo为例)》在现代软件开发中,处理JSON数据是一项非常常见的任务,无论是从API接口获取数据,还是将数据存储为JSON格式,解析... 目录1. 背景介绍1.1 jsON简介1.2 实际案例2. 准备工作2.1 环境搭建2.1.1 添加

MySQL中删除重复数据SQL的三种写法

《MySQL中删除重复数据SQL的三种写法》:本文主要介绍MySQL中删除重复数据SQL的三种写法,文中通过代码示例讲解的非常详细,对大家的学习或工作有一定的帮助,需要的朋友可以参考下... 目录方法一:使用 left join + 子查询删除重复数据(推荐)方法二:创建临时表(需分多步执行,逻辑清晰,但会

Java实现任务管理器性能网络监控数据的方法详解

《Java实现任务管理器性能网络监控数据的方法详解》在现代操作系统中,任务管理器是一个非常重要的工具,用于监控和管理计算机的运行状态,包括CPU使用率、内存占用等,对于开发者和系统管理员来说,了解这些... 目录引言一、背景知识二、准备工作1. Maven依赖2. Gradle依赖三、代码实现四、代码详解五

详谈redis跟数据库的数据同步问题

《详谈redis跟数据库的数据同步问题》文章讨论了在Redis和数据库数据一致性问题上的解决方案,主要比较了先更新Redis缓存再更新数据库和先更新数据库再更新Redis缓存两种方案,文章指出,删除R... 目录一、Redis 数据库数据一致性的解决方案1.1、更新Redis缓存、删除Redis缓存的区别二

Redis事务与数据持久化方式

《Redis事务与数据持久化方式》该文档主要介绍了Redis事务和持久化机制,事务通过将多个命令打包执行,而持久化则通过快照(RDB)和追加式文件(AOF)两种方式将内存数据保存到磁盘,以防止数据丢失... 目录一、Redis 事务1.1 事务本质1.2 数据库事务与redis事务1.2.1 数据库事务1.

Oracle Expdp按条件导出指定表数据的方法实例

《OracleExpdp按条件导出指定表数据的方法实例》:本文主要介绍Oracle的expdp数据泵方式导出特定机构和时间范围的数据,并通过parfile文件进行条件限制和配置,文中通过代码介绍... 目录1.场景描述 2.方案分析3.实验验证 3.1 parfile文件3.2 expdp命令导出4.总结

更改docker默认数据目录的方法步骤

《更改docker默认数据目录的方法步骤》本文主要介绍了更改docker默认数据目录的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录1.查看docker是否存在并停止该服务2.挂载镜像并安装rsync便于备份3.取消挂载备份和迁

不删数据还能合并磁盘? 让电脑C盘D盘合并并保留数据的技巧

《不删数据还能合并磁盘?让电脑C盘D盘合并并保留数据的技巧》在Windows操作系统中,合并C盘和D盘是一个相对复杂的任务,尤其是当你不希望删除其中的数据时,幸运的是,有几种方法可以实现这一目标且在... 在电脑生产时,制造商常为C盘分配较小的磁盘空间,以确保软件在运行过程中不会出现磁盘空间不足的问题。但在

Java如何接收并解析HL7协议数据

《Java如何接收并解析HL7协议数据》文章主要介绍了HL7协议及其在医疗行业中的应用,详细描述了如何配置环境、接收和解析数据,以及与前端进行交互的实现方法,文章还分享了使用7Edit工具进行调试的经... 目录一、前言二、正文1、环境配置2、数据接收:HL7Monitor3、数据解析:HL7Busines

Mybatis拦截器如何实现数据权限过滤

《Mybatis拦截器如何实现数据权限过滤》本文介绍了MyBatis拦截器的使用,通过实现Interceptor接口对SQL进行处理,实现数据权限过滤功能,通过在本地线程变量中存储数据权限相关信息,并... 目录背景基础知识MyBATis 拦截器介绍代码实战总结背景现在的项目负责人去年年底离职,导致前期规