了解 SBOM (软件物料清单)

news2024/11/25 6:39:30

近年来,开源软件在开发中的采用激增,目前已占已构建软件的高达 90%。它在全球公司中的受欢迎程度源于成本节约和产品上市时间的加快。然而,在集成开源软件组件时,有一个关键的方面需要考虑。

Synopsys 报告84% 的商业和专有代码库至少包含一个已知的开源漏洞。这凸显了确保您使用的开源组件的安全性变得越来越重要。这就是软件物料清单 (SBOM) 派上用场的地方。 

什么是 SBOM?

开源组件和第三方代码可能很复杂,有很多层。就像俄罗斯套娃一样,这些部件相互配合,每一层都有自己的规则。为了确保他们的软件安全,公司需要确切地知道其中包含什么。

SBOM 提供有关每个组件的详细信息。它就像软件的标签,列出了所有部件及其关系——就像开源部件、第三方部件和公司自己的代码的混合。它提供了每个部分的技术详细信息,包括其名称、版本和许可证。 SBOM 还可以包括有关安全问题、传递依赖性、组件来源和其他信息的信息。

例如,在汽车行业,制造商为每辆车制定详细的规格,包括他们制造的零件和来自外部供应商的零件。如果发现某个零件有缺陷,制造商很快就会知道哪些车辆受到影响。它允许他们通知业主需要维修或更换。这种清晰的记录对于查找缺陷的来源以及如何有效地修复它们非常重要。

最低数据要求 

在美国,受新的政府信息安全政策要求更严格的软件安全措施的影响,软件开发商越来越多地采用软件物料清单 (SBOM)。

总统行政官第 14028 号命令于 2021 年 5 月 12 日发布,旨在“改善国家的网络安全”,制定了具体标准用于联邦信息系统。该命令的一个关键方面(详见第 4 节)涉及制定安全软件开发和采购实践指南。该文件将 SBOM 视为确保软件完整性和管理与软件供应链相关风险的关键要素。

根据第 14028 号行政命令,美国商务部和国家电信和信息管理局 (NTIA) 概述了软件组件的最低数据要求,分为三个主要组:

数据字段包括有关每个软件组件的基本信息,例如:

供应商名称:创建、定义和标识组件的实体的名称。
组件名称:分配给原始供应商定义的软件单元的名称。
组件版本:供应商使用的标识符,用于指定软件相对于先前标识的版本的更改。
其他唯一标识符:用于标识组件或用作相关数据库的查找键的其他标识符。
依赖关系:表征上游组件X包含在软件Y中的关系。
SBOM 数据的作者:为此组件创建 SBOM 数据的实体的名称。
时间戳:SBOM 数据组装的日期和时间的记录。

自动化支持有助于自动生成 SBOM 和机器可读性,从而实现跨软件生态系统的扩展。此外,SBOM 应以以下三种格式之一生成:
 
软件包数据交换 (SPDX)
 
此格式广泛用于记录有关软件许可证和组件的信息。 SPDX 由 Linux 基金会开发,标准化了组织在其产品中使用的软件组件和许可证的通信方式,从而简化了合规性。

CycloneDX

CycloneDX 主要关注安全性,是一种轻量级 SBOM 格式,设计用于应用程序安全上下文和供应链组件分析。它提供了一种标准方法来表示应用程序中的组件、库和模块及其相关的安全风险和许可。

软件识别 (SWID) 标签

SWID 标签由国际标准化组织 (ISO) 开发,是为软件产品提供唯一标识的 XML 结构。它们帮助管理软件库存并确保遵守许可证。 SWID 标签对于软件资产管理和网络安全目的特别有用。

将 SBOM 集成到安全开发生命周期中需要遵循的实践和流程。 其中包括建立 SBOM 更新频率、定义依赖树的深度、处理具有不确定或不完整依赖信息的 SBOM 元素,以及设置分发、传递和访问控制策略。 

SBOM 用例

SBOM 用例可大致分为三个主要类别:

漏洞检测和管理:SBOM 有助于跟踪所有代码组件。当发现关键漏洞时,安全团队可以快速使用 SBOM 定位代码中的问题,了解其影响并优先修复它。例如,TuxCare 的 SecureChain for Java 为服务审查和修补的每个 Java 包提供详细的 SBOM,确保知情决策完全透明。

软件许可证管理:借助 SBOM,公司可以轻松跟踪第三方和开源软件的许可证。许可证经常发生变化,因此定期检查是必要的。这有助于确保公司不会违反任何许可协议或知识产权,从而避免法律问题和财务风险。

软件开发生命周期 (SDLC) 改进:SBOM 使创建、部署和维护软件的整个过程更加高效。例如,开发人员在编写代码时会在初始 SBOM 中列出所有软件依赖项。当发现新的漏洞和依赖项时,此 SBOM 在测试和部署阶段进行更新。它还会提醒开发人员软件使用后出现的任何问题,确保持续更新和改进。 

SBOM 的未来

SBOM 对于向政府实体(尤其是国防和航空航天等行业)提供软件的公司尤其重要。然而,它的相关性也延伸到了其他公司。

最近经常利用开源漏洞的供应链攻击有所增加供应链攻击强调了严格检查第三方开源的重要性组件、库和框架。这些攻击可以使恶意行为者完全控制公司的系统、破坏产品功能、引入恶意软件,甚至将病毒传播给客户和其他交互组织。此类攻击的不可预测性和潜在的广泛影响使其成为重大威胁。

Gartner 预测到 2025 年,60% 的组织将把 SBOM 纳入其安全系统。然而,SBOM 虽然有用,它并不是解决软件供应链和保障挑战的灵丹妙药。它只是众多工具之一,而不是包罗万象的解决方案。 

SBOM 的有效性取决于广泛采用,随着标准和要求的不断发展,这种采用仍在进行中。鉴于目前正在开发的各种工具和标准不断涌现,实现普遍使用需要时间。

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

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

相关文章

未来十年,人工智能就业方向及前景如何?

人工智能(AI)是一个快速发展的领域,对于未来的就业方向和前景有着巨大的影响。以下是一些可能的发展趋势和就业前景: 1、增长趋势:人工智能正在全球范围内经历巨大的增长,预计在未来十年内将继续保持这一趋…

rn报错 run react-native-start,rn真机报错bug解决

错误信息 这个问题是因为手机和电脑没有链接起来需要实行通讯 ADB ADB (Android Debug Bridge) ,译作 安卓调试桥 ,一个能让你 与Android设备进行通信 的 命令行工具 。 你可以通过它,在命令行输入命令控制Android设备,或者查看…

【map】【单调栈 】LeetCode768: 最多能完成排序的块 II

作者推荐 【贪心算法】【中位贪心】.执行操作使频率分数最大 涉及知识点 单调栈 排序 map 区间合并 题目 给你一个整数数组 arr 。 将 arr 分割成若干 块 ,并将这些块分别进行排序。之后再连接起来,使得连接的结果和按升序排序后的原数组相同。 返回…

【Spring】11 EnvironmentAware 接口

文章目录 1. 简介2. 作用3. 使用3.1 创建并实现接口3.2 配置 Bean 信息3.3 创建启动类3.4 启动 4. 应用场景总结 Spring 框架为开发者提供了丰富的扩展点,其中之一就是 Bean 生命周期中的回调接口。本文将着重介绍一个与环境(Environment)相关…

uniapp 预览图片

preImg(index){let urls []this.images.map((item,i) > {if(indexi){urls.unshift(item.file_path)}else{urls.push(item.file_path)}})uni.previewImage({urls})}

探索关系:Python中的Statsmodels库进阶

目录 写在开头1. 多元线性回归场景介绍 2. Logistic回归2.1 Logistic回归的概念2.2 应用案例2.2.1 建立模型和预测2.2.2 模型结论2.2.3 模型优化 3. 时间序列分析3.1 时间序列分析中的应用3.2 利用Statsmodels进行简单的时间序列分析 写在最后 写在开头 在数据分析的旅程中&am…

【react】原理简介

一、setState() 的说明 1.1 更新数据 setState() 是异步更新数据的注意:使用该语法时,后面的 setState() 不要依赖于前面的 setState()可以多次调用 setState() ,只会触发一次重新渲染 1.2 推荐语法 推荐:使用 setState((sta…

C++内存布局

温故而知新,本文浅聊和回顾下C内存布局的知识。 一、c内存布局 C的内存布局主要包括以下几个部分: 代码段:存储程序的机器代码。.数据段:存储全局变量和静态变量。数据段又分为初始化数据段(存储初始化的全局变量和…

深入解析Guava范围类(Range)

第1章:范围类Range的重要性 大家好,我是小黑,今天咱们聊聊一个在Java编程世界里非常实用但又被低估的角色——Guava库中的Range类。你知道吗,在处理涉及到数值范围的问题时,Range类就像是咱们的救星。不论是判断某个数…

Redis设计与实现之订阅与发布

目录 一、 订阅与发布 1、 频道的订阅与信息发送 2、订阅频道 3、发送信息到频道 4、 退订频道 5、模式的订阅与信息发送 ​编辑 6、 订阅模式 7、 发送信息到模式 8、 退订模式 三、订阅消息断连 1、如果订阅者断开连接了,再次连接会不会丢失之前发布的消…

SiLM5350MDBCA-DG车规级隔离驱动芯片,我们能为汽车智能提供什么?

SiLM5350MDBCA-DG是一款适用于IGBT、MOSFET的单通道 隔离门极驱动器,具有10A拉电流和10A灌电流驱动能 力。提供内部钳位功能,可单独控制 上升时间和下降时间。 在 SOP8 封 装 中 具 有 3000VRMS 隔 离 耐 压 ( 符 合 UL1577)。 与…

MySQL数据库 约束

目录 约束概述 外键约束 添加外键 删除外键 删除/更新行为 约束概述 概念:约束是作用于表中字段上的规则,用于限制存储在表中的数据。 目的:保证数据库中数据的正确、有效性和完整性。 分类: 注意:约束是作用于表中字段上…

使用 GBASE南大通用 ADO.NET

GBASE南大通用ADO.NET(全称是 .NET Framework Data Provider For GBase)提 供给.NET 应用程序访问 GBase 数据库、获取数据、管理数据的一套完整的解决 方案。 GBASE南大通用 ADO.NET 的四个核心类及若干功能类具有以下功能:  建立和管…

喜报|亚数荣获“2023物联网场景应用品牌企业”奖项

12月5日至6日,以“物联中国 数智雄安”为主题的“千企雄安行:2023物联网产业品牌大会”在雄安新区举办。 大会由雄安新区管理委员会、中关村发展集团股份有限公司、物联中国团体组织联席会主办,雄安新区投资促进服务中心、北京物联网智能技术…

layui框架实战案例(25):table组件筛选列记忆功能

即点击当前表格右上角筛选图标后,对表头进行显示隐藏勾选,再刷新页面依然保留当前筛选状态。 要实现layui表格组件的筛选列记忆功能,可以采取以下步骤: 存储筛选数据:当用户进行筛选操作时,将筛选的数据…

leecode-LCR 017. 最小覆盖子串(golang版本)

leecode最小覆盖字串 leecode链接地址 给定两个字符串 s 和 t 。返回 s 中包含 t 的所有字符的最短子字符串。如果 s 中不存在符合条件的子字符串,则返回空字符串 “” 。 如果 s 中存在多个符合条件的子字符串,返回任意一个。 题解 func minWindow(…

电脑屏幕怎么调大小?分享4个实用操作!

“我最近在使用电脑时总感觉电脑屏幕看起来不太对劲,好像字体被刻意放大了,看起来很不舒服,想问问有什么方法可以解决这个问题吗?” 电脑屏幕的正常显示是我们使用电脑的重要前提之一。如果电脑屏幕设置或显示不正确,会…

微信Windows版-无效的WeChatWin.dll文件,错误码126

更新的微信Windows最新版本,突然有一天打开微信提示“无效的WeChatWin.dll文件 错误码 ErrorCode:126,点击“确定”下载最新版本”。 卸载重新安装跟到windows目录下替换WeChatWin.dll皆无效 该解决方案适用于Windows系统:Windows7、Windows10、Windows…

ModuleNotFoundError: No module named ‘openai.error‘

ModuleNotFoundError: No module named ‘openai.error’ result self.fn(*self.args, **self.kwargs) File “H:\chatGPTWeb\chatgpt-on-wechat\channel\chat_channel.py”, line 168, in _handle reply self._generate_reply(context) File “H:\chatGPTWeb\chatgpt-on-wec…

JavaOOP篇----第四篇

系列文章目录 文章目录 系列文章目录前言一、Char类型能不能转成int类型?能不能转化成string类型,能不能转成double类型二、什么是拆装箱?三、Java中的包装类都是那些? 前言 前些天发现了一个巨牛的人工智能学习网站,…