SLSA 框架与软件供应链安全防护
字数 1543 2025-08-12 11:33:56

SLSA框架与软件供应链安全防护教学文档

1. SLSA框架概述

SLSA (Supply-chain Levels for Software Artifacts,软件构件的供应链级别)是Google提出的一个端到端框架,旨在确保软件开发和部署过程的安全性,专注于缓解由于篡改源代码、构建平台或构件仓库而产生的威胁。

1.1 背景

  • 随着软件供应链攻击日益增多,Google发布了一系列指南来确保软件包的完整性
  • 框架源于Google的BAB (Binary Authorization for Borg)系统,该系统已使用8年多
  • 对所有Google生产工作负载都是强制性的

1.2 核心原则

  1. 非单边原则:未经至少一个其他"受信任的人"的明确审查和批准,任何人都无法修改软件供应链中任何地方的软件工件

    • 目的:预防或尽早发现风险
  2. 可审计原则:软件构件足够安全透明,来源与依赖项可溯源

    • 目的:支持自动分析来源和依赖关系以及特定调查

2. 软件供应链流程

软件供应链是创建和发布软件构件的一系列步骤,主要包含以下流程关系:

  1. 源代码:软件开发的起点
  2. 构建:将源代码转换为可执行构件的过程
  3. 依赖项:软件所依赖的外部库和组件
  4. :最终发布的软件产品

每个环节都可以托管在特定平台上:

  • 源代码管理(SCM)平台
  • 持续集成/持续部署(CI/CD)平台

3. SLSA安全级别

SLSA定义了4个递增的安全级别,级别越高,安全控制越强,攻击者越难破坏代码:

3.1 SLSA 1

  • 要求构建过程完全脚本化/自动化
  • 生成出处(provenance)信息

3.2 SLSA 2

  • 要求使用版本控制
  • 使用托管生成服务
  • 生成经过身份验证的出处

3.3 SLSA 3

  • 要求源代码和构建平台符合特定标准
  • 保证源代码的可审计性
  • 确保来源的完整性

3.4 SLSA 4

  • 要求对所有更改进行两人审查
  • 采用封闭的、可重现的构建过程
  • 最高级别的安全保障

4. 软件供应链风险分析

根据CI/CD流程,风险可分为三个阶段:

4.1 代码阶段风险

  1. 提交恶意代码:将易受攻击的代码上传到公司的源代码管理系统
  2. 攻陷源代码管理系统:可能导致代码、机密和用户信息泄露
  3. 使用恶意依赖项:可能导致未经授权访问管道或代码泄露

4.2 构建阶段风险

  1. 使用恶意代码:在流程外注入错误代码并触发构建
  2. 攻陷构建平台:操纵构建过程及其输出
  3. 已泄露的依赖项:利用漏洞获取访问权限或操作构建服务器

4.3 分发阶段风险

  1. 绕过CI/CD:将恶意构件直接上传到Artifactory
  2. 使用恶意包:改变系统流程,上传/替换/窃取构件

5. 保护软件供应链的策略

5.1 全面安全策略

  • 考虑工具、源代码、流程、构建和分发各阶段的风险
  • 实施强大的安全防护策略强化流水线安全状况
  • 使攻击者难以破坏基础架构、流程或代码

5.2 历史教训

  • 微软、Rapid7、Monday.com、Codecov、SolarWinds等知名企业曾遭受供应链攻击
  • 这些攻击大多源于CI/CD流水线上薄弱的安全措施

5.3 关键措施

  1. 对开发环境实施更严格的安全防护
  2. 采用SLSA框架下的全面安全策略
  3. 提供对CI/CD流水线的端到端可见性和控制
  4. 将安全措施作为流水线的一部分进行集成

6. 实施建议

  1. 评估当前状态:确定组织当前的SLSA级别
  2. 制定升级计划:规划如何逐步提升安全级别
  3. 自动化构建:实现完全脚本化/自动化的构建过程
  4. 出处生成:建立出处生成和验证机制
  5. 双人审查:对关键更改实施双人审查制度
  6. 封闭构建:实现可重现的封闭构建环境
  7. 持续监控:建立供应链活动的持续监控机制

通过实施SLSA框架,组织可以显著提高软件供应链的安全性,降低遭受供应链攻击的风险。

SLSA框架与软件供应链安全防护教学文档 1. SLSA框架概述 SLSA (Supply-chain Levels for Software Artifacts,软件构件的供应链级别)是Google提出的一个端到端框架,旨在确保软件开发和部署过程的安全性,专注于缓解由于篡改源代码、构建平台或构件仓库而产生的威胁。 1.1 背景 随着软件供应链攻击日益增多,Google发布了一系列指南来确保软件包的完整性 框架源于Google的BAB (Binary Authorization for Borg)系统,该系统已使用8年多 对所有Google生产工作负载都是强制性的 1.2 核心原则 非单边原则 :未经至少一个其他"受信任的人"的明确审查和批准,任何人都无法修改软件供应链中任何地方的软件工件 目的:预防或尽早发现风险 可审计原则 :软件构件足够安全透明,来源与依赖项可溯源 目的:支持自动分析来源和依赖关系以及特定调查 2. 软件供应链流程 软件供应链是创建和发布软件构件的一系列步骤,主要包含以下流程关系: 源代码 :软件开发的起点 构建 :将源代码转换为可执行构件的过程 依赖项 :软件所依赖的外部库和组件 包 :最终发布的软件产品 每个环节都可以托管在特定平台上: 源代码管理(SCM)平台 持续集成/持续部署(CI/CD)平台 3. SLSA安全级别 SLSA定义了4个递增的安全级别,级别越高,安全控制越强,攻击者越难破坏代码: 3.1 SLSA 1 要求构建过程完全脚本化/自动化 生成出处(provenance)信息 3.2 SLSA 2 要求使用版本控制 使用托管生成服务 生成经过身份验证的出处 3.3 SLSA 3 要求源代码和构建平台符合特定标准 保证源代码的可审计性 确保来源的完整性 3.4 SLSA 4 要求对所有更改进行两人审查 采用封闭的、可重现的构建过程 最高级别的安全保障 4. 软件供应链风险分析 根据CI/CD流程,风险可分为三个阶段: 4.1 代码阶段风险 提交恶意代码 :将易受攻击的代码上传到公司的源代码管理系统 攻陷源代码管理系统 :可能导致代码、机密和用户信息泄露 使用恶意依赖项 :可能导致未经授权访问管道或代码泄露 4.2 构建阶段风险 使用恶意代码 :在流程外注入错误代码并触发构建 攻陷构建平台 :操纵构建过程及其输出 已泄露的依赖项 :利用漏洞获取访问权限或操作构建服务器 4.3 分发阶段风险 绕过CI/CD :将恶意构件直接上传到Artifactory 使用恶意包 :改变系统流程,上传/替换/窃取构件 5. 保护软件供应链的策略 5.1 全面安全策略 考虑工具、源代码、流程、构建和分发各阶段的风险 实施强大的安全防护策略强化流水线安全状况 使攻击者难以破坏基础架构、流程或代码 5.2 历史教训 微软、Rapid7、Monday.com、Codecov、SolarWinds等知名企业曾遭受供应链攻击 这些攻击大多源于CI/CD流水线上薄弱的安全措施 5.3 关键措施 对开发环境实施更严格的安全防护 采用SLSA框架下的全面安全策略 提供对CI/CD流水线的端到端可见性和控制 将安全措施作为流水线的一部分进行集成 6. 实施建议 评估当前状态 :确定组织当前的SLSA级别 制定升级计划 :规划如何逐步提升安全级别 自动化构建 :实现完全脚本化/自动化的构建过程 出处生成 :建立出处生成和验证机制 双人审查 :对关键更改实施双人审查制度 封闭构建 :实现可重现的封闭构建环境 持续监控 :建立供应链活动的持续监控机制 通过实施SLSA框架,组织可以显著提高软件供应链的安全性,降低遭受供应链攻击的风险。