开源供应链安全对大多数 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 包括评估组织成熟度的指南,以及推荐来自整个行业的工具以帮助满足企业的框架要求的实施指南。