可蠕虫化恶意软件触发GitHub加强npm安全防护
GitHub在遭遇可蠕虫化恶意软件攻击后,正在收紧npm发布规则,此次攻击暴露了开源供应链中的弱点。
近期npm供应链攻击
2025年9月,GitHub披露了一起涉及Shai-Hulud蠕虫的严重事件,这是一种通过受感染的npm维护者账户传播的自复制恶意软件。
攻击者向广泛使用的JavaScript包中注入了恶意的安装后脚本,使蠕虫不仅能够窃取npm令牌,还能窃取一系列敏感密钥。如果不加以控制,此次攻击可能在整个软件生态系统中引发一连串的泄露事件。
GitHub通过移除500多个受感染的包并阻止包含恶意软件入侵指标的上传来应对。虽然直接威胁已得到控制,但该事件凸显了供应链信任的脆弱性以及攻击者利用开源生态系统的容易程度。
npm安全加固路线图
为降低令牌滥用风险并预防未来的可蠕虫化攻击,GitHub宣布了新的npm发布规则。关键措施包括:
- 本地发布必须使用双因素认证(2FA)
- 严格七天有效期的细粒度令牌
- 扩大可信发布工作流的采用
旧版令牌将被弃用,基于时间的一次性密码(TOTP)双因素认证将逐步被更强的基于FIDO的认证取代。默认设置将限制通过令牌进行发布访问,推动维护者采用可信发布或强制双因素认证。
这些变更可能需要工作流更新,但GitHub承诺逐步推出、提供迁移指南和支持资源,以最小化中断。
可信发布的作用
可信发布正成为供应链防御的基石。这种模式消除了构建系统中对静态API令牌的需求。
相反,包仓库直接验证来自可信持续集成(CI)提供商的发布请求,从而关闭了一个主要的攻击向量。
尽管GitHub最初允许可信发布自然采用,但近期事件加速了推动。攻击者不会等待,维护者现在被敦促立即在所有支持的包管理器中采用可信发布。
维护者当前可采取的措施
保护npm生态系统是共同责任。在GitHub加强基础设施的同时,维护者可立即采取以下措施降低风险:
- 采用可信发布,而非依赖长期有效的API令牌
- 为所有写入和发布操作启用双因素认证,最好在账户、组织和包中要求使用
- 使用基于WebAuthn的双因素认证,而非较弱的TOTP方法
- 定期审计发布权限,移除不必要的令牌或账户
这些措施不仅加固了单个项目,还增强了更广泛生态系统的韧性。
更广阔的图景
Shai-Hulud蠕虫说明了供应链攻击日益复杂化,其中自我复制、令牌窃取和自动化为攻击者创造了强大的倍增效应。随着开源软件嵌入几乎每个企业,此类事件不再是孤立威胁,而是系统性风险。
npm路线图代表了向身份优先控制的关键转变,这些控制可消除令牌滥用并减少账户被盗的影响范围。但仅靠技术修复是不够的。开发人员、维护者和组织必须采用安全默认设置,投资于更强的认证,并领先于攻击者的创新。
开源依赖信任而繁荣,但正如Shai-Hulud事件所示,这种信任是脆弱的。
通过执行更强的发布规则、扩展可信发布并采用现代认证实践,GitHub和更广泛的社区正在朝着更安全的生态系统迈出关键步骤。
教训很明确:保护软件供应链需要警惕、协作和主动采用安全最佳实践。