CVE Report: Remote Code Execution via Unsandboxed LLM-Generated Code Execution 漏洞概述 AgentSeek 存在严重远程代码执行漏洞,未经身份验证的攻击者可通过单个 HTTP POST 请求到 端点,利用 LLM 生成的代码在主机系统上执行任意代码。该系统完全缺乏沙箱隔离,存在多处代码执行入口。 漏洞类型: 代码注入、命令注入 CVSS 评分: 10.0 (Critical) CWE 编号: CWE-94, CWE-78, CWE-184 影响范围 受影响组件: (第22-57行): Python 执行,含完整 / 访问 (第35-71行): 且 (第21-70行): 无沙箱的编译二进制执行 (第4-88行): 可绕过的安全黑名单 (第44行): 默认关闭 具体漏洞点: 1. Python exec() - CWE-94: 使用 执行任意 LLM 生成代码, 包含 、 、 等模块,无超时、无资源限制、无沙箱 2. Bash shell=True - CWE-78: 使用 且 ,通过字符串插值直接执行任意 OS 命令 3. C/Go/Java 编译 - CWE-94: 编译器直接编译 LLM 生成的源码并以父进程权限执行,无 seccomp、无 chroot、无网络隔离 4. 可绕过的安全黑名单 - CWE-184: 默认关闭;即使手动启用,黑名单存在严重缺陷: - 不完整:缺少 、 、 、 、 、 、 等 - 字符串拼接错误:第31-32行缺少逗号,将 和 合并为无效的 - 仅子串匹配:可通过路径变形或混淆绕过 POC 代码 / 利用代码 漏洞代码片段 - Python exec() 完整系统访问 ( ): 漏洞代码片段 - Bash shell=True 执行 ( ): 漏洞代码片段 - C/Go 无沙箱编译执行 ( ): 漏洞代码片段 - 安全黑名单缺失逗号错误 ( ): 漏洞代码片段 - safe_mode 默认关闭 ( ): 攻击复现步骤: Step 1: 确认 API 无需认证即可访问 Step 2: 发送 RCE 载荷 - 通过 POST /query 执行系统命令 Step 3: 验证响应中的命令执行 JSON 响应 字段包含: Step 4: 发送 RCE 载荷 - 从 .env 文件窃取 API 密钥 响应示例: Step 5: 验证安全黑名单可绕过(即使启用 safe_mode) 输出结果: 修复方案 1. 替换 exec() 为基于子进程的执行 - 在受限权限的独立进程中运行 LLM 生成代码 2. 绝不使用 shell=True 处理不可信输入 - 使用 配合参数列表 3. 对所有代码执行进行沙箱隔离 - 使用 Docker 容器,配置 、只读文件系统、seccomp 配置文件和资源限制 4. 默认启用 safe_mode - 将 的 改为 5. 修复字符串拼接错误 - 在 第31行的 后添加缺失的逗号 6. 将黑名单替换为白名单 - 仅允许已知安全命令,而非尝试枚举危险命令 7. 执行前要求显式用户确认 - 执行任何生成代码前需用户确认 8. 限制 exec() 的全局变量 - 从执行上下文中移除 、 和完整 推荐修复代码示例: