FireAI 安全博客

作者 FireAI Security & Research Team · 发布于

在 Mac 上监控 Cursor 的网络连接:AI 智能体安全

在 Mac 上监控 Cursor 的网络连接:AI 智能体安全

Cursor 是 Anysphere, Inc. 开发的 AI 代码编辑器。除了补全代码,它的智能体还能在终端中运行 shell 命令,而编辑器会与 Cursor 的后端保持连接,用于请求、更新和扩展市场。本文总结 Cursor 文档中关于其运行模式、macOS 沙箱和所用主机的说明,然后展示如何用 FireAI 监视该编辑器的连接。

Cursor 是什么

Cursor 的安全页面把该产品描述为一款 AI 驱动的代码编辑器,并说明该应用程序会向 Cursor 后端域名发出请求,以提供 API、更新和市场功能。页面还记录了一种 Privacy Mode,它可以防止模型使用你的数据进行训练,免费和付费方案均可使用。Privacy Mode 是关于 Cursor 如何对待其接收到的数据的一项政策,它不会改变编辑器连接到哪些主机。

智能体能做什么,如何加以控制

Cursor 的文档说明,智能体在终端中执行 shell 命令,其行为由 Run Mode 设置控制。共有三种模式:

  • Auto-review 运行已知安全的调用,在可能时对 shell 命令进行沙箱化,其余一切交由分类器审查。
  • Allowlist 只运行受信任的、预先批准的操作。
  • Run Everything 不经询问执行所有命令,文档将其视为风险最高的选项。

文档说明,在 macOS 上,Cursor 使用 Seatbelt 和 sandbox-exec 对命令进行沙箱化,在整个子进程树范围内限制文件访问、网络连接和进程行为。这需要 Cursor v2.0 或更高版本,在桌面安装中无需额外配置。单独使用 sandbox.json 允许列表时,沙箱内的网络仅限于该文件中的域名;默认情况下,该允许列表会与 Cursor 内置的软件包管理器和开发工具域名合并。

这类沙箱限制的是智能体启动的命令。与 Cursor 服务器通信的编辑器本身运行在这一边界之外,因此它自己的连接只能在网络层面看到。

Cursor 文档列出的主机

Cursor 的网络配置页面列出了编辑器使用的域名。厂商文档所列如下:

资料来源:Cursor 文档,网络配置。Cursor 表示默认使用 HTTP/2 双向流,以 HTTP/1.1 Server-Sent Events 作为后备,所有连接均使用 TLS 1.2 或更高版本。
主机文档所述用途
api2.cursor.sh大多数 API 请求
api5.cursor.sh 以及 agent.api5.cursor.sh 等智能体子域名Cursor 智能体的请求
api3.cursor.sh、api4.cursor.sh 和 *.gcpp.cursor.sh 网关Cursor Tab 请求(仅限 HTTP/2)
repo42.cursor.sh代码库搜索(仅限 HTTP/2)
authenticate.cursor.sh、authenticator.cursor.sh授权端点和登录网页视图
marketplace.cursorapi.com、cursor-cdn.com、downloads.cursor.com市场和更新

由于 Cursor 记录了一组稳定的自有域名,编辑器连接到这组域名之外、且不属于你所用的软件包管理器和网站的主机,就是值得再看一眼的事件。这本身并不能证明存在问题:扩展、MCP 服务器以及你批准的命令都有各自的目的地。

为什么网络视角仍有帮助

运行模式决定智能体可以做什么,但不会为你记录机器随后连接到了哪里。例如,选择 Run Everything 时根本不会有任何询问,此时应当查看的就是网络。另请参阅关于 Claude Code 和 Windsurf 的姊妹篇,它们介绍的是类似的工具。

用 FireAI 监视 Cursor

FireAI 是 HisnLabs 开发的 macOS 防火墙,自 1.0.2 版起提供一项名为 Agent profile 的功能。它能识别 19 种 AI 智能体,学习每种智能体通常连接到哪里,并标记异常行为供你审查。Cursor 是通过其代码签名来识别的。

Cursor 是 FireAI 根据其开发者代码签名进行核验的三种智能体之一,因此匹配结果不只是一个名称。

FireAI 还会识别智能体的子进程,例如智能体运行的 shell、git 或 curl,方法是沿着进程的父进程向上追溯,直到找到该智能体。因此,这些连接会被计为智能体自己的连接。

FireAI 会标记什么

  1. 在最初的 3 天里,FireAI 学习该智能体通常联系的目的地,并按域名分组。在此学习期内不会标记任何内容。
  2. 此后,学习所得基线之外首次出现的目的地会被标记以供审查。
  3. 上传峰值也会被标记:某一小时内该智能体的上传量至少是其此前最繁忙一小时的 4 倍,且不少于 25 MB。

Agent profile 只使用元数据,即主机名和字节数。FireAI 从不读取连接的有效载荷,也无法读取加密连接的内部内容。

为 Cursor 进行设置

  1. 安装 FireAI 并完成设置,然后像平常一样继续使用 Cursor。3 天学习期从 FireAI 看到的内容开始计算。
  2. 打开 Suggestions,查看 AI agents 卡片。它列出 FireAI 已识别的智能体,以及它对每个智能体学到的内容。
  3. 当 Cursor 访问一个它从未联系过的目的地时,标记会出现在 AI agents 卡片和 Quick Review 中。向左滑动为拦截,向右滑动为“It’s fine”(没问题)。
  4. Block 会为发起连接的进程创建一条规则。“It’s fine”会把该目的地加入智能体的基线,使其不再被标记。
  5. 若要让智能体只访问它已经在用的地方,请在安全模式菜单中选择 Agent profile,它与 Home、Coffee shop、Paranoid 和 Under attack 并列。智能体完成学习后,连接到基线之外目的地的请求会被拦截,而不只是被标记。
  6. 被拦截的目的地会出现在 AI agents 卡片中,并附有 Allow 和 Keep blocked 两个选项。Allow 会把它加入基线,智能体随即可以访问。Keep blocked 会创建一条拦截规则,使该目的地在所有模式下都保持被拦截。

局限

  • FireAI 无法阻止提示注入。隐藏在网页或文件中的提示仍可能操纵智能体。FireAI 能做的是标记数据离开你的 Mac 的路径,并允许你拦截该路径。
  • FireAI 看不到提示、MCP 工具的内容,也看不到 Cursor 读取了哪些文件,例如 ~/.ssh。TLS 隐藏了有效载荷,而且 FireAI 并不在智能体内部。
  • 很快就退出的子进程可能会被遗漏,而且子进程是按路径而非签名匹配的。
  • 在 3 天学习期内不会标记任何内容。
  • 在 Agent profile 模式下,直接连接到没有主机名的裸 IP 地址时,会按地址进行匹配。如果智能体常用的某项服务从一个新地址响应,该连接在你允许之前会被拦截。
  • FireAI 对标记所作的平实说明依据的是它测量到的事实。它从不声称某个目的地安全或危险,决定权在你。

相关指南

同样的方法适用于 FireAI 识别的其他智能体:Claude Code、Claude 桌面 App、ChatGPT Mac App、Codex CLI、OpenClaw、Hermes Agent、Gemini CLI、GitHub Copilot CLI、Amp、Qwen Code、opencode、Aider、Goose、Crush、Windsurf、Kiro、Trae、Meta 的 Muse、由 Python 或 Node 运行的任何其他 AI 智能体。完整的功能说明见 Agent profile 文档。

FireAI 和 HisnLabs 在其中扮演的角色

Cursor 的智能体可以运行命令。FireAI 显示它工作期间你的 Mac 连接到了哪里。

FireAI 是 HisnLabs 自己的产品:一款直接在 Mac 上运行的 AI 防火墙。它用通俗易懂的语言显示你的应用建立的每一个连接,并让你决定哪些数据可以离开你的 Mac——它的 AI 在本地运行,因此你的流量永远不会发送给我们或任何其他人。HisnLabs 的安全研究团队负责让这些判断保持准确:归类哪些域名只是普通的遥测、哪些属于真正的服务,追踪连接背后的国家和网络,并用真实的流量模式训练设备端模型(FireAI Pilot 功能)——这一切都不会离开你的 Mac。

你可以阅读它背后的技术决策,或试用 FireAI 17 天:HisnLabs 出品的 FireAI。

来源