近期备受关注的供应链攻击暴露了包注册表安全方面的关键漏洞,这促使GitHub推出了一系列防御措施,旨在加强npm生态系统的安全性。
“GitHub通过严格的身份验证、精细的令牌和可信发布增强npm的安全性”标志着在防御开源软件免受账户接管和恶意安装后有效负载攻击方面的最新里程碑。
账户接管和安装后恶意软件
2025年9月中旬,npm注册表遭遇了沙虫攻击</b0的冲击,这是一种自我复制的蠕虫病毒,它利用被盗用的维护者凭证,向广泛使用的软件包中注入恶意JavaScript代码。
通过植入能窃取环境变量和API密钥的安装后脚本,这种蠕虫威胁要在数千台开发者机器上创建持久的后门。
攻击者部署了包含混淆的PowerShell单行命令和恶意脚本标签的入侵指标(IoC),以窃取令牌和凭据。
24小时内有500多个受感染的模块被下架,npm也阻止了包含该蠕虫攻击指标的上传。
这一漏洞凸显了恶意行为者如何利用薄弱的身份验证和权限过于宽松的令牌。如果没有多因素验证或限定范围的令牌,一个被盗的传统令牌就可能成为提升权限、传播恶意软件或深入渗透关键项目的立足点。
防止受损的安全措施
为了打击令牌滥用并防止未来的供应链受损,GitHub将推出三项核心措施:
严格的身份验证
所有npm发布操作都将要求强制使用FIDO2/WebAuthn进行双因素认证(2FA)。传统的基于时间的一次性密码(TOTP)方法将被弃用,从而消除与共享种子值或短信备用相关的漏洞。
粒度令牌
开发者将生成具有限定权限的短期精细访问令牌,例如read:packages(读取:包)或publish:package-name(发布:包名称),其最长有效期为7天。
经典令牌将被完全弃用,从而消除了无限范围凭据永久存在的风险。
可信发布
借助OpenSSF的可信发布者规范,维护者可以通过OIDC将包发布与已建立的身份提供商绑定。
这消除了在CI/CD流水线中嵌入API令牌的需求,减少了构建过程中的暴露风险。
其他措施包括禁用本地发布的令牌绕过功能、扩大受支持的身份提供商名单,以及发布迁移指南以无缝整合这些变更。
GitHub计划分阶段推出,并配备可配置的执行窗口,使各组织能够调整CI工作流并更新自动化脚本,同时避免中断。
随着开源生态系统的不断扩展,安全仍然是一项共同的责任。通过采用基于FIDO2的双因素认证、迁移到细粒度令牌以及采用可信发布,npm维护者可以大幅减少供应链威胁的攻击面。
这些改进不仅能保护单个项目,还能增强软件行业基础架构的完整性。
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。


评论