返回
快讯

AutoJack 利用网页劫持 AI 代理并执行代码

微软研究人员披露一条名为 AutoJack 的利用链,可将 AI 浏览代理变成远程代码执行载体。攻击者只要让代理打开恶意网页,即可借助本机 localhost 信任、未认证的 MCP WebSocket 接口及命令参数执行任意进程。受影响的是 AutoGen Studio 的两个预发布版本,建议改用 GitHub main 修复提交并隔离相关组件。

CVE-2026-26030CVE-2026-25592

微软研究人员详细披露了一条名为 AutoJack 的利用链,它能把一个 AI 浏览代理变成远程代码执行的投递载体。

只要诱导代理加载攻击者的网页,该网页中的 JavaScript 就可以访问同一台机器上的一个特权本地服务,并在主机上启动一个进程。

不需要凭据,不需要登录页面,而且一旦代理加载了该页面,也不需要进一步的用户交互。攻击者只要让代理打开它即可,而放置一个链接、一个 URL 字段,或者一次提示注入都可以做到。

该漏洞位于 AutoGen Studio,也就是 Microsoft Research 的 AutoGen 多代理框架的开源原型界面。这不是一个会影响所有安装该软件包用户的缺陷,且软件包细节必须准确区分。

执行普通的 pip install autogenstudio 会拉取当前稳定版 0.4.2.2,也就是微软检查过的构建版本,而它根本没有 Model Context Protocol(MCP)路径。

这就是微软声明有漏洞的 MCP WebSocket 暴露面“从未包含在 PyPI 发布版中”的依据。对于稳定版来说,这个说法成立。但有漏洞的处理程序确实被发布到 PyPI,且出现在两个预发布版本中:0.4.3.dev1 和 0.4.3.dev2。

The Hacker News 下载并检查了这两个版本。MCP WebSocket 路径确实存在,处理程序直接从请求中获取要执行的命令,并且不会对调用者进行身份验证。这两个版本都没有被撤回。

pip 默认不会安装预发布版本,除非你加上 --pre 或显式锁定版本,所以普通安装从未暴露在该风险之下。凡是安装了这些预发布版本的人则会受到影响。对于它们,目前在 PyPI 上仍没有包含主分支加固措施的构建版本;修复代码位于 GitHub main 上的提交 b047730。

利用链如何工作

AutoJack 将 MCP WebSocket 中的三个弱点串联起来。

首先,该 socket 信任 localhost,这一检查原本是为了阻止普通浏览器访问恶意站点。但运行在同一台主机上的浏览代理本身就是 localhost,因此它加载的任何内容都会继承这种 localhost 身份并通过检查。

其次,认证中间件在 MCP 路径上被跳过,因为其假设处理程序会自行验证令牌。但处理程序从未这样做,因此无论配置了何种认证模式,该 socket 都会接受未认证连接。

第三,该端点会直接从请求参数中取出命令并执行,而且没有对允许启动的可执行文件做白名单限制。

组合起来之后,一个由本地代理渲染的、来自公开互联网的页面,就可以在运行 AutoGen Studio 的账户权限下执行攻击者选择的命令。

微软将这描述为研究结果,而非正在进行的攻击活动,并表示没有发现真实世界中的利用。概念验证使用了一个名为 “Web Content Summarizer” 的代理;当它收到攻击者提供的 URL 时,会在开发者桌面上弹出 calc.exe,由 AutoGen Studio 进程启动。

微软已将该行为报告给 Microsoft Security Response Center,维护人员则在提交 b047730(PR #7362)中加固了主分支。修复后的处理程序不再从 URL 读取命令;参数现在会在服务器端按一次性 session ID 存储,未知 ID 会被拒绝。MCP 路径现在也会走正常的认证流程。但这些加固措施尚未进入 PyPI 发布版。

应对措施

普通的 pip install autogenstudio 会得到 0.4.2.2,而它没有 MCP 路径,因此不受影响。

如果你安装过预发布版本,你就拥有有漏洞的处理程序,而且目前没有已修补的 PyPI 版本可升级。请从 GitHub main 在提交 b047730 之后拉取代码。这才是真正的修复。

在发布新版之前,应将攻击链所需的组件分离。不要把 AutoGen Studio 运行在与会接触不可信内容的浏览代理或代码执行代理相同的机器上,因为这条链只有在两者共享同一个 localhost 时才会成立。如果必须一起运行,请把它们隔离到不同的容器或虚拟机中,并让 AutoGen Studio 以低权限账户运行。

AutoGen Studio 的这些缺陷已经在源代码中修复,但这种模式并没有消失。微软预计其他代理框架也会出现同样的问题:一个权限过大的本地服务、把 localhost 检查当作安全边界,以及一个会打开不可信页面的代理。

The Hacker News 上个月在 ChatGPhish 中也看到过类似问题,其中 ChatGPT 的页面摘要被用作钓鱼载体。微软在其 Semantic Kernel 远程代码执行研究中也提出了类似的 localhost 论点,该研究对应 CVE-2026-26030 和 CVE-2026-25592。

仅仅再加一个 localhost 检查是不够的。应当对控制平面进行身份验证,把进程执行放在白名单后面,并给代理一个不等同于开发者本人会话的身份。一旦代理能够浏览开放网络并访问特权本地服务,localhost 就不再是信任边界。