了解 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 生产和提供”。

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

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

相关文章

vue3使用vuex

vuex: 状态管理工具 使用场景:用户登录状态 购物车 地理位置 等 数据位置:内存 安装 项目根目录 yarn add vuex 在src目录下新建store文件夹 下面新建index.js src/store/index.js 在main.js中引入并使用 // 导入状态管理工具vuex import store…

基于价值认同的需求侧电能共享分布式交易策略(matlab完全复现)

目录 1 主要内容 2 部分程序 3 程序结果 4 下载链接 1 主要内容 该程序完全复现《基于价值认同的需求侧电能共享分布式交易策略》,针对电能共享市场的交易机制进行研究,提出了基于价值认同的需求侧电能共享分布式交易策略,旨在降低电力市…

23 UVM Event

even机制提供进程之间的同步。与System Verilo event相比,UVM event提供了额外的灵活性,如保持事件等待器/event waiters的数量和设置回调。 uvm_event类声明: virtual class uvm_event_base extends uvm_object class uvm_event#(type Tuv…

语义分割的应用及发展

语义分割(Semantic Segmentation)是一种计算机视觉领域的任务,旨在将一张图像中的每一个像素都分配一个语义标签,即将图像中的每个物体区域进行精确的分类划分。例如,在一张街景图中,语义分割可以将人、车、路、天空等每个像素分别…

Android14新特性 开启前台service服务

1. Android14新特性 1.1. 场景 在Android14(targetSDK34)系统手机开启前台service服务崩溃 ATAL EXCEPTION: mainProcess: com.inspur.lbrd, PID: 15634java.lang.RuntimeException: Unable to create service com.inspur.lbrd.service.KeepAliveServi…

计算机毕业设计 基于html5的图书管理系统的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍:✌从事软件开发10年之余,专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ 🍅文末获取源码联系🍅 👇🏻 精…

数据结构期末复习(1)数据结构和算法 线性表

数据结构期末总复习(gaois课堂版) 数据结构的概念 数据结构是计算机科学中的一个重要概念,它指的是组织和存储数据的方式。数据结构可以帮助我们高效地操作和管理数据,使得计算机程序能够更加有效地执行各种任务。 数据结构有很…

关于链表的一些问题

求链表的中间节点 可以定义两个指针,一个一次走两步一个一次走一步,当走的快的走到NULL时,走的慢的就是链表的中间节点。(此法求出的偶数个节点的链表的中间节点是它中间的第二个) 求倒数第K个节点 也可以定义两个指…

【HarmonyOS】ArkTS语言介绍与组件方式运用

从今天开始,博主将开设一门新的专栏用来讲解市面上比较热门的技术 “鸿蒙开发”,对于刚接触这项技术的小伙伴在学习鸿蒙开发之前,有必要先了解一下鸿蒙,从你的角度来讲,你认为什么是鸿蒙呢?它出现的意义又是…

【网络安全 | MD5截断比较】PHP、Python脚本利用

前言 在解题中&#xff0c;当遇到类似 substr(md5(a),-6,6) 7788这样的MD5截断比较的题目时&#xff0c;只有求出a的值才能进行接下来的操作。 一个一个去猜是不可能的&#xff0c;通常使用脚本解决&#xff0c;文末给出实战案例。 PHP循环脚本 <?phpfor($i1;$i<9…

小信跳房子的题解

原题描述&#xff1a; 时间&#xff1a;1s 空间&#xff1a;256M 题目描述&#xff1a; 小信在玩跳房子游戏&#xff0c;已知跳房子游戏的图表现为一颗完美的具有个节点的二叉树。从根节点依次编号为。节点的左子节点编号为&#xff0c;右子节点编号为。 小信从从节点出发&…

python观察图像的直流分量——冈萨雷斯数字图像处理

原理 在数字图像处理中&#xff0c;图像的直流分量&#xff08;DC分量&#xff09;是指图像中的平均亮度水平。这个概念源自于傅里叶变换&#xff0c;其中信号可以分解为多个频率成分。在这个上下文中&#xff0c;直流分量对应于频率为零的成分&#xff0c;即信号的平均值。 在…

【实用工具】vim常用命令

快速移动(上下左右箭头可替代) 左移 h 右移 l 下移 j 上移 K在本行操作 0 移动到本行行首 ^ 移动到本行的第一个不是 blank 字符 $ 移动到本行行尾 w 光标移动到下一个单词的开头 e 光标移动到下一个单词的结尾跨行移动光标 nG 光标定位到第n行的行首 gg 光标定位到第一行的…

基于JAVA的食品生产管理系统 开源项目

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 加工厂管理模块2.2 客户管理模块2.3 食品管理模块2.4 生产销售订单管理模块2.5 系统管理模块2.6 其他管理模块 三、系统展示四、核心代码4.1 查询食品4.2 查询加工厂4.3 新增生产订单4.4 新增销售订单4.5 查询客户 五、…

看懂基本的电路原理图(入门)

文章目录 前言一、二极管二、电容三、接地一般符号四、晶体振荡器五、各种符号的含义六、查看原理图的顺序总结 前言 电子入门&#xff0c;怎么看原理图&#xff0c;各个图标都代表什么含义&#xff0c;今天好好来汇总一下。 就比如这个电路原理图来说&#xff0c;各个符号都…

我的2023年度总结(一)

在本文开始之前&#xff0c;先对我2023年的所为进行一些道歉&#xff1a; 部分工作中的客户/合作伙伴&#xff0c;在2023年我可能时长怠慢了您的消息。但我真不是故意的(有时可能在忙其他事情)。2024年&#xff0c;如有任何问题请尽可能抛过来吧。部分粉丝朋友&#xff0c;甚至…

2023-12-22 LeetCode每日一题(得到山形数组的最少删除次数)

2023-12-22每日一题 一、题目编号 1671. 得到山形数组的最少删除次数二、题目链接 点击跳转到题目位置 三、题目描述 我们定义 arr 是 山形数组 当且仅当它满足&#xff1a; arr.length > 3存在某个下标 i &#xff08;从 0 开始&#xff09; 满足 0 < i < arr.…

精品Nodejs实现的在线菜谱食谱美食学习系统的设计与实现

《[含文档PPT源码等]精品Nodejs实现的在线菜谱学习系统的设计与实现[包运行成功]》该项目含有源码、文档、PPT、配套开发软件、软件安装教程、项目发布教程、包运行成功&#xff01; 软件开发环境及开发工具&#xff1a; 操作系统&#xff1a;Windows 10、Windows 7、Windows…

【数据结构——图】图的遍历(头歌习题)【合集】

目录 第1关&#xff1a;邻接矩阵存储图的深度优先遍历任务描述相关知识邻接矩阵存储图图的遍历DFS伪代码——邻接矩阵存储实现 完整代码 第2关&#xff1a;邻接表存储图的广度优先遍历任务描述相关知识邻接表存储图图的遍历广度优先遍历过程&#xff1a;BFS伪代码——邻接表实现…

安装Hadoop:Hadoop的单机模式、伪分布式模式——备赛笔记——2024全国职业院校技能大赛“大数据应用开发”赛项

前言 Hadoop包括三种安装模式&#xff1a; 单机模式&#xff1a;只在一台机器上运行&#xff0c;存储是采用本地文件系统&#xff0c;没有采用分布式文件系统HDFS&#xff1b;伪分布式模式&#xff1a;存储采用分布式文件系统HDFS&#xff0c;但是&#xff0c;HDFS的名称节点…