首页/开发/CI/CD 与发布速查/SBOM 之 CycloneDX 格式
构建与制品管理58 条

SBOM 之 CycloneDX 格式

OWASP 发起的轻量 SBOM 规范:以组件与依赖关系为主,扩展到漏洞(VEX)与服务模型,工具生态活跃。

CI/CD 与发布速查开发更新于 2026-10-13

CycloneDX 是什么

OWASP 发起的轻量 SBOM 规范:以组件与依赖关系为主,扩展到漏洞(VEX)与服务模型,工具生态活跃——cdxgen、syft、trivy 与各语言插件都能直接输出。形态支持 JSON、XML、protobuf。它与 SPDX 描述同一事实,侧重更贴近安全扫描工作流,消费方工具链支持哪种就用哪种。

基本信息

形态JSON、XML、protobuf
要素components、dependencies、services,可附 vulnerabilities 与 VEX 状态
工具cdxgen、syft、trivy 及各语言插件均可输出
扩展漏洞与 VEX 状态可随清单在文档内维护
选择按消费方工具链要求选一种格式统一

典型使用场景

  • 安全扫描联动:扫描器直接消费组件清单定位漏洞
  • VEX 表达:把不受影响的结论随清单发布,减少无效工单
  • CI 生成:构建末尾输出并随制品归档
  • 多生态覆盖:多语言仓库各用插件生成后合并
  • 依赖可视化:用 dependencies 关系画依赖图
  • 双格式并存:按客户或平台要求输出对应格式

生成与检查

生成与检查
cdxgen -o sbom.cdx.json    # 从源码目录生成
trivy fs --format cyclonedx --output sbom.cdx.json .   # 从文件系统生成
jq '.components | length' sbom.cdx.json      # 检查组件数量
jq '.dependencies | length' sbom.cdx.json    # 检查依赖关系数量

字段读法

要素含义注意
components组件清单名称、版本与包坐标要完整
dependencies依赖关系供图分析定位传递链
services服务模型运行时服务也可入清单
vulnerabilities漏洞条目与扫描结果对应
VEX受影响状态声明与扫描结论分开管理
同一制品建议至少提供一种格式;多格式并行时以消费方工具链为准统一。
VEX 与扫描结果是两类数据:一个是受影响与否的结论声明,一个是检测发现,混在一起会误导审计。
包坐标让组件可跨清单串联:相同坐标能在漏洞库与清单之间对上号。

流水线集成

  • 三步串联:扫描、生成、归档连成一条线,清单随版本可检索
  • 组件数量核对:数量级突变往往意味着漏扫或扫描范围变化

易错点

  • 把 SBOM 当静态文件归档后不再更新:制品重新构建后需同步再生成
  • VEX 状态与扫描结果混在一起不做区分:审计时误导结论,分开管理
  • 组件坐标不规范:缺少包坐标导致与漏洞库对不上,定位与关联失效
  • 多格式重复维护:同一次构建生成多种格式时选一种为准绳,另一份按需转换

数据来源与参考

  • CycloneDX 规范(cyclonedx.org)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌