软件供应链安全中:攻击面远超想象

news2024/9/26 5:13:19

| 软件供应链攻击3年飙升742% |

引人注目的软件供应链攻击正在上升。欧盟网络安全机构ENISA报告称,自2020年初以来,有组织的软件供应链攻击数量增加了4倍。Gartner认为,这一趋势将持续下去。在《软件工程领导者如何降低软件供应链安全风险》报告中,Gartner预测,到2025年,45%的组织将经历对其软件供应链的攻击。

近日,Sonatype《软件供应链年度报告》针对公开和专有数据分析结果显示,今年到目前为止,已经发现了8.8万个恶意开放源码包,比2019年同期数字增长了742%,表明企业攻击面正在快速增长。

同时,恶意活动的激增证明了这些团队越来越多地使用开源包来加快上市时间。Sonatype估计,今年开源请求将超过三万亿。开源消费的巨大规模和软件依赖项带来的额外复杂性可能意味着威胁和漏洞会被开发人员忽略。

报告指出,现在,Java应用程序平均包含148个依赖项——比去年多20个。Sonatype估计,由于Java项目平均每年更新10次,开发人员每年必须跟踪他们所使用的每个应用程序的近1500个依赖项更改。

然而,对这些开发环境的可见性缺失正在进一步加剧威胁:在过去的一年里,每7个影响开源项目的漏洞中,就有6个是由反式依赖引起的。

为了更好地应对这种威胁,我们有必要深入地了解软件供应链攻击的相关内容。

| 什么是软件供应链攻击 |

当恶意行为者渗透到软件供应商的网络中,并在供应商将软件发送给客户之前破坏软件时,就可能发生软件供应链攻击。恶意行为者一般会选择利用众所周知的、广泛存在的开源漏洞,例如Log4Shell。然后,被入侵的软件会危及客户数据或IT系统。

软件供应链攻击急速增长的部分原因在于,更快的业务节奏导致了更快速的软件发布周期。随着组织加快软件开发周期以保持竞争力,开发人员根本没有时间去发现和修复漏洞,这些安全漏洞便会由此进入应用程序。

| 软件供应链攻击为何破坏性这么大? |

此类攻击尤为有害,因为即便是很小的更改也会产生广泛的破坏性影响。软件供应链攻击只需要一个被破坏的应用程序或一段代码就可以影响整个供应链。攻击通常针对应用程序源代码中的弱点,进而危及受信任的应用程序或软件系统。

这是因为供应链中的参与者比以往任何时候都更加相互关联。例如,公司A可能依赖供应商B,B可以访问A的企业资源规划(ERP)或其他系统。如果B遭遇入侵,很容易影响到A公司。

无数数据证实了这样一个事实:开源软件会使DevSecOps团队难以识别漏洞。

事实上,根据Dynatrace的研究显示,61%的受访者表示,使用第三方或开源代码会使识别和解决应用程序漏洞变得更加困难。

在供应链中,开源显然是一个弱点。根据2022年的一项调查显示,在64%经历过软件供应链攻击的组织中,大约70%都并未使用适当的开源政策。

此外,软件开发的速度也加剧了公司的补救难度。据Dynatrace的研究指出,51%的受访者表示,现代软件交付的速度使得漏洞在修复后更容易重新进入生产环境。

| 软件开发生命周期(SDLC)中的攻击向量 |

由于攻击载体的丰富,SDLC是一个具有吸引力的目标。恶意行为者发现,基于大量的切入点——试想一下,组织中有多少已被破坏或泄露的开发人员帐户、存储库或错误配置的工具——可以更容易地访问SDLC。此外,成功利用其中一个向量就可以提供对生产运行时环境及其数据的访问。大多数组织在这些用例的软件供应链覆盖方面存在显著差距,而传统的AppSec工具(如SAST或WAF)都侧重于其他问题。

在这里插入图片描述
SDLC中的攻击向量包括DevOps工具和基础设施、开发人员帐户、不安全的编码实践、代码泄漏等等。

DevOps工具和基础设施

如今,攻击者已经将他们的注意力从生产应用程序转移到攻击构成软件交付管道的DevOps工具和基础设施。这些工具——源代码控制管理系统(scm)、构建工具、部署工具、基础设施即代码(IaC)、注册中心等等——成为目标的原因有几个。

首先,攻击者可以试图入侵的切入点数量很多,很难覆盖所有切入点;其次,DevOps工具通常由工程团队购买,缺乏安全可见性和控制;最后,与保护生产环境或检测源代码中的安全漏洞不同,没有广泛的解决方案来集中保护和管理GitHub、Jenkins、JFrog、Kubernetes以及其他组成软件供应链的工具。

代码篡改

代码篡改发生在修改源代码或注入恶意代码时,例如将应用程序武器化以对抗其用户。代码篡改可以发生在CI /CD管道中的任何点上,防止它需要组织监视SDLC的所有阶段。此外,像“一切即代码”(everything as code)和GitOps这样的趋势,现在将其他东西存储为可以篡改的代码,包括安全策略、基础架构模板、构建规则等等。这进一步扩展了代码篡改的潜在攻击面,使攻击者能够破坏更多SDLC。

不安全的编码实验

除了软件漏洞,编码也会带来无数的风险。不遵循安全编码最佳实践会暴露有价值的资源,并使攻击者能够访问组织系统。这包括使用硬编码的秘密、错误配置基础设施即代码(IaC)、缺乏标准化命名约定,或者在代码注释中存储秘密以外的敏感信息。当API密钥、加密密钥、令牌或密码暴露时,硬编码的秘密就会变得危险。IaC模板中的错误配置有跨许多云环境复制的风险,并可能向公众公开应用程序组件或数据。不遵循标准化命名约定可能是开发人员帐户受损的早期迹象。

代码泄露

代码泄漏——私有源代码被公开,要么是由于开发人员将代码复制到错误的repo而意外暴露,要么是恶意行为者故意暴露——对任何组织都是严重的风险。代码不仅本身是一种非常有价值的资产,而且代码泄漏可能会暴露秘密,并扩大攻击面,使未经授权的用户能够访问内部系统或数据。

| 软件供应链安全框架 |

为了应对越来越多的软件供应链攻击,并帮助减少这些攻击向量,一些组织开发了专门解决软件供应链安全问题的新框架。这包括NIST的安全软件开发框架(SSDF)和谷歌的软件工件供应链级别(SLSA):

NIST SSDF——为了响应行政命令14028《改善国家的网络安全》,NIST开发了一个框架,确定了四个最佳实践领域,以促进安全软件开发实践。这包括让组织做好准备、保护软件、生产安全良好的软件,以及对安全漏洞做出响应。每个类别都被记录下来,以帮助组织定义安全开发实践。

谷歌SLSA——与OpenSSF合作设计的谷歌SLSA是一个端到端框架,旨在确保供应链安全,特别是对开放源码软件。SLSA的目标是确保整个供应链中软件工件的完整性,以便组织能够更好地了解他们所使用的任何软件的安全态势。

| 软件供应链安全最佳实践 |

当着眼全局时,人们很快就会意识到SDLC对任何不注意这些差距的组织来说都是一个巨大的风险。组织需要保护组成其管道的工具,以降低风险并防止未来的破坏,但是当SDLC的每个阶段都存在如此多的潜在攻击向量时,组织如何做到这一点呢?如何将这些新的软件供应链安全框架付诸实践?

左移右移协同作用

当组织为未来潜在的软件供应链攻击做好准备时,他们必须监视整个软件开发生命周期的漏洞点。组织需要通过“左移”来识别自身的软件开发中是否存在风险,这是软件开发过程早期的安全测试和软件组成分析。但他们也会不可避免地面临一些漏洞进入实际应用程序的风险,因此,他们还需要“右移”,以探索生产应用程序中的运行时漏洞。例如,臭名昭著的Log4Shell针对的就是此类漏洞。

自动化DevSecOps和现代化可观察性

最终,组织将受益于通过可观察性方法将更大的自动化引入到DevSecOps过程中。

现代化可观察性使组织能够识别运行时应用程序漏洞,并对其进行优先级排序。现代化可观察性提高了AIOps(即用于IT运营的AI)的传统监控能力。它提供上下文数据分析,确定关于安全问题来源的精确答案。对于类似log4shell的事件,识别根本原因并确定问题的严重性是关键。此外,现代化的可观察性可以为DevSecOps团队在识别、确定优先级和补救安全漏洞方面节省大量时间和人力。

因此,强烈建议DevSecOps团队使用这种精确的、基于人工智能的方法来解决运行时漏洞。

借助自动化工具

采用一种自动识别并帮助纠正这些痛点的安全工具,可以减少或消除攻击向量。这些工具必须能够解决以下用例:

可见性和治理——在所有团队、DevOps工具和基础设施中获得可见性并实施一致的治理和安全策略,比如最小特权、强化身份验证和实现分支保护规则;

IaC安全性——扫描IaC模板,以确保它们在部署之前没有错误配置问题,因为错误会在许多云环境中被放大;

硬编码秘密检测——检测和纠正跨多个位置的任何现有硬编码秘密,并使用开发人员工作流集成来防止新的硬编码秘密被引入;

源代码泄漏——识别可疑行为以防止泄漏,并检测专有代码泄漏,以便快速遏制任何泄漏;

防止代码篡改——在管道和开发过程中建立保障措施,以确保应用程序中只使用经过授权的代码和组件。

将合作伙伴的安全视为自己的安全

随着软件开发周期的加快,组织需要使用自动化DevSecOps和现代化的可观察性来识别软件中的漏洞——无论是在开发中还是在生产中。此外,组织需要认识到,他们的脆弱性现在已经远远超出了自身的范畴,涉及到他们与第三方和代码的关系。组织应该认识到,他们的代码应该与合作伙伴的代码实践一样安全。通过提供对整个堆栈的风险洞察,现代化的可观察性可以帮助组织将洞察力扩展到合作伙伴生态系统中的漏洞。

参考链接:

https://www.infosecurity-magazine.com/news/software-supply-chain-attacks-soar/

https://www.dynatrace.com/news/blog/why-software-supply-chain-attacks-are-increasing/

https://cycode.com/blog/software-supply-chain-security-your-attack-surface-is-bigger-than-you-think/

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

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

相关文章

dubbo学习笔记1(小d课堂)

常见的dubbo项目分层: 搭建springbootdubbo环境 我们首先用idea创建一个maven项目: 我们把src删除,在里面创建module: 然后接下来我们就要去用springboot去整合dubbo。 我们可以去github上去搜索dubbo,会找到dubbo-s…

心理应激微反应刑事侦查应用,社交行为、情绪行为、生物行为,说谎掩饰,单向表达不分析,情绪反应管理机制,惊讶,厌恶,愤怒,恐惧,悲伤,愉悦

心理应激微反应刑事侦查应用,社交行为、情绪行为、生物行为,说谎掩饰,单向表达不分析,情绪反应管理机制,惊讶,厌恶,愤怒,恐惧,悲伤,愉悦 提示:系列…

【uni-app学习之日历组件】(calendar 底部可展开 折叠)

链接 效果图 代码块 <template><tmt-calendar defaultDate"2021-11-03" :point-list"[2022-03-20,2022-04-01,2022-04-02,2022-04-05]" :show"true" changeDate"changeDate"></tmt-calendar> </template>参…

【王道操作系统】4.1.1 初识文件管理概念和功能

初识文件管理概念和功能 文章目录初识文件管理概念和功能1.文件的属性2.文件内部的数据如何组织起来3.文件之间应该如何组织起来4.操作系统应该向上提供哪些功能5.从上往下看&#xff0c;文件应该如何存放在外存6.其他需要由操作系统实现的文件管理功能1.文件的属性 2.文件内部…

STM32——TIM编码器接口

文章目录一、编码器接口简介二、正交编码器三、通用定时器框图四、编码器接口基本结构五、工作模式六、实例&#xff08;均不反相&#xff09;七、实例&#xff08;TI1反相&#xff09;八、编码器接口测速电路设计关键代码一、编码器接口简介 Encoder Interface 编码器接口编码…

pycharm配置详解

配置解释器File-->setting-->Project&#xff1a;somename-->Project InterpreterPycharm下Python环境没有块注释"""something"""是文档&#xff0c;不是块注释Python中就没有块注释Pycharm版本控制配置Pycharm中的快捷键pycharm中自定…

手把手教你用springboot实现jdk文档搜索引擎

目录 项目背景 项目描述 项目整体架构 项目流程 构建索引 项目背景 搜索引擎是我们经常会用到的工具&#xff0c;例如我们熟知的百度&#xff0c;谷歌等搜索引擎。除了网络搜索引擎&#xff0c;还有很多地方也有搜索引擎的身影&#xff0c;例如视频网站的搜索框&#xff0c;…

Windows系统下使用mingw32编译curl-7.87.0办法

使用工具&#xff1a;Windows10QT5.14.2CMake (cmake-gui)curl-7.87.0 编译办法&#xff1a; 1、下载CURL源码&#xff1a;curl - Download&#xff0c;解压缩zip文件到指定路径下&#xff08;如&#xff1a;D:\QTCode\curl-7.87.0&#xff09; 2、新增环境变量&#xff0c;打…

为什么说IO密集型业务,线程数是CPU数的2倍?

I/O密集型业务&#xff0c;线程数量要设置成 CPU 的 2 倍&#xff01; 也不知道这是哪本书的坑爹理论&#xff0c;现在总有一些小青年老拿着这样的定理来说教。说的信誓旦旦&#xff0c;毋庸置疑&#xff0c;仿佛是权威的化身。讨论时把这样的理论当作前提&#xff0c;真的是受…

MySQL复制底层技术——单线程复制、DATABASE并行复制

1. 单线程复制 单线程复制是MySQL最早出现的主从复制技术&#xff0c;本节我们将对单线程复制做进一步说明。 在MySQL5.6之前的版本中&#xff0c;从库复制不支持多线程&#xff0c;所以当主库写压力稍微大一点时&#xff0c;从库就会出现复制延迟。当然&#xff0c;目前的最…

网络音频广播RtpCast软件

RtpCast是一款基于Windows平台运行的网络音频广播软件。这款RTPCast软件可以以目标分组的方式播放电脑系统声卡&#xff08;麦克风、喇叭和音频混合器&#xff09;、MP3文件列表和网络Rtp音频流等音源到终端设备。此外&#xff0c;RtpCast网络音频广播软件支持方案调度&#xf…

【区块链 | EVM】深入理解学习EVM - 深入Solidity数据位置:Calldata

深入了解Solidity数据位置 - Calldata 原文链接: https://betterprogramming.pub/solidity-tutorial-all-about-calldata-aebbe998a5fc理解Solidity中以太坊交易的 "data" 字段 这是 深入Solidity数据存储位置 系列的第三篇 今天,我们将学习 calldata 的特殊性,以…

springboot项目使用SchedulingConfigurer实现多个定时任务

目录一、引入依赖二、配置文件属性配置三、代码目录结构四、示例代码4.1、定义 定时任务基础接口4.2、定义 定时任务一&#xff08;每天几点几分执行&#xff09;4.3、定义 定时任务二&#xff08;每几分钟执行一次&#xff09;4.4、定义 定时任务注册器4.5、运行springboot项目…

欧拉系统部署NextCloud与常见部署问题解决

欧拉系统部署NextCloud与常见部署问题解决一、欧拉系统安装二、openEuler安装图形界面Ukui三、yum安装的npm包进行本地保存设置&#xff08;个人任务需要&#xff09;四、部署nextCloud4.1构建LAMP环境基础4.1.1开启httpd,防火墙端口号4.1.2开启MariaDB服务4.1.3安装并测试php4…

2023/1/4总结

今天AC了三个题目&#xff1a; 第一个题目&#xff1a;P4913 【深基16.例3】二叉树深度 (1条消息) P4913 【深基16.例3】二叉树深度_lxh0113的博客-CSDN博客 第二个题目&#xff1a;P1229 遍历问题 (1条消息) P1229 遍历问题_lxh0113的博客-CSDN博客 第三个题目&#xff1…

药品市场信息查询-药品数据库(全面)

药品市场信息包含了药品招标、药品投标、药品集采、药品销售数据&#xff08;医院、零售&#xff09;、药品海关进出口数据、药品交易&#xff08;药品license in/out&#xff09;、价格、一致性评价、政策法规、药品公司等多个方面的数据信息&#xff0c;是医药行业市场信息工…

双向循环链表的讲解及实现(图解+代码/C语言)

本次为大家分享的是双向循环链表的增删查改等系列操作。 目录 一、图解双向循环链表结构 二、分步实现 &#xff08;1&#xff09;创建并初始化 &#xff08;2&#xff09;链表元素打印 &#xff08;3&#xff09;头插和尾插 &#xff08;4&#xff09;判断链表为空 &a…

MySQL调优-MySQL索引优化实战一

目录 MySQL调优-MySQL索引优化实战一 插入数据&#xff1a; 举一个大家不容易理解的综合例子&#xff1a; 1、联合索引第一个字段用范围不会走索引 2、强制走索引 什么是回表&#xff1f;为什么要回表&#xff1f;如何进行回表&#xff1f; 但是回表具有很大的弊端&#…

NetInside网络分析帮您解决系统性能问题(二)

前言 某大学信息中心负责人表示&#xff0c;有用户反馈&#xff0c;在通过VPN访问某一IP的80端口时连接时断时续。同时信息中心给到的信息是通过VPN&#xff1a;XXX.XXX.253.5访问IP地址XXX.XXX.130.200的80端口出现访问时断时续问题。 前一文章我们分析了系统整体性能分析&a…

学编程有哪些误区吗?避坑指南拿去不谢!

学习编程时信心满满&#xff0c;但反而效率不高&#xff0c;从“入门”到“放弃”&#xff0c;你肯定猜中了这些误区&#xff01; 今天就专门写了一篇避坑指南&#xff0c;提前避开误区&#xff0c;有助于更好学习编程。 误区1&#xff1a;忽略基础&#xff0c;好高骛远 现在…