跳到主要内容

TrapDoor 供应链攻击分析:跨生态系统加密货币窃取与 AI 定向注入技术

· 阅读需 15 分钟
ICE Lab
Institute of Cyber Environment

摘要

2026年5月22日至5月24日,一场代号 TrapDoor 的大规模跨生态系统供应链攻击活动被披露。攻击者同时针对 npm、PyPI 和 Crates.io 三大软件包仓库发布超过 34 个恶意包及 384 余个关联版本,专门针对加密货币、DeFi、Solana 生态及 AI 开发社区的开发者群体。本次攻击展现出高度的跨平台协调性,利用各生态系统特有的执行机制实现恶意代码触发,并创新性地引入 AI 编程助手配置投毒技术。本文从攻击基础设施、多平台载荷机制、AI 定向注入与数据窃取模型四个维度进行技术分析。

关键词:供应链攻击;跨生态攻击;npm;PyPI;Crates.io;AI 投毒

1. 引言

软件供应链攻击已成为当前最具威胁性的攻击范式之一。2026年以来,Shai-Hulud、node-ipc 劫持等系列攻击事件表明,攻击者正从机会主义的 typosquatting 向高度组织化的定向攻击演进。TrapDoor 是该趋势的最新代表——它并非模仿流行包名诱骗随机用户安装,而是伪装成特定领域专业工具,精准定位加密货币与 AI 开发等高价值目标群体。

TrapDoor 的特殊之处在于四个维度的技术突破:跨三大包管理器的协同执行、针对 AI 编程助手的配置投毒、多层级持久化驻留机制、以及基于密钥派生密码学(Fernet + ECDH)的载荷加密。

2. 攻击基础设施与跨生态协同

2.1 攻击者框架

攻击者以 GitHub 账号 ddjidd564 为核心运营节点,维护了大量伪装为安全审计与开发工具的仓库。npm 账号 asdxzxc、PyPI 账号 asdmini67dae5411 分别用于对应生态的包发布。C2 与载荷托管统一指向 ddjidd564.github.io,数据外泄通过 GitHub Gist API 完成。

攻击者的 GitHub 仓库矩阵涵盖三大类:载荷托管仓库(defi-security-best-practices)、攻击文档仓库(AUDIT-MATRIX.mdPAYLOAD.mdBYPASS.mdSWARM.md)及诱饵工具仓库(env-security-scannersmart-contract-audit-toolkitdefi-profit-scanner 等)。其中 AUDIT-MATRIX.md 详细描述了代号为"Universal AI Agent Extraction Framework"的攻击框架设计,表明该攻击经过了体系化的前期规划。

2.2 跨生态协同架构

攻击者针对不同包管理器的执行机制设计了差异化载荷触发路径:

平台触发机制载荷类型加密方式外泄通道
npmpostinstall 钩子trap-core.js (1,149行, 48KB)Fernet + ECDHGitHub Gist API
PyPI__init__.py 导入时执行远程 JS 载荷通过 node -e 执行
Crates.iobuild.rs 编译期执行XOR 加密数据XOR key: cargo-build-helper-2026GitHub Gist API

三类载荷的最终数据外泄统一经攻击者的 GitHub Gist 通道完成,构成一条"多点投放、统一回传"的攻击流水线。

3. 多平台恶意代码执行技术

3.1 npm:postinstall 钩子与集中式载荷

npm 平台的恶意包通过 postinstall 脚本在 npm install 完成后自动执行。所有 npm 恶意包共享同一份核心载荷 trap-core.js,该载荷以 Fernet 对称加密结合 ECDH 密钥交换的混合加密方案保护,其密码学方案复杂度远高于典型恶意包。

trap-core.js 在受感染主机上的执行流程可归纳为以下阶段:

  • 凭证枚举:扫描 ~/.ssh/、AWS 凭证(环境变量、配置文件、IMDS)、GitHub Token(gh auth token.npmrc)、Sui/Solana/Aptos 钱包数据、浏览器扩展钱包数据、浏览器登录数据库与 Cookie、环境变量及 .env 文件
  • 有效性验证:通过 AWS 和 GitHub API 对窃取凭证进行在线验证,筛选高价值凭证
  • 横向移动:利用窃取的 SSH 密钥尝试连接相邻主机,将受感染开发机作为入侵组织内网的跳板
  • 数据外泄:经 GitHub Gist API 回传窃取数据

3.2 PyPI:导入时执行与跨语言载荷加载

PyPI 恶意包利用 Python 导入机制的特性,在 __init__.py 中植入恶意代码。用户执行 import 语句时恶意代码即被触发。该代码从 ddjidd564.github.io 下载远程 JavaScript 载荷,并通过 node -e 在本地 Node.js 运行环境中执行。

该设计的技术考量在于:外部托管载荷可随时更新而无需重新发布 PyPI 包;Python 与 Node.js 跨语言执行增加了静态分析的难度;动态载荷获取可规避基于签名的检测机制。

3.3 Crates.io:编译期执行与密钥库窃取

Rust 包的恶意载荷嵌入在 build.rs 构建脚本中,在 cargo build 编译阶段自动执行。这是一个关键的时序优势——开发者在运行任何包功能代码之前即已被感染。

build.rs 脚本专门针对 Sui 和 Move 生态开发者。其执行逻辑为:搜索本地 Sui 密钥库文件,使用硬编码的 XOR 密钥 cargo-build-helper-2026 加密窃取数据,通过 GitHub Gist API 外泄。密钥库的泄露意味着对应的加密资产可能被攻击者完全控制。

4. AI 开发环境定向投毒

TrapDoor 最具创新性的技术维度是针对 AI 编程助手的配置投毒,该攻击向量在现有公开文献中尚无先例。

4.1 零宽度字符隐藏指令

攻击者在 .cursorrulesCLAUDE.md 文件中植入包含零宽度 Unicode 字符(U+200B、U+200C、U+200D、U+FEFF)的隐藏指令。这些字符在正常文本渲染下不可见,但 AI 编程助手(Cursor、Claude Code)在解析配置文件时会将其识别为有效指令内容。

隐藏指令伪装为"安全扫描"工作流定义,诱导 AI 助手在开发者交互过程中执行后台数据收集与窃取操作。由于 AI 助手在执行配置指令时通常不会产生显著的可疑系统调用,该攻击路径在运行时层面具有较高的隐蔽性。

4.2 AI 工具链 PR 投毒

攻击者向多个知名 AI/开发工具项目提交了包含恶意配置修改的 Pull Request,涉及的仓库包括 browser-use/browser-uselangchain-ai/langchainlangflow-ai/langflowrun-llama/llama_indexFoundationAgents/MetaGPTOpenHands/OpenHands。若 PR 被合并,恶意配置文件将随主流项目的版本发布扩散至大量下游用户。

4.3 诱饵网站诱导

攻击者在 ddjidd564.github.io/defi-security-best-practices/ 部署了一个渲染正常的 HTML 网站,伪装为 DeFi 安全最佳实践指南。该网站的核心目的是诱导 AI 助手在访问时运行其内嵌的恶意安全扫描指令,从而实现不依赖包安装的间接感染路径。

5. 数据窃取与持久化机制

5.1 凭证窃取范围

trap-core.js 的凭证枚举覆盖范围涵盖以下领域:

  • 系统凭证:SSH 私钥(~/.ssh/)、环境变量及 .env 文件
  • 云凭证:AWS 凭证(配置文件、环境变量、IMDS v1/v2)
  • 代码仓库凭证:GitHub Token(gh auth token.npmrc 扫描)
  • 加密资产凭证:Sui/Solana/Aptos 钱包密钥库、浏览器扩展钱包数据
  • 应用数据:浏览器登录数据库与 Cookie、API 密钥

5.2 多层持久化驻留

攻击者在受感染主机上建立多层持久化机制,确保即使部分驻留被清除仍可恢复访问:

持久化路径技术手段触发场景
.cursorrulesAI 配置文件注入AI 编程助手启动时
CLAUDE.mdClaude 配置文件注入Claude Code 交互时
Git Hookspre-commit / post-merge 钩子代码提交或合并时
Shell Hooks.bashrc / .zshrc 修改终端启动时
systemd系统服务注册系统开机时
cron定时任务周期性执行
SSH 传播复用窃取 SSH 密钥横向移动至相邻主机

5.3 横向移动模型

trap-core.js 中集成了基于窃取 SSH 密钥的横向移动能力。攻击者利用 ~/.ssh/id_* 私钥尝试连接已知主机列表,将受感染的开发机转换为入侵组织内部网络的初始跳板。该机制使攻击面从单一开发机扩展至整个组织内部网络。

6. 影响评估与威胁趋势

6.1 受影响场景分级

场景风险等级说明
安装过恶意 npm 包的开发环境极高全面凭证窃取与持久化
导入过恶意 PyPI 包的 Python 项目极高远程载荷执行
编译过恶意 Crates.io 包的 Rust 项目极高编译期密钥库窃取
AI 配置文件被修改的项目AI 工具配置污染
CI/CD 环境依赖恶意包极高构建服务器全面失陷

6.2 攻击演进特征

TrapDoor 体现了供应链攻击的五个演进方向:

  1. 从广撒网到精准打击:不追求 typosquatting 下载量,伪装为特定领域专业工具定位高价值目标
  2. 从单一生态到跨平台协同:同时利用三个生态的差异化执行机制扩大覆盖
  3. 从一次性窃取到持久化驻留:通过 AI 配置文件、系统服务与定时任务建立多层驻留
  4. 从静默窃取到 AI 工具链投毒:零宽度字符注入与 AI 配置污染开辟了全新的攻击面
  5. 从简单外联到基础设施运营:攻击者维护完整的攻击框架文档,表现出组织化攻击能力

6.3 趋势预测

基于 TrapDoor 的技术特征,可预期以下趋势:AI 开发环境配置将成为供应链攻击的新焦点;Crypto 开发者持续成为高价值目标;构建时执行攻击(如 Rust build.rs 模式)将扩展至其他编译型语言;跨生态关联攻击的隐蔽性将持续提升。

7. 检测与防御策略

7.1 即时检测指标

行为特征检测方法
npm 安装后 Node 进程异常执行大量文件扫描监控安装时的子进程活动
ddjidd564.github.io 的 HTTP 请求DNS/网络流量监控
gh auth token 命令异常执行命令行审计
~/.ssh/~/.aws/ 目录批量读取文件系统监控
GitHub Gist API 未授权上传请求API 调用审计
node -e 执行远程下载的 JavaScript进程创建监控

7.2 开发环境防护

  • 锁定依赖版本:使用 package-lock.json / Cargo.lock / poetry.lock 避免自动升级
  • 禁用安装脚本:npm 配置 ignore-scripts=true
  • 审查 AI 配置文件:检查 .cursorrules / CLAUDE.md 中的零宽度 Unicode 字符,可使用 cat -vhexdump -C 检测
  • 凭证最小化:禁止本地开发环境存储长期有效的云凭证,使用短期临时凭证

7.3 组织级供应链安全建设

  • 实施依赖审查流水线,禁止直接从公共仓库安装未经审查的包
  • .cursorrulesCLAUDE.md 纳入代码审查范围
  • 建立多生态关联分析能力:单一注册表视角无法发现跨平台关联攻击
  • 在 AI 工具配置中禁用自动执行外部命令

结论

TrapDoor 代表了供应链攻击从机会主义向定向化、组织化演进的重要里程碑。其跨生态系统协同执行、AI 开发环境投毒与多层持久化机制的三重结合,构建了当前公开文献中最复杂的供应链攻击模型之一。对防御方而言,单一生态的安全监控已不足以应对此类威胁,建立跨平台行为关联分析与 AI 工具链安全审计能力将成为供应链安全的关键防线。

参考文献

[1] Socket Research Team. "TrapDoor: Large-Scale Cross-Ecosystem Crypto-Stealer Targets npm, PyPI, and Crates.io." https://socket.dev/blog/trapdoor-crypto-stealer-npm-pypi-crates

[2] CVE Program. "CVE-2026-9082." https://www.cve.org/CVERecord?id=CVE-2026-9082