SCA技术进阶系列(一):SBOM应用实践初探
字数 2063 2025-08-24 16:48:07

SCA技术进阶系列(一): SBOM应用实践初探 - 教学文档

1. 软件供应链安全概述

1.1 软件供应链定义

软件供应链指软件生命周期中从需求、设计、开发、构建、打包、发布、采购、部署、运维、下线到销毁的整个链路,涉及:

  • 软件生产者(供应商/上游)
  • 软件使用者(消费者/下游)
  • 软件运营者(公司或企业)

1.2 软件供应链安全威胁

攻击手段包括:

  • 网络工具
  • 下载投毒
  • 代码污染
  • 漏洞利用
  • 授权流氓

近年重大安全事件:

  • SolarWinds(太阳风暴)攻击
  • Realtek WiFi SDK漏洞
  • Apache Log4j2漏洞

1.3 风险治理重点

  • 软件来源管理
  • 软件安全合规性管理
  • 软件资产管理
  • 服务支持及安全应急响应

重点治理内容:

  • 第三方组件威胁审查
  • 软件安全合规性管理

2. SBOM基础概念

2.1 SBOM定义

SBOM(Software Bill of Materials)是"包含构建软件中使用的各种组件的详细信息和供应链关系的正式记录"。

2.2 SBOM最小必需元素(NTIA标准)

2.2.1 数据字段

  1. 作者名称:SBOM创建者信息
  2. 时间戳:SBOM创建时间
  3. 工具:用于生成SBOM的工具

2.2.2 组件识别

  1. 供应商名称:组件供应商
  2. 组件名称:组件标识
  3. 版本字符串:组件版本
  4. 其他唯一标识符
    • CPE(Common Platform Enumeration)
    • PURL(Package URL)
    • SWID标签

2.2.3 关系

描述组件之间的关系,如:

  • 依赖关系
  • 包含关系
  • 构建关系

2.3 推荐扩展字段

从国内开源组件管理要求和软件全生命周期风险角度,建议扩展:

  • 许可证信息
  • 漏洞信息
  • 组件来源
  • 组件完整性校验值
  • 组件使用范围

3. SBOM格式标准

3.1 SPDX

  • 国际开放标准(ISO/IEC 5962:2021)
  • 特点:对许可证信息支持较好
  • 输出格式:RDF、XLS、SPDX、YAML、JSON
  • 最新版本:2.3
  • SPDX Lite:轻量级子集

3.2 CycloneDX

  • OWASP社区开源项目
  • 专为安全环境和供应链组件分析设计
  • 最新版本:1.4
  • 输出格式:XML、JSON
  • 特点:轻量级,可扩展

3.3 SWID

  • 标准化XML格式
  • 记录软件组件唯一信息
  • 与软件安装/卸载过程集成

4. SBOM应用场景

4.1 按使用角色分类

  1. 软件生产商:构建和维护软件
  2. 软件采购商:采购前参考和策略制定
  3. 软件运营商:漏洞管理、资产管理、合规管理

4.2 按企业角色分类

  • 项目团队:管理软件资产,评估安全风险
  • 安全团队:分析软件风险,持续监控
  • 法务团队:核查软件授权问题

5. SBOM实施指南

5.1 SBOM工具选择标准(Gartner建议)

  1. 可融入构建过程,自动创建SBOM
  2. 可分析源代码和二进制文件
  3. 对检测的组件进行SCA检测生成SBOM
  4. 可对生成的SBOM进行编辑
  5. 支持多种可读格式
  6. 支持合并和转换不同格式SBOM
  7. 提供API和库支持

5.2 SDLC中的SBOM装配

5.2.1 各阶段装配内容

  1. 需求阶段

    • 确定组件需求
    • 建立初始SBOM框架
  2. 设计阶段

    • 确定组件来源
    • 评估组件风险
    • 更新SBOM
  3. 开发阶段

    • 实际使用的组件
    • 组件依赖关系
    • 持续更新SBOM
  4. 测试阶段

    • 验证组件安全性
    • 更新漏洞信息
  5. 发布阶段

    • 生成最终SBOM
    • 包含完整组件信息

5.2.2 实施建议

  • 建立元数据信息库
  • 借助SCA检测工具
  • 融入CI/CD流程

5.3 SBOM与风险情报关联

  • 通过SBOM获取最新漏洞风险情报
  • 维护SBOM清单库
  • 快速定位存在风险的软件
  • 加速供应链安全事件应急响应

5.4 围绕SBOM建立管理流程

  1. 建立基线

    • 清点资产
    • 建立白名单/黑名单组件基线
  2. 安全设计评估

    • 需求设计阶段风险评估
    • 依据基线选用安全组件
  3. 应用安全测试

    • 上线前安全测试
    • 发现应用漏洞威胁
  4. CI/CD缺陷修复&跟踪

    • 接入缺陷跟踪平台
    • 更新SBOM中漏洞信息
  5. 产品制品发布

    • 生成SBOM
    • 出具安全测试报告

6. SBOM实践思考

6.1 当前应用现状

  • 主要关注第三方开源组件治理
  • 通过SCA工具进行威胁检测和管理

6.2 未来发展方向

  • 扩展至完整软件生命周期治理
  • 加强供营商管理
  • 建设自动化流程
  • 提升持续运维监控能力
  • 增强应急响应能力

6.3 SBOM核心价值

  1. 提高软件透明性
  2. 形成供应链环节中的标准接口
  3. 描绘软件资产信息
  4. 解决"看不清"和"跟不上"的资产管理痛点

7. 开源工具推荐

OpenSCA开源项目:

  • GitHub: https://github.com/XmirrorSecurity/OpenSCA-cli/releases
  • Gitee: https://gitee.com/XmirrorSecurity/OpenSCA-cli/releases

功能特点:

  • 兼容多种SBOM格式
  • 支持SBOM转换和集中管理
  • 可融入自动化流程
  • 提供公开SBOM生成工具
SCA技术进阶系列(一): SBOM应用实践初探 - 教学文档 1. 软件供应链安全概述 1.1 软件供应链定义 软件供应链指软件生命周期中从需求、设计、开发、构建、打包、发布、采购、部署、运维、下线到销毁的整个链路,涉及: 软件生产者(供应商/上游) 软件使用者(消费者/下游) 软件运营者(公司或企业) 1.2 软件供应链安全威胁 攻击手段包括: 网络工具 下载投毒 代码污染 漏洞利用 授权流氓 近年重大安全事件: SolarWinds(太阳风暴)攻击 Realtek WiFi SDK漏洞 Apache Log4j2漏洞 1.3 风险治理重点 软件来源管理 软件安全合规性管理 软件资产管理 服务支持及安全应急响应 重点治理内容: 第三方组件威胁审查 软件安全合规性管理 2. SBOM基础概念 2.1 SBOM定义 SBOM(Software Bill of Materials)是"包含构建软件中使用的各种组件的详细信息和供应链关系的正式记录"。 2.2 SBOM最小必需元素(NTIA标准) 2.2.1 数据字段 作者名称 :SBOM创建者信息 时间戳 :SBOM创建时间 工具 :用于生成SBOM的工具 2.2.2 组件识别 供应商名称 :组件供应商 组件名称 :组件标识 版本字符串 :组件版本 其他唯一标识符 : CPE(Common Platform Enumeration) PURL(Package URL) SWID标签 2.2.3 关系 描述组件之间的关系,如: 依赖关系 包含关系 构建关系 2.3 推荐扩展字段 从国内开源组件管理要求和软件全生命周期风险角度,建议扩展: 许可证信息 漏洞信息 组件来源 组件完整性校验值 组件使用范围 3. SBOM格式标准 3.1 SPDX 国际开放标准(ISO/IEC 5962:2021) 特点:对许可证信息支持较好 输出格式:RDF、XLS、SPDX、YAML、JSON 最新版本:2.3 SPDX Lite:轻量级子集 3.2 CycloneDX OWASP社区开源项目 专为安全环境和供应链组件分析设计 最新版本:1.4 输出格式:XML、JSON 特点:轻量级,可扩展 3.3 SWID 标准化XML格式 记录软件组件唯一信息 与软件安装/卸载过程集成 4. SBOM应用场景 4.1 按使用角色分类 软件生产商 :构建和维护软件 软件采购商 :采购前参考和策略制定 软件运营商 :漏洞管理、资产管理、合规管理 4.2 按企业角色分类 项目团队 :管理软件资产,评估安全风险 安全团队 :分析软件风险,持续监控 法务团队 :核查软件授权问题 5. SBOM实施指南 5.1 SBOM工具选择标准(Gartner建议) 可融入构建过程,自动创建SBOM 可分析源代码和二进制文件 对检测的组件进行SCA检测生成SBOM 可对生成的SBOM进行编辑 支持多种可读格式 支持合并和转换不同格式SBOM 提供API和库支持 5.2 SDLC中的SBOM装配 5.2.1 各阶段装配内容 需求阶段 : 确定组件需求 建立初始SBOM框架 设计阶段 : 确定组件来源 评估组件风险 更新SBOM 开发阶段 : 实际使用的组件 组件依赖关系 持续更新SBOM 测试阶段 : 验证组件安全性 更新漏洞信息 发布阶段 : 生成最终SBOM 包含完整组件信息 5.2.2 实施建议 建立元数据信息库 借助SCA检测工具 融入CI/CD流程 5.3 SBOM与风险情报关联 通过SBOM获取最新漏洞风险情报 维护SBOM清单库 快速定位存在风险的软件 加速供应链安全事件应急响应 5.4 围绕SBOM建立管理流程 建立基线 : 清点资产 建立白名单/黑名单组件基线 安全设计评估 : 需求设计阶段风险评估 依据基线选用安全组件 应用安全测试 : 上线前安全测试 发现应用漏洞威胁 CI/CD缺陷修复&跟踪 : 接入缺陷跟踪平台 更新SBOM中漏洞信息 产品制品发布 : 生成SBOM 出具安全测试报告 6. SBOM实践思考 6.1 当前应用现状 主要关注第三方开源组件治理 通过SCA工具进行威胁检测和管理 6.2 未来发展方向 扩展至完整软件生命周期治理 加强供营商管理 建设自动化流程 提升持续运维监控能力 增强应急响应能力 6.3 SBOM核心价值 提高软件透明性 形成供应链环节中的标准接口 描绘软件资产信息 解决"看不清"和"跟不上"的资产管理痛点 7. 开源工具推荐 OpenSCA开源项目: GitHub: https://github.com/XmirrorSecurity/OpenSCA-cli/releases Gitee: https://gitee.com/XmirrorSecurity/OpenSCA-cli/releases 功能特点: 兼容多种SBOM格式 支持SBOM转换和集中管理 可融入自动化流程 提供公开SBOM生成工具