返回首页

本周供应链攻击大爆发

这一周对于软件开发生态系统来说是极其动荡的一周。从 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 个伪装成安全工具或开发辅助库的恶意包,精准打击开发者。

  • 多平台“因地制宜”的执行策略:攻击者针对不同平台的特点,设计了三种不同的“投毒”方式:
    1. npm (npm):利用 postinstall 脚本,安装时自动执行核心恶意载荷 trap-core.js
    2. PyPI (PyPI):在包被 import 时自动执行恶意代码。它会从远程服务器下载 JavaScript 载荷,并通过 node -e 执行,巧妙地借用 Node.js 环境来完成窃密任务。
    3. Crates.io (Crates.io):利用 Rust 的编译脚本 build.rs,在编译期执行。恶意代码会扫描本地文件,寻找 Sui 和 Move 等区块链项目的开发者密钥库。
  • 惊人的隐蔽性:安全公司 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

💣 事件三:GlassWorm 僵尸网络的开发者围剿与瓦解

相比前两个事件,GlassWorm 是一场更加庞大和长期的开发者定向攻击战役。幸运的是,就在本周,CrowdStrike 联合 Google 等合作伙伴,成功同步瓦解了它的全部指挥与控制(C2)基础设施

  • “敏捷”的 C2 架构:GlassWorm 使用了一系列极具韧性的技术来构建其 C2 网络,包括嵌入 Solana 区块链交易BitTorrent 的 DHT 网络,甚至利用 Google Calendar 的事件标题来下发指令。
  • 广泛的攻击手段
    • VS Code 扩展:在 OpenVSX 市场上发布被植入后门的扩展,伪装成 WakaTime 等流行工具。
    • 代码仓库投毒:利用窃取的凭证,向超过 300 个 GitHub 仓库的主分支强制推送恶意代码。
    • 恶意软件包:通过 npm 和 PyPI 等平台传播恶意包。
  • 强大的 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 目前已经无法访问。

🛡️ 给企业和开发者的防御指南

面对本轮密集的攻击,无论你是企业安全团队还是个人开发者,都建议立即采取以下措施进行排查和加固。

🚨 企业级应急响应

  1. 立即排查内部依赖:使用npm lspip list等命令,检查项目中是否引用了上面提到的恶意包列表,特别是 mouse5212-super-formatter 和所有 TrapDoor 相关的包(名单见上文)。
  2. 审计关键资产:检查是否存在向可疑域名(如 flipboxstudio.info)或 IP 的异常出站流量,尤其是在构建和部署阶段。
  3. 轮换所有凭证:如果你怀疑或确认有系统受影响,建议立即轮换所有相关的SSH密钥、云服务API密钥、GitHub Token、数据库密码等。
  4. 清理 AI 数据:对于使用 Claude 等 AI 工具的团队,建议清理并审计 /mnt/user-data 目录,确保没有遗留的敏感信息。
  5. 检查 CI/CD 流水线:检查 GitHub Actions 等 CI/CD 流水线配置,确认没有被恶意脚本篡改(如 T1496 中的 workflow 文件)。
  6. 审查 AI 项目配置文件:检查项目根目录下的 .cursorrulesCLAUDE.md 文件,查找是否存在利用零宽度字符等技巧隐藏的恶意指令,这些可能诱使 AI 助手在“辅助”开发时执行恶意操作。

🛡️ 长期加固与预防措施

  1. 强制执行依赖锁定:在生产环境中,强制使用 npm cipipenv lock 等命令,严格依赖锁文件中的确切版本号,防止因依赖混淆等攻击而被意外安装恶意版本。
  2. 审查所有安装脚本:建立策略,在安装依赖前审查所有 postinstallpreinstall 等生命周期脚本的内容。可以考虑使用 npm config set ignore-scripts true 在关键环境中禁用此功能。
  3. 实施多层安全扫描
    • 软件组成分析(SCA):将 Snyk、Socket 等工具深度集成到 CI/CD 流程中,实现自动化扫描,并定期运行 npm audit 进行检查。
    • 端点检测与响应(EDR):在开发者机器和 CI 服务器上部署 EDR 解决方案,监控并阻止异常进程行为,尤其是突然启动的 PHP、Node 或 Python 进程。
  4. 建立私有仓库(企业级):对于企业,建立内部的私有包镜像或仓库,并对所有引入的开源包进行严格的审批和扫描,是阻断已知和未知供应链攻击的最有效手段之一。

💎 总结

这一周是软件供应链安全的一个缩影。攻击者正在变得越来越有组织性和策略性:他们将目标从直接攻击服务器,转向攻击拥有最高权限的开发者;他们不仅利用postinstall脚本,还学会在package.json中隐藏后门,甚至“重写历史版本”;他们的攻击目标也从单纯窃取代码,扩展到了窃取云凭证、加密钱包,甚至专门为 AI 工具的数据投毒。

目前公开的信息显示,以上多个攻击事件处于活跃状态,部分恶意包可能仍在仓库中。建议所有开发者立即行动起来,检查依赖。