7.6 微软的安全供应链消费框架

  作为开源软件(OSS)的主要贡献者和消费者之一,微软推出了一个名为安全供应链消费框架(Secure Supply Chain Consumption Framework,S2C2F)的软件供应链安全框架并不奇怪。微软于2022年8月正式宣布了S2C2F,但他们早在2019年就已经开始在内部使用该框架来保护他们自己的开发实践。更进一步,微软于2022年11月将S2C2F贡献给了开源社区,通过让行业开源软件安全基金会(OpenSSF)正式采纳(链接:www.microsoft.com/en-us/security/blog/2022/11/16/microsoft-contributes-s2c2f-to-openssf-to-improve-supply-chain-security)。
  把我们深入了解一下这个框架,看看它涵盖了哪些内容并旨在实现什么目标。微软表示,该框架的目标是阐明安全消费开源软件依赖的核心概念,并实施安全开源软件消费的核心实践。与类似的框架一样,该框架强调了开源软件在软件生态系统以及更广泛的行业中的关键作用,无论是在推动生产力还是创新方面。微软指出,该指导分为两个部分:

  • 面向解决方案无关和成熟度导向的部分,旨在针对安全高管等个人。
  • 实施部分,专注于实际的软件开发人员及其安全同行,这使得在组织层面具有信息性的同时,在战术层面上也是可操作的。

  S2C2F具有三个高层次的目标:

  • 为建立一个强大的开源软件(OSS)治理程序
  • 提升解决已知开源软件漏洞的平均修复时间(MTTR)
  • 预防使用受损和恶意的开源软件包

  这三个框架目标与以下三个核心概念相辅相成:

  • 规模化
  • 持续过程改进
  • 控制所有工件输入

  图7.11展示了这些目标和核心概念。
  尽管核心概念表面上听起来简单,但在开发软件的大型企业环境中,它们可能非常复杂和令人畏惧。正如S2C2F指出的那样,现代软件开发人员以多种方式消费开源软件。开发标准化的开源软件消费方式,并让开发人员坚持这些方式,有助于确保开源软件的安全性。
  整个组织的所有开发团队中引入一种受控和结构化的开源软件(OSS)消费方法至关重要。与大多数安全框架类似,S2C2F是组织踏上的一段旅程,因此它被构建为一个专注于持续过程改进的成熟度模型。组织可以优先考虑早期实施的特定要求,并在新的威胁和风险出现时进行调整。
  最后,单独实施的做法和成熟度并不高效,也无法应对现代企业广泛的攻击和风险面。因此,S2C2F以规模化作为一个核心概念。指南特别提到的一个具体例子是倡导开发人员使用集中式内部注册表,这也是NIST软件供应链指南800-161 r1等来源的建议之一。
  正如框架指出的,一旦单个开发人员决定从内部注册表之外的任何地方拉取开源软件组件,这种模型就会崩溃,而内部注册表本身需要额外的开销和管理,这带来了相关的负担和成本。正如他们所言,S2C2F的设计旨在在不采用其他指南中提倡的集中化方法的情况下,规模化地确保开源软件的消费安全性。这种思维方式对于倡导或采取更为分散化方法的组织应该是有共鸣的。
  S2C2F是一个结合工具和要求的能力成熟度路线图,专注于通过治理确保安全的开源软件摄入。S2C2F指南讨论了常见的开源软件供应链威胁,不仅涵盖威胁本身,还包括现实世界中发生的攻击实例,并将它们映射到具体的S2C2F要求上。S2C2F提供的示例涵盖了从开源软件代码或容器中的意外漏洞到仓库和软件包中的有意后门和恶意活动。该指南借鉴了诸如Google的《软件供应链威胁》等来源,其中涵盖了源头、构建、部署/运行时和依赖项等方面的威胁(链接:https://cloud.google.com/software-supply-chain-security/docs/attack-vectors)。列出的威胁还包括了更为温和的来源,如已经停止更新并且不再修复漏洞的开源软件组件,以及维护者未能在消费者期望的时间内修复漏洞。