- 发布日期
热门 JavaScript 套件 keyv 维护者 GitHub 账号遭入侵,导致 npm 生态 444 个软件包...
- 作者

- 姓名
- 荷鲁斯快报
- 社交账号
安全公司StepSecurity近日披露,热门JavaScript套件keyv的维护者Jared Wray的GitHub账号遭到入侵,导致npm生态系统中444个软件包被恶意蠕虫污染。事件在不到4小时内迅速扩散,涉及超过14个组织和2,212个恶意版本。
keyv是一款广泛使用的键值存储工具,每周下载量超过1.5亿次。其维护者Jared Wray还管理着flat-cache、file-entry-cache等热门包,这些包同样每周获得近1.5亿次下载,并被ESLint等常用开发工具间接依赖。此次攻击直接影响了Wray名下的11个npm包。
黑客在控制Wray的GitHub账号后,向keyv、cacheable和ecto三个项目中植入恶意文件并创建新版本。通过利用项目原有的GitHub Actions自动构建和发布流程,恶意代码被上传至npm,成为扩散的起点。恶意包在安装前会执行一个名为setup.mjs的脚本,该脚本先下载合法的Bun JavaScript运行时,随后启动窃取凭据的恶意程序。
恶意程序会搜索NPM、GitHub、AWS、Azure、Google Cloud、Kubernetes及HashiCorp Vault等平台的访问凭证,同时窃取SSH密钥、数据库连接信息,以及Claude、Codex、Cursor等AI开发工具的登录数据。若开发者或企业环境中存在npm发布凭据,蠕虫便会自动查询可管理项目,下载既有代码并植入自身后重新发布。
这种自动传播机制导致蠕虫在4小时内从11个初始包扩散至其他433个软件包,总数达444个。由于部分包存在多个历史版本,攻击者又针对历史版本打包了大量污染版本,最终形成2,212个恶意版本。受影响的组织包括Deliveroo、Picsart、Qlik和ServiceTitan等。
为防止类似攻击,安全团队建议开源项目维护者采用Passkey或实体安全密钥保护账号,降低GitHub Token权限范围,并启用主分支保护和强制代码审查。企业则应为新发布的软件包设置3至7天冷却期,在CI/CD环境中限制包安装命令和外部网络访问,同时监控新版本中异常出现的可执行文件及安装脚本。
此次事件再次凸显开源供应链安全的重要性。随着npm等生态系统的广泛依赖,单一账号的失守可能引发连锁反应。业界需要更严格的访问控制和自动化安全检测,以降低类似风险。