安全研究机构发现SymJack攻击手法,通过在Git仓库中植入符号链接,诱导用户批准后覆写AI工具配置文件,从而执行任意代码。
Adversa AI 的安全研究人员公布了一项名为 "SymJack" 的技术:无需一条恶意指令,即可劫持 AI 编码代理自身的配置文件。攻击完全存活于文件系统层面,且已针对六款不同的代理工具完成了概念验证。
攻击的布置发生在一个埋伏了陷阱的仓库里:一个符号链接被提交到仓库中,伪装成普通文件。用户克隆该仓库后,让代理执行一项看似常规的操作——复制某个文件。代理弹出审批提示,用户同意,复制开始执行。
问题出在审批对话框所展示的内容与实际发生的行为之间的差异。Adversa AI 在报告中直接描述道:用户屏幕上看到的是"一次无害的媒体文件复制",但仓库内预先提交的符号链接却将写入重定向到了代理自身的敏感配置目录。审批覆盖的是文件表面的目标路径,而非解析后的符号链接真实指向——于是"将此文件复制到这里"的授权,最终变成了对 .claude/settings.json、.mcp.json、.codex/config.toml 或对应代理配置文件的写入许可。
一旦配置文件被覆写,收益就很直接:在其中注册一个恶意的 MCP 服务器。下次代理启动时,该服务器随之运行,可以执行任意命令——无需再发送任何提示或请求额外审批,因为启动过程不会重新询问。
Adversa AI 针对六款代理工具构建了可工作的概念验证漏洞利用:Claude Code、 Gemini CLI、 Cursor Agent CLI、 GitHub Copilot CLI、 Grok Build CLI 以及 Codex Agent。相关漏洞产物已在 GitHub 上公开,按目标代理分类组织,因此这一结论可以独立验证,无须仅凭报告一家之言。各厂商的响应参差不齐。Anthropic 在报告后为 Claude Code 的敏感目录和配置文件审批流程增加了安全警告。其他被点名的厂商据报道要么拒绝接受报告,要么将其归类为超出范围——这意味着截至披露时,该技术在这些工具中仍然可以发挥作用。
这是一项负责任披露的研究发现,而非有确认受害者的生产事故。目前没有报告显示此技术已被用于真实用户或真实仓库。该漏洞的严重性来自两个方面:覆盖范围(六款主流代理编码工具)以及突破了这些工具作为最后防线的特定防护机制——人工审批,而非来自已记录的现实损害。
有趣的部分并非"符号链接是危险的",这在 Unix 安全领域早已是旧闻。真正的问题在于:审批 UI 展示的是写入操作的表面目标路径,而非解析后的真实目标,这使用户自以为做出的信任决策("将此文件复制到我的项目中")变成了实际上未做的决策("写入我代理自身的配置")。任何在文件系统操作上显示审批提示、且在渲染目标路径前不解析符号链接的工具,都存在同样的结构性缺陷——这并非某一家厂商实现上的特有问题。
完整事件报告、源码及严重性评分:STUPID-2026-0073
这是 StupidLLM(一个面向 AI 编码代理故障的开放式事件数据库)中 70+ 已验证、按严重性评分归档的 AI 代理事件之一。