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

AutoJack:浏览型智能体把恶意网页变成主机 RCE

微软 2026 年 6 月 18 日的 AutoJack 研究显示,浏览型 AI 智能体继承 localhost 身份,触达本地 MCP WebSocket 并在主机上执行任意进程。

2026-06-21 // 5 min affects: autogen-studio, autogen, mcp, browsing-agents

这是什么?

2026 年 6 月 18 日Microsoft Defender 安全研究团队发布了 AutoJack,这是针对 AutoGen Studio 的一条利用链——AutoGen Studio 是微软 AutoGen 多智能体框架的开源原型界面。一个恶意网页一旦被本地浏览型智能体渲染,便能触达本地的 Model Context Protocol(MCP)WebSocket,并在主机上启动任意进程。微软之所以将其命名为 AutoJack,是因为该技术「劫持」了智能体,使其成为攻击者的最后一公里投递载体,跨越了无数开发工具默默依赖的 localhost 信任边界。该缺陷已上报 MSRC,并在提交 b047730 中于任何公开发布之前修复——因此它被记录为一种模式,而非活跃的 0-day。

工作原理

AutoJack 由 AutoGen Studio 的 MCP WebSocket 表面上三处相互独立的弱点组合而成。单看每一处都并不罕见;一旦串联,便产生主机代码执行。

第一,一份被智能体自身击穿的来源白名单(CWE-1385,WebSocket 缺少来源校验)。MCP WebSocket 仅接受 Originhttp://127.0.0.1http://localhost 的连接。这能正确拦截把浏览器指向 evil.example 的人类用户,却无法拦截由同一台机器上的智能体所拥有的无头浏览器渲染的 JavaScript——比如 MultimodalWebSurfer、基于 Playwright 的浏览器,或任何代码执行工具。智能体加载的一切都继承了回环(loopback)身份。

第二,MCP 路径的鉴权是可选退出的(CWE-306,关键功能缺少鉴权)。AutoGen Studio 的鉴权中间件显式跳过了 /api/mcp/*/api/ws/*,假定这些处理器会自行校验令牌。而 MCP WebSocket 处理器从未这么做:无论配置何种模式,它都接受未经鉴权的连接。

第三,来自 URL 的 server_params 就是命令行(CWE-78,操作系统命令注入)。该端点读取查询参数 server_params,将一段 base64 的 JSON blob 解码为 StdioServerParams,再把 commandargs 直接交给 stdio_client()。由于没有可执行文件白名单,calc.exepowershell.exe -enc [REDACTED]bash -c [REDACTED] 都会被当作「MCP 服务器」接受。

完整链条:用户把一个攻击者页面交给一个看似无害的「总结这个 URL」智能体;智能体的无头浏览器将其渲染;页面的 JavaScript 打开 ws://localhost:8081/api/mcp/ws/<id>?server_params=[REDACTED];由于请求来自本机,来源校验通过;由于中间件短路了 MCP 路径,无需令牌;于是 AutoGen Studio 解码载荷,并以开发者账户身份启动攻击者的命令。这是一个典型的混淆代理(confused deputy)问题——此处不复现任何载荷,因为要点在于结构,而非配方。

为何重要

重点并非 AutoGen Studio 本身——微软明确指出受影响的路由从未发布到 PyPI,当前已发布的包(autogenstudio 0.4.2.2)也不包含它。重点是这一模式:当你工作站上的智能体既能浏览不可信内容能与有特权的本地服务通信时,localhost 便不再是信任边界。长期以来,回环一直被默认视为可信——调试端点、开发数据库、代码执行器、MCP 控制套接字常常无鉴权地绑定其上。本地浏览型智能体瓦解了这一假设:外部内容如今可以驱动一个早已身处信任区内部的进程。这与致命三要素localhost 智能体劫持属于同一类结构性风险——智能体正是不可信输入与特权能力之间的桥梁。

防御

缓解措施具体且主要是架构层面的:

  • 切勿在没有鉴权的情况下将敏感控制面绑定到 localhost 在回环上,MCP 控制套接字、调试端点、代码执行器和开发数据库对机器上的任何智能体而言都是攻击面,而非安全默认值。
  • 对可作为 MCP 服务器启动的可执行文件采用白名单,而不是接受任何调用方传入的 command/args。微软的修复把参数移到服务端:单独的 POST 按 UUID 存储参数,WebSocket 处理器拒绝未知 ID。
  • 将控制面置于经过鉴权的反向代理之后,在所有路径上强制鉴权,包括 WebSocket 和 /api/*——不要仅依赖框架自带的鉴权模式。
  • 追踪来源/使用防注入护盾,在攻击者内容首次将智能体引向恶意页面的初始导航阶段加以拦截。
  • 倚靠 EDR 行为检测。 该链条以 Python 或 Node 父进程派生出意外子进程收尾——这正是端点检测旨在标记的模式。在受管或沙箱化的工作站中运行实验性智能体构建,可限制影响范围。

状态

项目详情
披露2026 年 6 月 18 日(Microsoft Defender 安全研究团队)
受影响在发布前窗口期内从 main 构建的 AutoGen Studio MCP WebSocket 路由
不受影响PyPI 发布版 autogenstudio 0.4.2.2(不含该路由)
修复上游提交 b047730main 版本 0.7.2
类别CWE-1385 + CWE-306 + CWE-78 串联 → 主机 RCE

Sources