[论文] 大规模实证分析:SBOM 标准与工具之间的遵循差距
发布: (2026年1月9日 GMT+8 16:26)
8 min read
原文: arXiv
Source: arXiv - 2601.05622v1
Overview
该论文首次进行大规模、两阶段的实证研究,评估当今软件材料清单(SBOM)工具实际遵循官方 SBOM 标准(如 SPDX、CycloneDX)的程度。通过自动生成并分析来自真实开源项目的超过 55 k 份 SBOM,作者揭示了一个显著的“遵循差距”,这可能危及供应链安全和合规工作流。
关键贡献
- SAP 框架 – 一个开源的自动化评估平台,能够解析 SBOM,检查其是否符合标准策略规则,并计算跨工具的一致性指标。
- 综合数据集 – 由六种流行的 SBOM 生成器在 3 287 个不同仓库中生成的 55 444 份 SBOM,分别在两个时间点(基线和一年后)收集。
- 实证发现 – 定量证据表明 (1) 策略合规性薄弱,(2) 跨工具和同一工具内部的一致性问题严重,(3) 对关键字段(如软件包许可证)的准确性低。
- 根本原因分析 – 确认缺失的标准特性、模糊的规范措辞以及导致观察到差距的实现捷径。
- 实践建议 – 为工具开发者提供具体的修复方案(例如,更严格的模式验证、确定性的组件排序),并为采用 SBOM 的组织提供指导。
- 开源发布 – 所有代码、Docker 镜像和原始结果均公开可用,以便复制和进一步研究。
方法论
- 工具选择 – 基于 GitHub 星标、下载量和语言覆盖率,挑选了六款广泛使用的 SBOM 生成器(支持 SPDX 与 CycloneDX 输出)。
- 代码库语料 – 从 GitHub 克隆了 3 287 个开源项目,涵盖 Java、JavaScript、Python、Go、Rust 和 C/C++,确保构建系统和依赖管理器的真实组合。
- 两阶段评估
- 基线 – 每个工具为每个代码库生成 SBOM;SAP 框架根据相应标准的策略规则(必填字段、数据类型、SPDX 许可证标识等)对 SBOM 进行验证。
- 纵向跟进 – 12 个月后,使用最新发布的版本在相同代码库集合上再次运行这些工具,以评估随时间的稳定性。
- 指标 – 合规率(满足所有强制规则的 SBOM 所占比例)、工具间一致性(不同工具检测到的包的 Jaccard 相似度)、工具内一致性(不同版本输出的变化)、以及字段级准确性(例如,与人工整理的真实标签相比的许可证检测准确度)。
- 根本原因调查 – 对每个主要缺陷,作者检查了工具的源代码、问题跟踪器以及标准本身,以确定产生差距的原因。
结果与发现
| 方面 | 关键结果 | 解释 |
|---|---|---|
| 政策合规性 | 仅有 31 % 的 SBOM 符合 全部 强制性标准字段;许多缺少必需的 SPDX 许可证标识符或组件哈希。 | 工具常常生成“最小化”SBOM,虽然在技术上可解析,但不足以满足下游合规性检查的需求。 |
| 跨工具一致性 | 不同工具之间的包检测重叠率在 7.84 %(Go)到 12.77 %(JavaScript)之间波动。 | 不同的解析器和依赖图算法导致组件列表差异巨大,使跨工具验证变得不可靠。 |
| 同工具一致性 | 同一工具的新旧版本在许多仓库中的重叠率 ≤ 15 %。 | 更新会引入回归或改变启发式规则,导致 SBOM 随时间的可复现性受损。 |
| 许可证准确性 | 大多数工具的正确许可证归属率低于 20 %;许多报告为“UNKNOWN”或错误识别的许可证。 | 许可证检测逻辑不够完善,削弱了 SBOM 的主要安全用例之一。 |
| 根本原因 | – 规范章节模糊(例如,可选字段与必需字段的区别)。 – 组件列表缺乏确定性的排序。 – 依赖图提取工具(例如 npm ls、go mod graph)产生不一致的输出。 | 通过更紧密的规范‑工具对齐以及更健壮的解析流水线,可解决这些系统性问题。 |
实际影响
- 针对 DevOps 团队 – 依赖单一的 SBOM 生成器可能会产生虚假的安全感;建议至少使用另一种工具进行交叉检查,尤其在合规审计之前。
- 针对工具供应商 – 实施完整的模式验证、确定性的组件排序,并提供版本稳定的 API,以避免升级后破坏下游流水线。
- 针对安全平台 – 将 SBOM 验证作为一等步骤(例如 CI/CD 门禁)集成,以在其传播到漏洞扫描器之前捕获缺失字段或格式错误的许可证。
- 针对标准组织 – 研究结果凸显了 SPDX/CycloneDX 中需要澄清的模糊语言;更严格的合规性测试套件可以提升生态系统的一致性。
- 针对供应链自动化 – 准确的许可证数据和稳定的组件列表是自动化策略执行(例如 “不允许 GPL 许可证的依赖”)的前提。目前的低准确率表明许多自动化策略工具正在基于噪声输入运行,导致误报/漏报。
限制与未来工作
- Scope of Languages – 本研究覆盖了六种流行语言;未评估的细分生态系统(例如 .NET、Swift)可能表现出不同的遵循模式。
- Ground‑Truth Construction – 许可证标签已对部分软件包手动整理;如果将此工作扩展到整个语料库,可能会发现更多细微差别。
- Tool Set – 仅检查了六种生成器;更新的或商业的 SBOM 解决方案可能会有不同的表现。
- Dynamic Dependencies – 分析侧重于静态依赖图;运行时生成的组件(例如在执行时加载的插件)仍未涉及。
未来的研究方向包括扩大语言覆盖范围、构建由社区驱动的 SBOM 标准符合性测试套件,以及调查 SBOM 不准确性在真实生产流水线中对下游漏洞管理工具的影响。
作者
- Chengjie Wang
- Jingzheng Wu
- Hao Lyu
- Xiang Ling
- Tianyue Luo
- Yanjun Wu
- Chen Zhao
论文信息
- arXiv ID: 2601.05622v1
- 分类: cs.SE
- 发表时间: 2026年1月9日
- PDF: 下载 PDF