2026年5月22日至5月24日,Socket研究团队发现并披露了一场代号为"TrapDoor"的大规模跨生态系统供应链攻击活动。攻击同时针对了npm(JavaScript)、PyPI(Python)和Crates.io(Rust)三个主要包管理器,共植入了34个恶意包、超过380个版本变种。
攻击的目标是开发者的机器,尤其是参与加密货币钱包、DeFi工具、AI开发、智能合约审计等高价值项目的开发者。窃取对象包括加密货币钱包密钥、AWS凭证、GitHub令牌、SSH密钥以及.env文件中的敏感配置。
但TrapDoor最有特点的攻击手段不是恶意包本身,而是对AI编程助手的配置文件投毒——这是首次被公开报道的、将AI助手作为攻击面的供应链攻击。
恶意包的三路渗透
攻击者针对三个不同平台分别设计了符合其生态特性的入侵方式,技术手法各不相同。
在npm上,恶意包利用postinstall钩子在开发者运行npm install时自动执行。载荷是一个完整的凭据窃取引擎(约1149行代码),它会先通过API验证窃取的AWS密钥和GitHubToken是否有效,只窃取"活的"凭证。窃取的数据使用Fernet对称加密和ECDH密钥交换保护。
在Crates.io上,恶意包通过Rust的build.rs文件执行。该文件是Rust的构建脚本,在cargo build期间、主程序编译之前自动运行。脚本会扫描开发者的文件系统,寻找Sui、Solana、Aptos等区块链钱包的密钥库文件。窃取的数据通过GitHub Gist外传,伪装成正常的GitHub API流量。
在PyPI上,攻击者的手法最为隐蔽。恶意包的__init__.py在import时执行,但代码本身不包含恶意载荷。它发起一个网络请求,从远程下载一个JavaScript文件,然后在本地调用node -e执行。静态分析PyPI包几乎找不到可疑内容,恶意逻辑托管在远程,且载荷可以实时更新。
AI投毒:攻击开发者的编码助手
TrapDoor最具创新性的攻击向量是针对AI编程助手的配置文件投毒。
攻击者将恶意AI配置文件注入到项目目录中,主要针对两个文件:.cursorrules(用于Cursor编辑器)和CLAUDE.md(用于Claude AI)。这些文件在文本编辑器和终端中看起来是空白的或无害的,但实际上通过插入零宽空格、双向文本控制字符等Unicode隐藏字符来嵌入恶意指令。这些字符在人工检视时不可见,但AI模型能读取到。
当开发者使用AI助手编写代码时,AI会读取这些被投毒的配置文件。隐藏指令告诉AI,在提供帮助前先执行一次"强制性安全检查"或"依赖验证"。这个所谓的检查实际是运行凭据窃取命令。开发者看到的是一次正常的AI交互,而AI正在后台执行窃密操作。
与此同时,攻击者还向开源项目发动了PR攻击。攻击者账号ddjidd564向6个知名AI和开发者工具的开源项目(包括langchain-ai/langchain、run-llama/llama_index等)提交了Pull Request,伪装成"文档改进"或"添加开发者标准",意图向项目仓库中添加带有隐藏Unicode字符的.cursorrules和CLAUDE.md文件。一旦PR被合并,任何克隆这些仓库的开发者都会在无意识中收到恶意AI配置文件。
攻击者的基础设施
Socket研究团队识别出攻击者使用的多个账号和基础设施。GitHub账号ddjidd564,npm账号asdxzxc,PyPI账号asdmini67和dae5411。命令与控制(C2)服务器托管在ddjidd564.github.io上。数据外传通过攻击者的GitHub Gist完成,以规避企业防火墙。
在一份公开的AUDIT-MATRIX.md文件中,攻击者还描述了"通用AI Agent提取框架"的概念——即开发看似帮助安全审计的工具,实际进行凭证窃取。这表明攻击者已经从工具层面将AI Agent视为可利用的攻击入口。
对开发者的影响
TrapDoor攻击揭示了一个新的攻击面。过去供应链攻击主要关注恶意包本身,防御手段聚焦在依赖审计、代码扫描和包管理器安全策略上。但AI助手配置文件提供了另一个入口——即使开发者没有安装恶意包,只是克隆了一个被投毒的仓库,或者在项目中打开了一个被污染的配置文件,AI助手就可能被操纵。
这意味着AI安全审计需要覆盖一个新的维度。开发者在项目中遇到的.cursorrules和CLAUDE.md文件不再是可信的配置指令,它们本身可能成为攻击向量。对于AI编程工具来说,CLAUDE.md被广泛视为传递项目知识的规范文件,正因如此,它的信任等级使它成为攻击者的理想目标。
目前,受影响的开源项目尚未全部确认是否合并了恶意PR。开发者可以通过检查项目目录中的.cursorrules和CLAUDE.md文件是否包含不可见的Unicode字符(使用cat -v命令查看),以及审计依赖树来排查风险。如果代码曾在受影响的环境中执行,建议立即轮换云平台凭证、撤销GitHub令牌并生成新的SSH密钥对。
参考来源: https://x.com/kimmonismus/status/2058584943052161488
夜雨聆风