软件供应链十年:探索开源的增长、风险和未来

news2024/11/25 21:45:40

回顾软件供应链状况报告的 10 年既是一个里程碑,也是一次行动号召。在过去十年中,开源消费改变了软件开发的世界。我们看到了前所未有的创新,但也出现了新的挑战,特别是在管理软件供应链的安全性和完整性方面。

在 Sonatype,我们一直走在前沿,分析这些趋势,今天,我们第十份年度报告中得出的见解比以往任何时候都更为重要。

十年演变:有什么变化?

十年前,当我们首次开始跟踪开源软件的使用情况时,情况完全不同。软件开发仍在追赶云原生架构,安全问题也更加本地化。快进到今天,开源软件占现代应用程序代码库的 90%,全球开源软件使用量今年已飙升至估计 6.7 万亿次下载​​。npm 和 PyPI 等生态系统蓬勃发展,这主要受到人工智能、云计算和DevOps等趋势的推动——在某些情况下,还有恶意。

但这种增长也带来了阴暗的一面:针对软件供应链本身的攻击有所增加。最初只是偶尔发生的事件,如Heartbleed或Equifax 漏洞,后来逐渐升级为复杂而广泛的攻击。仅在去年一年,就有超过 500,000 个恶意开源软件包被引入开源存储库 — 同比增长 156%,令人震惊。这不再是一种新兴威胁。这是新常态。

持续的风险和自满情绪

今年报告的一项重要发现是持续风险的概念。我们引入这一术语是为了捕捉未修复漏洞和安全问题持续存在时产生的腐蚀所构成的综合威胁​​。

想象一下,锈蚀会慢慢侵蚀建筑物的结构完整性——这就是我们的软件供应链中正在发生的事情。我们在Log4Shell等案例中看到了最明显的表现,在漏洞首次曝光近三年后,尽管有修复版本可用,但 13% 的下载仍然容易受到攻击。

更令人担忧的是,80% 的应用程序依赖项一年多来一直未升级,而其中 95% 的易受攻击版本都有更安全的替代方案可用​​。这不仅仅是一个技术问题,而是一个行为问题。它反映了组织在管理其软件依赖项方面普遍存在的自满情绪。开发人员陷入了惰性循环,通常是由于担心重大变化或面临更快发布新功能的压力。

新一波供应链攻击:开源恶意软件

我们还发现并密切关注着一种日益突出的新型攻击:供应链污染,也称为恶意开源或开源恶意软件。仅今年一年,就发现了 512,847 个恶意软件包(其中 65,000 个是高严重性恶意软件包),同比增长 156%,针对从自动构建环境到开发人员工作站的所有内容。

开源恶意软件尤其阴险,因为它可以无缝融入合法的开发流程,绕过传统防御措施。这些攻击并非虚构——它们正在积极瞄准和利用现实世界的软件生态系统,包括XZ Utils 后门攻击等重大事件,该攻击几乎危及了全球服务器​​。

规模带来复杂性,复杂性带来风险

如今,开源的庞大规模既是其最大的优势,也是其最大的挑战。仅在 JavaScript 生态系统 (npm) 中,今年就有 4.5 万亿个软件包请求 — 同比增长 70%。在人工智能革命的推动下,Python 的生态系统也同样蓬勃发展。

然而,规模越大就越复杂。开发人员面对如此多的选择不知所措,往往会选择不安全或过时的组件,因为筛选起来太困难了。

这种“选择过多”是安全风险的重要因素。在 700 万个开源项目中,只有 10.5% 被积极使用,开发人员经常默认使用熟悉或流行的软件包,而没有对它们进行适当的审查。这些​​选择导致安全漏洞的问题不是“是否”而是“何时” 。

效率与浪费:开发商的困境

安全不仅仅是一个技术问题,也是一个生产力问题。管理开源依赖关系、修补漏洞和遵守许可条款所需的努力正在侵蚀开发周期。

平均而言,应用程序包含 180 个开源组件。手动管理这些依赖关系正在成为一项不可能完成的任务。更糟糕的是,92% 的公开漏洞数据需要经过安全研究人员的深入审查才能得到更正。这就产生了我们所说的“意外风险”,开发人员错误地认为他们受到了保护,但当发现情况相反时已经太迟了。

更不用说国家漏洞数据库 (NVD)中积压了 17,656 个已发布但尚未处理的漏洞警告,这意味着那些试图在没有软件组合工具的情况下做到这一点的人往往会给自己挖一个更大的坑,因为他们有一种虚假的安全感。我们还必须考虑其他类型的“风险”,比如法律和合规性,这也会影响整体生产力和技术债务。

前进之路:主动管理和持续安全

那么,我们该何去何从?如果过去十年教会了我们什么,那就是主动性总是胜过被动反应。组织必须采用始终在线的安全实践——这意味着将软件组合分析 (SCA)工具直接集成到 CI/CD 管道中,并确保每个组件都经过实时审查、监控和更新。仅执行一次性安全检查甚至多次单点检查是不够的。持续监控至关重要。

依赖管理是另一个关键领域。您必须了解软件中包含哪些内容。我们发现,使用软件物料清单 (SBOM)来跟踪和管理开源依赖项的项目与未使用软件物料清单的项目相比,修复漏洞的时间平均缩短了 264 天。但毫无疑问,唯一能让您知道您正在使用哪些项目的方法就是为您的每个应用程序构建 SBOM。这种工具和自动化可以降低风险、提高效率,并最终带来更好的安全结果。

未来十年:行动呼吁

展望未来,开源显然不会消失——也不应该消失。但正如我们将继续说的那样,能力越大,责任越大。未来十年的软件供应链将取决于我们采用更好的工具、实施更好的实践以及在开发团队中培养安全文化的能力。我们还看到,这将在很大程度上取决于监管的作用——以及对这些监管的反应。随着世界各地新政策和新立法的迅猛增长,我们正处于这一领域巨大变革的边缘。

这个问题不仅仅是安全专业人员面临的问题,也是董事会、执行领导团队、开发人员、法律团队和产品所有者面临的问题。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2210690.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于SpringBoot民宿预订系统小程序【附源码】

效果如下: 管理员登录界面 管理员功能界面 用户管理界面 房东管理界面 小程序首页界面 民宿房间界面 功能界面 研究背景 随着旅游业的蓬勃发展和人们对旅行体验的不断追求,民宿作为一种独特的住宿方式,因其个性化、温馨及富含地方特色的服务…

disabled状态el-form下el-button的disabled的精细化控制

有一个很复杂的表单,支持编辑和查看两种模式。 查看时当然不希望编辑,最好是区分模式,在编辑模式下直接用div显示而不是用表单元素。这样工作量就有点大。那就考虑使用表单元素的disabled来让其不能编辑。如果每个表单元素都写这个玩意也是…

ssm职业高中学情成绩系统设计+jsp

系统包含:源码论文 所用技术:SpringBootVueSSMMybatisMysql 免费提供给大家参考或者学习,获取源码请私聊我 需要定制请私聊 目 录 摘 要 I Abstract II 第一章 绪论 1 1.1 研究背景 1 1.2 研究意义 1 1.3 研究内容 2 第二章 开发环…

codeforces round976 div2

A find minimum operations 思路&#xff1a;将所给的n变成k进制数&#xff0c;答案就是n的k进制形式下的位数之和 代码&#xff1a; #include <bits/stdc.h> using namespace std;typedef long long ll;ll n, k;void solve() {cin >> n >> k;ll cnt 0…

详解Spotbugs-maven-plugin(报告如何生成html测试报告)

Spotbugs介绍 SpotBugs是Findbugs的继任者&#xff08;Findbugs已经不再维护&#xff09;&#xff0c;用于对Java代码进行静态分析&#xff0c;查找相关的漏洞&#xff0c;SpotBugs比Findbugs拥有更多的校验规则。静态分析会检查Java字节码&#xff08;.class文件&#xff09;…

专题十一_递归_回溯_剪枝_综合练习_算法专题详细总结

目录 1. 找出所有⼦集的异或总和再求和&#xff08;easy&#xff09; 解析&#xff1a; 方法一&#xff1a; 解法二&#xff1a; 总结&#xff1a; 2. 全排列 Ⅱ&#xff08;medium&#xff09; 解析&#xff1a; 解法一&#xff1a;只关心“不合法”的分支 解法二&…

AI比诺奖得主更聪明。。。

B站&#xff1a;啥都会一点的研究生公众号&#xff1a;啥都会一点的研究生 AI圈又发生了哪些新鲜事&#xff1f; 特斯拉Optimus人形机器人亮相&#xff1a;日常任务好帮手 特斯拉在Cybercab活动上展示了其新款人形机器人Optimus&#xff0c;这款机器人能够执行拿包裹、浇水等…

CentOS快速配置网络Docker快速部署

CentOS快速配置网络&&Docker快速部署 CentOS裸机Docker部署1.联通外网2.配置CentOS镜像源3.安装Docker4.启动Docker5.CentOS7安装DockerCompose Bug合集ERROR [internal] load metadata for docker.io/library/java:8-alpineError: Could not find or load main class …

20241013组会

文章&#xff1a;A learnable end-edge-cloud cooperative network for driving emotion sensing 引言&#xff1a; 驾驶员的情绪状态直接影响安全驾驶。在“车-人-路-云”一体化控制框架下&#xff0c;我们提出了一种端-边-云协同情感感知网络模型&#xff08;EEC-Net&#x…

Android平台RTSP|RTMP播放器PK:VLC for Android还是SmartPlayer?

好多开发者&#xff0c;希望在Android端低延迟的播放RTMP或RTSP流&#xff0c;本文就目前市面上主流2个直播播放框架&#xff0c;做个简单的对比。 VLC for Android VLC for Android 是一款功能强大的多媒体播放器&#xff0c;具有以下特点和功能&#xff1a; 广泛的格式支持…

FPAG学习(5)-三种方法实现LED流水灯

目录 1.移位实现LED流水灯 1.1创建工程及源文件代码 1.1.1源代码 1.1.2仿真代码 1.1.3仿真 1.2实验结果 1.2.1总结 2.循环移位实现LED流水灯 3.38译码器实现LED流水灯 3.1原理 3.2源程序 1.移位实现LED流水灯 1.1创建工程及源文件代码 1.1.1源代码 利用计数器计数到…

【深度学习】经典的深度学习模型-01 开山之作:CNN卷积神经网络LeNet-5

【深度学习】经典的深度学习模型-01 开山之作&#xff1a;CNN卷积神经网络LeNet-5 Note: 草稿状态&#xff0c;持续更新中&#xff0c;如果有感兴趣&#xff0c;欢迎关注。。。 0. 论文信息 article{lecun1998gradient, title{Gradient-based learning applied to document r…

【智能算法应用】长鼻浣熊优化算法求解二维路径规划问题

摘要 本文采用长鼻浣熊优化算法 (Coati Optimization Algorithm, COA) 求解二维路径规划问题。COA 是一种基于长鼻浣熊的觅食和社群行为的智能优化算法&#xff0c;具有快速收敛性和较强的全局搜索能力。通过仿真实验&#xff0c;本文验证了 COA 在复杂环境下的路径规划性能&a…

【微服务】springboot3 集成 Flink CDC 1.17 实现mysql数据同步

目录 一、前言 二、常用的数据同步解决方案 2.1 为什么需要数据同步 2.2 常用的数据同步方案 2.2.1 Debezium 2.2.2 DataX 2.2.3 Canal 2.2.4 Sqoop 2.2.5 Kettle 2.2.6 Flink CDC 三、Flink CDC介绍 3.1 Flink CDC 概述 3.1.1 Flink CDC 工作原理 3.2 Flink CDC…

数据结构:栈的创建、使用以及销毁

这里写目录标题 栈的结构与概念栈底层结构的选取栈的代码实现&#xff08;stack&#xff09;头文件&#xff08;stack.h&#xff09;栈的初始化栈的销毁入栈出栈获取栈顶数据获取栈大小代码的测试 栈的结构与概念 栈&#xff1a;⼀种特殊的线性表&#xff0c;其只允许在固定的…

【算法篇】动态规划类(1)(笔记)

目录 一、理论基础 1. 大纲 2. 动态规划的解题步骤 二、LeetCode 题目 1. 斐波那契数 2. 爬楼梯 3. 使用最小花费爬楼梯 4. 不同路径 5. 不同路径 II 6. 整数拆分 7. 不同的二叉搜索树 一、理论基础 1. 大纲 动态规划&#xff0c;英文&#xff1a;Dynamic Programm…

企业水、电、气、热等能耗数据采集系统

介绍 通过物联网技术&#xff0c;采集企业水、电、气、热等能耗数据&#xff0c;帮企业建立能源管理体系&#xff0c;找到跑冒滴漏&#xff0c;从而为企业节能提供依据。 进一步为企业实现碳跟踪、碳盘查、碳交易、谈汇报的全生命过程。 为中国碳达峰-碳中和做出贡献。 针对客…

【C++进阶】set的使用

1. 序列式容器和关联式容器 前面&#xff0c;我们已经接触过STL中的部分容器如&#xff1a;string、vector、list、deque、array、forward_list等&#xff0c;这些容器统称为序列式容器&#xff0c;因为逻辑结构为线性序列的数据结构&#xff0c;两个位置存储的值之间⼀般没有紧…

【工具箱】Flash基础及“SD NAND Flash”的测试例程

目录 一、“FLASH闪存”是什么&#xff1f; 1. 简介 2. 分类 3. 性能 4.可靠性 5.易用性 二、SD NAND Flash 1. 概述 2. 特点 3. 引脚分配 4. 数据传输模式 5. SD NAND寄存器 6. 通电图 7. 参考设计 三、STM32测试例程 1. 初始化 2. 单数据块测试 3. 多数据块…

场景题 - 画三角形并只点击三角形触发事件

简介 画一个三角形并仅点击三角形区域才会触发点击事件。 可以拆解成&#xff1a; 画个三角形绑定点击事件&#xff08;涉及点击区域&#xff09; 这里提供更多更好用的方法&#xff0c;svg polygon绘制三角形、canvas、css clip-path:polygon( ) 裁剪可视区域&#xff0c;并…