流行AI代理曝严重参数注入漏洞,攻击者可远程执行代码
漏洞概述
三个未具名的流行AI代理平台存在严重参数注入漏洞,攻击者可通过看似无害的提示绕过人工审批安全机制,实现远程代码执行(RCE)。根据Trail of Bits的研究,这些漏洞利用了为提升效率而预批准的系统命令,揭示了智能代理系统中普遍存在的设计缺陷。
技术背景
AI代理依赖原生工具(如find、grep、git和go test)来处理文件系统操作和版本控制,这些工具在性能、可靠性和开发速度方面具有优势。然而,当用户输入影响参数时,这些预批准命令会创建攻击面,导致CWE-88定义的参数注入。
漏洞机制
系统通常通过允许列表验证命令,但忽略参数标志的检查。由于工具参数空间巨大,全面阻止变得不切实际。例如,一个简化的Go函数检查"grep"等命令是否安全,但会不加检查地附加用户提供的参数,留下可利用空间。
这种反模式持续存在,因为选择性过滤需要详尽掌握命令选项知识,而AI的动态特性加剧了这一挑战。
攻击实例
在一个基于CLI的代理中,攻击者构造提示运行:
|
|
利用-exec标志引入未经授权的curl和bash命令,最终在未经批准的情况下实现RCE。
另一个示例通过使用git show携带十六进制编码的有效载荷创建文件,然后利用ripgrep的–pre标志执行该文件。所有这些操作都通过JSON格式的提示完成,引导模型使用工具。
攻击模式
第三个系统中的外观模式漏洞将恶意标志(如"-x=python3")附加到fd命令,使用os.system执行预创建的Python有效载荷进行任意操作。
这些单次攻击可嵌入代码注释或代码库中,借鉴了GTFOBins和LOLBAS项目中记录的"离地生存"技术。
防御建议
研究人员主张将沙箱作为主要防御手段:
- 使用容器、WebAssembly或macOS的Seatbelt等OS级隔离来限制代理访问
- 对于外观模式,始终在用户输入前插入参数分隔符"–",并使用subprocess.run(shell=False)等方法禁用shell执行
- 无沙箱情况下,安全的命令允许列表仍然存在缺陷,因为find等工具可通过标志实现代码执行
- 开发人员应实施日志记录、缩减允许列表,并对可疑链重新引入人工审批循环
- 用户必须限制访问权限并对不可信输入使用容器
- 安全工程师可通过提示或文档映射工具,对标志进行模糊测试,并与漏洞数据库进行比较
随着智能AI的普及,这些协调披露标志着在技术固化前优先考虑安全性的转变。