跳转到内容
getnextpdf.com

供应链完整性

NextPDF 的供应链控制在两个环节生效:一是运行于每个涉及依赖变更的拉取请求与每个版本标签上的 CI 门禁;二是发布工作流,其中配置了来源证明(provenance)生成、 无密钥签名与 SBOM 生成。

控制项类型
构建的 CycloneDX 1.7 SBOMCI 门禁,硬性
绑定构建输入的 in-toto 声明CI 门禁,硬性
SHA-256 依赖指纹与固定基线的差异比对CI 门禁,硬性
针对依赖安全公告策略的 OpenVEX 一致性检查CI 门禁,硬性
跨夹具确定性检查CI 检查,尽力而为
固定版本的 slsa-github-generator 来源证明生成工作流配置——发布工作流
带 Rekor 透明日志的 Sigstore cosign 无密钥签名工作流配置——发布工作流
CycloneDX 1.7 与 SPDX 2.3 SBOM 生成工作流配置——发布工作流
每夜在解析器与写入器路径上运行的 php-fuzzer 矩阵定时 CI

每个涉及依赖的拉取请求与每个版本标签都会运行:

检查作用门禁
清单生成构建的 CycloneDX 1.7 SBOM硬性
构建输入记录生成一份绑定构建输入的 in-toto 声明硬性
依赖完整性将 SHA-256 字节指纹与固定基线做差异比对硬性
VEX 一致性要求依赖安全公告策略中的每一条目在仓库的 OpenVEX v0.2.0 文档中都有对应声明硬性
可复现性在各测试夹具上运行确定性检查尽力而为

依赖完整性门禁将依赖树的 SHA-256 字节指纹与固定在仓库中的基线做差异比对, 不依赖包元数据。

发布工作流固定引用规范的 slsa-github-generator 可复用工作流——该工作流被配置为在隔离的临时构建器中生成 in-toto 来源证明——并配置 slsa-verifier 内联运行, 以校验生成器的输出。

发布工作流为制品包配置了 Sigstore cosign 无密钥签名,并将透明日志记录到 Rekor。无密钥签名从工作流的 OIDC 身份 (https://token.actions.githubusercontent.com)派生短期证书,因此该发布签名路径的配置中不使用长期制品签名密钥。

发布工作流配置了双 SBOM 生成——一份 CycloneDX 1.7 文档与一份 SPDX 2.3 文档。

每夜运行的 php-fuzzer 矩阵与 AST/结构树测试装置一起,对解析器与写入器路径进行检验。