这一周对于软件开发生态系统来说是极其动荡的一周。从 PyPI 和 npm 到 Rust 的 Crates.io 和 PHP 的 Packagist,几乎每个主流包管理平台都发现了严重的恶意软件活动,且这些攻击的复杂程度和针对性都达到了新的高度。
为了帮助正在阅读的你更好地了解本轮攻击的全貌,并确保你的开发环境没有受到影响,我将近期曝光的几起重大事件整理如下:
🚨 五大供应链攻击事件速览
| 事件代号 | 主要目标平台 | 攻击规模 | 目标人群 |
|---|---|---|---|
| 🛠️ 鼠疫后门 | npm | 1个恶意包,约676次下载 | Claude AI 工具用户 |
| 🚪 TrapDoor | npm, PyPI, Crates.io | 34个恶意包 + 384+个版本 | Crypto/DeFi, Solana, AI社区开发者 |
| 🐛 GlassWorm | 多平台(VS Code, GitHub等) | C2基础设施被捣毁(活跃已久) | 所有拥有源码和云凭证的开发者 |
| 🌐 Laravel-Lang | Packagist (Composer) | 4个流行PHP包,超700个历史版本被污染 | Laravel PHP 框架开发者 |
| 📦 无名(Packagist) | Packagist (Composer) | 8个Composer包 | PHP/JS 混合技术栈的开发者 |
💣 事件一:npm 包“鼠疫后门”专门窃取 Claude AI 用户数据 (Mouse5212)
攻击者发布了一个名为 mouse5212-super-formatter 的恶意 npm 包,它专门针对 AI 编程工具 Claude 的用户。
- 攻击手法:通过
postinstall脚本自动执行。安装后,它会读取并上传 Claude 用于存储用户上传文件、代码和数据输出的目录(/mnt/user-data)中的所有文件。 - 严重后果:如果被攻击的 AI 对话中包含 API 密钥、云服务凭证或私密代码片段,这些数据将全部泄露。
- 意外插曲:该恶意代码很可能是由 AI 生成的。攻击者犯了一个低级错误,在代码中泄露了自己的 GitHub 私有 token,导致安全公司(OX Security)可以轻松追踪,甚至能查看其窃取的文件。
💣 事件二:TrapDoor 发起史诗级跨生态攻击 (npm/PyPI/Crates.io)
代号 TrapDoor 的攻击是有史以来规模最大、协同性最强的跨平台供应链攻击之一。攻击者同时向 npm、PyPI 和 Rust 的 Crates.io 三大仓库投毒,通过 34 个伪装成安全工具或开发辅助库的恶意包,精准打击开发者。
- 多平台“因地制宜”的执行策略:攻击者针对不同平台的特点,设计了三种不同的“投毒”方式:
- npm (npm):利用
postinstall脚本,安装时自动执行核心恶意载荷trap-core.js。 - PyPI (PyPI):在包被
import时自动执行恶意代码。它会从远程服务器下载 JavaScript 载荷,并通过node -e执行,巧妙地借用 Node.js 环境来完成窃密任务。 - Crates.io (Crates.io):利用 Rust 的编译脚本
build.rs,在编译期执行。恶意代码会扫描本地文件,寻找 Sui 和 Move 等区块链项目的开发者密钥库。
- npm (npm):利用
- 惊人的隐蔽性:安全公司 Socket 的检测数据显示,这些恶意包的中位检测时间仅为 5分27秒,意味着它们在生命周期极短的情况下迅速发动攻击。
- 关键 IOCs (失陷指标):根据 Socket 的报告,相关恶意包的完整列表如下,共计 34 个恶意包,384 个版本:
- Crates.io (6包):
move-analyzer-build,move-compiler-tools,move-project-builder,sui-framework-helpers,sui-move-build-helper,sui-sdk-build-utils - npm (21包):
async-pipeline-builder,build-scripts-utils,chain-key-validator,crypto-credential-scanner,defi-env-auditor,defi-threat-scanner,deployment-key-auditor,dev-env-bootstrapper,eth-wallet-sentinel,llm-context-compressor,mnemonic-safety-check,model-switch-router,node-setup-helpers,project-init-tools,prompt-engineering-toolkit,solidity-deploy-guard,token-usage-tracker,wallet-backup-verifier,wallet-security-checker,web3-secrets-detector,workspace-config-loader - PyPI (7包):
cryptowallet-safety,data-pipeline-check,defi-risk-scanner,env-loader-cli,eth-security-auditor,git-config-sync,solidity-build-guard
- Crates.io (6包):
💣 事件三:GlassWorm 僵尸网络的开发者围剿与瓦解
相比前两个事件,GlassWorm 是一场更加庞大和长期的开发者定向攻击战役。幸运的是,就在本周,CrowdStrike 联合 Google 等合作伙伴,成功同步瓦解了它的全部指挥与控制(C2)基础设施。
- “敏捷”的 C2 架构:GlassWorm 使用了一系列极具韧性的技术来构建其 C2 网络,包括嵌入 Solana 区块链交易、BitTorrent 的 DHT 网络,甚至利用 Google Calendar 的事件标题来下发指令。
- 广泛的攻击手段:
- VS Code 扩展:在 OpenVSX 市场上发布被植入后门的扩展,伪装成
WakaTime等流行工具。 - 代码仓库投毒:利用窃取的凭证,向超过 300 个 GitHub 仓库的主分支强制推送恶意代码。
- 恶意软件包:通过 npm 和 PyPI 等平台传播恶意包。
- VS Code 扩展:在 OpenVSX 市场上发布被植入后门的扩展,伪装成
- 强大的 RAT 功能:其核心载荷
GlasswormRAT是一个功能齐全的 Node.js 木马,能窃取 npm/GitHub 凭证、加密钱包资金,还能部署代理和 VNC 服务器以实现持久化控制。
💣 事件四:Laravel-Lang 包遭遇历史性标签重写攻击
PHP 生态系统的 Packagist 仓库也未能幸免,一个最受欢迎的本地化包 laravel-lang 被黑客以一种“回溯式”的方式利用。
- 新颖的攻击手法(Tag 重写):攻击者没有创建新的恶意版本,而是重写了该项目在 GitHub 上已有的所有 Git 标签(tags),使其指向恶意代码库。这意味着过去发布的超过 700 个历史版本都被“污染”了。
- 隐蔽执行:恶意代码被添加到
src/helpers.php文件中。由于 Composer 的autoload.files机制,这个文件会在每次应用启动时自动加载,恶意代码得以秘密执行。 - 严重后果:该恶意软件会收集 SSH 密钥、云凭证(AWS/GCP/Azure)、环境变量(.env 文件)中的敏感信息,并将它们发送到命令与控制服务器
flipboxstudio.info。
💣 事件五:Packagist 八款 Composer 包暗藏 Linux 后门
几乎同时,另一场针对 PHP 生态的攻击也在进行。攻击者入侵了 8 个 Composer 包的维护者账户,并在其中植入了恶意代码。
- “藏身于 JS”的执行方式:攻击者没有在 PHP 的
composer.json中动手脚,而是将postinstall脚本写进了package.json文件里。这个脚本会在安装时尝试从一个 GitHub Release 地址下载一个 Linux 二进制文件并执行。 - 伪装成系统进程:下载的恶意文件被命名为
gvfsd-network(模仿 GNOME 的虚拟文件系统守护进程),并保存在/tmp/.sshd目录下,试图伪装成系统进程以逃避检测。 - 攻击者账户:相关的 GitHub 账户
parikhpreyash4目前已经无法访问。
🛡️ 给企业和开发者的防御指南
面对本轮密集的攻击,无论你是企业安全团队还是个人开发者,都建议立即采取以下措施进行排查和加固。
🚨 企业级应急响应
- 立即排查内部依赖:使用
npm ls、pip list等命令,检查项目中是否引用了上面提到的恶意包列表,特别是mouse5212-super-formatter和所有TrapDoor相关的包(名单见上文)。 - 审计关键资产:检查是否存在向可疑域名(如
flipboxstudio.info)或 IP 的异常出站流量,尤其是在构建和部署阶段。 - 轮换所有凭证:如果你怀疑或确认有系统受影响,建议立即轮换所有相关的SSH密钥、云服务API密钥、GitHub Token、数据库密码等。
- 清理 AI 数据:对于使用 Claude 等 AI 工具的团队,建议清理并审计
/mnt/user-data目录,确保没有遗留的敏感信息。 - 检查 CI/CD 流水线:检查 GitHub Actions 等 CI/CD 流水线配置,确认没有被恶意脚本篡改(如 T1496 中的 workflow 文件)。
- 审查 AI 项目配置文件:检查项目根目录下的
.cursorrules和CLAUDE.md文件,查找是否存在利用零宽度字符等技巧隐藏的恶意指令,这些可能诱使 AI 助手在“辅助”开发时执行恶意操作。
🛡️ 长期加固与预防措施
- 强制执行依赖锁定:在生产环境中,强制使用
npm ci或pipenv lock等命令,严格依赖锁文件中的确切版本号,防止因依赖混淆等攻击而被意外安装恶意版本。 - 审查所有安装脚本:建立策略,在安装依赖前审查所有
postinstall、preinstall等生命周期脚本的内容。可以考虑使用npm config set ignore-scripts true在关键环境中禁用此功能。 - 实施多层安全扫描:
- 软件组成分析(SCA):将 Snyk、Socket 等工具深度集成到 CI/CD 流程中,实现自动化扫描,并定期运行
npm audit进行检查。 - 端点检测与响应(EDR):在开发者机器和 CI 服务器上部署 EDR 解决方案,监控并阻止异常进程行为,尤其是突然启动的 PHP、Node 或 Python 进程。
- 软件组成分析(SCA):将 Snyk、Socket 等工具深度集成到 CI/CD 流程中,实现自动化扫描,并定期运行
- 建立私有仓库(企业级):对于企业,建立内部的私有包镜像或仓库,并对所有引入的开源包进行严格的审批和扫描,是阻断已知和未知供应链攻击的最有效手段之一。
💎 总结
这一周是软件供应链安全的一个缩影。攻击者正在变得越来越有组织性和策略性:他们将目标从直接攻击服务器,转向攻击拥有最高权限的开发者;他们不仅利用postinstall脚本,还学会在package.json中隐藏后门,甚至“重写历史版本”;他们的攻击目标也从单纯窃取代码,扩展到了窃取云凭证、加密钱包,甚至专门为 AI 工具的数据投毒。
目前公开的信息显示,以上多个攻击事件处于活跃状态,部分恶意包可能仍在仓库中。建议所有开发者立即行动起来,检查依赖。