开源之所以在软件开发中大量使用的原因是它提供了经过良好测试的构建块,可以加速复杂应用程序和服务的创建。但是第三方软件组件以及包和容器的便利性同时也带来了风险——软件供应链攻击。

软件供应链攻击日益普遍,Gartner 将其列为2022 年的第二大威胁。Gartner 预测,到 2025 年,全球 45% 的组织将遭受一次或多次软件供应链攻击,在参与调研的 CIO 中有82%认为他们所在的企业将容易受到攻击。其中包括通过广泛使用的软件组件(如 Log4j)中的漏洞进行的攻击、针对构建流水线的攻击(如 SolarWinds、Kaseya 和 Codecov hacks),或者黑客入侵软件包存储库本身。

攻击者逐渐发现软件供应链是最薄弱的环节,将攻击优先级从生产环境转移到软件供应链,这也就是为什么软件供应链攻击数量激增的原因。对使用开源代码库的研究表明,漏洞和过时或废弃的组件很常见:81% 的代码库至少有一个漏洞,50% 的代码库有多个高风险漏洞,88% 使用的组件不是最新版本或两年内没有新开发。

关于“影子代码”的思考

CIO 们在制定软件供应链安全防护策略时,可以假设他们的开发人员的开发环境和使用的工具都已经收到损害,借鉴此类场景来制定策略和政策,来最大限度减少攻击对企业软件供应链的影响和损害。

建议 CIO 们像对待影子 IT 一样去思考“影子代码”的影响与威胁。因此这不仅是一个安全问题,而是真正深入到如何获取软件的问题,不论这个软件是开源的还是商业的。如何将开源软件带入开发和生产环境,如何更新,如何控制以及怎样控制,这些都是值得思考的问题。

SBOM——提高可见性的关键

物理供应链已经使用标签、成分清单、安全数据表和材料清单,因此监管机构和消费者知道产品的最终结果。新举措旨在将类似的方法应用于软件,帮助组织了解依赖关系网络及其软件开发过程的攻击面。美国政府关于软件供应链安全的行政令要求向联邦政府提供软件的软件供应商提供软件物料清单 (SBOM),并使用 SLSA 安全检查表的供应链级别来防止篡改。也正因为如此,越来越多企业开始认真对待他们的软件供应链。

Linux 基金会最近的一项调查发现,企业对 SBOM 的需求意识开始提高,目前47% 的 IT 供应商、服务提供商和受监管的行业使用 SBOM,88% 的人预计将在 2023 年使用 SBOM。SBOM 对已经对软件组件和 API 进行资产管理的企业最为有用,如今拥有强大软件开发流程的企业发现可以生成软件材料清单的工具更容易使用。SBOM 可以由构建系统创建,也可以由软件组成分析工具在事后生成。许多工具可以集成到 CI/CD 流水线中并作为构建的一部分运行,甚至可以在下载库时运行。

为了让 SBOM 更好地发挥作用,企业需要明确开发团队获取开源软件的相关政策,开发人员需要清楚地知道公司的安全策略和政策是什么,为了保障开发软件安全,开发人员必须明确他们正在获取的开源软件是没有被篡改的。因此,CIO 们应该首先向他们的开发团队教育和灌输一些基本步骤,即使用新兴的行业标准方法,一是锁定构建系统,二是创建一种可重复的方法来验证软件工件的可信度,然后再将它们带入开发和生产环境。

保护流水线安全

保护企业的软件交付流水线也很重要。NIST 的安全软件开发框架 (SSDF) 和 SLSA 是很好的起点:它们涵盖了各种成熟度级别的最佳实践,从简单的构建系统开始,然后使用日志和元数据进行审计和事件响应。BitBucket、GitHub、GitLab 等版本控制系统都包括安全和访问保护功能(包括越来越精细的访问策略控制、分支保护、代码签名、要求所有贡献者进行 MFA 以及扫描机密和凭据),但需要在使用的时候明确启用。此外可以通过在单个堆栈中实施 SLSA 来保护构建流水线,例如用于可重复安全创建工件 ( FRSCA ) 的项目,虽然目前尚未具备投入生产的能力,但在未来 CIO 可以期望在构建系统时包含更多此类实践。

不过 CIO 们需要留意 SBOM 只是保护流水线安全的解决方案中的一部分,且 SBOM 创建和使用 SBOM 的工具也仍在完善,请求和使用的过程也需要优化。因此在要求供应商提供 SBOM 时,还需要明确 SBOM 的更新频率,是否包含漏洞报告和通知等。企业还需要工具来阅读 SBOM,并制定流程以对这些工具的发现采取行动。

CIO 们应当明确 SBOM 是一种推动力,可以帮助企业应对可能发生的事件,但它不是解决软件供应链安全的万能灵药。同时目前行业响应的速度以及围绕 SBOM 标准和代码证明仍有待提高和加强。不过随着对 SBOM 的需求上升,我们对此可以保持乐观态度。

SEAL 能够如何帮助您

Seal 软件供应链防火墙旨在为企业提供代码安全、构建安全、依赖项安全及运行环境安全等4大防护,通过全链路扫描、问题关联及风险阻止的方式保护企业软件供应链安全,降低企业安全漏洞修复成本。

CIO们开始将软件供应链升级为安全优先级top的更多相关文章

  1. Kubernetes 时代的安全软件供应链

    点击下载<不一样的 双11 技术:阿里巴巴经济体云原生实践> 本文节选自<不一样的 双11 技术:阿里巴巴经济体云原生实践>一书,点击上方图片即可下载! 作者 汤志敏  阿里云 ...

  2. Seal 0.4 发布:软件供应链安全洞察更上一层楼!

    今天,我们很高兴宣布 Seal 0.4 已正式发布!在上一个版本中,Seal 完成了从单一产品到全链路平台的转变,通过全局视图帮助用户掌握软件开发生命周期各个环节的安全状况. 在 Seal 0.4 中 ...

  3. 在C#中实现软件自动升级

    在C#中实现软件自动升级 winform程序相对web程序而言,功能更强大,编程更方便,但软件更新却相当麻烦,要到客户端一台一台地升级,本文结合实际情况,通过软件实现自动升级,弥补了这一缺陷,有较好的 ...

  4. 禁被ping 软件漏洞升级

    禁被ping:echo “net.ipv4.icmp_echo_ignore_all=1”  /etc/sysctl.conf 软件漏洞升级:yum install openssh bash -y

  5. HTML5进阶(三)HBuilder实现软件自动升级(优化篇)

    HBuilder实现软件自动升级(优化篇) 前言 受前篇博客<HTML5进阶(二)HBuilder实现软件自动升级>(点击查看详情)的影响,测试过程中发现APP自动更新还是存在问题,第一次 ...

  6. HTML5进阶(二)HBuilder实现软件自动升级

    HBuilder实现软件自动升级 前言 移动APP开发好后需要实现软件自动升级功能,经过一番搜索,发现HBuilder具有"App资源在线升级更新"的功能,遂研究之. 经过一番测试 ...

  7. 基于 Docker 的现代软件供应链

    [编者按]本文作者为 Marc Holmes,主要介绍一项关于现代软件供应链的调查结果.本文系国内 ITOM 管理平台 OneAPM 编译呈现,以下为正文. 3 月初,为了了解软件供应链的现状以及 D ...

  8. OpenSSF安全计划:SBOM将驱动软件供应链安全

    在 软件成分分析(SCA)一文中,我们简单提到软件物料清单(SBOM)在安全实践中的价值. 本期文章将带你深入了解 "SBOM 无处不在"计划是什么,以及 SBOM 对未来软件供应 ...

  9. SLSA 框架与软件供应链安全防护

    随着软件供应链攻击浪潮愈演愈烈,Google 发布了一系列指南来确保软件包的完整性,旨在防止影响软件供应链的未经授权的代码修改.新的 Google SLSA 框架(Supply-chain Level ...

  10. CSO视角:Sigstore如何保障软件供应链安全?

    本文作者 Chris Hughes,Aquia的联合创始人及CISO,拥有近20年的网络安全经验. SolarWinds 和 Log4j 等影响广泛的软件供应链攻击事件引起了业界对软件供应链安全的关注 ...

随机推荐

  1. spring---面向切面(AOP @Pointcut 表达式篇)

    AOP(面向切面编程),可以说是OOP(面向对象编程)的补充和完善.OOP引入封装.继承和多态性等概念来建立一种对象层次结构,用以模拟公共行为的一个集合. 当我们需要为分散的对象引入公共行为的时候,O ...

  2. RTMP协议学习——从握手到播放

    从客户端发起播放请求,到rtrmp视频流开始播放,大致经过了握手->建立连接->创建流->播放这几步比较重要的步骤.下面我将结合wireshark的抓包,对其中的每个流程进行分析和学 ...

  3. MAUI Blazor 如何通过url使用本地文件

    前言 上一篇文章 MAUI Blazor 显示本地图片的新思路 中, 提出了通过webview拦截,从而在前端中显示本地图片的思路.不过当时还不完善,随后也发现了很多问题.比如, 不同平台上的url不 ...

  4. Echarts图表基本参数设置说明

    ECharts 是一款强大的数据可视化库,可以通过 JavaScript 构建交互式和动态的图表.在使用 ECharts 进行图表绘制时,我们可以通过设置各种参数来达到我们想要的效果.下面是对 ECh ...

  5. docker制作compose

    第一步,先了解Compose是什么? Compose 项目是 Docker 官方的开源项目,负责实现对 Docker 容器集群的快速编排. Compose有两个重要的概念 1.项目 :由一组关联的应用 ...

  6. 使用Visual Studio 2022 创建lib和dll并使用

    对于一个经常写javaWeb的人来说,使用Visual Studio似乎没什么必要,但是对于使用ffi的人来说,使用c或c++编译器,似乎是必不可少的,下面我将讲述如何用Visual Studio 2 ...

  7. 14、Map

    1.Map的定义 map是Go中的内置类型,它将一个值与一个键关联起来.可以使用相应的键检索值.Map 是一种无序的键值对的集合.Map 最重要的一点是通过 key 来快速检索数据,key 类似于索引 ...

  8. LIS(比动态规划更快的解法N*logN)

    以[1,3,8,17,5,14,10]为例,首先我们需要开设一个栈S保存,栈中的元素S[i]代表了以S[i]结尾的长度为i+1的最长上升子序列的最小取值(0<=i). 然后执行下列算法步骤: ( ...

  9. 有一个正整数N可以分解成若干个正整数之和,问如何分解能使这些数的乘积最大?

    这可真是个有意思的问题,之前好像在刷题的时候也碰到过类似的问题 问题的解决是:我们由均值不等式可以知道,当每个数相等的时候,有乘积最大. 那么所以实际上就是将这个数均分,假如正整数N为 k,假设分成n ...

  10. TensorFlow C++ 初始化 Tensor 内存 到GPU 内存

    最近使用TensorFlow C++版本实现神经网络的部署,我通过GPU 处理得到网络的输入值,因此输入值在GPU内存上保存, TF 输入tensor 的调用语句为 Tensor inputTenso ...