FlawOpen

flawopen.com/参考资料/Cosign 验证绕过

Cosign GHSA-fx35-mq7g-6g98:旧版 Bundle 验证绕过

高危 · CVSS 7.4 CWE-295: Improper Certificate Validation; CWE-347: Improper Verification of Cryptographic Signature 软件供应链
通俗解释 — 门票与身份核验

想象一个场馆既检查门票,也核对官方证件上的姓名。存在漏洞的旧版 Bundle 路径可能把一个裸密钥误当成官方证件,验票通过却跳过姓名核验。签名在数学上可能有效,但所要求的工作流身份并未得到证明。

边界: 两个 Blob 验证命令对旧版 JSON Bundle 的解析
失效: 无法解析为证书的 `cert` 值可能被当作公钥,跳过 X.509 证书链和证书策略验证
影响: 未经授权的签名者可能让给定 Blob 验证成功;完整性影响取决于后续使用方式
修复: 升级到 Cosign v2.6.5 或 v3.1.3 及更高版本,并固定预期证书身份和 OIDC 签发者

Cosign Blob 验证中失效的环节

GHSA-fx35-mq7g-6g98 影响 `cosign verify-blob` 和 `cosign verify-blob-attestation`:当无密钥验证使用身份和签发者参数(或其正则表达式变体)并读取旧版 JSON `--bundle` 时,如果 Bundle 的 `cert` 字段无法解析为 X.509 证书,受影响版本会回退为公钥加载。这会设置内部签名验证器,使后续流程跳过证书链验证和 `CheckCertificatePolicy`,因此身份与签发者约束没有生效。只要嵌入的公钥对应签名有效,验证就可能成功。Bundle 中的密钥还可能覆盖显式传入的 `--key`。公告指出,容器镜像验证和标准化 Sigstore protobuf Bundle 路径不受影响。暂无已知 CVE;上游公告评级为高危,CVSS 7.4、CWE-295 和 CWE-347。

验证绕过流程

1

CI 作业收到制品和旧版 JSON Bundle

制品和 Bundle 可能来自发布工作流、缓存、镜像或其他流水线输入;在策略检查通过前,接收作业必须将两者视为不可信。

2

存在漏洞的解析器在需要证书时接受了密钥

受影响版本在 X.509 解析失败后回退到公钥。这会设置签名验证器,并跳过无密钥验证中的证书策略执行。

3

签名校验成功,却未证明工作流身份符合要求

验证可能成功结束,但并未确认固定的证书身份和 OIDC 签发者。若流水线只判断退出状态,就可能继续使用未经授权的制品。

固定已修复的 Cosign 版本和签名者身份

两个示例都固定了相同的 GitHub Actions 精确身份和 OIDC 签发者。存在漏洞的命令使用受影响版本;解析旧版 JSON Bundle 时仍可能绕过这些检查。加固命令使用已修复版本和精确值参数,而非正则表达式。在 CI 中按经审核的版本和摘要固定 Cosign。命令只验证制品,不创建或展示恶意 Bundle。

CI 策略 — 受影响版本模式未修复缺陷
# Risk: affected versions accept legacy JSON bundles in this path
# cosign v2.6.4 or earlier, or v3.1.2 or earlier
cosign verify-blob release.tar.gz \
  --bundle release.sigstore.json \
  --certificate-identity-regexp "^https://github\.com/acme/service/\.github/workflows/release\.yml@refs/heads/main$" \
  --certificate-oidc-issuer-regexp "^https://token\.actions\.githubusercontent\.com$"
CI 策略 — 修复版本已修复
# Require Cosign v2.6.5+ or v3.1.3+ in the pinned CI toolchain
cosign verify-blob release.tar.gz \
  --bundle release.sigstore.json \
  --certificate-identity "https://github.com/acme/service/.github/workflows/release.yml@refs/heads/main" \
  --certificate-oidc-issuer "https://token.actions.githubusercontent.com"

修复与上线检查清单

Browse related vulnerability and supply-chain analysis:Security directory →
另请参阅 Dependency Confusion:风险与防护 Docker 套接字暴露:风险与防护 GitHub Actions 脚本注入:安全处理工作流输入