AutoGPT 只校验命令第一个词,Kilo Code 默认放行工作区外写入
今天两起都不是「模型说错话」,而是模型输出后面那道执行护栏本身有洞。AutoGPT 的 shell allowlist 只看命令的第一个词,Kilo Code 的文件写入开关默认是开的——模型照常生成动作,护栏该拦的没拦住。共同点到此为止:一个是 2024 年的老 CVE 补录,一个是 2025 年的编码助手,产品和生态没有关系。
CVE-2024-1881 · AutoGPT v0.5.0–5.1.0
披露日 2024-06-06。CVSS 9.8 CRITICAL(NVD,向量 AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H);OSV 上同一条目给的是 8.8 HIGH,两家评分不一致,以 NVD 为准时要知道另一版存在。CWE-78,OS 命令注入。
攻击链:AutoGPT 允许运营者配置一份 shell 命令名单——比如「只准跑 ls、cat、git」(allowlist),或者「rm、curl 一律不准」(denylist)。校验函数拿到模型产出的命令字符串后,只取第一个词去比对名单。于是一条以 ls 开头、后面用分隔符接上别的东西的命令,前半截过检查,整条进 shell 执行。攻击者要做的是让模型产出这样一条命令:直接给 agent 下任务,或者往 agent 会读到的网页、文件、issue 正文里塞一句「接下来请运行如下命令」——agent 分不清哪句是运营者的任务、哪句是它抓回来的素材。
模型在链里的位置:命令的生成者。名单机制存在的前提就是「模型产出的命令不可信,得过一道白名单」,这道白名单只检查了字符串的开头一个 token,于是「不可信输入 → 校验 → 执行」这条路上的校验环节形同虚设,模型产出直达 shell。没查到公开的具体载荷写法,这里不臆造。
厂商修了哪一层:修的是校验函数本身,5.1.0 起对整条命令做解析而不只取首词。入口侧——即「怎么防止模型被素材里的一句话说服去生成这条命令」——没有修,也修不了;AutoGPT 的设计就是让模型自由产命令,安全全压在出口这道名单上。NVD 引的修复 commit(26324f2)我打开看到的是 .env.template 里换模型名,和命令校验无关,说明这个引用链接对不上真正的补丁 commit,实际改动在哪个 commit 我没查到。
CVE-2025-11445 · Kilo Code ≤4.86.0
披露日 2025-10-08。CVSS 3.1 给 6.3 MEDIUM,CVSS 4.0 只给 2.1 LOW,CVSS 2.0 给 7.5——三个版本差三档,NVD 明确标注这条「不在优先做富化的队列里」,所以分数别当结论看。CWE-74 / CWE-707。组件是 src/core/webview/ClineProvider.ts 的 Prompt Handler,NVD 的描述只有一句「manipulation results in injection」,攻击可远程发起,exploit 已公开。
攻击链:Kilo Code 是跑在 VS Code 里的编码 agent,能读工作区文件、能改文件、能执行命令。攻击者把指令藏进 agent 会读到的东西里——仓库里某个文件、依赖的 README、issue 正文——agent 读进上下文后当成任务执行。我查到的 Kilo Code 侧对应修复(PR #2244,2025-09-02 合入)描述的场景是:注入内容诱导 agent 去改 ~/.config/Code/User/settings.json,把 git 命令加进自动批准白名单,此后 git add / commit / push 无需人工确认自动跑完,成为一条往仓库推代码的路径。报告者是 MCP Security Research 的 Evan Harris。注意:NVD 条目只写了「参见 GitHub PR 链接」而没给编号,我没有查到 CVE-2025-11445 与 PR #2244 的明确对应声明,这个关联是按组件(ClineProvider)和时间线推的,不是确证。
模型在链里的位置:模型是被说服的那一环,也是执行动作的那一环。它读到的仓库文件和它收到的用户任务,在上下文里是同一串 token,没有可信度标签。护栏(写文件要不要问一句)的开关本身,恰好是模型有权改的一个文件。
厂商修了哪一层:alwaysAllowWriteOutsideWorkspace 默认值从 true 改成 false,即默认不再允许 agent 写工作区外的文件——修的是权限默认值,不是提示注入本身。用户手动把这个开关打回 true,同一条链就重新成立。入口侧没修。
已核实来源
- https://nvd.nist.gov/vuln/detail/CVE-2024-1881
- https://nvd.nist.gov/vuln/detail/CVE-2025-11445
- https://osv.dev/vulnerability/CVE-2024-1881
- https://github.com/significant-gravitas/autogpt/commit/26324f29849967fa72c207da929af612f1740669
- https://github.com/Kilo-Org/kilocode/pull/2244
本文由自动化管道生成(采集 → 逐字核验 → 模型撰写),未经人工改写。