Miasma npm供应链蠕虫攻击深度解析:Red Hat官方包被劫持,Phantom Gyp技术绕过所有安全防线

2026年6月1日,一场代号为Miasma的供应链蠕虫攻击席卷npm生态,32个Red Hat官方@redhat-cloud-services包被注入自传播窃密恶意软件。攻击者利用全新的Phantom Gyp技术通过binding.gyp文件实现安装时执行,完全绕过了传统安全检测机制。这是继TrapDoor和Axios事件后,2026年npm生态遭遇的最严重供应链攻击。
攻击时间线与波及范围

Miasma攻击分为两个关键波次。第一波发生在2026年6月1日,攻击者劫持了一名Red Hat @redhat-cloud-services维护者的GitHub账号和CI/CD流水线,将恶意代码注入到32个官方npm包中。这些包的周下载量约8万次,被数千家企业和开发项目依赖。与传统typosquatting攻击不同,Miasma直接污染了合法维护者的包——这意味着包的来源、签名、发布记录全部合法,npm provenance证明也无法阻止。
第二波在6月3日爆发,Miasma引入了全新的Phantom Gyp技术。攻击者在@vapi-ai/server-sdk(月下载量超过40.8万次)等包中植入恶意binding.gyp文件。这个波次影响了57个npm包,涉及286个以上恶意版本。整个攻击链条展现了供应链攻击的进化方向:从简单的typosquatting到直接劫持维护者账号,再到利用构建系统配置文件实现隐蔽执行。
| 攻击波次 | 日期 | 受影响包数量 | 核心技术 | 影响范围 |
|---|---|---|---|---|
| 第一波 | 2026-06-01 | 32个@redhat-cloud-services包 | CI/CD流水线劫持 | 8万周下载量 |
| 第二波 | 2026-06-03 | 57个包(286+恶意版本) | Phantom Gyp(binding.gyp) | 40.8万月下载量 |
| 合计 | — | 89个包 | 自传播蠕虫 | 全球开发者生态 |
Phantom Gyp:颠覆npm安全认知的技术突破

Phantom Gyp是Miasma攻击中最值得安全从业者关注的技术创新。传统npm安全检测聚焦于package.json中的preinstall、postinstall等生命周期脚本——这是所有npm安全指南都会告诫开发者注意的风险点。但Phantom Gyp完全绕过了这一防线。
binding.gyp是Node.js原生扩展(native add-ons)使用的构建配置文件,由node-gyp在npm install过程中自动解析和执行。攻击者在binding.gyp中嵌入恶意命令,当npm install触发node-gyp构建时,恶意代码随之执行。关键在于:package.json中没有任何install script声明,npm audit不会标记,签名验证也不会触发。这就像在一封看起来完全正常的信件中藏了一张需要紫外线灯才能看到的纸条。
# 检测Phantom Gyp的快速方法
# 1. 检查node_modules中是否有可疑的binding.gyp
find node_modules/ -name "binding.gyp" -exec grep -l "action\|command\|exec" {} \;
# 2. 对比package.json中是否有native addon依赖
# 如果包声称是纯JS但包含binding.gyp,高度可疑
ls node_modules/*/binding.gyp 2>/dev/null
# 3. 使用npm audit检查已知恶意包
npm audit --json | jq '.vulnerabilities | to_entries[] | select(.value.severity == "critical")'
自传播蠕虫机制:Mini Shai-Hulud的进化
Miasma建立在2026年5月12日开源的Mini Shai-Hulud代码库之上,但进行了显著进化。感染后的恶意代码会自动扫描受感染机器上的以下凭据来源:
- 环境变量——API密钥、数据库密码、云服务Token
- SSH私钥——~/.ssh/目录下的所有密钥文件
- npm/yarn配置——.npmrc中的authToken
- Git凭据——.git-credentials和credential store
- 浏览器存储——Cookie和LocalStorage中的Token
窃取的凭据被回传到攻击者控制的C2服务器后,蠕虫会利用窃取的npm token自动向受害者维护的其他包中注入恶意代码,形成自我传播链。这意味着一个被感染的开发者可能在不知情的情况下污染其维护的所有开源包,进而感染下游所有使用者。根据CybelAngel的分析,在Miasma正式爆发前7周,相关信息窃取器日志中就已经出现了异常凭据外传的迹象。
CI/CD流水线劫持:签名和证明机制的失败

Miasma攻击暴露了npm供应链安全基础设施的一个根本性缺陷。npm provenance(来源证明)机制的设计初衷是让用户确认包确实从可信的CI/CD系统构建和发布。但当攻击者直接劫持了维护者的GitHub账号和关联的CI/CD流水线时,恶意代码就通过合法的构建系统发布了——provenance签名完全有效。
RECATOOLS的安全分析指出,这次攻击不是通过窃取npm publish token,而是通过劫持维护者的GitHub账号来实现的。攻击者获得了GitHub OAuth访问权限后,可以修改仓库代码、触发CI/CD构建,npm的自动化发布流程会将包含恶意代码的包正式发布到registry。签名证明变成了恶意代码的"合法身份证"。
# 检查已安装包的provenance信息
npm audit signatures
# 检查包的构建来源
npm view @redhat-cloud-services/insights-chrome-builder dist --json | jq '.integrity'
# 强制使用lockfile防止意外升级
npm ci --ignore-scripts # 跳过所有install脚本后再手动审查
企业应急响应指南

面对Miasma级别的供应链攻击,企业需要采取多层防御策略。首先是对当前项目依赖进行紧急审计,然后建立长效防护机制。
# 紧急审计脚本:检查是否安装了受影响的包
#!/bin/bash
AFFECTED="@redhat-cloud-services @vapi-ai/server-sdk"
echo "=== Miasma Supply Chain Audit ==="
for pkg in $AFFECTED; do
if [ -d "node_modules/$pkg" ]; then
echo "[CRITICAL] Found: $pkg"
ls -la "node_modules/$pkg/binding.gyp" 2>/dev/null
fi
done
# 检查所有binding.gyp文件
echo "=== Suspicious binding.gyp files ==="
find node_modules/ -name "binding.gyp" 2>/dev/null | while read f; do
if grep -qE "action|command|exec|curl|wget|bash" "$f"; then
echo "[WARNING] Suspicious: $f"
cat "$f"
fi
done
# 检查.npmrc中的token是否泄露
if [ -f ".npmrc" ]; then
echo "=== .npmrc found - check for token exposure ==="
grep -c "authToken" .npmrc
fi
| 防御措施 | 实施难度 | 防护效果 | 优先级 |
|---|---|---|---|
| npm ci替代npm install | 低 | 中——锁定依赖版本 | 立即执行 |
| --ignore-scripts + 手动审查 | 中 | 高——阻止install脚本执行 | 立即执行 |
| 审计所有binding.gyp文件 | 低 | 高——检测Phantom Gyp | 立即执行 |
| 轮换所有npm token和SSH密钥 | 中 | 关键——防止蠕虫传播 | 24小时内 |
| 启用npm provenance验证 | 低 | 中——但需注意局限性 | 本周内 |
| 部署SCA工具持续监控 | 高 | 高——实时检测恶意依赖 | 本月内 |
2026年npm供应链攻击态势对比
Miasma不是孤立事件。2026年上半年npm生态遭受了前所未有的供应链攻击浪潮。ReversingLabs发布的2026年软件供应链安全报告显示,恶意开源包数量同比增长73%。Sonatype的统计更为惊人:2025年新增超过45.46万个恶意开源包,累计阻断的恶意包总数突破123.3万,同比增长75%。
| 攻击事件 | 时间 | 攻击手法 | 受影响包数 | 特征 |
|---|---|---|---|---|
| Axios RAT | 2026-03-31 | 版本劫持 | 2个(1亿+下载) | 朝鲜APT植入RAT |
| TanStack | 2026-05-11 | GitHub Actions劫持 | 42个npm包 | CI/CD信任链破坏 |
| TrapDoor | 2026-05 | 跨生态typosquatting | 34个(384版本) | npm+PyPI+Crates.io |
| Miasma | 2026-06-01 | CI流水线+Phantom Gyp | 89个 | 自传播蠕虫 |
| AUR Atomic Arch | 2026-06-11 | 孤儿包劫持 | 400+ | Rust infostealer+eBPF rootkit |
对AI开发工具链的特殊威胁
Miasma攻击对AI/ML开发社区的威胁尤为严重。受感染的@vapi-ai/server-sdk是一个语音AI服务的官方SDK,月下载量超40万次,被大量AI应用和聊天机器人项目依赖。AI开发工作流通常涉及大量敏感API密钥(OpenAI、Anthropic、Google等),一旦被Miasma蠕虫窃取,攻击者可以获取对昂贵AI推理服务的未授权访问。
更危险的是,AI开发项目往往依赖复杂的依赖链——一个典型的AI应用可能有数百个间接依赖。npm的扁平化node_modules结构意味着即使你的package.json只直接依赖10个包,实际安装的可能是数百个包,其中任何一个被污染都会影响整个项目。Hive Security的分析指出,Miasma是首个明确针对AI Agent工具链进行优化的供应链蠕虫。
# AI项目依赖安全检查
# 1. 列出所有直接和间接依赖
npm ls --all --json | jq '.dependencies | length'
# 2. 检查依赖深度(过深=攻击面大)
npm ls --all 2>/dev/null | grep -c "├──\|└──"
# 3. 使用Socket.dev检查依赖风险
npx socket-npm install # 替代npm install的安全方案
供应链安全的范式转移
Miasma攻击标志着供应链安全进入新阶段。过去的安全模型假设"来自合法CI/CD系统的签名包是可信的"——这个假设现在被彻底推翻。安全社区需要转向零信任供应链模型:
第一,引入运行时行为监控。不仅在安装阶段检查,更要在运行时监控包的网络请求、文件访问和进程创建。第二,采用依赖锁定和完整性校验。所有生产项目必须使用npm ci而非npm install,并通过lockfile integrity字段验证文件完整性。第三,建立包级SBOM(软件物料清单)。每个部署单元都应有完整的依赖图谱,便于在新型攻击出现时快速排查影响范围。
正如CybelAngel在Miasma分析中指出的,infostealer日志在攻击爆发前7周就出现了异常信号。这意味着如果我们有更好的供应链监控基础设施,这次攻击是可以在大规模扩散前被拦截的。供应链安全不只是技术问题,更是信息共享和响应速度的竞赛。
数据来源与参考文献
- TheHackersNews. "Miasma Supply Chain Attack Compromises Red Hat npm Packages." thehackernews.com, 2026-06.
- StepSecurity. "Miasma npm Supply Chain Attack: Self-Spreading Worm via binding.gyp." stepsecurity.io, 2026-06.
- Hive Security. "Miasma and Mini Shai-Hulud: When npm Malware Goes Worm." hivesecurity.gitlab.io, 2026-06.
- CybelAngel. "Miasma Supply Chain Attack: the Seven-Week Credential Trail." cybelangel.com, 2026-06.
- RECATOOLS. "Miasma npm Supply-Chain Attack: Defending CI/CD." recatools.com, 2026-06.
- TechTimes. "Red Hat npm Packages Compromised, 57 More Follow." techtimes.com, 2026-06-05.
- ReversingLabs. "2026 Software Supply Chain Security Report." reversinglabs.com, 2026.
- Sonatype. "2026 State of the Software Supply Chain Report." sonatype.com, 2026.
- Aikido Security. "Red Hat npm Packages Compromised to Spread Credential-Stealing Worm." aikido.dev, 2026.
评论