近期备受关注的供应链攻击暴露了包注册表安全方面的关键漏洞,这促使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维护者可以大幅减少供应链威胁的攻击面。
这些改进不仅能保护单个项目,还能增强软件行业基础架构的完整性。
1. 本版块文章内容及资料部分来源于网络,不代表本站观点,不对其真实性负责,也不构成任何建议。
2. 部分内容由网友自主投稿、编辑整理上传,本站仅提供交流平台,不为该类内容的版权负责。
3. 本版块提供的信息仅作参考,不保证信息的准确性、有效性、及时性和完整性。
4. 若您发现本版块有侵犯您知识产权的内容,请及时与我们联系,我们会尽快修改或删除。
5. 使用者违规、不可抗力(如黑客攻击)或第三方擅自转载引发的争议,联盟不承担责任。
6. 联盟可修订本声明,官网发布即生效,继续使用视为接受新条款。