不同格式标准SBOM清单横评:SPDX、CDX和DSDX
字数 1614 2025-08-22 12:22:24
软件物料清单(SBOM)标准格式详解:SPDX、CDX与DSDX
1. SBOM概述
软件物料清单(SBOM)是包含软件应用中使用的所有组件、库和其他依赖项的列表,其核心价值在于:
- 提高软件供应链透明度
- 揭示供应链中的弱点
- 支持漏洞、许可证和授权管理
- 降低开发、采购及维护成本
- 增进供应链上下游间的信任
2. 主流SBOM标准格式对比
2.1 SPDX (Software Package Data Exchange)
基本信息:
- 许可证:cc-by-3.0
- 主办方:Linux基金会
- 标准化:ISO/IEC 5962(2021年9月列入国际标准)
- 最新版本:v3.0-rc1(候选版本),最广泛使用v2.2(2020年发布)
特点:
- 专注于许可证信息描述
- 支持代码文件及片段引用场景
- 从v2.1开始支持与漏洞数据关联
- 标准化程度高,是唯一获得ISO认可的SBOM标准
支持格式:
- SPDX原生格式
- XML
- JSON
- RDF
- YAML
字段组成:
(详细字段说明请参考原文)
2.2 CDX (CycloneDX)
基本信息:
- 许可证:apache-2.0
- 主办方:OWASP
- 最新版本:v1.5(2023年6月发布)
特点:
- 轻量级标准,专注于自动化SBOM使用和管理
- 提供更多安全相关信息
- 支持硬件及云系统描述
- 记录服务信息及制造/部署信息
- 扩展性强但结构更复杂
支持格式:
- XML
- JSON
字段组成:
(详细字段说明请参考原文)
2.3 DSDX (Digital Supply-chain Data Exchange)
基本信息:
- 主办方:OpenSCA社区主导,开源中国、电信研究院、中兴通讯联合发起
- 发布时间:2023年8月
- 定位:中国首个数字供应链SBOM格式
特点:
- 适配中国企业实战化应用场景
- 兼容SPDX、CDX、SWID国际标准和国内标准
- 引入运行环境及供应链流转信息
- 采用最小集/扩展集形式增强灵活性
- 考虑国内企业出海合规需求
支持格式:
- DSDX原生格式
- JSON
- XML
字段组成:
(详细字段说明请参考原文)
3. 标准格式对比总结
| 特性 | SPDX | CDX | DSDX |
|---|---|---|---|
| 标准化程度 | ISO国际标准 | 行业标准 | 国内社区标准 |
| 重点领域 | 许可证信息 | 安全审计、漏洞管理 | 运行环境、供应链流转 |
| 扩展性 | 中等 | 强(支持硬件/云) | 灵活(最小集/扩展集) |
| 复杂度 | 中等 | 高 | 可调节 |
| 适用场景 | 标准化合规 | 安全审计 | 中国企业实战场景 |
4. OpenSCA工具使用指南
OpenSCA支持输出多种标准格式SBOM文件,并提供相关分析功能:
4.1 基本命令
- 输出SBOM清单:
opensca-cli -path ${project_path} -out output.dsdx
- 使用SBOM清单输出依赖、漏洞及许可证信息:
opensca-cli -token ${token} -path ${sbomname.suffix} -out output.html
*注:suffix可以是dsdx/dsdx.json/dsdx.xml/cdx.json/cdx.xml等格式
4.2 使用建议
- 为获得准确结果,输入的SBOM需包含Purl信息
- 推荐优先使用CDX及DSDX格式
- 从v3.0.0开始支持通过SBOM清单输出依赖、漏洞及许可证信息
5. 选择建议
- 国际化项目:优先考虑SPDX(ISO标准)
- 安全敏感项目:考虑CDX(安全信息更丰富)
- 国内企业项目:推荐DSDX(适配国内实践)
- 兼容性要求高:选择支持多格式输出的工具(如OpenSCA)
6. 参考资料
- SCA技术进阶系列(四):DSDX SBOM供应链安全应用实践
- SPDX官方文档
- CycloneDX官方文档
- OpenSCA官方文档
注:本文基于2023年12月1日发布的《不同格式标准SBOM清单横评:SPDX、CDX和DSDX》整理,如需最新信息请参考各标准官方文档。