🚨 npm 投毒预警|Mini Shai-Hulud 蠕虫再度爆发
🚨 npm 投毒预警|Mini Shai-Hulud 蠕虫再度爆发
📅 时间:2026 年 5 月 19 日 UTC 01:39–02:06,两波集中投毒
🎯 规模:317 个 npm 包、637 个恶意版本
👤 攻击者账号:atool
📦 高风险被污染的包(按下载量排序)
• size-sensor(月下载 420 万)
• echarts-for-react(380 万)
• @antv/scale(220 万)
• timeago.js(115 万)
• 其余为 200+ 个 @antv/* 系列(图表/可视化生态几乎全军覆没)
☠️ 恶意行为
- 所有被投毒版本在 package.json 中注入 "
preinstall": "bun run index.js",只要 npm install 就会执行 498KB 混淆 Bun 脚本 - 通过 optionalDependencies 注入 "
@antv/setup": "github:antvis/G2#<commit>",利用 GitHub 孤儿 commit 隐藏 payload,伪装 AntGroup 员工签名 - Payload SHA256:a68dd1e6a6e35ec3771e1f94fe796f55dfe65a2b94560516ff4ac189390dfa1c
🕵️ 它会偷什么 / 干什么
• 扫描并外泄:.ssh、.aws/credentials、.npmrc、.docker/config.json、.kube/config、Vault token、K8s ServiceAccount、80+ 环境变量
• 探测 AWS EC2 元数据 169.254.169.254、ECS 169.254.170.2
• 通过 GitHub Commits Search API 做死信盒 C2,关键词触发:firedalazer
• 投毒仓库命名规律:{沙丘词1}-{沙丘词2}-{0-999},如 harkonnen-melange-742
• 滥用 npm OIDC + Sigstore,实现"无密钥"自动接力发包
• 劫持 AI 编码代理:在 .claude/settings.json 注入 SessionStart 钩子、在 .vscode/tasks.json 注入 runOn: folderOpen,下次打开项目即触发
🔧 本地持久化痕迹(用来自查)
• systemd: ~/.config/systemd/user/kitty-monitor.service
• launchd(macOS): ~/Library/LaunchAgents/com.user.kitty-monitor.plist
• C2 脚本: ~/.local/share/kitty/cat.py
• 状态文件: /var/tmp/.gh_update_state
• Token 轮询: ~/.local/bin/gh-token-monitor.sh
• CI 工作流: .github/workflows/codeql.yml(名为 Run Copilot)+ 分支 chore/add-codeql-static-analysis
✅ 自查命令(macOS/Linux 本地执行)
1. 项目依赖里搜污染包
grep -rE '"@antv/|"echarts-for-react"|"size-sensor"|"timeago\.js"|"@antv/setup"' \
package.json package-lock.json pnpm-lock.yaml 2>/dev/null
2. 系统持久化痕迹
ls ~/.local/share/kitty/cat.py \
~/Library/LaunchAgents/com.user.kitty-monitor.plist \
~/.config/systemd/user/kitty-monitor.service \
/var/tmp/.gh_update_state 2>/dev/null
3. AI 代理配置劫持
find ~ -name 'settings.json' -path '*/.claude/*' -exec grep -l SessionStart {} \;
find . -path '*/.vscode/tasks.json' -exec grep -l folderOpen {} \;
🛡 中招处置
- 立即轮换所有密钥:npm token、GitHub PAT、AWS Key、SSH Key、数据库密码、Vault token、K8s SA token
- 删除上述持久化文件与服务
- 审计 npm OIDC 发包历史与 Sigstore 透明日志(rekor.sigstore.dev)
- 锁版本:用 package-lock.json 钉死,禁止 semver 范围自动解析到 5/19 之后的版本
- CI 中限制 IMDSv2 跃点数、隔离 Docker socket
📚 原文:https://safedep.io/mini-shai-hulud-strikes-again-314-npm-packages-compromised/
⚠️ 用了 echarts-for-react / @antv/* / size-sensor / timeago.js 的项目请立刻自查 lockfile。Vue/React 全栈项目尤其要查图表看板模块。
总结:前端真是娱乐圈,axios投毒还没过去多久,这又一次前端投毒事件!==
文章作者:大神K
版权说明:本文为原创内容,转载请注明出处。