开源供应链安全对大多数 IT 领导者来说是个日益严峻的挑战,围绕确保开发人员在构建软件时如何使用和管理开源软件 (OSS) 依赖项的稳健策略至关重要。Microsoft 发布安全供应链消费框架 (S2C2F) 是一个以消费为中心的框架,它使用基于威胁的风险降低方法来缓解开源软件 (OSS) 中的安全威胁。近日,S2C2F 已经被 OpenSSF 采用。S2C2F 与以供应商为中心和以工件为中心的框架相结合(例如 SLSA),为软件生产者和消费者提供了安全创建和使用软件的能力。

S2C2F 基本概念

S2C2F 是一个安全保证和降低风险的流程,专注于保护开发人员使用开源软件的方式。自2019年以来,作为微软范围内的一项计划,S2C2F在整个开发人员内部循环和外循环流程中提供安全指导和工具,这些流程在 Microsoft 中使用开源软件来防御和防止供应链攻击方面发挥了关键作用。

使用基于威胁的风险降低方法,S2C2F 的目标是:

  • 提供强大的 OSS 治理计划
  • 缩短平均修复时间(MTTR)以解决 OSS 中的已知漏洞
  • 防止使用已泄露和恶意的 OSS 软件包

S2C2F 三大核心概念

S2C2F 基于三个核心概念来建立模型,即控制所有工件输入、持续过程改进和规模。

控制所有工件输入

开发人员今天有无数种方式使用 OSS:gitclone,wget,复制粘贴源代码,将二进制文件签入存储库,直接从公共包管理器,将 OSS 重新打包为.zip,curl,apt-get,git 子模块等。如果开发团队不遵循使用 OSS 的统一流程,那么想要保障开源软件供应链安全几乎是不可能完成的任务。实施有效的安全开源软件供应链策略需要在整个组织的各个开发人员团队中标准化企业的 OSS 使用流程。

持续流程改进

为了帮助指导组织进行持续流程改进,将 S2C2F 组织为成熟度模型。这有助于企业确定应首先实施哪些要求的优先级。由于安全风险是动态的,新威胁随时可能出现,因此S2C2F 非常重视了解 OSS 供应链面临的新威胁,并要求定期评估 S2C2F 控制措施并引入变化以应对新技术进步或新威胁。

规模

S2C2F 框架工具在设计时考虑了规模。某些组织可能会尝试通过企业中央内部镜像仓库来保护其 OSS 提取过程。但是如果开发人员选择直接从 pypi.org 或 npmjs.com 中提取该如何阻止?企业中央内部镜像仓库还存在需要团队管理流程和工作流的问题。因此,开发 S2C2F 工具是为了保护如今大规模使用 OSS 的工作方式。

 



图片来源:Microsoft

S2C2F 八大实践

S2C2F自 2019 年以来一直在Microsoft内部使用和完善。它被构建为一个以消费为中心的框架,使用基于威胁的风险降低方法来减轻现实世界的威胁。该框架列举了现实世界供应链对 OSS 的威胁列表,并解释了框架的要求如何减轻这些威胁。该框架还包括分为 8 个不同的实践领域:



图片来源:Microsoft

由于所有 8 个实践无法同时合理实施,因此以下成熟度模型将 8 个实践中每个实践的需求组织成 4 个不同的级别。它允许组织从其现有的安全功能集逐步发展到更安全的防御态势。此外,成熟度模型在每个成熟度级别考虑不同的威胁和主题。

S2C2F 成熟级别

根据项目及其条件,企业可以跨项目实现多个框架级别。此外,与风险/回报相比,成熟度模型的第 4 级具有较高的估计实施成本,因此应被视为企业最理想的模式。虽然很难在整个组织中大规模实施 Level 4,但在最关键项目的最关键依赖项上实施级别 4 是可行的。

Level 1 – 改级别代表许多企业已经应用的一组基本治理实践,使用包管理器、执行 OSS 清单以及扫描和更新 OSS 依赖项。

Level 2 – 此级别在第一级的基础上构建,侧重于通过提高引入配置安全性、减少平均修复时间以修补 OSS 漏洞以及响应事件来进一步实现“安全左移”。2020 年的 SaltStack 漏洞就很好地证明,攻击者能够在宣布 CVE-2020-11651 后的 3 天内开始利用它。即使有补丁可用,企业也无法足够快地修补他们的系统。因此,此级别的一个关键组件利用自动化来帮助开发人员保持其 OSS 安全和更新。理想的目标是让企业能够比攻击者更快地进行修补。

Level 3 – 该级别侧重于主动安全分析与预防性控制相结合,主动对企业最常用的 OSS 组件执行安全分析并降低使用恶意包的风险。在下载软件包之前扫描 OSS 中的恶意软件是防止泄露的关键。然后,要对 OSS 进行主动安全审查,企业可以将源代码克隆到内部位置。主动安全审查可帮助企业查找尚未发现的漏洞,以及识别其他威胁类别,例如检测后门。

Level 4 – 此级别代表可减轻最复杂攻击但难以大规模实施的控制措施。在受信任的构建基础设施上重建 OSS是确保OSS在构建时不会受到威胁的防御步骤,这种成熟级别是防御最复杂的攻击时所需要的。此外,重建 OSS 还有许多刁钻的技术挑战,例如如何命名包以防止与上游发生冲突?如何确保所有开发人员都使用内部包而不是外部包?

 



图片来源:Microsoft

使用 S2C2F,团队和组织能够根据成熟度模型更有效地确定他们工作的优先级。在框架内针对特定级别的合规性的能力意味着团队可以在降低供应链风险方面取得有意和渐进的进展。S2C2F 包括评估组织成熟度的指南,以及推荐来自整个行业的工具以帮助满足企业的框架要求的实施指南。

微软宣布 S2C2F 已被 OpenSSF 采用的更多相关文章

  1. 解决Linux c语言运行时候“段错误 (核心已转储)”问题-采用gdb 解决

    编译没有警告,没有错误,运行就打印 段错误 (核心已转储) 网上找了一下,都是各种问题,都推荐用gdb 调试解决,咱也来趁机学习gdb一下.   gcc+gdb)输入命令行 运行 sudo apt-g ...

  2. 微软发布了开发社区采用.NET Standard的最新信息

    最近,微软发布了开发社区当前采用.NET Standard的最新信息..NET Standard是API的正式规范,现有.NET实现在不同平台的是通用的(从而允许跨平台开发).当前规范(版本2.0)在 ...

  3. 在数据库访问项目中使用微软企业库Enterprise Library,实现多种数据库的支持

    在我们开发很多项目中,数据访问都是必不可少的,有的需要访问Oracle.SQLServer.Mysql这些常规的数据库,也有可能访问SQLite.Access,或者一些我们可能不常用的PostgreS ...

  4. 那些年黑了你的微软BUG

    本文为 Dennis Gao 原创技术文章,发表于博客园博客,未经作者本人允许禁止任何形式的转载. 前言 炎炎夏日,朗朗乾坤,30℃ 的北京,你还在 Coding 吗? 整个 7 月都在忙项目,还加了 ...

  5. 纳德拉再造微软:市值如何重回第一阵营(思维确实变了,不再是以windows为中心,拥抱其它各种平台,敢在主战场之外找到适合自己的新战场)

    有人说,现在的美国硅谷充满了“咖喱味”.也有人说,硅谷已经变成“印度谷”.原因就在于,以微软CEO萨提亚·纳德拉.谷歌CEO桑达尔·皮查伊为代表的印度人,近年以来掌控了全世界最令人望而生畏的科技巨头. ...

  6. CSS3与页面布局学习总结(八)——浏览器兼容与前端性能优化

    一.浏览器兼容 1.1.概要 世界上没有任何一个浏览器是一样的,同样的代码在不一样的浏览器上运行就存在兼容性问题.不同浏览器其内核亦不尽相同,相同内核的版本不同,相同版本的内核浏览器品牌不一样,各种运 ...

  7. CSS3与页面布局学习笔记(八)——浏览器兼容性问题与前端性能优化方案

    一.浏览器兼容 1.1.概要 世界上没有任何一个浏览器是一样的,同样的代码在不一样的浏览器上运行就存在兼容性问题.不同浏览器其内核亦不尽相同,相同内核的版本不同,相同版本的内核浏览器品牌不一样,各种运 ...

  8. FlasActionScript3随学随机

    1.跳转页面代码.下载代码(new URLRequest(下载地址)): var request1:URLRequest=new URLRequest("http://www.baidu.c ...

  9. COM思想的背后

    最近看公司的一些新产品和框架 , 发现清一色的“COM思想架构 ”, 这里说的“COM思想架构”是指不完全是标准COM组件的方式,而是指在设计上用到了COM思想. COM组件技术大概在1993年产生, ...

  10. 快速入门系列--WCF--01基础概念

    转眼微软的WCF已走过十个年头,它是微软通信框架的集大成者,将之前微软所有的通信框架进行了整合,提供了统一的应用方式.记得从自己最开始做MFC时,就使用过Named Pipe命名管道,之后做Winfo ...

随机推荐

  1. 2022IDEA破解

    注意 本教程适用于 IntelliJ IDEA 2022.1.2 以下所有版本,请放心食用~ 本教程适用于 JetBrains 全系列产品,包括 IDEA.Pycharm.WebStorm.Phpst ...

  2. H5调用微信支付

    这里用的是 vue项目; 首先在mounted中判断是否有openId,如果没有,则去获取 let openid = localStorage.getItem('openid'); if (!open ...

  3. C++面向对象编程之复合、委托和继承

    1.复合,表示has a template <typename T> calss A{ protected: B<T> c; } 这里表示 A 里面有一个 B,A 可以调用 B ...

  4. Hive Beeline 命令行参数

    [hadoop@hive ~]$ beeline --help[中文版] The Beeline CLI 支持以下命令行参数: Option Description --autoCommit=[tru ...

  5. 学习ASP.NET Core Blazor编程系列六——新增图书(上)

    学习ASP.NET Core Blazor编程系列一--综述 学习ASP.NET Core Blazor编程系列二--第一个Blazor应用程序(上) 学习ASP.NET Core Blazor编程系 ...

  6. 个人数据保全计划:(1) NAS开箱

    前言 从几年前第一个硬盘故障导致参赛的文件丢失之后,我就开始意识到数据安全的重要性,开始用各种云盘做备份,当时还不是百度云一家独大,我们也都没意识到网盘备份是极其不靠谱的行为,直到因为某些不可抗力因素 ...

  7. 驱动开发:Win10内核枚举SSDT表基址

    三年前面朝黄土背朝天的我,写了一篇如何在Windows 7系统下枚举内核SSDT表的文章<驱动开发:内核读取SSDT表基址>三年过去了我还是个单身狗,开个玩笑,微软的Windows 10系 ...

  8. 【UML】统一建模语言

    如果是准备学习设计模式的同学,可以只了解类图相关的知识 而如果是在准备软件设计师考试的同学,或许会对你有点帮助 正在施工...... 参考博客:https://blog.csdn.net/unique ...

  9. STF的DOCKER搭建

    OPENSTF OpenSTF(Smartphone Test Farm)是一个web端移动设备管理平台,可以从浏览器端远程调试.远程管理设备.其实有点类似于我们现在很火热的云测平台,如:testin ...

  10. 动态爱心-详细教程(小白也会)(HTML)

    动态爱心 超级超级超级简单!!!赶紧做给你们的"Ta"看吧! (最后有详细步骤) 视频效果: 话不多说直接上代码 点击查看代码 <!DOCTYPE HTML PUBLIC & ...