SBOM 指南: 是什么及其作用

news2024/11/27 5:23:07

在软件开发的动态格局中,过去十年见证了两次重新定义了行业轨迹的变革性转变。首先是广泛采用开源软件组件,为开发人员提供大量预先构建的模块,以简化他们的工作。第二个是与DevOps文化的拥抱,自动化和加速软件构建和交付过程。总之,这些转变带来了前所未有的效率和速度。然而,他们也引入了复杂性的迷宫,软件组成变得越来越复杂和不透明。 

这种复杂性,再加上现代开发周期无情的步伐,产生了一种迫切需要的解决方案,可以在混乱中提供清晰的解决方案。这就是软件材料清单(SBOM)出现的背景。本指南深入探讨了SBOM是什么机及其作用。无论您是开发人员、安全专业人员,还是只是热衷于理解现代软件安全的人,本指南提供的见解将使您具备导航 SBOM 的所有细节的知识。

什么是软件材料清单(SBOM) ? 

软件材料清单(SBOM)是应用程序中包含的软件组件、模块和库的结构化列表。与你购买的食品背面的营养标签类似,SBOM 是一个由软件组成的成分列表。我们通常认为 SBOM 是软件开发过程的工件。当开发人员使用不同的开源组件构建应用程序时,他们也在创建一个成分列表,SBOM 就是这个列表的数字构件。

为什么 SBOM 如此重要?

SBOM 是您可以使用的最强大的安全工具之一。影响 SolarWind、 Codecov 和 Log4j 的大规模软件供应链攻击突出表明,组织需要了解其创建或使用的软件的软件组件及相关风险。SBOM 不仅对于识别软件中的安全漏洞和风险至关重要。它们也是理解软件如何随时间变化、潜在地引入新的风险或威胁的关键。

了解软件的内容是保护软件安全的第一步。越来越多的组织正在开发和使用在容器中运行的云本地软件。考虑一下这些容器化应用程序的复杂性,这些应用程序包含来自商业供应商、合作伙伴、定制构建软件和开源软件(OSS)的成百上千个组件。这些部件中的每一个都是潜在的风险和漏洞来源。

SBOMs 用例

一个组织可以将 SBOM 用于许多目的:

  1. 1.合规审查
  2. 2.安全评估
  3. 3.许可证合规
  4. 4.软件质量保证

此外,您可以在外部共享一个 SBOM,以便进行法规遵循和客户审计。在安全和开发角色中,SBOM的作用类似于其他行业的材料清单。例如,汽车制造商在制造现代汽车时,必须跟踪来自各种供应商的数万个零部件。只需要一个有缺陷的零件就能毁掉最终的产品。

本地云软件也面临着类似的挑战。现代应用程序使用大量的开源软件,这些软件依赖于其他开源软件组件,而这些组件又包含了更多的开源组件。它们还包括内部开发的代码、商业软件和由合作伙伴开发的定制软件。

组合来自如此广泛来源的组件和代码会在软件开发生命周期的每个步骤中带来额外的风险和潜在的漏洞。因此,在开发生命周期的过程中,SBOM 成为全面了解任何软件应用程序中的“成分”的关键基础。

从软件供应商那里收集 SBOM,并在整个过程中生成 SBOM,以跟踪组件库存变化并确定安全问题,这是确保应用程序总体安全性不可或缺的第一步。

安全和开发团队可以向软件供应商请求 SBOM,也可以自己生成 SBOM。具有在内部生成 SBOM 的能力是目前较为理想的方法。通过这种方式,团队可以在整个开发过程中生成多个 SBOM,以跟踪组件更改,并在软件中出现新问题时搜索漏洞。

SBOM 可以通过以下方式帮助缓解开发人员和安全团队面临的挑战:

  • 1.了解开放源码和第三方工具固有的风险
  • 2.通过在周期的早期暴露和补救问题来减少开发时间和成本
  • 3.识别许可证和遵从性要求

SBOM安全优势

对于您的组织来说,SBOM 安全性有许多好处。保护软件供应链的任何有效解决方案都应该是透明的。让我们深入研究一下 SBOM 安全对于这些成分意味着什么,以及为什么透明度如此重要。 

这一切都始于知道正在使用什么软件。您需要软件中包含的“成分”(例如库、包和文件)的准确列表。这个“成分”列表就是众所周知的软件材料清单。一旦您为您创建或使用的任何软件片段建立了 SBOM,您就可以开始回答关于我们软件供应链安全性的关键问题。

值得注意的是,SBOM 本身也可以作为其他类型分析的输入。一个值得注意的例子是漏洞扫描。通常,漏洞扫描是一个术语,用于发现基于以前公布的漏洞报告的软件的已知安全问题。检测和减少漏洞对于防止安全事故大有帮助。

对于部署在容器中的软件,开发人员可以一起使用SBOM和漏洞扫描,以提供对容器映像更好的透明性。在 CI/CD管道中执行这两种类型的分析时,您需要认识到两件事:

每次创建一个新的容器映像时,只需要生成一次SBOM。SBOM可以永远与这个独特的映像联系在一起。即使那个独特的映像从未改变,持续地扫描漏洞也是至关重要的。很多人在构建了映像之后就会扫描漏洞,然后继续前进。但是新的漏洞每天都会被发现和发布(毫不夸张地说)——所以定期扫描您已经使用或分发的任何现有映像以确定它们是否受到新漏洞的影响是至关重要的。使用 SBOM 意味着您可以快速而自信地扫描应用程序以寻找新的漏洞。

为什么 SBOM 对软件供应链安全至关重要

今天的软件是复杂的,这就是为什么 SBOM 已经成为软件供应链安全的基础。SBOM 的作用是为应用程序的软件组件提供透明度,为脆弱性分析和其他安全评估提供基础。 

例如,对于他们购买或构建的每个软件应用程序都有一个全面的SBOM的组织可以立即识别新的零日漏洞的影响,例如 Log4j中的Log4Shell漏洞,并识别其确切位置以便更快地修复。同样,他们可以评估开源组件的来源和作业风险,以符合内部政策或行业标准。当涉及到维护和积极管理安全软件供应链时,这些是关键的能力。 

2021年美国关于改善国家网络安全的行政命令强调了SBOM的重要性。行政命令指示联邦机构“发布最低限度的SBOM标准”,并界定有关“直接向购买者提供软件材料清单(SBOM)或向公共网站发布”的标准这项行政命令正在整个行业产生连锁反应,因为向美国联邦政府出售软件的供应商将越来越需要为他们提供的软件提供 SBOM。随着时间的推移,这些标准将随着其他行业的公司开始在他们自己的软件采购工作中反映联邦的要求而传播开来。

谁需要 SBOM? 

当涉及到谁需要 SBOM 时,它们主要被 DevSecOps 从业人员和法规遵循团队用于审计、许可证监控和遵守特定行业的法规。然而,随着软件供应链攻击(如 SolarWinds黑客攻击和最近Log4j中的Log4Shell漏洞)的增加,SBOM 的使用现在已经成为安全团队和开发团队共同关注的问题。

安全团

SBOM 对于安全团队来说起着至关重要的作用,特别是在漏洞扫描方面。与扫描所有软件应用程序相比,扫描一个SBOM要快得多,也容易得多,而且在出现零日漏洞的情况下,分秒必争。安全团队还可以利用SBOM根据其存在和位置对补救问题进行优先排序,并创建特定于基于组件的软件工程属性(如供应商、版本或包类型)的策略。

开发团队

开发团队使用 SBOM 跟踪他们在开发、管理和操作的应用程序中使用的开源、商业和定制构建的软件组件。这有助于帮助开发团队减少花在返工上的时间,方法是帮助管理依赖关系,及早发现需要补救的安全问题,并确保开发人员正在使用经过批准的代码和源代码。

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

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

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

相关文章

UE5——源码阅读——8——引擎预初始化

初始化文本本地化 执行平台特定的初始化内容 执行应用程序的特定预初始化 将当前的工作目录设置为可执行的目录 处理命令行选项 启用内存保护(根据命令行是否启用内存保护) 是否启用UE5内存管理的炼狱测试 是否启用UE5内存中有问题的测试 添加bu…

sql中的加减乘除

自学SQL网(教程 视频 练习全套)

C++ PrimerPlus 复习 第九章 内存模型和名称空间

第一章 命令编译链接文件 make文件 第二章 进入c 第三章 处理数据 第四章 复合类型 (上) 第四章 复合类型 (下) 第五章 循环和关系表达式 第六章 分支语句和逻辑运算符 第七章 函数——C的编程模块(上&#xff…

pandas - 数据分组统计

1.分组统计groupby()函数 对数据进行分组统计,主要适用DataFrame对象的groupby()函数。其功能如下。 (1)根据特定条件,将数据拆分成组 (2)每个组都可以独立应用函数(如求和函数sum()&#xff0…

spark从0到1 基础知识 一文全

spark从0到1 基础知识 一文全 1 开发前准备2 spark架构,任务提交流程3 开发中涉及的python知识 学习中的测试学习代码详情代码请见本人github中的sparkcp项目 https://github.com/defineqq/sparkcp 1 开发前准备 主要是本机使用,所以 安装了个python3&a…

《SpringBoot项目实战》第五篇—接口发生异常如何统一处理

系列文章导航 第一篇—接口参数的一些弯弯绕绕 第二篇—接口用户上下文的设计与实现 第三篇—留下用户调用接口的痕迹 第四篇—接口的权限控制 第五篇—接口发生异常如何统一处理 本文参考项目源码地址:summo-springboot-interface-demo 前言 大家好!…

开源六轴协作机械臂MechArm 拖动示教模型案例

介绍 今天,我将向大家展示一个我独立设计并实现的机械臂模型。这个模型的核心功能是实现实时的手势追踪——只需用手轻轻拖拽,机械臂就能立即跟随你的动作进行移动。 我之所以想要创造这样一个模型,是因为在一些危险环境中,我们可…

搭建二维码系统,轻松实现固定资产的一物一码管理

固定资产管理中普遍存在盘点难、家底不清、账实不一致、权责不清晰等问题,可以在草料上搭建固定资产管理系统,通过组合功能模块实现资产信息展示、领用登记、出入库管理、故障报修等功能,对固定资产进行一物一码规范化管理。 比如张掖公路事业…

C++学习之map和set

目录 一,什么是map和set 二,set的使用 插入 键值对 删除(erase)与查找 lowerbound与upperbound equal_range multiset 三,map的使用 insert 查找 删除 重载[ ] ​编辑 一,什么是map和set C中…

云闪付app拉新好做吗?地推和网推百搭拉新项目申请渠道

云闪付拉新可通过”聚量推客“申请 云闪付是银联出的支付平台,每年在拉新市场的预算较高,比较适合地推和网推做项目搭配,只需要完成一次动账即可结算 我们上了两个版本的云闪付项目,下图展示 也有更多的其它地推和网推拉新项目可…

【通关选择】upload-labs通关攻略(大全)

前提条件: 1.文件能够成功上传到服务器 2.攻击者能够知道文件的上传路径 upload-labs靶场 Pass-01( 前端验证) 三种方法解决思路 1.禁用客户端JavaScript弹窗 2.通过burp抓包,修改后缀名 3.f12删除return filecheck&#xff0…

树专题 —— 二叉搜索树和中序遍历

大家好,我是 方圆。我准备把树写成一个专题,包括二叉搜索树、前序、中序、后序遍历以及红黑树,我也想试试能不能将红黑树写好。 本篇是关于二叉搜索树,也是所有后续学习的基础,其中会涉及前序、中序、后序遍历&#x…

外卖系统的数据管理和隐私保护应该如何进行?

1. 数据管理 外卖系统处理大量用户数据,包括个人信息、订单记录、支付信息等。以下是一些数据管理的最佳实践: 合规性与透明度:确保你的数据收集、存储和处理符合相关法规,例如GDPR(通用数据保护条例)。同…

网络安全防御体系构建思路

前言 在某一天的深夜,作为安全从业人员,穿着大裤衩子,坐在门前,点燃一根烟(画面自己想象)开始思考企业如何打造自己的安全体系,虽然这不是作为月薪3k该考虑的问题,但是毕竟当初笔者…

element的表单校验正常手机号码以及输入框填写“不详”的情况

element的表单校验正常手机号码以及输入框填写“不详”的情况 <el-col :span"6"><el-form-item label"手机号码" prop"phoneNumber" class"grid-content bg-purple"><el-input v-model"testForm.phoneNumber&quo…

Linux环境下的SVN服务器搭建并结合内网穿透实现远程连接

文章目录 前言1. Ubuntu安装SVN服务2. 修改配置文件2.1 修改svnserve.conf文件2.2 修改passwd文件2.3 修改authz文件 3. 启动svn服务4. 内网穿透4.1 安装cpolar内网穿透4.2 创建隧道映射本地端口 5. 测试公网访问6. 配置固定公网TCP端口地址6.1 保留一个固定的公网TCP端口地址6…

第四章 Web服务器(1)

1.www简介 Web网络服务也叫WWW(World Wide Web 全球信息广播)万维网服务&#xff0c;一般是指能够让用户通过浏览器访问到互联网中文档等资源的服务 Web 网络服务是一种被动访问的服务程序&#xff0c;即只有接收到互联网中其他主机发出的请求后才会响应&#xff0c;最…

LINQ to SQL系列三 使用DeferredLoadingEnabled,DataLoadOption指定加载选项

介绍linq to sql 的 DataContext类DeferredLoadingEnabled属性使用,以及DataLoadOptions限定加载相关表数据的LoadWith和AssociateWith方法。 本文中举例用到的数据模型如下: Student和Class之间是多对一关系,Student和Course之间是多对多关系。 DataContext的DeferredLo…

使用oracle虚拟机添加新硬盘

1、关闭运行的虚拟机后配置 单击选择要配置的oracle虚拟机&#xff0c;单击设置–>存储—>控制器&#xff0c;单击添加虚拟硬盘图标。 2、配置硬盘 单击“创建”&#xff0c;单击“下一步”&#xff0c;选择需要创建的虚拟硬盘大小&#xff0c;完成创建。 完成创建后…

基于SpringBoot+Redis的前后端分离外卖项目-苍穹外卖(一)

熟悉项目环境 1. 苍穹外卖项目介绍1.1 项目介绍1.2 技术选型 2. 开发环境搭建2.1 前端环境2.2 后端环境搭建2.3 Git版本控制2.4 nginx反向代理和负载均衡 3.登录功能4. Swagger4.1 介绍4.2 使用步骤4.3 常用注解 1. 苍穹外卖项目介绍 1.1 项目介绍 苍穹外卖是专门为餐饮企业&…