大数跨境

一个三十年的遗留问题令主流智能体的安全集体失效

一个三十年的遗留问题令主流智能体的安全集体失效 数世咨询
2026-07-10
7
导读:本应阻止AI编码智能体运行危险命令的安全检查,可以用一个公开了几十年的Shell技巧直接绕过。
本文关键看点:
1、沿用三十多年的Bash底层语法特性,可被利用绕过智能体的安全校验。而且这属于结构性安全缺陷,不是代码的bug。
2、智能体仅对原始文本做正则或关键词黑名单校验,但Bash会在执行前自动解析、转义、改写命令文本。校验阶段看到的"无害文本"经过Bash解析后可变成恶意指令,防护逻辑完全失效
32026年5月,基于 GitHub 热度选取11款主流开源代码智能体(Hermes、OpenCode、Roo-code 等)进行测试,其中仅Continue一款智能体能拦截绝大多数攻击。
以下正文内容基于英文原文编译,可能存在语义偏差,请以原文为准。
本应阻止AI编码智能体运行危险命令的安全检查,可以用一个公开了几十年的Shell技巧直接绕过。

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。

注:图片均来源于网络,无法联系到版权持有者。如有侵权,请与后台联系,做删除处理。
— 【 THE END 】—

【声明】内容源于网络
0
0
数世咨询
中国数字化领域独立的第三方服务机构,提供网络安全行业的调查、研究与咨询服务。
内容 1151
粉丝 0
数世咨询 中国数字化领域独立的第三方服务机构,提供网络安全行业的调查、研究与咨询服务。
总阅读7.3k
粉丝0
内容1.2k