更令人警惕的是,TrapDoor 使用了一种前所未见的逃逸技术:利用零宽 Unicode 字符,把恶意指令藏进 .cursorrules 和 CLAUDE.md 这类 AI 编码助手的配置文件里。这些字符在普通文本编辑器中完全隐形,人类开发者和常规代码审查根本看不出任何问题,但 Cursor、Claude Code 等 AI 工具在读取文件时,却能“看到”并执行这些隐藏命令,从而在“例行安全扫描”的伪装下,悄悄完成信息收集和外泄 。
这次攻击中,npm 是重灾区。恶意包利用 postinstall 钩子,在包安装后自动执行一个名为 trap-core.js 的核心载荷——该脚本长达约 1,149 行,能系统性地扫描受害者的开发环境,寻找各类凭据并外传 。
这些恶意包都把自己包装成对开发效率“有帮助”的工具,比如 token-usage-tracker(令牌使用追踪器)、prompt-engineering-toolkit(提示工程工具包)、eth-wallet-security-auditor(以太坊钱包安全审计器)等,名字听起来相当专业,很容易让目标社区的程序员放松警惕 。
在多份公开报告中,MetaMask 和 Phantom 这两个主流浏览器钱包扩展被明确点名 。GitHub 令牌的失窃尤其危险,攻击者不仅能访问私有代码库,更可能向 CI/CD 流水线植入恶意代码,或以受害开发者的身份横向渗透,进入更多系统
。
Socket 的调查确认,攻击方的主要目标是 加密货币、DeFi、Solana、Sui 以及 AI 领域的开发者 。恶意包的命名策略几乎是为这些社区量身定做的,主题高度集中在钱包安全审计、交易监控、智能合约开发以及 AI 上下文工具等方面。
攻击者之所以如此精准地“投放”,是因为他们明白,这些生态里的开发者不仅拥有实际控制着大额资产的私钥,还能接触云基础设施并持有开发工具链上的各种高权限——一台工作站的沦陷,通常就意味着财务损失和运营灾难的双重打击 。
TrapDoor 最令人拍案的技术创新,在于它直接挑战了开发者与 AI 编码助手之间的信任边界。恶意包会尝试在项目中修改或植入 .cursorrules 和 CLAUDE.md 文件——这两个配置文件正是开发者用来向 Cursor、Claude Code 等 AI 编程工具“交代”项目专属规则的地方 。
攻击者在这里动了手脚:他们在文件中嵌入使用零宽 Unicode 字符(比如 U+200B、U+200C、U+FEFF)编写的隐藏指令。在 VS Code 或者 Vim 这类编辑器里,这些字符不会显示任何痕迹,肉眼和常规代码 diff 完全看不出任何异常 。
然而,AI 编码助手在解析文件时,会完整读取 Unicode 文本。因此,它们会忠实地把那些隐藏指令解读为项目需求的一部分,然后可能在开发者毫无察觉的情况下,执行凭据收集、源码外泄甚至运行任意 Shell 命令等危险动作 。
这就形成了一种“二段式”攻击:恶意包本身完成第一阶段的凭据窃取,而受到污染的 AI 配置文件则把开发者的 AI 工具变成了一个“潜伏的帮凶”,为后续更深入、更持续的信息窃取创造条件。事实上,相关研究已经证实,Claude Code 和 GitHub Copilot 等主流 AI 代理平台,确实会在读取含有不可见 Unicode 指令的 Skill 文件后,执行其中的任意命令 。
TrapDoor 的破坏力在于它能在你毫无知觉的情况下,把你的凭据和权限全部“复制”走。时间窗口非常有限,建议立刻按以下步骤排查:
npm auditpip listCargo.lock,寻找已公布的 34 个恶意包。~/.bashrc、~/.zshrc、~/.profile 以及 ~/.config/fish/config.fish,看看有没有可疑的别名设定,或者没有注释的 curl、wget 下载命令。.git/hooks/ 目录下的 pre-commit、post-commit、pre-push 等钩子文件,确认没有未被授权的脚本。鉴于攻击的重点之一就是 GitHub 令牌,你的仓库权限随时可能被滥用。.github/workflows/ 目录下是否有不明来源的 YAML 文件,或者已有的工作流是否被添加了奇怪的 curl / wget 步骤。.cursorrules 和 CLAUDE.md 文件,检查其中是否包含零宽 Unicode 字符。可以使用下面这条正则命令作为快速排查:grep -P '[\x{200B}-\x{200F}\x{2028}-\x{202F}\x{FEFF}]' .cursorrules CLAUDE.mdcrontab -l~/.config/systemd/user/)、以及 macOS 下的 LaunchAgents(~/Library/LaunchAgents/),删除任何不明条目。
Comments
0 comments