微软S2C2F框架已被OpenSSF开源安全体系采用

news2025/1/25 9:23:51

近日,微软发布“安全供应链消费框架(Secure Supply Chain Consumption Framework,简称S2C2F)”1.1版本。该框架已被OpenSSF供应链完整性工作组采用。至此,OpenSSF开源软件评价相关的项目和指南已覆盖使用安全、关键性、基础设施安全、漏洞披露机制等多个方面,它们公布出的相关框架流程、指标条目、实践工具等内容对我国的开源软件安全工作有一定的借鉴作用。

一、S2C2F V1.1解读

S2C2F自2019年提出后,一直作为微软的一项内部倡议,直至此次被OpenSSF采用,它专注于开发集成人员对开源软件(OSS)使用的安全。与其他开源软件安全框架或指南相比,S2C2F具有三个主要特点:

1、框架实践面向威胁且覆盖使用全过程

S2C2F V1.1共包含8项实践,即引入、扫描、库存、更新、审计、执行、重构建、修复(并通知上游),涵盖了组织在使用OSS过程中各个环节上的治理工作,每个实践又包括若干条具体的“要求”,例如,“扫描”实践的“要求”共有5条,如下表所示。

S2C2F的实践和要求是基于已知OSS安全威胁而设计的,包括战术和技术两方面的威胁,如漏洞、后门、恶意代码植入和欺骗、恶意依赖项、编译器破坏、依赖混淆、包完整性篡改、上游源代码删除、OSS组件停止修复、未按时修复漏洞、包管理器恶意代码上传等。

针对每种威胁类型,框架都列出了相应的可用来缓解的“要求”。例如,针对“构建恶意OSS包欺骗使用者”的威胁,框架建议采用的要求包括:验证OSS的来源(AUD-1)、强制使用策划的OSS入口控制器以增强对OSS的信任(ENF-2)、扫描OSS中的恶意软件(SCA-4)等。

2、成熟度等级便于组织建立进阶路线图

S2C2F是一个成熟度模型,将针对OSS使用安全的25条要求划归4个不同的成熟度等级,组织可以对照评价自己当前所处的等级,并明确未来改进的方向。下表是各等级的主要描述及对应的要求,其中L4被定义为理想级,实现成本较高,估计难以在整个组织中大规模实施,但可以考虑在关键项目中的关键依赖项上应用。

 

3、各条要求对应的工具列表展现实操性

S2C2F还有一大特点是聚焦OSS安全治理的落地,框架针对各成熟度等级中对应的具体实践和每条要求,列出了自动化免费工具和付费工具,供开发集成人员参考。例如,针对L1中的要求SCA-1(需扫描依赖的已知漏洞。选择一款可从更多渠道而不仅仅是CVE获取漏洞的工具,对于确保从多个漏洞来源获得信息非常重要),S2C2F推荐的工具包括:免费工具GitHub Dependency Graph和付费工具Snyk Open Source、Mend SCA。

当然,由于微软的背景,S2C2F推荐的工具以美国厂商生产的产品为主。国内用户在参考时可考虑使用相同功能的国产工具,例如,在OSS已知漏洞扫描、许可证风险扫描等方面,UniSCA、CodeAnt等国产工具可提供同等优良的能力。

此外,S2C2F每条要求的制定也充分参考了NIST SP 800-161、SSDF、CIS软件供应链安全指南、OWASP SCVS、SLSA、CNCF软件供应链最佳实践等已有框架指南的内容。

二、OpenSSF开源软件安全评价方法体系介绍

1、开源软件安全评价方法体系

OpenSSF单独或联合其成员发布的项目、指南、框架已覆盖开源软件的使用安全、关键性、基础设施安全、漏洞处理等多个方面,形成了针对开源软件的安全评价方法体系,如下图所示。基础设施安全包括网站、版本控制、构建、加密、包管理器等涉及OSS开发、存储、发布等环节设施的安全。

上述分类仅反映这些项目、指南、框架的侧重点,并不代表它们之间是完全没有交集的。例如,OpenSSF记分卡中有一个指标是“被维护的”,其中重要的一项是考虑OSS项目每周的提交次数,而OpenSSF开源项目关键性评分中也有类似指标。《评估开源软件的简明指南》(以下简称《简明指南》)中也有“持续维护”方面的内容。

2、开源软件的使用安全

作为软件开发中最重要的第三方原材料之一,OSS的使用安全对于使用者来说,无疑是最值得关注的。OpenSSF记分卡、S2C2F和《简明指南》虽然都侧重于OSS的使用安全,但它们之间也有明显的差异。

  • 关联关系

OpenSSF记分卡是一款基于19项评价指标的OSS项目安全指数自动生成工具。S2C2F为“扫描”实践的SCA-3要求(扫描OSS生命是否已终结)推荐的免费工具就是OpenSSF记分卡;《简明指南》中“开发者增强安全性的证明”方面的评价也包括“是否检查了开源软件的OpenSSF记分卡值和已知漏洞”的指标。因此,记分卡可以看做是基础。

另一方面,三种评价方法中的指标有许多也是相同的。例如,三者都有“扫描已知漏洞”的指标或要求,这也是OSS使用安全中最核心的内容之一,可借助软件成分分析(SCA)工具方便的实现。

  • 主要差异

首先,OpenSSF记分卡是从OSS自身的角度考虑的,而S2C2F和《简明指南》则是从开发集成人员的操作层面考虑的。

在具体指标方面,三者也存在不小的差异,主要体现在两个方面。一是名称或技术内涵相同但实施环节或方式不同的指标,例如,OpenSSF记分卡和《简明指南》中都有代码审计的指标,但记分卡中指的是“合并之前,项目是否要求代码审计”,而《简明指南》中的代码审计指开发集成人员使用静态分析工具发现首要问题;二是各自特有的指标,如OpenSSF记分卡的“项目是否有分支保护”、《简明指南》的“是否尽量减少依赖的数量(使用现有的依赖关系,不再增加)”、S2C2F的“强制使用策划的OSS入口控制器(ENF-2)”,这些都是各自特有的。

总体而言,三者各有优势。OpenSSF记分卡的优势在于其自动化工具的属性,有助于使用者对OSS的安全状况进行自动化分析和信任决策;S2C2F的优势是其框架结构和成熟度等级,符合使用者的理解逻辑,针对性的指导作用较强;《简明指南》给出了OSS使用安全9个方面的内容,可看做是一些基本原则,某些方面也列出了具体的示例。

三、对我国开源软件安全工作的启示

2021年10月,中国人民银行、中央网信办等五部门联合发布了《关于规范金融业开源技术应用与发展的意见》,就规范金融机构合理应用开源技术,提高应用水平和自主可控能力等方面提出了原则性要求,开源软件安全是其中的重要内容;2022年11月初,国家标准《信息安全技术 软件产品开源代码安全评价方法》完成立项。

这些都说明国家层面已意识到开源软件安全的重要性,并着手规范应对此类问题。结合前面的相关研究,本文建议可从以下三个方面考虑开源软件的安全评价方法:

1.从开源软件使用者角度确立指标体系框架

S2C2F给出了一个很好的示范,该框架从开源软件使用者的角度梳理出8项安全实践,对应于使用过程中的8个环节。因为开源软件使用者同样也是评价方法的使用者和评价结果的决策者,所以从这个角度设计的框架更符合广泛的理解逻辑,能够产生更好的指导效果。

2.兼顾开源软件的自身安全和基础设施安全

对于开源软件安全性的评价,既要考虑安全漏洞、后门、恶意代码、数字签名、SBOM等自身的安全因素,同时也应该兼顾诸如OpenSSF最佳实践徽章和《NPM最佳实践指南》之中明确的官方发布网站、版本控制、构建、加密、包管理器、漏洞共享披露机制等基础设施的安全。

3.统筹开源软件安全评价的指导性和落地性

一方面,可参考目前已有的标准、指南和框架,并结合我国开源软件使用组织的实际状况,制定兼具指导性和完备性的开源软件安全评价指标体系;另一方面,可借鉴S2C2F工具列表的做法,推荐相关的自动化工具,并将国产优秀工具作为首选,以增强评价方法的落地性和实操性。

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

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

相关文章

机器人导航必备的栅格地图数学模型及使用

机器人导航必备的栅格地图数学模型及使用占据栅格地图(Occupancy Grid Map)占用栅格地图基础概念占据栅格地图的数学模型ROS中使用OccupancyGrid占据栅格地图(Occupancy Grid Map) 占用栅格地图基础概念 上图就是一个ROS中的占据…

复旦大学-华盛顿大学EMBA项目位列全球第9,学术研究连续3年亚洲第一

2022年10月17日,英国《金融时报》(FT)发布全球EMBA项目排名,复旦大学-华盛顿大学EMBA项目位列全球第9位,学术研究连续3年亚洲第一,毕业生薪酬水平全球第六。    复旦大学-华盛顿大学EMBA项目是中国大陆…

JavaWeb三大组件之Filter

目录 1、Filter概述 2、Filter快速入门 2.1、开发步骤 2.2、代码演示 3、Filter执行流程​编辑 4、Filter拦截路径 5、过滤器链 5.1、概述 5.2、代码演示 5.3、问题 6、案例 6.1、需求 6.2、分析 6.3、代码实现 6.3.1、创建Filter 6.3.2、编写逻辑代码 6.3.3、…

SuperMap GIS管线数据处理QA

一、数据简介 传统的以二维平面展现网络数据的方式,在一定程度上限制了信息的表达,尤其是在复杂的空间位置关系上。三维网络是对现实中的网络的真实模拟,而非抽象模拟,因此能够全方位的展现信息。   例如,多层结构的…

python期末复习案例

一.条件判断 1. 判断一个数能否同时被3和7整除 and 两者都要为真 2.判断一个数能同时被3或者7整除 但不能同时被3和7整除 ★要使用not 3.输入年份,看是否为闰年 闰年条件:能被4整除但不能被100整除,或者能被四百整除 定义两个变量 保存一个…

leetcode 464. 我能赢吗 官方代码的一步步演进

这里写自定义目录标题题目示例解题优化1 记忆化搜索优化2:使用二进制代替choosable_list计算复杂性题目 在 “100 game” 这个游戏中,两名玩家轮流选择从 1 到 10 的任意整数,累计整数和,先使得累计整数和 达到或超过 100 的玩家…

Kafka - 09 Kafka副本 | Leader选举流程 | Follower故障 | Leader故障

文章目录1. 副本基本信息2. Leader选举流程3. Follower故障4. Leader故障1. 副本基本信息 1)Kafka 副本作用:提高数据可靠性。 2)Kafka 默认副本 1 个,生产环境一般配置为 2 个,保证数据可靠性;太多副本会…

深度学习网络模型——DenseNet模型详解与代码复现

深度学习网络模型——DenseNet模型详解与代码复现1、DenseNet概述2、DenseNet网络结构1、DenseNet中的DenseBlock模块2、DenseNet中的Transition模块3、DenseNet网络结构参数设置4、实验结果对比1、DenseNet概述 2、DenseNet网络结构 1、DenseNet中的DenseBlock模块 2、DenseNe…

内网穿透:针对小白的VSCode+云服务器+本地Ubuntu搭建GPU云服务器

前言 自己实验室的情况: 实验室拥有自己的GPU集群、工作站使用仅限于线下或者远程向日葵(不稳定、速度慢)拥有自己的廉价cpu轻量云服务器(阿里云服务器(2G2*cpu),大概40左右一年) 平时出差、在宿舍等需要远程操作,向…

Python学习笔记-数字类型

目录 1. 数字类型 1.1 整型 1.2 浮点数 1.3 复数 1.4 布尔类型 2. 常用内置数值计算函数库 3. 随机数函数 本文记录python中的基本数字类型信息,以及一些其他的相关知识点。 1. 数字类型 python中用于标识数字或者数值的数据类型,主要有如下分类…

​鸽群卫星(Flock)​介绍

鸽群卫星(Flock)是美国Planet公司[1]研制的3U遥感立方体卫星星座,单颗卫星重约5kg,也被称为“鸽子”(Dove)。鸽群星座主要有两类轨道:空际空间站释放420km高、52度倾角轨道(ISS&…

R语言基于决策树的银行信贷风险预警模型

引言 我国经济高速发展,个人信贷业务也随着快速发展,而个人信贷业务对提高内需,促进消费也有拉动作用。有正必有反,在个人信贷业务规模不断扩大的同时,信贷的违约等风险问题也日益突出,一定程度上制约着我…

力扣(LeetCode)115. 不同的子序列(C++)

动态规划 状态转移方程 f[i,j]{f[i−1,j]f[i−1,j]f[i−1,j−1]if s[i]t[j]f[i,j]\begin{cases} f[i-1,j]\\ f[i-1,j]f[i-1,j-1]&\text{if } s[i]t[j] \end{cases}f[i,j]{f[i−1,j]f[i−1,j]f[i−1,j−1]​if s[i]t[j]​ 无论选不选 s[i]s[i]s[i] , f[i][j]f[i…

解决报错:fatal: in unpopulated submodule *

目录 问题 解决 问题 今天想把两个 Git 工程合并成一个工程,尽管已经将其中一个工程的 .git 目录删除了,但是在合并提交时还是遇到了一个和子模块相关的报错,具体报错信息如下: fatal: in unpopulated submodule * 报错截图如下…

【iMessage苹果相册日历推位置推送】软件安装deviceToken是由APNs生成的

推荐内容IMESSGAE相关 作者推荐内容iMessage苹果推软件 *** 点击即可查看作者要求内容信息作者推荐内容1.家庭推内容 *** 点击即可查看作者要求内容信息作者推荐内容2.相册推 *** 点击即可查看作者要求内容信息作者推荐内容3.日历推 *** 点击即可查看作者要求内容信息作者推荐…

SpringBoot+html+vue模板开发

除了对某个表基本的增删改查以外&#xff0c;可能需要额外的增加操作&#xff0c;这里是通过按钮来实现的 1、新增一个测试按钮 <el-button type"primary" class"butT" click"test()">测试</el-button> 2、这个按钮绑定一个方法t…

Android 创建桌面组件Widget——构建应用微件(二)

Android 创建桌面组件Widget——构建应用微件&#xff08;二&#xff09;Android 创建桌面组件Widget——构建应用微件&#xff08;二&#xff09;概览使用 AppWidgetProvider 类接收应用微件广播 Intent固定应用微件设置预览图片完整代码Android 创建桌面组件Widget——构建应…

Spark学习(7)-SparkSQL函数定义

1 SparkSQL 定义UDF函数 目前在SparkSQL中&#xff0c;仅仅支持UDF和UDAF函数&#xff0c;python仅支持UDF。 1.1 定义方式 定义方式有两种&#xff1a; sparksession.udf.register() 注册的UDF可以用于DSL和SQL&#xff0c;返回值用于DSL风格&#xff0c;传参内的名字用于SQ…

如何在Odoo中添加水印?

为了防止信息的泄露&#xff0c;水印作为一种防泄密的方式&#xff0c;被使用的频率越来越高。 那么在Odoo中&#xff0c;如何添加水印呢&#xff1f;其实添加的方法有很多&#xff0c;如利用svg生成背景图&#xff0c;重复的dom元素覆盖等等。 本文主要讲解利用canvas输出背…

不懂单链表? 这篇文章就帮你搞明白

坚持看完&#xff0c;结尾有思维导图总结 链表对指针的操作要求不低链表的概念链表的特性链表的功能(最重要)定义和初始化头插头删细节说明尾插尾删寻找链表元素与打印链表在 某位置后插入删除在某位置的插入删除销毁链表链表的概念 什么是链表 官方概念&#xff1a;链表是一种…