软件供应链的基础:SBOM

软件作为一种强大的工具,可以简化复杂的技术概念,但随着软件不可思议的力量而来的是一个相互关联的软件依赖迷宫,这些依赖常常构成软件开发的基础。这些依赖关系并非没有缺陷,正如我们从 Log4Shell 这样的事件中所了解到的那样。当我们试图驾驭不断变化的软件供应链安全时,我们需要确保我们的应用程序建立在坚实的基础之上。

在这篇博文中,我们将深入探讨软件物料清单(Software Bill of Materials,SBOM)的概念,它是安全软件供应链的基本需求。正如物理供应链需要仔细检查以确保产品的质量和安全一样,软件供应链也需要严格的评估。危在旦夕的不仅仅是应用程序的功能,还有应用程序可以访问的信息的安全性。让我们深入到软件供应链的世界中,探索 SBOM 如何作为软件开发和安全中更具弹性的未来的基石。

什么是软件供应链攻击?

供应链攻击是针对应用程序组件的供应商而不是应用程序本身的恶意攻击。软件供应链类似于物理供应链。当你购买 iPhone 时,你看到的只是成品。在最终产品的背后,是一个由零部件供应商组成的复杂网络,这些供应商随后被组装在一起,生产 iPhone。来自日本公司的显示器和相机镜头,来自亚利桑那州的 CPU,来自圣地亚哥的调制解调器,来自加拿大矿山的锂离子电池; 所有这些部件在深圳组装工厂组装成最终产品,然后直接运到你的家门口。

 同样,攻击者可以在 iPhone 组装之前针对 iPhone 供应商之一修改组件,软件供应链威胁参与者也可以这样做,但是目标是随后内置到商业应用程序中的开源软件包。当70-90% 的现代应用程序是使用开源软件组件构建时,这就是一个问题。有鉴于此,供应链的安全性取决于其最薄弱的环节。

所有这些依赖关系都赋予了软件开发人员构建极其复杂的应用程序的超能力,这些应用程序可以非常快速地构建,但会产生无意识的副作用,即他们不可能理解所有组成要素。这给予了攻击者机会。一个受到攻击的包允许攻击者操纵其入口点“下游”的所有包。

在 Log4j 事件中,软件行业(以及所有依赖软件行业的行业,也就是所有行业)深切地感受到了这一现实。

Log4Shell 冲击

Log4Shell 是软件供应链安全重要性的典型代表。我们不打算在这篇文章中深入探讨这起事件。事实上,我们已经在之前的博文中做到了这一点。相反,我们将关注事件对在应用程序中有 Log4j 实例的组织的影响,以及他们为了修复这个漏洞而必须经历的事情。

首先让我们回顾一下时间线:

Log4j中的漏洞最初是在11月24日私下披露的。五天后,发布了一个pull请求来关闭该漏洞,一周后,新的软件包发布了。官方的公开披露发生在12月10日。这就是混乱开始的时候,公司开始确定他们是否是脆弱的,并找出如何补救漏洞的工作。

 平均而言,受影响的个人花费约90小时处理 Log4j事件。大约20%的时间用于确定 log4j 包部署到应用程序的位置。 

从与我们的客户和潜在客户的对话中可以看出,为什么这占用了如此多的时间,主要的罪魁祸首是一个组织是否拥有一个关于软件依赖关系的元数据的中央存储库,这些元数据已经被用于构建他们的应用程序。对于拥有中央存储库和查询数据库的客户来说,识别哪些应用程序存在 log4j 漏洞的步骤需要1-2个小时,而不是像其他组织那样需要20多个小时。这就是为所有软件准备好 SBOM 的力量,也是帮助进行SBOM管理的工具。

什么是软件物料清单SBOM

与您购买的食品背面的营养标签类似,SBOM 是一个成分列表,这些成分进入您的应用程序使用的软件。我们通常认为 SBOM 是开发过程的产物。作为一个开发人员,他们使用不同的依赖关系来制造他们的应用程序,同时他们也在构建一个基于成分的配方。实际上,可以(也应该)在构建管道的所有步骤中生成 SBOM。源代码、构建、映像和生产软件都可以用来生成 SBOM。

 通过使用 SBOM 作为金字塔的基础,组织可以确保它们层叠到这个基础上的所有附加安全特性将经得起时间的考验。只有当我们对用于生成“成分”标签的过程有信心时,我们才能知道我们的软件没有已知的漏洞。签署软件以证明软件包没有被篡改,只有当签署的软件都没有已知的漏洞时才有效。签署一个易受攻击的软件包或图像只能证明从那时起软件没有被篡改过。它不能回顾过去并验证之前出现的软件包在没有 SBOM 或漏洞扫描器帮助的情况下是安全的。

利用软件物料清单(SBOM)作为软件供应链安全的基本要素有以下优势:

  1. 透明性: SBOM 提供了应用程序中使用的所有组件的全面视图。它们揭示了构成软件的“成分”,使团队能够理解他们的应用程序的整个组成,包括所有的依赖关系。不再有黑盒依赖关系和随之而来的相关风险。
  2. 风险管理: 借助 SBOM 提供的透明度,组织可以识别其软件组件中潜在的安全风险,并主动解决这些风险。这包括检测依赖项或第三方组件中的漏洞。SBOM 允许组织标准化其软件供应链,从而允许对脆弱性管理和影响风险管理采取自动化方法。
  3. 快速响应漏洞: 当在软件中使用的组件中发现新的漏洞时,SBOM 可以帮助快速识别所有受影响的应用程序。这大大减少了响应和补救这些漏洞所需的时间,最大限度地减少了潜在的损害。当一个事件发生,而不是如果,一个组织能够迅速反应的缺口和限制的影响。 
  4. 守规: 法规和标准越来越要求 SBOM 展示软件的完整性。通过合并 SBOM,组织可以确保它们满足这些遵从性需求。尤其是在与联邦政府、金融服务业和医疗保健等受到高度监管的行业合作时。
  5. 信任和验证: SBOM 通过允许用户验证所使用的组件来促进对软件产品的信任和信心。它们作为客户、合作伙伴和监管机构的“诚信证明”,展示了该组织对安全的承诺。它们还支持更高级别的安全抽象,如签名映像或源代码,以继承 SBOM 提供的底层基础安全保证。

通过将 SBOM 放在软件供应链安全的基础上,组织可以建立一个安全、有弹性和高效的健壮结构。使用软件材料清单(sBOMs)作为安全软件供应链的基石,提供了一个根本性的转变,即提高透明度、改善风险管理、更快地应对脆弱性、提高守规和加强对软件产品的信任。通过解开软件应用程序中复杂的依赖关系迷宫,SBOM 提供了识别和处理潜在弱点的必要见解,从而创建了一个能够抵御潜在安全威胁的弹性结构。面对 Log4Shell 这样的事件,业界需要采取积极主动的战略方针,强调建立一个经得起时间考验的安全基础。通过提升 SBOM 的作用,我们正朝着软件开发和安全的未来迈出关键的一步,这种未来不仅是创新的,而且是安全、可信和高效的。SBOM 提供了这方面的知识,因此是全面安全战略不可或缺的基石。

使用UniSCA快速生成SBOM

 UniSCA能自动化一键生成SBOM,内容为本次扫描任务扫描出来的所有组件SPDX信息,和扫描包的相关信息,包含厂商、组件名、版本号、组件哈希值、特殊标识符、依赖关系等详细信息。并支持SPDX在内的数种可定制导出格式,节省团队大量时间,切实有效地维护软件供应链安全。

wx【泛联新安软件安全实验室】,回复“SBOM”获取更多软件供应链资讯。

原文链接:让代码安全变轻松,简单好用的开发安全平台-CodeAnt

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

git 常用命令有哪些

Git 是我们开发工作中使用频率极高的工具,下面总结下他的基本指令有哪些,顺便温习一下。 前言 一般项目中长存2个分支: 主分支(master) 和开发分支(develp) 项目存在三种短期分支 &#xff1a…

【SQL】-【计算两个varchar类型的timestamp的毫秒差】

背景 TRANSTAMP3、TRANSTAMP2在Oracle数据库中的类型为varchar,但实际保存的值是时间戳timestamp类型,现在要计算二者的毫秒差 Oracle或MySQL extract(second from (to_timestamp(TRANSTAMP3,yyyy-mm-dd hh24:mi:ss.ff) - to_timestamp(TRANSTAMP2,yyy…

数据结构—哈夫曼树及其应用

5.6哈夫曼树及其应用 5.6.1哈夫曼树的基本概念 路径:从树中一个结点到另一个结点之间的分支构成这两个结点间的路径。 结点的路径长度:两结点间路径上的分支数。 树的路径长度:从树根到每一个结点的路径长度之和。记作 TL 结点数目相同的…

安全学习DAY14_JS信息打点

信息打点——前端JS框架 文章目录 信息打点——前端JS框架小节概述-思维导图JS安全概述什么是JS渗透测试?前后端差异JS安全问题流行的Js框架如何判定JS开发应用? 测试方法(JS文件的获取以及分析方法1、手工搜索分析2、半自动Burp分析插件介绍…

Vue.js表单输入绑定

对于Vue来说,使用v-bind并不能解决表单域对象双向绑定的需求。所谓双向绑定,就是无论是通过input还是通过Vue对象,都能修改绑定的数据对象的值。Vue提供了v-model进行双向绑定。本章将重点讲解表单域对象的双向绑定方法和技巧。 10.1 实现双…

C语言每日一题:10.不使用+-*/实现加法+找到所有数组中消失的数。

题目一: 题目链接: 思路一: 1.两个数二进制之间进行异或如果不产生进位操作那么两个数的和就是就是两个数进行异或的结果。 举例:5(0101)2(0010)进行异或等于:7&#xf…

Unity 使用SharpZipLib解压时报错

报错信息: NotSupportedException: Encoding 936 data could not be found. Make sure you have correct international System.Text.Encoding.GetEncoding (System.Int32 codepage) ICSharpCode.SharpZipLib.Zip.ZipConstants.ConvertToString。 出现问题分析&…

【宝藏系列】Linux 常用磁盘管理命令详解

【宝藏系列】Linux 常用磁盘管理命令详解 文章目录 【宝藏系列】Linux 常用磁盘管理命令详解前言1️⃣ df2️⃣du3️⃣fdisk📟磁盘格式化📠磁盘检验⌨️磁盘挂载与卸除📀卸载/dev/hdc6 前言 Linux磁盘管理常用三个命令为df、du和fdisk。 df…

无涯教程-Lua - 文件I/O

I/O库用于在Lua中读取和处理文件。 Lua中有两种文件操作,即隐式(Implicit)和显式(Explicit)操作。 对于以下示例,无涯教程将使用例文件test.lua,如下所示。 -- sample test.lua -- sample2 test.lua 一个简单的文件打开操作使用以下语句。…

Day11-Webpack前端工程化开发

Webpack 一 webpack基本概念 遇到问题 开发中希望将文件分开来编写,比如CSS代码,可以分为头部尾部内容,公共的样式。 JS代码也希望拆分为多个文件,分别引入,以后代码比较好维护。 本地图片,希望可以实现小图片不用访问后端,保存在前端代码中就可以了 运行程序时我…

mongodb docker 及常用命令

MongoDB属于非关系型数据库,它是由C编写的分布式文档数据库。内部使用类似于Json的bson二进制格式。 中文手册 https://www.w3cschool.cn/mongodb/ 安装 https://www.mongodb.com/try/download/community 二进制安装可见另一篇: centos7 mongodb 4.0.28…

RabbitMQ 教程 | 第8章 跨越集群的界限

👨🏻‍💻 热爱摄影的程序员 👨🏻‍🎨 喜欢编码的设计师 🧕🏻 擅长设计的剪辑师 🧑🏻‍🏫 一位高冷无情的编码爱好者 大家好,我是 DevO…

轻量化YOLOv5改进 | 结合repghost结构冲参数化网络,实现轻量化和加速推理,

RepGhost: A Hardware-Efficient Ghost Module via Re-parameterization 论文总结本文改进repghost 核心代码测试参数量和计算量🔥🔥🔥 “引入RepGhostNet以加速CNN网络推理” “网络宽度的自定义调整:无缝嵌入YOLOv5” “通过结构重参数化优化网络性能” “实现高效和…

ChatGPT能否撰写科研论文?

ChatGPT,这款被许多人誉为语言处理领域的“黑马”,究竟能否应用于撰写科研论文?近期,以色列理工学院生物学家兼数据科学家Roy Kishony带领的团队,针对这一问题进行了系列研究,其结果已在《Nature》杂志上发…

【运维】在阿里云上搭建自己的图床,配合PicGo和Typora使用

本文将详细介绍如何在阿里云上搭建自己的图床,包括购买OSS服务、配置域名解析、创建OSS存储桶和设置图片上传规则等步骤。希望对您有所帮助! 一、购买OSS服务 首先,我们需要在阿里云官网购买OSS(Object Storage Service)服务。OSS是阿里云提…

springBoot多数据源使用tdengine(3.0.7.1)+MySQL+mybatisPlus+druid连接池

一、安装部署 1、我这里使用的 3.0.7.1版本,因为我看3.x版本已经发布了一年了,增加了很多新的功能,而且3.x官方推荐,对于2.x的版本,官网都已经推荐进行升级到3.x,所以考虑到项目以后的发展,决定…

django bootstrap html实现左右布局,带折叠按钮,左侧可折叠隐藏

一、实现的效果 在django项目中,需要使用bootstrap 实现一个左右分布的布局,左侧区域可以折叠隐藏起来,使得右侧的显示区域变大。(为了区分区域,左右加了配色,不好看的修改颜色即可) 点击折叠按钮,左侧区域隐藏,右侧区域铺满: 二、实现思路 1、使用col-md属性,让左…

SOC FPGA之流水灯设计

一、DS-5简介 Altera Soc EDS开发套件的核心是Altera版ARM Development Studio 5(DS-5)工具包,为SoC器件提供了完整的嵌入式开发环境、FPGA自适应调试和对Altera工具的兼容。 1.1 DS-5 eclipse破解 首先下载破解器 然后进入cmd运行,进入到破解器所在文…

【八】mybatis 日志模块设计

mybatis 日志模块设计 简介:闲来无事阅读一下mybatis的日志模块设计,学习一下优秀开源框架的设计思路,提升自己的编码能力 模块设计 在Mybatis内部定义了4个级别:Error:错误 、warn:警告、debug:调试、trance,日志优…

【计算机网络】应用层协议 -- DNS协议

文章目录 1. DNS背景2. 域名简介3. 域名解析过程4. 使用dig查看DNS过程 1. DNS背景 DNS(Domain Name System,域名系统)协议,是一个用来将域名转化为IP地址的应用层协议。 TCP/IP当中通过IP地址和端口号的方式,来确定…