#12566·goose

安全性: 开发者 shell 工具在没有沙箱的情况下执行 LLM 提供的命令(任意命令执行)

作者: ybyu-ieu创建于 2026年9月29日更新于 2026年9月29日

描述错误

开发者扩展的 shell 工具 (crates/goose/src/agents/platform_extensions/developer/shell.rs) 将 LLM 提供的命令字符串原文传递给主机 shell - 在 Windows 上为 cmd /C, 在 POSIX 上为 <shell> -c, 无允许列表、沙箱或内容验证。唯一的执行前检查是一个空字符串保护和 Windows cmd 新行保护 (shell.rs:388-400)。权限网关的默认模式 GooseMode::Auto 无条件地为每个工具调用返回 Allow (permission_inspector.rs:159-161), 并且未设置的 GOOSE_MODE 通过 unwrap_or_default() 回退到 Auto (agent.rs:396)。由于开发者扩展默认启用 unprefixed_tools, shell 工具始终被注册。因此,在默认安装中,攻击者控制的内容 (一个网页、README、git 仓库、MCP 输出或文件) 可以引起模型调用 shell 工具并在主机上执行任意命令,而无需确认 - 由提示注入驱动的远程代码执行。

内容来源: aaif-goose/goose