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

回顾软件供应链状况报告的 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.rhkb.cn/news/448646.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【AcWing】算法基础课-数据结构

目录 1、单链表 2、双链表 3、栈 3.1 模拟栈 3.2 表达式求值 4、队列 5、单调栈 6、滑动窗口 7、KMP字符串 8、Trie字符串统计 方法一 方法二 9、并查集 9.1 合并集合 9.2 连通块中点的数量 10、堆 10.1 堆排序 10.2 模拟堆 11、哈希表 11.1 模拟散列表 拉…

内核提供的通用I2C设备驱动I2C-dev.c分析:file_ops篇

往期内容 I2C子系统专栏: I2C(IIC)协议讲解-CSDN博客SMBus 协议详解-CSDN博客I2C相关结构体讲解:i2c_adapter、i2c_algorithm、i2c_msg-CSDN博客内核提供的通用I2C设备驱动I2c-dev.c分析:注册篇 总线和设备树专栏: 总线…

从零开始实现大语言模型(十二):文本生成策略

1. 前言 大语言模型GPTModel通过多轮推理生成连续自然语言文本,每轮推理仅生成一个token。对输入文本做tokenization,将输入文本转换成包含num_tokens个token ID的列表,并输入大语言模型GPTModel,可以得到num_tokens个维度为voca…

第T4周:TensorFlow实现猴痘识别

🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 目标: 实现猴痘病例图片的准确实别 具体实现: (一)环境: 语言环境:Python 3.10 编 译…

mysql innodb 引擎如何直接复制数据库文件?

mysql innodb 引擎如何直接复制数据库文件?介绍如下: 1、首先找到数据库文件所在位置 一般可以看my.conf/my.ini配置的文件的“datadir” 看示例: “MAMP”在Macos下的数据库文件位置: /Library/Application Support/appsolu…

DAY35||452.用最少数量的箭引爆气球 |435.无重叠区间 |763.划分字母区间

重叠区间专场。 452.用最少数量的箭引爆气球 题目:452. 用最少数量的箭引爆气球 - 力扣(LeetCode) 有一些球形气球贴在一堵用 XY 平面表示的墙面上。墙面上的气球记录在整数数组 points ,其中points[i] [xstart, xend] 表示水平直径在 xst…

恢复已删除文件的 10 种安卓数据恢复工具

由于我们现在在智能手机上存储了大量重要文件,因此了解数据恢复工具变得很重要。您永远不会知道什么时候需要使用 安卓 数据恢复工具。 由于不乏 Windows 数据恢复工具,因此从崩溃的计算机中恢复文件很容易。但是,当涉及到从 安卓恢复数据时…

论文笔记:Ontology-enhanced Prompt-tuning for Few-shot Learning

论文来源:WWW 2022 论文地址:https://arxiv.org/pdf/2201.11332.pdfhttps://arxiv.org/pdf/2201.11332.pdf 论文代码:暂未公开 笔记仅供参考,撰写不易,请勿恶意转载抄袭! Abstract 小样本学习旨在基于…

深入浅出:MySQL索引优化指南

一、引言 在数据库应用开发中,性能优化是一个永恒的话题。而索引作为提高数据库查询效率的关键手段,其设计和使用直接影响着系统的性能表现。本文将深入探讨MySQL索引的原理、类型以及优化策略,帮助读者更好地理解和应用索引,从而…

FreeRTOS:事件标志组

目录 一、简介 二、 事件控制块 三、相关API 四、 应用场景 一、简介 在FreeRTOS中,使用信号量可以实现同步,但是使用信号量来同步的话任务只能与单个的任务进行同步。有时候某个任务可能会需要与多个任务进行同步,此时信号量就无能为力。…

mysql 09 独立表空间结构

表空间中的页实在是太多了,为了更好的管理这些页面,设计 InnoDB 的大叔们提出了 区 (英文名: extent )的概念。对于16KB的页来说,连续的64个页就是一个 区 ,也就是说一个区默认占用1MB空间大小。…

QT--单选按钮(QRadioButton)和复选按钮(QCheckBox)

在Qt中,单选按钮(QRadioButton)和复选按钮(QCheckBox)是两种常用的用户界面控件,它们的主要区别在于选择行为和用途: QRadioButton(单选按钮) 选择行为:单选…

jvm虚拟机调优实战

使用命令 jps查看进程使用jstat gc -1 5000查看内存占用和回收情况 正式测试 是否跑job区别。大量的job,部分用户点击的热数据 ,不同时刻在跑 600-700对比 200 多了400-500m,代码原数据(不占用堆区)占了300m,所以 堆空间老年代(90…

VsCode环境配置C++环境

目录 第一步下载应用 第二步应用文字汉化 第三步安装编译器MinGW 第四步 环境变量的配置 第五步 打开VsCode 第六步 配置环境设施 几个其他的好用的插件 会了吧 MarsCode: AI Coding Assistant 第一步下载应用 VSCode下载官方指定网址: Visual Studio Cod…

使用豆包MarsCode 来处理 Excel 的数据吧!

作者可乐三分糖 背景 Excel 是大部分没有信息化的公司通用的数据处理手段。但并不是所有的人对 excel 都是非常熟悉的。这些同学主要会遇到三类问题: Excel 的一些操作问题,如公式怎么写跨表处理太复杂,即使是写公式也很繁琐。一些数据批处…

关于k8s集群高可用性的探究

1. k8s的高可用的核心是什么? 说到核心、本质 意味着要从物理层来考虑技术 k8s是一个容器编排管理工具,k8s受欢迎的时机 是docker容器受欢迎时,因为太多的docker容器,管理起来是一个大工程 那么刚好k8s是google自己用了十来年…

如何设计开发RTSP直播播放器?

技术背景 我们在对接RTSP直播播放器相关技术诉求的时候,好多开发者,除了选用成熟的RTSP播放器外,还想知其然知其所以然,对RTSP播放器的整体开发有个基础的了解,方便方案之作和技术延伸。本文抛砖引玉,做个…

【环境搭建】更换电脑后的开发环境怎么重建

目录 🍸前言 🍻一、系统配置检查 🍺二、开发环境搭建 🍹三、章末 🍸前言 小伙伴们大家好,这次文章跟技术没有关联,因为最近刚更换了装备,开发环境啥的残缺不全,也不能…

Java基础:面向对象编程5

1 Java内部类 1.1 概念 在 Java 中,内部类是指定义在另一个类内部或方法内部的类。内部类可以分为以下几种类型: 成员内部类局部内部类匿名内部类静态内部类 1.2 成员内部类 定义:成员内部类是最常见的内部类,它定义在外部类…

深度解析 Redis 存储结构及其高效性背后的机制

目录 1. Redis 存储结构存储结构存储转换 2. 字典实现数据结构冲突处理负载因子 3. 扩容扩容步骤影响与优化 4. 缩容缩容步骤优化策略 5. 渐进式 Rehash**渐进式 Rehash 的工作原理**Rehash 规则优势 6. SCAN 命令SCAN 的实现原理遍历顺序避免重复和遗漏使用场景 7. 过期&#…