研究人员披露,一起复杂的供应链攻击入侵了 Nx NPM 包——一款由 AI 驱动的单体仓库(monorepo)构建系统,每周下载量超过 460 万次。此次事件导致大量开发者的敏感凭证泄露至公开可访问的 GitHub 仓库。
事件经过
此次入侵通过 恶意更新实现,攻击者在 Nx 包中植入了利用 AI CLI 工具和 post-install 脚本 的恶意代码,用于收集凭证并外传数据。
事件由 Wiz 安全研究团队披露,他们指出:
· 恶意版本于 2025 年 8 月 26 日 被上传至 npm registry,涉及 Nx 主包及多个子模块。
· 在这些版本中,一个名为 telemetry.js 的文件被注入 Linux/macOS 定向的恶意负载,并通过 npm 的 post-install 脚本触发。
· 一旦执行,恶意代码会搜索并窃取敏感资产,包括加密货币钱包、.env 文件、SSH 私钥、GitHub 认证令牌以及 npm token。
Nx 由 Nrwl 开发,是一款智能构建平台,广泛应用于 Angular、React、Node.js 等前后端框架的单体仓库管理。由于其已深度集成至 VSCode 插件、create-nx-workspace 脚手架以及 CI/CD 工具链,此次攻击波及范围极为广泛。
攻击手法
恶意代码通过利用已安装的 AI CLI 工具(包括 Anthropic Claude、Google Gemini、Q)进行外传。攻击者滥用这些工具的不安全参数(如 --dangerously-skip-permissions
和 --trust-all-tools
),从受害系统提取文件数据。
提取的数据经过多重 Base64 编码 后,被上传至攻击者在受害者 GitHub 账户下新建的仓库中。仓库名称遵循固定模式:
s1ngularity-repository
s1ngularity-repository-0
s1ngularity-repository-1
GitHub 于 8 月 27 日 9:00 UTC 介入并禁用了已知恶意仓库,但攻击发生的 8 小时窗口可能已足够攻击者甚至其他第三方克隆数据。
根据 Wiz 报告:
· 存在数千个相关仓库
· 泄露数据包括 1000+ 有效 GitHub token、数十个云与 npm 凭证、约 2 万个文件
· 恶意代码不仅在开发者本地执行,还可能在 GitHub Actions 等 CI 流水线中触发
受影响版本
- nx:20.9.0 ~ 20.12.0,21.5.0 ~ 21.8.0
- @nx/devkit:20.9.0,21.5.0
- @nx/enterprise-cloud:3.2.0
- @nx/eslint, @nx/js, @nx/key, @nx/node, @nx/workspace:20.9.0 与 21.5.0
攻击痕迹
研究人员还发现了如下关联伪迹:
- 修改 Shell 配置文件(
/.bashrc、/.zshrc),加入sudo shutdown -h 0
,阻止用户调试感染 - 在
/tmp
目录中生成临时文件(如inventory.txt
,.bak
),列出敏感路径 - 调用 GitHub API 上传数据,相关文件命名为
results.b64
Step Security 验证了该恶意行为,指出关机命令的目的是封锁用户排查;Wiz 也确认攻击中存在对 AI 工具的侦察性滥用。
应对建议
受影响用户应立即采取以下措施:
-
移除恶意版本:执行
rm -rf node_modules && npm cache clean --force
,并从 npm 重新安装干净版本; -
清理系统残留:手动检查并删除
/.bashrc、/.zshrc 中的恶意命令及 /tmp 下的临时文件; - 审计 GitHub 账户:排查是否存在以 “s1ngularity” 命名的仓库,检查审计日志中的可疑 API 调用;
- 撤销与重置凭证:包括 GitHub token、npm token、SSH key、云凭证与环境变量;
- 加密货币防护:如钱包私钥被泄露,应立即转移资金;
- 使用 Wiz 发布的 YARA 规则与 IoC 检测潜在入侵迹象。
此次事件再次提醒,供应链攻击正在快速演化,甚至利用 AI 工具进行渗透与外传。开发者和企业必须建立严格的软件供应链安全策略,避免成为下一个受害者。
发表评论
您还未登录,请先登录。
登录