100% 这个数字是怎么来的

2026 年 9 月 2 日,旧金山 RSA Conference 2026 的 AI 安全专题上,研究员 Ari Marzouk 公开了一组让全场安静的数据:在受测的 AI 编程环境里,100% 都能被 Prompt Injection 攻击。覆盖范围包括 Claude Code、Cursor、Windsurf、GitHub Copilot、Roo Code、JetBrains Junie、Cline,横跨 24 个新分配的 CVE 与一条 AWS 安全公告(AWS-2025-019)。攻击链路被命名为「Prompt Injection → Agent Tools → Base IDE Features」。它之所以成立,根子在于现代 AI 编程工具拥有过深的系统权限——读文件系统、执行 Shell 命令、管理 Git、调用外部 API——而「AI 助手」与「特权本地进程」之间的信任边界,在大多数实现里几乎不存在。

持久化:从会话级注入到跨会话记忆投毒

更麻烦的是持久化能力。研究人员发现,被注入的指令在周一被记录后,可能在周五被智能体「想起」并执行。也就是说,会话级的注入变成了跨会话的记忆投毒——传统 prompt injection 的边界被打破了。这意味着一次成功的注入不只是当下那一回合失控,而是可能在数天后、在另一个项目里悄悄发作。对开发者的实际含义是:你以为清掉了恶意提示词,但智能体已经把它当成了一条长期记忆。这把「注入 → 执行」的窗口从单次对话拉长到了智能体的整个生命周期。

.git config 反控:仓库本身就是攻击载荷

同一天,Manifold Security 公开了 8 个跨 7 款命令行 AI 编程智能体的 .git config 漏洞,其中 4 个当时仍未修复。机制相当精巧:Git 的 core.fsmonitor 配置项允许指定一条命令来加速文件状态检查,而智能体启动时会自动运行 git status / git diff。如果一个仓库的 .git/config 里写了恶意的 core.fsmonitor 值,智能体在用户输入任何字符之前、在信任对话框弹出之前,就已经执行了攻击者的命令。时间点上的差距决定了杀伤力:Claude Code 与 Hermes Agent 能在 workspace-trust 弹窗被接受之前触发;Qwen Code 在用户认证之前触发;Grok Build 在刚一按键时就触发。等用户看到「信任这个仓库吗」的弹窗,代码已经执行过了。这揭示了一个反直觉的事实——仓库不再只是代码载体,它本身就是一份可执行的攻击载荷。

浏览器侧的旧版本债

在编辑器层面,Cursor 与 Windsurf 因 Electron 版本过旧,暴露了 94 个以上的浏览器 CVE。这提醒一个常被忽视的点:AI 编程智能体运行在一个带浏览器内核的桌面壳里,壳本身的补丁水平直接决定了攻击面大小。一个过时的渲染引擎,可能让一次本该被沙盒拦下的网页内容,变成打进本地文件系统的通道。对采购与运维,这把「AI 编程工具的安全性」从模型能力问题,拉回到传统软件供应链与依赖版本管理问题。

防御清单:把信任边界重新画一遍

这些披露合起来,指向一份开发者可以直接落地的防御清单。其一,workspace trust 不能形同虚设——信任弹窗必须在任何自动化命令之前拦截,而不是之后补一道流程。其二,最小权限:智能体运行的 shell 不应持有比任务所需更多的凭证,长期 API Key 应被短期令牌替代。其三,禁用或严格审计 core.fsmonitor 这类会自动执行外部命令的 Git 配置项;企业可统一下发受控的 .git/config 模板,禁止仓库自带的可执行钩子。其四,把供应链红线从「跑测试」前移——任何从外部仓库拉取的配置、脚本、钩子,都先经过静态检查再允许执行。其五,遥测要能区分「人在打字」与「智能体在循环」:突发 API 调用、并行认证、401 与 200 的快速跳动,应触发告警而非被当作正常开发流量。

结语

RSAC 2026 这两次披露,价值在于把「AI 编程环境不安全」从一句警告变成了可复现、可编号、可打补丁的具体清单。100% 的受测环境可被注入、8 个 .git config 漏洞、94 个浏览器 CVE——这些数字合起来说明:当智能体开始替我们写代码、管 Git、跑命令,信任边界必须重新画一遍,而且要从模型之外、从编辑器与仓库的默认行为里画起。对做开发者智能体的团队,这是一张不能跳过的红线性考卷。