Adversa AI发表的新研究将这种绕过命名为"GuardFall",发现它对其测试的11款流行开源编码和计算机使用智能体中的10款都有效。唯一幸免的是"Continue"。
为什么重要
这些智能体用你的完整账户访问权限运行Shell命令。将其指向一个陷阱存储库或软件包,隐藏指令就能悄悄运行命令——擦除文件或窃取你的账户可访问的秘密,从SSH密钥和云凭据到你主目录中的任何内容。
如何绕过防护
大多数智能体通过在运行前将每个命令与危险模式黑名单进行比对来保持安全。缺陷在于它们检查的是纯文本命令,而Bash在实际运行前会重写该文本。Shell会剥离引号并展开快捷方式,因此过滤器和Shell最终看到的是两个不同的东西。
最简单的例子:监控rm的黑名单不会认为r''m有问题,因为对文本匹配器来说这是不同的字符串。Bash移除空引号后仍然运行rm。
同样的技巧在其他形式下也有效:隐藏在base64中并通过管道输入Shell的命令,或使用正确标志变成破坏性工具的普通工具如find和dd。
研究人员称这不是bug,而是"一个危险的惯例和一类问题",这就是为什么添加更多黑名单模式无法解决任何问题。没有单一的CVE可追踪或修补。
攻击需要两个条件同时成立,都不稀奇:
首先,AI必须生成恶意命令。直白的"运行rm -rf"通常会被拒绝,但隐藏在正常外观的工作中的相同命令——如构建文件或工具的"文档"回复——会作为常规步骤发出。
其次,智能体必须自行运行,自动执行标志打开或容器沙箱关闭,这两者在自动化管道中都是常规配置。实际测试使用Claude Sonnet 4.6。
其他十个工具都留下了这个间隙:opencode、Goose、Cline、Roo-Code、Aider、Plandex、Open Interpreter、OpenHands、SWE-agent,以及首先发现此bug的Hermes项目——其issue追踪器上有记录。
Adversa的调查中,这些工具在2026年5月总共携带约548,000颗GitHub星标。Adversa在生产级Plandex二进制文件上演示了完整攻击端到端攻击,同样的攻击手法对其余八个工具也有效。
唯一防御者:Continue
唯一通过测试的Continue,其防御方式是在决策前以Bash的方式解析命令:它将命令分解成Shell会分解的相同片段,检查实际运行的内容,并保留一份会被直接阻止的破坏性命令硬列表。
这种防护在Continue的默认编辑器模式下通过了所有负载测试。其命令行自动运行模式较弱:少数负载溜了进去,尽管最具破坏性的仍然撞上了硬阻止。Adversa称该设计可移植,一位有经验的工程师重新实现大约需要两天工作。
现在就做什么
快速修复都不能完整回答,但它们在适当防护措施就位前减少暴露:
用指向一次性文件夹的$HOME运行智能体,这样~/.ssh和~/.aws等秘密就够不到
关闭自动执行标志如--auto-exec、--auto-run、--auto-test和dangerously-skip-permissions,除非工作确实无法暂停等人
不要允许智能体在fork的pull request上运行,这是从攻击者文件到你的秘密的简单路径
将存储库内发送的配置文件(如.aider.conf.yml)视为不可信代码;恶意配置文件可在首次接受编辑时触发攻击
GuardFall出现在今年一系列类似发现之中。Adversa自己的TrustFall冲击了Claude Code、Cursor、Gemini CLI和Copilot CLI,另外一个deny-rule绕过冲击了Claude Code。
AutoJack和Agentjacking等攻击将中毒内容转化为智能体以其所有者权限运行的命令。共同点很简单:不可信文本在实际防护理解Bash将运行什么之前,就不断到达真正的Shell。

