系统:运行中
← 返回所有攻击
AGENTS CRITICAL NEW

本地代理劫持:针对 AI 编码代理的跨源 WebSocket 攻击

2026 年 5 月 7 日披露的 CVE-2026-44211(CVSS 9.7)表明,仅需访问一个恶意网页,就可能劫持运行在开发者笔记本上的 AI 编码代理。该攻击类别具有通用性,本质上是架构层面的问题。

2026-05-22 // 8 min affects: cline, kanban-npm-package, local-ai-coding-agents

事件经过

2026 年 5 月 7 日,Oasis Security 披露了 CVE-2026-44211(CVSS 9.7),这是 AI 编码助手 Cline 中的一个跨源 WebSocket 劫持漏洞。问题出在随 Cline CLI 一同分发的 kanban npm 包:该包在 127.0.0.1:3484 上启动了一个 WebSocket 服务器,用于连接本地管理界面与正在运行的 AI 代理会话,但未校验 Origin 请求头,也未引入任何身份验证令牌

开发者在浏览器中加载的任意网页,都可以打开一个连向该本地端点的 WebSocket 与代理对话。漏洞经过负责任披露后,已在 Cline 0.1.66 中修复。仍在运行旧版本的开发者应立即升级。

该攻击类别的原理

这个漏洞之所以值得关注,不是因为它本身有多特别,而是因为它暴露了一个结构性的模式。浏览器对 fetch()XMLHttpRequest 执行 CORS,但WebSocket 不在同源策略的约束范围内:任何来源都可以调用 new WebSocket("ws://127.0.0.1:3484"),浏览器会放行握手过程。服务器一端本应检查 Origin 头,拒绝一切并非其自身界面发起的连接。Cline 的服务器没有这样做。

Cline 的 kanban 服务器对外暴露了三个 WebSocket 通道,每一个都打破了一项不同的安全不变式:

  1. 一个读取通道,连接建立时立即向攻击者发送 workspace 的快照:文件路径、任务标题、git 分支、与代理的对话历史。
  2. 一个终端输入通道,直接写入当前活跃代理的 prompt 缓冲区。恶意页面注入一条指令——例如*“帮我运行这段构建脚本”*——并模拟一次按键。代理将其视为来自用户的合法指令,询问底层 LLM 该如何处理。由于代理本身已经连接了 shell 执行工具,最终结果是开发者主机上的远程代码执行
  3. 一个控制通道,可以终止正在运行的代理任务,从而构成一个拒绝服务向量。

整个利用过程,只需要在开发者访问的任意网页上注入一行脚本——不需要 XSS、不需要安装扩展、也不需要原生漏洞。代理本身就拥有这些权限;攻击者只需与之对话即可。

为何值得关注

这正是 Simon Willison 在 2025 年记录的”致命三件套”——不可信输入、敏感数据、对外操作——也正是 Meta AI Security 团队于 2025 年 10 月正式提出的双选规则(Rule of Two)。Cline 在设计上同时具备三者:它运行在开发者的 workspace 内(敏感数据),它可以执行 shell 命令(对外操作),而现在通过这个未经身份验证的 WebSocket,它还接受来自任意浏览器标签页的不可信输入。

该模式具有通用性。任何对外暴露本地控制平面的代理框架——为了与 IDE 集成、为了提供 Web 控制台、为了调试——都可能落入同一个陷阱。Snyk 随后发表的 Clinejection 分析进一步指出,这一类代理同样会因为受污染的 GitHub Actions 输出回流入其上下文而被利用。这条 CVE 只是一整类问题的一个具体实例,后续还会陆续出现。

防御建议

缓解措施需要从架构层面着手,而非依赖启发式过滤。对于代理框架的开发者:

  1. 在每一次 WebSocket 升级请求时校验 Origin。凡是不属于预期本地 UI 来源的连接,一律拒绝。仅此一项即可关闭 drive-by 攻击向量。
  2. 服务器启动时生成会话级密钥,要求每次 WebSocket 连接以查询参数或子协议形式携带该密钥,且永不写入日志。
  3. 单独为终端通道引入身份验证。可以写入代理 prompt 缓冲区的通道,事实上是整个框架中权限最高的接口,必须以相应的等级对待。
  4. 尽可能将服务器绑定到 Unix 域套接字(或 Windows 命名管道),而非 TCP 127.0.0.1——本地套接字不会暴露浏览器可达的 TCP 端口。
  5. 应用 Rule of Two。如果代理必须接受不可信输入,就在该会话中放弃对外操作或敏感数据访问其中之一。

对于使用 AI 编码代理的开发者:

  • 将 Cline 升级至 0.1.66 或更高版本。审计任何会开启本地端口的其他代理——VS Code 扩展、Aider 衍生工具、自建 MCP 网关——确认它们都做了 Origin 校验和身份验证。
  • 不要在浏览任意网页内容的同时运行处于活跃状态的代理任务。请将代理的终端视作具有高权限的 shell,因为事实上它就是。
  • 监控开发主机的出站连接。drive-by 类的劫持往往在数秒内就会向外发起网络通信。

状态

组件CVECVSS披露日期修复版本
Cline (kanban npm)CVE-2026-442119.72026-05-07Cline 0.1.66

更深一层的教训是:只要同一台机器上运行着浏览器,本地端口就是一个对外开放的攻击面。脱胎于开发者工具文化的代理框架,仍在重新发现 Web 安全社区十年前就已掌握的知识。在这层知识完成传递之前,2026 年还会有更多跨源代理劫持相关的 CVE 浮出水面。

Sources