美国网络安全与基础设施安全局(CISA)发布了一则紧急安全警报,以应对针对全球最大的JavaScript包注册库npmjs.com的大规模软件供应链攻击。
一种名为“沙虫”(Shai-Hulud)的自复制蠕虫已入侵500多个npm包,并注入了恶意代码。这些恶意代码通过滥用开发者凭证和npm发布流程进行恶性传播。
自我复制的npm供应链威胁
据推测,“沙伊-胡鲁德”(Shai-Hulud)先是通过一个被攻破的维护者账户获得了初始访问权限,随后部署了一个复杂的有效载荷,用于扫描环境变量和本地配置文件中存储的敏感凭据。
这种恶意软件针对GitHub个人访问令牌(PATs)以及亚马逊云服务(AWS)、谷歌云平台(GCP)和微软Azure的API密钥,它利用了常见的持续集成/持续部署(CI/CD)操作中令牌被意外留存的情况。
一旦获取到凭证,这些凭证就会被窃取到攻击者控制的端点,同时通过GitHub/user/repos API上传到名为Shai-Hulud的公共GitHub仓库。
随后,Shai-Hulud利用自动循环,通过被盗的令牌向npm注册表进行身份验证。它借助npm命令行界面,将恶意JavaScript注入到受感染开发者依赖树中其他包的入口文件(通常是index.js)中。
注入后,该蠕虫会执行“npm version patch && npm publish –access public”来发布植入了木马的版本,从而使其得以持续传播。
这种蠕虫的自我复制机制会利用传递依赖:任何依赖于受感染包之一的项目都可能在不经意间成为新的宿主。
缓解措施
CISA建议立即采取行动,检测并补救这一安全漏洞:
- 检查所有package-lock.json和yarn.lock文件,找出2025年9月16日之后发布的包。使用npm audit和静态分析工具标记意外的代码变更或额外的postinstall脚本。
- 轮换所有开发者凭证,并撤销暴露的GitHub个人访问令牌(PAT)。对每个开发者账户强制实施防钓鱼的多因素认证(MFA),尤其是针对GitHub和npm registry登录。
- 实施入侵检测系统/入侵防御系统(IDS/IPS)规则,以监控异常的SSH和HTTPS连接。拦截发往已知可疑端点的出站流量,包括webhook.site域,并审计防火墙日志,查看是否存在意外的DNS查询以及向陌生IP范围的出站连接。
- 移除不必要的GitHub应用程序和OAuth权限。启用分支保护规则、秘密扫描和Dependabot安全更新。审核webhook和仓库级别的秘密,以检查未授权的更改。
- 将依赖项固定到2025年9月16日之前发布的已知安全版本。在package.json中设置严格的语义化版本范围(例如,“lodash”:“4.17.21”),以防止无意中更新到受感染的版本。
在整个开发流程中加强警惕对于阻止该蠕虫的传播以及维护npm生态系统的完整性至关重要。
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。


评论