2026年8月4日,一名攻击者接管了keyv维护者的GitHub账户——keyv是一款键值缓存库,每周在npm上的下载量约为数亿次——并在该维护者整个软件包系列中植入了一个窃取凭据的蠕虫,涉及的软件包包括cacheable、flat-cache、file-entry-cache和cache-manager。 该攻击被命名为“ChainDrop”,随后蔓延至数百个其他软件包,这些软件包的月安装量总计超过20亿次。
其危险之处不在于下载量,而在于恶意代码是如何获得信任的。攻击者通过该项目自身的自动化发布管道发布了恶意代码,因此这些被植入恶意代码的版本具有有效的来源证明:即经过签名的证明,表明该软件包是由官方管道根据真实源代码构建的。这种证明本应是一种安全信号。在此案例中,该证明是真实的,因为发布管道本身已被入侵。对于开发人员或检查签名的安全工具而言,恶意版本看起来完全真实可信。
ChainDrop 是研究人员自 2025 年 9 月以来持续追踪的一系列攻击活动中的最新一波:Shai-Hulud 1.0(2025 年 9 月)、2.0(2025 年 11 月)以及Mini Shai-Hulud 第四波(2026 年 5 月)。每次攻击的规模都在扩大,后续变种采用了更具侵略性的传播方式,并利用了更广泛的供应链漏洞。
目前已知情况(2026年8月6日)
- 日期:keyv@6.0.0 已被确认为起始点,该信息于2026年8月4日发布。
- 入侵点:此次攻击始于一名维护者的 GitHub 账户遭到入侵,而恶意版本是通过该项目的正规发布流程发布的。
- 规模:虽然各追踪工具的统计数据有所差异,但所有报告均指出这是一起规模极其庞大的 npm 供应链安全事件。StepSecurity 早期报告称涉及 435 个包/1,557 个版本,而 Aikido 及后续报告将总数进一步上调,部分估计显示涉及超过 1,300 个包,月下载量约为 20 亿次。
- 有效载荷:存在一条通过 setup.mjs 进行的预安装路径,该路径会下载 Bun 并启动一个经过高度混淆的凭证窃取有效载荷。
- 来源:研究人员将其归类为Shai-Hulud恶意软件家族。
一个被用来对付自身的可信系统
ChainDrop 之所以尤其令人担忧,在于它并未依赖花哨的漏洞利用或虚假下载网站,而是利用了正常的软件供应链——即数百万开发者所使用的同一套软件包发布和安装流程。
从实际角度来看,这意味着某个软件包表面上看似合法,却暗中携带了会在安装过程中激活的恶意代码。安全团队表示,该恶意软件旨在从开发人员机器和 CI/CD 系统中窃取机密信息,包括 GitHub 令牌、npm 凭据、AWS 密钥、Kubernetes 机密以及其他访问数据。
更广泛的风险不仅限于开发者。任何使用受影响软件包的组织都可能通过构建系统、依赖关系和自动化发布管道间接受到影响。
ChainDrop 提醒我们,开源依赖项是一种商业风险,而不仅仅是开发人员需要关注的问题。
这不仅是开发人员面临的风险,更是企业面临的风险
对于任何依赖 JavaScript 和 Node.js 软件的组织而言,ChainDrop 提醒我们:开源依赖项是一种业务风险,而不仅仅是开发人员需要关注的问题。
受损的软件包可能会通过依赖关系和构建系统被间接引入,从而导致凭证被盗、云基础设施遭到未经授权的访问,以及大规模的密钥轮换和事件响应。当软件完整性、访问控制和第三方风险纳入您的控制环境时——正如PCI DSS、DORA、NIS2和CMMC所规定的那样——这些风险也直接关系到合规性和治理。
建议立即采取的行动
如果您可能在 2026 年 8 月 4 日或之后安装了受影响的软件包:
- 扫描依赖项: 生成 SBOM,并根据已知恶意版本扫描依赖项
- 撤销前的截图:在轮换令牌之前,请先对受影响的系统进行截图。该恶意软件会监听凭据撤销操作,若您先进行令牌轮换,它可能会触发相应处理程序。
- 轮换暴露的密钥:轮换所有可访问的密钥(npm 令牌、GitHub PAT、SSH 密钥、云服务凭证),并强制启用多因素认证(MFA)
- 按精确版本进行核对,而非按名称:应 与精确解析后的版本匹配 ,而非软件包名称;事件发生期间注册表标签发生了变化
- 删除仓库级别的钩子:检查 .claude/settings.json 和 .vscode/tasks.json,而不仅仅是 node_modules
- 审核 CI/CD:审核 CI/CD 和 GitHub Actions,以检查是否存在意外发布或新工作流
利用 SBOM 发现您的风险敞口
难点在于可识别性:被篡改的版本深藏在依赖关系树中,且看起来与正版无异。当我们在MetaDefender ™(Software Supply Chain )中使用SBOM扫描受影响的软件包时,这些被篡改的版本被标记为可疑,而非因其来源而受到信任。



由此得出的教训是,抵御此类攻击的可靠方法是检查组件的内容,而不是信任其来源。
主要收获
- 来源信息仅能证明来源,而非完整性。即使在遭到入侵的管道上,有效的签名仍会生成一个经过签名的恶意软件包。应验证内容本身,而不仅仅是验证声明。
- 安装已不再是唯一的触发条件。仓库级别的 IDE 和代理钩子可以在打开时执行。请将代码审查范围扩展到 npm install 之外。
- 此次攻击活动仍在持续。ChainDrop 是自 2025 年 9 月以来不断升级的一系列攻击事件中的最新一波。如果将任何单一事件视为已解决,却未解决其背后的攻击路径和凭证管理漏洞,就会为下一次攻击留下可乘之机。
