· adswds-team · 安全  · 4 min read

npm 可信发布 48 小时验证:仓库名回收漏洞之后,CI 要改什么

蓝点网报道:GitHub 为 npm Trusted Publishing 设置 48 小时内必须首次成功发布,阻断研究员发现的仓库名回收(SlugFest)风险;并拒绝 issue_comment 事件令牌。广告与落地前端的发布流水线应按此收紧。

蓝点网报道:GitHub 为 npm Trusted Publishing 设置 48 小时内必须首次成功发布,阻断研究员发现的仓库名回收(SlugFest)风险;并拒绝 issue_comment 事件令牌。广告与落地前端的发布流水线应按此收紧。

据蓝点网报道(2026-10-14),GitHub 调整 npm Trusted Publishing 规则:新建的可信发布配置若在 48 小时内未完成首次成功发布,将失效、不能再用于发包。此举针对研究人员发现的仓库名回收风险——维护者重命名、转移或删除仓库后,原 owner/repo 名可能重新开放,攻击者注册同名仓库并放置匹配工作流,即可能在配置尚未绑定不可变仓库身份前,骗取对他人包名的发布权。npm 同时拒绝来自 GitHub Actions issue_comment 事件的可信发布令牌(此前已限制 pull_request_target)。

一句话:OIDC「无长期 token」不等于「信任配置可以无限期挂着不用」。


一、漏洞与修复在解决什么

项说明(据蓝点网 / 公开变更)
原风险信任配置在首次成功发布前,主要核对可读仓库名 + 工作流文件名,未钉死不可变仓库 ID
攻击面弃用/改名后的 slug 被抢注 → 同名 Actions → 向原包推恶意版本
修复未验证配置 48h 内必须首次成功发布;成功后绑定不可变身份,普通编辑不重置倒计时
身份变更仓库/项目身份变化需新建信任关系并重新走 48h 窗口
事件收紧拒绝 issue_comment 等易被滥用的触发源;改用 push / release / workflow_dispatch 等

Trusted Publishing 本意是用短期 OIDC 取代长期 npm token——在 Shai-Hulud / TeamPCP 一类蠕虫之后被大力推广。本次说明:自动化发布的信任锚点仍要防「名字可回收」。


二、广告 / 落地前端 CI 检查清单

  • 列出所有使用 Trusted Publishing 的包(落地组件、共享 UI、Worker 工具包);
  • 新建配置后 48h 内完成一次真实成功 publish(可先发 patch);
  • 工作流触发事件不含 issue_comment / 高风险 PR 事件;
  • 仓库转移、改名计划提前重建 trust,而不是事后救火;
  • 过期配置重建,勿假设「设置页还看得到 = 还能发」;
  • 仍保留:lockfile 校验、最小权限、双人发布复核。

同日蓝点网亦报道 Docker Hub 账户转组织时个人令牌未正确撤销(CVE 评分 9.4)——发布身份生命周期是同一类问题:改了组织形态,旧凭证还在。


三、和流量业务的关系

对投放站而言,被投毒的前端包可以改跳转、偷点击 ID、挂马。入口流量过滤挡不住「你自己 CI 发上去的脏构建」。
访客规则管流量结构;Trusted Publishing 纪律管构建是否还是你的。


四、小结

蓝点网报道的 npm 48 小时验证,是把「创建信任配置」从开放式挂起改成限时激活。维护广告落地与共享前端包的团队,应本周内审计 Trusted Publishing 配置与 Actions 触发源,避免在仓库更名/转移窗口被仓库名回收击穿。

相关阅读:TeamPCP 卧底与凭证轮换、axios 维护者劫持。

相关文章

查看全部 »

同标签更多