SBOM实例基础元素分析

news2024/11/20 18:47:28

有时候,SBOM (软件材料清单)更多的是理论上的,而不是实际的。有很多关于使用 SBOM 的潜在好处的讨论,比如软件供应链安全和守规,以及流行的 SBOM 格式,比如 CyclonedX 和 SPDX。但是我们的一些客户(特别是那些在 SBOM 旅程早期的客户)已经提到,他们在现实世界的 SBOM 环境中面临着做决策的挑战。

考虑到这一点,我认为将一个示例应用程序和两个描述它的 SBOM 示例放在一起会很有帮助。在这个博客中,您将找到指向这两个示例的链接,以及它们的节和数据字段的描述。

本文中的所有分析都将基于以下SBOM 实例:

https://github.com/CortezFrazierJr/my_recipe_book/blob/main/sampleSPDX.json?ref=fossa.com

SBOM Example : SPDX

SPDX (Software Packet Data Exchange,软件包数据交换)支持标记/值(它称之为“简单的基于文本的格式”)、 YAML、 JSON 和 Excel 电子表格格式。我们的示例 SPDX SBOM 是 JSON 格式的。

有效的 SPDX SBOM 将始终包含具有文档创建信息的部分。根据材料清单的组成,它还可以包括描述包、文件、片段、许可信息、关系和注释的部分。

创建信息

文档创建信息包括 SPDX 文档的“谁”、“何时”和“如何”。示例 SPDX SBOM 中的文档创建信息从第2行开始,到第118行结束。其中一些数据字段是:

第2行: SPDX ID ——这提供了一种标准化的方法来引用整个文档中的 SPDX 材料清单。

第3行: SPDX 版本-这清楚地说明了材料清单所使用的 SPDX 规范的哪个版本。我们的示例使用当前版本的 SPDX 2.3(尽管即将推出的 SPDX v3.0正在开发中)。

第10行: 许可证列表版本-SPDX 许可证列表是常用的开源许可证的集合,包括简短的许可证标识符。许可证列表会定期更新(尽管通常只有很小的更改) ,这就是为什么许可证列表版本是文档创建信息的一部分。

第119行: 数据许可证——一份 SPDX 材料清单必须包括数据许可证,它基本上表明你正在使用知识共享 CC01.0通用许可证的条款下的 SPDX 规范。

信息

我们的 SBOM 示例的包信息部分从第120行开始。因为我们的应用程序依赖于许多包,所以我们的示例 SBOM 包含多个包条目。但是,我们在这里只讨论其中的一个。

包信息部分中的一些数据字段是:

第122行: SPDX ID-这是包 SPDX 标识符字段。它用于唯一引用 SPDX 文档中的给定包。

第128行: 供应商-这是给定包装的“实际分销来源”。这应该是一个作者(或组织) ,而不是一个主机网站。供应商不同于发起人(第127行) ,后者指的是原产地,而供应商指的是分销点。

第131行: 许可声明-这是组件作者声明的包许可。这与结束许可证(第134行)不同,因为结束许可证是由 SPDX 文档创建者(通常是一个 SBOM 工具)声明的,这就是为什么这些字段有时具有不同的值。

第135行: 校验和——包校验和字段的目的是帮助 SPDX 文档使用者确定原包中的任何文件是否已经更改。

第181行: 外部引用-此数据字段通常用于链接到安全文档,如 VEX (漏洞可利用性 eXchange)或包标识符,如 PURL。

依赖关系

我们的 SPDX SBOM 的这一部分用于描述 SPDX 元素之间关系的性质。这些元素可能是包、文件和/或片段,甚至是材料清单本身。(第4633-4635行说明了我们的 SPDX SBOM 正在描述我们的 Recipe Book 应用程序。)关系通常用于描述依赖项的性质,例如一个元素依赖于另一个元素(或包含另一个元素)。SPDX 提供了许多描述关系的方法,比如“ DependsOn”、“ DependencyOf”、“ Contains”等等。

文件信息

如前所述,SPDX 不仅可以描述包,还可以描述文件(和片段)。我们的示例 SBOM 不包含任何代码片段,但是,从6661行开始,它描述了几个文件。“文件信息”部分中的数据字段与“包信息”部分类似,尽管存在一些差异。(例如,虽然它们不包括在我们的示例中,但是包信息部分有一些字段可以用来通信发布日期、构建日期和有效日期。而且,“文件信息”部分有一些字段,可用于传达文件通知和文件贡献者。)

其他组

这些不包括在我们的示例中,但是 SPDX 也支持以下部分:

片段信息: 用于描述文件的一部分,包括字节和行范围在内的数据字段。

注释信息: 用于提供与部分或全部材料清单相关的附加上下文和注释。

检测到的其他许可证信息: 用于提供关于不常见许可证(不在 SPDX 许可证列表中的许可证)的附加上下文,这些许可证可能出现在材料清单中。

UniSCA能自动化一键生成SBOM,并支持SPDX在内的数种可定制导出格式,节省团队大量时间,切实有效地维护软件供应链安全。

CodeAnt试用地址

UniSCA试用地址

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

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

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

相关文章

MSQL系列(四) Mysql实战-索引分析Explain命令详解

Mysql实战-索引分析Explain命令详解 前面我们讲解了索引的存储结构,我们知道了BTree的索引结构,也了解了索引最左侧匹配原则,到底最左侧匹配原则在我们的项目中有什么用?或者说有什么影响?今天我们来实战操作一下&…

PyTorch 模型性能分析和优化 - 第 6 部分

玩具模型 为了方便我们的讨论,我们使用流行的 timm python 模块(版本 0.9.7)定义了一个简单的基于 Vision Transformer (ViT) 的分类模型。我们将模型的 patch_drop_rate 标志设置为 0.5,这会导致模型在每个训练步骤中随机丢弃一半…

中国模式识别与计算机视觉大会|多模态模型及图像安全的探索及成果

目录 前言一、多模态模型进展与探索1、GPT-4V (多模态)测试2、LLM时代文档图像处理技术趋势3、LLM时代文档图像技术机会4、MLLM时代文档图像处理技术趋势5、知名文档图像大模型OCR性能分析 二、图像安全1、篡改种类2、系统架构3、文档图像处理开放平台4、AIGC假图鉴别5、图像篡…

Linux 回环测试串口RS232 UART

测试平台: ubuntu 18.04 需使用root权限。 1、硬件2脚和3脚短接 2、利用stty命令去掉默认的回显参数 stty -F /dev/ttyUSB0 -echo -onlcr如不设置会无限输出,且看不到信息 3、输入测试指令: 一个终端: cat /dev/ttyUSB0另一…

QtService实现Qt后台服务程序其一_基本使用步骤

QtService基本使用步骤 1、QtService介绍 QtService是一个用于实现windows服务或unix守护进程的开源项目,本文使用QtService演示如何实现一个windows下的后台进程,可用于一些简单的windows服务程序中。 测试使用Qt5.9.2版本。 2、项目引入QtService …

清除el-form表单验证

当创建表单触发表单验证时,关闭弹窗,再次触发创建表单会触发表单验证,出现如下图所示情况: 在每次打开弹窗时,添加如下代码,清除表单验证 this.$nextTick( () > {this.$refs[forName].clearValidate()…

【STM32】--PZ6860L,STM32F4,ARM3.0开发板

一、ARM3.0开发板详细介绍 1.开发板整体介绍 (1)各种外设和主板原理图 (2)主板供电部分5V和3.3V兼容设计 注意跳线帽 2.STM32核心板介绍 3.核心板原理图 STM32和51的IO对应关系 下载电路 二、ARM3.0开发板ISP下载原理分析 1.I…

Git - 异常处理 : Git | SSL certificate problem: certificate has expired

解决方案: 关闭 https 证书验证即可 git config --global http.sslVerify false

运行 XXXApplication 时出错,命令行过长

运行 XXXApplication 时出错,命令行过长 问题原因:当在运行 XXXApplication 时遇到命令行过长的错误,通常是由于操作系统的限制导致的。在某些操作系统中,命令行的长度是有限制的,超过该限制会导致出错。 问题解决&am…

《动手学深度学习 Pytorch版》 9.2 长短期记忆网络(LSTM)

解决隐变量模型长期信息保存和短期输入缺失问题的最早方法之一是长短期存储器(long short-term memory,LSTM)。它与门控循环单元有许多一样的属性。长短期记忆网络的设计比门控循环单元稍微复杂一些,却比门控循环单元早诞生了近 2…

最新XFF注入攻击和代码分析技术

点击星标,即时接收最新推文 本文选自《web安全攻防渗透测试实战指南(第2版)》 点击图片五折购书 XFF注入攻击 XFF注入攻击的测试地址在本书第2章。 X-Forwarded-For简称XFF头,它代表客户端真实的IP地址,通过修改X-Forw…

Day 07 python学习笔记

函数 函数的传参 关键字参数 函数调用时,指定参数的名称,即为关键字参数 允许传入0个或者多个含参数名的参数关键字参数必须放在普通参数的后面 例: def abc(x,a,b):print(x)print(a)print(b)abc(100,b4,a2) #其中a,b作为关键字参数可以随意…

软件性能测试-初步分析性能瓶颈

完成工具使用和脚本编写后,剩下的流程是执行和结果分析,以及复测。现在来学学结果分析,主要是要学会判断压力的来源,当响应时间远远超出我们的期望,测试人员如何判断是由于什么导致的过载响应。 一、性能瓶颈出现的表…

Spring Security登录表单配置(3)

1、登录表单配置 1.1、快速入门 理解了入门案例之后&#xff0c;接下来我们再来看一下登录表单的详细配置&#xff0c;首先创建一个新的Spring Boot项目&#xff0c;引入Web和Spring Security依赖&#xff0c;代码如下&#xff1a; <dependency><groupId>org.sp…

竹云荣膺2023粤港澳大湾区高质量发展标杆企业

10月12日&#xff0c;由深圳市前海深港现代服务业合作区管理局指导&#xff0c;广东省粤港澳大湾区产业协同发展联合会&#xff08;简称&#xff1a;湾区产联&#xff09;、香港大湾区工商业联合会主办的“深港合作前海向前”2023粤港澳大湾区高质量发展企业发布会、香港大湾区…

[计算机提升] 环境变量

1.5 环境变量 在Windows系统中&#xff0c;环境变量是一组参数或值&#xff0c;用于配置和控制操作系统的行为。它们用来确定系统的默认设置、执行文件路径以及其他系统行为。环境变量可以被所有的应用程序和命令行工具访问和使用&#xff0c;而不需要每次手动指定路径或设置参…

SELECT COUNT(*) 会造成全表扫描吗?

前言 SELECT COUNT(*)会不会导致全表扫描引起慢查询呢&#xff1f; SELECT COUNT(*) FROM SomeTable 网上有一种说法&#xff0c;针对无 where_clause 的 COUNT(*)&#xff0c;MySQL 是有优化的&#xff0c;优化器会选择成本最小的辅助索引查询计数&#xff0c;其实反而性能…

笔记本触摸板没反应?实用技巧助你成功修复!

笔记本电脑是我们日常工作和学习的得力工具之一&#xff0c;而触摸板作为一个重要的输入设备&#xff0c;对于操作的流畅性至关重要。然而&#xff0c;有时候我们可能会遇到笔记本触摸板没反应的问题&#xff0c;这可能会导致困扰和不便。本文将介绍解决笔记本触摸板无响应问题…

SPSS|偏度和峰度|正态性分布检验|实战小练-SPSS学习(1)

目录 学习目的软件版本基础数据实战数据准备数据初探输出结果分析两个重要统计量&#xff1a;偏度和峰度正态性检验结果其他图件输出 学习目的 检验数据集是否服从正态分布。 软件版本 IBM SPSS Statistics 26。 基础数据 一组数据&#xff0c;如&#xff1a;73 76 78 77 …

ES6 Promise

1.Promise 是异步编程的一种解决方案 const promise new Promise(function(resolve, reject) {if (/* 异步操作成功 */){resolve(value);} else {reject(error);} }) 2.Promise的三种状态 待定&#xff08;pending&#xff09;: 初始状态&#xff0c;既没有被兑现&#xff…