Cloudflare 在 7 月 29 日宣布,Authenticated Origin Pulls 和 Custom Origin Trust Store 已经支持后量子认证。具体说,它把 ML-DSA 签名放进 Cloudflare 到客户 origin server 的连接认证里,让这段 mTLS 不只在密钥交换上考虑量子风险,也开始处理“对方身份会不会被量子能力伪造”的问题。

同一天附近,npm 也把恶意包检测前移到发布路径:新包不会在 publish 命令返回后立刻可安装,而是先被自动扫描,再决定正常放行、进入人工复核或被阻断。再加上 Dependabot 对更新噪声的处理建议和 CodeQL 2.26.1 的规则更新,可以看到一个更大的工程变化:安全平台不满足于把风险堆到告警列表里,而是在请求握手、包发布、依赖更新和代码扫描这些默认路径上拦截风险。

Origin 握手先进入后量子阶段

Cloudflare 把这次发布称为其 2029 全面后量子安全路线的第一个里程碑。浏览器到 Cloudflare、Cloudflare 到 origin 是两条连接,前者仍受 WebPKI 的节奏约束;后者因为 Cloudflare 是客户端,又已经和客户存在账户级信任关系,可以更早采用定制 PKI。Custom Origin Trust Store 现在可以上传 ML-DSA CA,Authenticated Origin Pulls 的 per-zone 和 per-hostname 配置可以上传 ML-DSA client certificate 与 seed 格式私钥,Cloudflare 在连接 origin 时用它完成双向认证。

技术限制也很明确。Cloudflare 支持 FIPS 204 的 ML-DSA-44、ML-DSA-65 和 ML-DSA-87,并建议多数应用使用性能更好的 ML-DSA-44;AOP 的 global 配置还没有覆盖,后续再做。要避免降级攻击,验证方不能继续信任量子脆弱的认证机制,否则攻击者仍可能用伪造的传统凭据绕过后量子路径。Cloudflare 还要求上传的私钥采用 OpenSSL 3.5.0 或更新版本生成的 FIPS 204 seed-only encoding。

发布前扫描改变了 npm 自动化假设

npm 的变化更贴近日常工程。新发布的 package 会在可安装前被扫描,结果可能是正常发布、保留给人工复核或阻断。GitHub 给出的当前典型延迟约为 5 分钟,高峰期或包内容较大时可能达到 15 分钟以上,而且这不是服务保证。对 CI/CD 来说,这个细节很实际:任何假设“publish 完立刻 npm install 能拿到新版本”的自动化都需要容忍短暂不可用。

dual-use package 的处理也变得更正式。维护者需要在 package.json 里声明 contentPolicy,并在包根目录提供纯文本 DISCLOSURE 文件,说明安全相关能力和合法用途。声明不等于白名单,Trust & Safety 团队仍可能逐个复核;声明 dual-use 的包还必须通过强制 2FA 的方式发布,例如 trusted publishing、带 2FA 的交互会话或 staged publishing。这个设计承认了一个现实:安全工具、研究工具和恶意工具在行为上可能相似,平台不能只靠文件名或单个特征判断。

降噪不是放慢安全补丁

Dependabot 的经验解决的是另一个安全问题:告警和更新太多以后,重要事项会被普通维护工作淹没。GitHub 以 Microsoft GCToolkit 为例,指出截至 2026 年 7 月,该项目 578 次提交里有 92 次是 Dependabot 版本更新,过去 12 个月有 61 次。它给出的做法是按生态系统分组、把 routine version updates 改成月度或周度批处理,并确认实际使用的 Maven、npm、pip、gomod、Docker 等生态都被覆盖。

关键在于安全更新没有被一起降速。Dependabot security updates 仍按漏洞披露触发,不受 version update 的月度节奏影响,前提是 dependency graph、Dependabot alerts 和 security updates 本身都已启用。GitHub 还提到默认的三天 package cooldown:新版本在 registry 上至少停留三天后才会触发普通 version update,这能减少刚发布的坏版本被立刻合并的概率;安全更新不受这个 cooldown 阻挡。

默认安全会带来兼容性成本

CodeQL 2.26.1 则是在扫描准确性上继续补课。它改进了 Go 的 log/slog 建模,给 Java/Kotlin 的 org.apache.poi 增加 source、sink 和 flow summary model,识别 JavaScript/TypeScript 里 Angular @HostListener 监听 message 事件时的远程流来源,并减少 Rust hard-coded cryptographic value 查询在常量和变量组合场景中的误报。github.com 上的 code scanning 用户会自动获得这次更新,GHES 用户则要等后续版本或手动升级 CodeQL。

这些默认化控制并非没有代价。Cloudflare 在更新 Pingora Origin 所用 BoringSSL 时遇到过兼容性回归:BoringSSL 新增的 KeyUsage 规则符合规范,但一小部分客户证书在上线后被判无效,导致 2026 年 6 月 10 日出现事故,随后回滚并打补丁。npm 的发布前扫描会带来延迟和 appeal 流程,CodeQL 新规则也可能产生新的有效告警。对工程团队来说,安全默认值正在变强,但真正要做的是把这些门禁纳入发布节奏、证书轮换、告警分流和事故回滚,而不是指望平台替自己消灭所有判断。