了解 NSA 关于管理 OSS 和 SBOM 的最新指南

开源软件很容易受到恶意行为者的攻击,但软件材料清单可以帮助减轻威胁。美国国家安全局的指导为管理生态系统奠定了坚实的基础。

软件供应链安全仍然是网络安全和软件行业的一个关键话题,并且有充分的理由,从针对大型软件供应商的持续攻击到攻击者对开源软件生态系统的恶意关注,它是大多数人的前沿和IT安全主管与安全从业者。幸运的是,组织继续提供可靠的指导来帮助从业者减轻软件供应链风险。最新出版物《保护软件供应链:管理开源软件和软件物料清单的建议做法》来自美国国家安全局 (NSA)。

它还以之前的出版物(例如白宫网络安全行政命令 (EO)和备忘录)以及即将对联邦机构提出的要求为基础,例如管理和预算办公室 (OMB) 的备忘录22-18和23-16,其中要求软件供应商向美国联邦政府出售产品,以自我证明与美国国家标准与技术研究所 (NIST) 的安全软件开发框架 (SSDF) 等出版物保持一致,甚至在某些情况下提供 SBOM。

虽然 NSA 指南引用了白宫、NIST 和 OMB 之前的出版物,但本出版物与所有生产和使用软件、利用 OSS 以及寻求采用 SBOM 等工件的组织相关。

以下是该指南的一些关键领域,包括该文件的建议和要点。

NSA SBOM 指南的结构

NSA 指南重点关注四个关键领域,如下表所示,并与其各自的 SSDF 活动保持一致。(区域1仅作介绍,因此省略):

开源软件管理

NSA 指南的这一部分定义了开发商和供应商等的关键角色和责任。它指出,开发人员的责任包括确定要使用的潜在 OSS 解决方案并将 OSS 解决方案集成到产品软件中,以及跟踪这些组件的更新。供应商是指生产产品或服务并执行活动(例如监控产品中包含的 OSS 组件的许可证变更或漏洞)的人,因为他们可能会将风险传递给下游消费者。

NSA 列出了使用 OSS 的主要考虑因素,例如评估 NVD 和其他漏洞数据库等来源中的 OSS 组件是否存在漏洞,并确保易受攻击的组件不会包含在产品中。它还建议组织继续了解许可注意事项,例如许可合规性以及出口管制,例如不断发展的欧盟法规,这些法规可能会影响将开源软件纳入产品中。

该指南建议采用 SBOM 作为 OSS 组件库存管理的一种手段,同时也为下游消费者提供透明度,并了解通过开发到产品中的组件的漏洞状况。SBOM 是软件组件的嵌套清单,主要格式是 Linux 基金会的SPDX和 OWASP 的CycloneDX。NSA 建议生成的 SBOM 满足 NTIA 的“ SBOM 的最低元素”中记录的最低元素要求。

创建和维护公司内部安全的开源存储库

鉴于组织消费和使用 OSS 的广泛程度,一些研究引用了 70-90% 的现代代码库是 OSS 的数据,并且大约 90% 的代码库包含某些 OSS 组件,NSA 指南中的另一个突出建议是创建和维护公司内部安全的 OSS 存储库。该存储库有助于审查 OSS 组件,以确保它们在提供给产品和开发团队之前满足组织风险和合规性要求。

NSA 建议在通过安全存储库向开发人员提供 OSS 组件之前,使用软件组成分析等工具来识别漏洞和许可问题,如下图所示:

这当然意味着组织需要定义添加包以供使用的流程以及允许将包添加到安全存储库所需的安全分析和文档。它还指出,与生产版本相比,开发等环境可能有不同的政策,并建议与安全供应链消费 (S2C2F)等行业框架保持一致,该框架侧重于为开发人员提供安全的 OSS 消费和使用。

OSS 采用过程应包括在隔离的安全环境中进行的软件组成分析、病毒扫描和模糊测试等活动。还建议开发人员考虑其他因素,例如许可、漏洞历史记录以及采用组件在时间和降低内部开发成本方面的好处。NSA 还建议使用 OpenSSF 记分卡等工具来分析组件,当然,OpenSSF 记分卡不仅仅关注已知漏洞等滞后风险指标,还关注项目代码审查、贡献者密度、维护保养等方面。

值得注意的是,小型组织可能拥有单个安全存储库,并由开发人员实施治理,而大型组织可能利用开源审查委员会来审查采用请求,并涉及许多利益相关者,例如开发、管理和安全性。建议包括监视授权组件存储库中是否存在新漏洞,并始终了解哪些开发人员组和产品团队采用了某个组件,以便在某个组件随后变得脆弱或受到损害时,他们可以参与任何必要的事件响应活动。

为了向下游产品和软件消费者提供上下文和优先级,该指南建议供应商和开发人员采用漏洞利用交换 (VEX)文档来帮助消费者和客户了解哪些组件实际上受到漏洞影响,哪些组件已得到解决,以及应该通过补偿控制来解决哪些问题。

美国国家安全局还建议供应商和供应商采用认证流程,以证明产品在产品开发和分销的整个构建、扫描和包装过程中的安全开发。这当然是由行业努力主导的,例如 in-toto 和 SSDF 以及在不生成和使用机器可读工件时的自我证明。这不仅有助于保证最终产品的组件,还有助于保证开发过程的安全性。

为了解决漏洞,NSA 建议不仅使用 CVE 和 NVD,还建议使用其他漏洞数据库(例如 OSV)以及漏洞情报源(例如 CISA已知利用漏洞 (KEV)目录和利用预测评分系统 (EPSS))。这不仅可以深入了解漏洞基本评分和严重性,还可以深入了解已知或可能的利用情况。

开源软件维护、支持和危机管理

强调的另一个关键活动是安全代码签名要求,例如执行代码签名、使用经过验证的加密技术以及保护代码签名基础设施本身。美国国家安全局还建议在 NIST 的事件处理指南等指南的基础上制定危机管理计划。它包括定义危机、构建组织应对方式以及参与人员等活动。如果 OSS 组件在野外被主动利用,这一点至关重要。这还涉及创建和完善危机管理团队 (CMT) 以及角色和职责。该团队将调查与主动利用相关的潜在事件,确定组件位于执行路径内时系统或应用程序是否受到影响,并确定是否可以修补漏洞或是否需要补偿控制。

SBOM 创建、验证和工件

本指南的这一部分重点介绍创建和使用 SBOM 的工具、流程和注意事项。为了有效地使用 SBOM,供应商需要了解产品是如何构建的以及它们包含哪些组件。鉴于 SBOM 可以在 SDLC 的各个阶段创建,NSA 指南将 SBOM 工具分为源代码、二进制文件、程序包和运行时提取器四类。

NSA 建议组织在签名之前验证 SBOM 内容的准确性。它还重申,SBOM 可以附有 VEX 等文件,以明确易受攻击的组件、供应商为解决漏洞而采取的活动以及可能仍然易受攻击或可利用的组件。由于 SBOM 是一个新兴且不断发展的主题,因此 NSA 引用了来自SPDX、CycloneDX和Linux Foundation的各种资源,组织可以在其中了解有关 SBOM、其作用以及如何使用它们来降低组织风险的更多信息。

该指南强调了恶意利用的速度,在发现和披露漏洞后平均 5.5 天就会发生,并建议在 CI/CD 等自动化管道中利用 SBOM 来自动生成 SBOM。它还建议查看 CISA 的SBOM 和 VEX资源。有关 VEX 文档和 SBOM 如何协同工作的详细可视化,请参见下图:

这展示了 SBOM 如何提供软件组件的透明度,而 VEX 可以伴随软件供应商的信息来传达哪些组件受到漏洞影响或不受漏洞影响,并且可能需要客户和消费者采取行动并减轻控制。可以向消费者提供 SBOM 和随附的 VEX 文档,以清楚地传达产品或应用程序中包含哪些 OSS 组件,并且 VEX 可以帮助最大限度地利用资源,重点关注产品的哪些方面实际上容易受到攻击以及可能采取的行动的详细信息由供应商或销售商。

这解决了软件供应商和消费者之间长期缺乏透明度的问题,并为加强整个生态系统的软件供应链安全提供了机会。

有关供应商 SBOM 流程的更多详细信息,NSA 指南推荐 NTIA 的“软件供应商手册:SBOM 生产和提供”。

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

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

相关文章

2023年年终总结 —— 致满载荣誉或满脸惆怅的你

开篇请允许我引用歌曲《西楼儿女》的一句歌词: 陌生的朋友你请听我讲,许多年前我也曾有梦想,想过满载荣誉回到家乡,这肆意的风压弯了海棠。 2023年即将过去,不管你这一年经历了多少,或是职场的得心应手、情…

GBASE南大通用-小内存单机安装GBase 8c分布式数据库实践

* 这种小内存部署方式仅用于分布式数据库个人学习使用,不建议用于其他用途。 随着数据高并发复杂场景业务需求不断增多,信息数据呈现出爆炸式增长、多源多维、数据类型繁复等特征。在这一趋势下,目前分布式数据库因其架构的天然优势&#xf…

Creo各版本安装指南

下载链接 https://pan.baidu.com/s/1VyP0_185mJeBiorlpUJqrQ?pwd0531 1.鼠标右击【Creo10.0(64bit)】压缩包(win11及以上系统需先点击“显示更多选项”)【解压到 Creo10.0(64bit)】。 ​2.打开解压后的文件夹,鼠标右击【Crack】选择【解压到…

Winform RDLC报表(数据库连接、报表函数使用、动态表头)

文章目录 NuGet安装库数据库连接报表设计报表引用添加报表 数据集设计方法一手动添加方法二——连接数据库添加 关联报表与数据集表格数据与数据集数据设计表格格式、字体设计报表数据字段绑定 Winform 使用报表控件数据库填充数据集从数据库获取与数据源相同字段的数据 动态表…

数据库一般会采取什么样的优化方法?

数据库一般会采取什么样的优化方法? 1、选取适合的字段属性 为了获取更好的性能,可以将表中的字段宽度设得尽可能小。 尽量把字段设置成not null 执行查询的时候,数据库不用去比较null值。 对某些省份或者性别字段,将他们定义为e…

【并发】AtomicInteger很安全

AtomicInteger 简介与常规用法 AtomicInteger 是 Java 中 java.util.concurrent.atomic 包下的一个类。用于实现原子操作的整数。它是一个基于CAS(Compare-And-Swap)实现的原子整数类。它提供了一系列的原子操作,确保对整数的操作是原子性的&…

golang 图片加水印,字体文件从哪里找

鼠标左键双击此电脑图标在此电脑文本框输入电脑默认字体地址:C:\Windows\Fonts找到需要用到的字体文件,复制到指定文件夹

python企业车辆车货信息平台 s05fw

车货信息平台系统可具体分为货源方、平台方、承运方三部分。其中前端要求包含货源方:发布货源信息、选择承运方、司机服务评价;平台方:账户管理、货主、司机资质审核、聊天功能;承运方:车辆信息上传、个人车主发布车源…

HEX报文协议打包生成工具

本工具可以用于灵活定制各种格式的报文。以下是定制报文中每个字段的说明: isbig:指示报文中的字节顺序是否为大端序(Big Endian)。如果为true,则表示使用大端序;如果为false,则表示使用小端序…

WorkPlus局域网即时通讯软件的领航者,连接高效协作的利器

在快速发展的商业环境中,高效的内部沟通和协作对于企业的成功至关重要。而局域网即时通讯软件则成为实现内部高效沟通的必备工具。作为一款领航者级别的局域网即时通讯软件,WorkPlus通过卓越的性能和创新的技术,成为了众多企业的首选之一。 W…

ggplot2 | line plot 分组及均值线:聚类后的表达变化趋势图

1. 效果图 2. 预处理及绘图 # 输入数据 > head(dat)Species cid variable value 1 setosa 1 Sepal.Length 5.1 2 setosa 2 Sepal.Length 4.9 3 setosa 3 Sepal.Length 4.7 4 setosa 4 Sepal.Length 4.6 5 setosa 5 Sepal.Length 5.0 6 setos…

selenium模块有哪些用途?

Selenium模块是一个用于Web应用程序测试的模块,具有多种示例用法。以下是一些示例: 1.打开网页并执行一些基本操作,如点击按钮、输入文本等。 定位网页元素并执行操作,例如使用 find_element 方法查找单个元素,使用 f…

2023第三届中国高校大数据挑战赛B题代码

任务已完成,聚类效果很好(主要在于数据的处理以及特征工程), 需代码si,yuer有限先到先得。

深度学习 | 基本循环神经网络

1、序列建模 1.1、序列数据 序列数据 —— 时间 不同时间上收集到的数据,描述现象随时间变化的情况。 序列数据 —— 文本 由一串有序的文本组成的序列,需要进行分词。 序列数据 —— 图像 有序图像组成的序列,后一帧图像可能会受前一帧的影响…

TCP/IP的五层网络模型

目录 封装(打包快递) 6.1应用层 6.2传输层 6.3网络层 6.4数据链路层 6.5物理层 分用(拆快递) 6.5物理层 6.4数据链路层 6.3网络层 6.2传输层 6.1应用层 封装(打包快递) 6.1应用层 此时做的数据…

Xshell——Windows将本地文件上传到Linux服务器

1、scp命令 scp是基于ssh的网络文件传输命令,可以将本地文件或文件夹直接上传到服务器指定位置。命令格式: 上传文件 scp -P port filepath usernameip:TargetPath 上传文件夹 scp -r -P port filepath usernameip:TargetPath -P port:用于指…

java中如何使用elasticsearch—RestClient操作文档(CRUD)

目录 一、案例分析 二、Java代码中操作文档 2.1 初始化JavaRestClient 2.2 添加数据到索引库 2.3 根据id查询数据 2.4 根据id修改数据 2.4 删除操作 三、java代码对文档进行操作的基本步骤 一、案例分析 去数据库查询酒店数据,导入到hotel索引库&#xff0…

普通人如何月入过万?2024普通人创业适合干什么?

如果你的月收入不到1万块,也从来没有体验过一天就赚1万块是什么感觉的话,你还想创业?你如果想通过创业逆天改命,麻烦你一定要看完这篇文章。 普通人你要是想赚钱,一定要去赚那种能看得见的钱。 什么叫看得见的钱&…

Linux上管理不同版本的 JDK

当在 Linux 上管理不同版本的 JDK 时,使用 yum 和 dnf 可以方便地安装和切换不同的 JDK 版本。本文将介绍如何通过这两个包管理工具安装 JDK 1.8 和 JDK 11,并利用软连接动态关联这些版本。 安装 JDK 1.8 和 JDK 11 使用 yum 安装 JDK 1.8 打开终端并…

在Linux上搭建Maven仓库的实战教程

引言 在Java开发中,Maven作为项目构建和依赖管理的重要工具,其仓库的搭建至关重要。本文将手把手教你如何在Linux系统上安装并配置Nexus Repository Manager 3(简称Nexus 3),从而创建一个私有的Maven仓库。 步骤一&a…