npm经典令牌被撤销 — 全栈团队的紧急迁移清单
ReactNode.jsDevOps
发生了什么(简短):GitHub的npm注册表于2025年12月9日完成了一项计划中的安全强化——所有遗留的“经典”npm令牌被永久撤销,针对本地登录引入了基于会话的身份验证,并支持创建/管理细粒度访问令牌的CLI功能。这会破坏任何仍依赖于长期存在的经典令牌的工作流(CI密钥、预构建镜像、部署脚本、内部工具)。 (github.blog)
这对全栈团队的重要性
- 发布/管道中断:注入经典NPM_TOKEN的CI作业现在将因身份验证错误而失败,通常在发布流程中默默发生。 (github.blog)
- 增加轮换和双因素身份验证纪律:细粒度写入令牌默认是短期的,并强制执行更强的双因素身份验证/绕过规则用于自动化——您需要令牌轮换/证明或基于OIDC的发布。 (github.blog)
- 隐藏凭证:嵌入到容器镜像、构建缓存或开发者机器中的令牌停止工作,可能需要在多个地方进行修复(镜像、云密钥、~/.npmrc)。 (github.blog)
现在该做什么 — 优先级清单(今天就执行)
- 分类:查找所有经典npm令牌的使用
- 在GitHub/GitLab/CI密钥中搜索NPM_TOKEN、npmrc文件、Dockerfile和构建脚本。不要忘记自托管的运行器和云镜像。这是影响最大的单一步骤。 (github.blog)
- 恢复CI发布(快速恢复)
- 如果您从GitHub Actions或GitLab发布,请在支持的情况下采用“可信发布”/OIDC——它通过为每个工作流运行发放短凭证来消除存储的长期令牌。如果OIDC不可行,请创建一个具有最小所需范围的细粒度访问令牌,并为该令牌启用CI的“绕过双因素身份验证”选项。测试一次排练发布。 (github.blog)
- 轮换密钥和镜像
- 用新的细粒度令牌替换任何NPM_TOKEN密钥或转向OIDC。重建并重新部署任何包含经典令牌的容器镜像或虚拟机镜像。轮换后审计CI日志以查找401/403失败。 (github.blog)
- 本地开发者工作流更新
- 教育工程师:
npm login现在为交互式发布生成短期(2小时)会话;对于长期运行的本地任务,请使用细粒度令牌或在可用时采用开发时间OIDC。从~/.npmrc中删除长期存在的令牌。 (github.blog)
- 更新工具和注册表
- 私有注册表/代理设备:确认它们支持细粒度令牌和会话身份验证。如果您依赖于旧的包管理器(Yarn v1/v2),请注意在推出期间临时恢复了一个遗留端点——计划升级,因为该兼容层是短期的。 (github.blog)
- 自动化轮换和最小权限
- 实施令牌轮换策略(自动续订或短TTL),将令牌范围限制为“仅发布”或只读(如可能),并在包和组织级别强制执行最小权限。将轮换集成到您的秘密管理器中(Secrets Manager、Vault、GitHub Secrets + OIDC)。 (github.blog)
- 迁移后验证
- 从CI和本地开发机器上运行完整的发布干运行。确认
npm publish、npm pack和npm dist-tag按预期工作,并且包的来源(如可用)由可信发布/OIDC记录。
快速修复行动手册(最小命令/步骤)
- 审计:在仓库和镜像中使用grep/secret-scan查找NPM_TOKEN。
- CI:将发布作业切换为使用OIDC(GitHub Actions:配置id-token权限 + npm设置中的可信发布者)或创建具有确切范围的细粒度令牌 + 仅用于CI的绕过双因素身份验证。 (github.blog)
- 本地:指示开发人员运行
npm login并从~/.npmrc中删除遗留令牌;优先使用临时会话或按任务的细粒度令牌。 (github.blog)
操作中的陷阱和注意事项
- Monorepos和工作区脚本通常重用单个令牌——轮换该一个密钥可能会同时影响数十个包。分阶段推出并进行排练发布。 (github.blog)
- 嵌入令牌的CI镜像或构建缓存必须重建;否则,即使在密钥轮换后,管道也会失败。 (github.blog)
- 一些第三方服务或旧工具可能仍然期望经典令牌;需要逐个供应商检查。 (github.blog)
为什么这值得付出努力 这一变化实质上减少了泄露长期凭证的影响范围,强制实施更好的自动化卫生(OIDC/可信发布),并使npm注册表与更强大、现代的身份验证模式保持一致——但这需要仍依赖于遗留令牌的团队立即进行操作工作。 (github.blog)
进一步阅读(官方变更日志)
来源
继续阅读
Chrome 143 更改 FedCM:结构化 ID 声明、更严格的客户端元数据和破坏性 API 更新
2026年1月31日Chrome 143(发布于 2026 年 1 月 12 日)更改了 FedCM 身份流:ID 声明令牌可以是结构化 JSON,强制执行 client_metadata 验证,并且多个 API 字段移动/重命名——在 Chrome 145 之前需要迁移。
Undici CVE-2026-22036: 无界解压链导致资源耗尽 — 补丁已发布
2026年1月30日2026年1月14日,undici(Node.js HTTP客户端)发布了一份安全通告,描述了一种无界解压链漏洞,可能导致高CPU和内存使用。全栈团队必须找到并升级受影响的undici版本,并添加轻量级运行时保护。
React Router / Remix 修复服务器操作中的 CSRF 漏洞 (CVE-2026-22030)
2026年1月29日React Router 和 @remix-run/server-runtime 修复了影响服务器端操作处理程序和不稳定的 React 服务器操作的中等严重性 CSRF 问题——全栈团队现在必须检查和修补的内容。