热门 JavaScript 套件 keyv 维护者 GitHub 账号遭入侵,导致 npm 生态 444 个软件包受蠕虫污染
It之家2小时前

IT之家 8 月 5 日消息,安全公司 StepSecurity 披露,热门 JavaScript 套件 keyv 的维护者 Jared Wray 的 GitHub 账号遭到入侵,黑客获得了其管理项目的代码修改和发布权限,并随机向旗下 11 个 npm 包中植入窃取凭证的恶意蠕虫程序。相应恶意蠕虫随后通过受污染的软件包进一步窃取其他开发者的发布凭证,在不到 4 小时内扩散至其他 433 个软件包,使受污染软件包总数达到 444 个,涉及 2,212 个恶意版本以及超过 14 个组织。IT之家注意到,Wray 管理的 11 个受感染软件包分布于 keyv、cacheable 和 ecto 三个 GitHub 项目中,包括 keyv、flat-cache、file-entry-cache、cacheable-request、cacheable 以及 cache-manager 等。其中,keyv 是一款键值存储工具,每周下载量超过 1.5 亿次;flat-cache 和 file-entry-cache 的每周下载量也接近 1.5 亿次,并被 ESLint 等常用开发工具间接使用。黑客控制 Wray 的 GitHub 账号后,在上述三个项目中植入恶意文件,并创建新的软件版本,利用项目原有的 GitHub Actions 自动构建和发布流程,将包含蠕虫程序的 11 个恶意包上传至 npm,成为后续大规模扩散的起点。这些恶意软件包会在安装前执行名为 setup.mjs 的程序,先下载合法的 Bun JavaScript 运行环境,随后启动真正的凭据窃取程序。该程序会搜索 NPM、GitHub、AWS、Azure、Google Cloud、Kubernetes 以及 HashiCorp Vault 等平台的访问凭证,同时窃取 SSH 密钥、数据库连接信息,以及 Claude、Codex、Cursor 等 AI 开发工具的登录数据。如果安装恶意软件包的开发者或企业构建环境中存有 npm 发布凭据,蠕虫便会自动查询该账号拥有管理权限的全部项目,下载已有版本代码,植入自身恶意程序后重新发布恶意版本。这种自动传播机制导致蠕虫进一步扩散至其他 433 个软件包,影响 Deliveroo、Picsart、Qlik 和 ServiceTitan 等组织。由于部分软件包存在多个历史版本,蠕虫针对历史版本又打包出了大量污染版本,因此最终共出现 2,212 个恶意版本。为防止类似攻击再次发生,安全团队建议开源项目维护者采用 Passkey 或实体安全密钥进行账号保护,降低 GitHub Token 权限范围,并启用主分支保护和强制代码审查机制。企业方面则可以针对新发布的软件包版本设置 3 至 7 天冷却期,在 CI / CD 环境中限制软件包安装命令和外部网络访问,同时监控新版本中突然出现的可执行文件以及安装脚本。