FireAI 安全博客

作者 FireAI Security & Research Team · 发布于

Mac 上的 GitHub Copilot CLI 安全:监视它的连接

Mac 上的 GitHub Copilot CLI 安全:监视它的连接

GitHub Copilot CLI 把编程智能体带入终端。它可以编辑文件、运行命令,并处理仓库、issue 和拉取请求。搜索“github copilot cli security”或“is Copilot CLI safe”的人,大多想知道它可以运行什么、会向外发送什么。本文总结 GitHub 自己的文档,并展示 HisnLabs 开发的 macOS 网络防火墙 FireAI 如何监视它的连接。

Copilot CLI 是什么,如何在 Mac 上运行

其代码仓库说明,该工具由 GitHub 开发,与 Copilot 编程智能体使用相同的智能体框架。它支持 macOS、Linux 和 Windows,可以通过 npm(npm install -g @github/copilot)、Homebrew(brew install copilot-cli)或安装脚本安装。你可以使用 /login 命令登录,也可以使用具有 Copilot Requests 权限的个人访问令牌,以 GH_TOKEN 或 GITHUB_TOKEN 提供。它可以在交互模式下工作,也可以通过 -p 标志在程序化模式下工作,默认附带 GitHub 的 MCP 服务器,并支持自定义 MCP 服务器。

它能访问什么

GitHub 的文档说明,在受信任目录中,Copilot 可以读取、修改和执行文件,而智能体通过你已验证的账户与 GitHub.com 交互。由于它可以运行命令,它也可以建立网络连接,例如通过 curl 或 git。

文档所述的权限模型

  • 受信任目录:你需要确认信任启动 CLI 时所在的目录。文档建议不要从主目录或含有不受信任可执行文件的位置启动。
  • 工具审批:对于会修改或执行内容的工具,例如 rm、node 或 sed,Copilot 会请你选择批准一次、在本次会话中批准,或拒绝并建议替代方案。
  • 标志:--allow-tool='shell(COMMAND)' 和 --deny-tool='shell(COMMAND)' 用于设置按命令的规则,--deny-tool 优先。--allow-all-tools 会跳过审批,用文档的话说,这会让 Copilot 拥有与你相同的访问权限。

对于最后这种情况,文档建议使用本地或云端沙箱,或隔离的虚拟机。本文查阅的页面没有详细说明哪些数据会被传输给 GitHub 或模型提供方,因此要了解确切的目的地,应当依靠观察。这正是 OWASP 所称的过度代理(excessive agency):智能体被允许行动,而每一步都没有人工检查。

用 FireAI 监视 GitHub Copilot CLI

FireAI 是 HisnLabs 开发的 macOS 设备端防火墙。其 Agent profile 功能把 GitHub Copilot CLI 列为它识别的 19 种 AI 智能体之一。由于 Copilot CLI 在 node 下运行,FireAI 通过运行时所运行的脚本来识别它,这是 Agent profile 针对 node、bun、deno 和 python 智能体所采用的方法。智能体的子进程,例如它启动的 shell、git 或 curl,会通过向上追溯父进程而归属于它。随后,FireAI 会在最初 3 天学习 GitHub Copilot CLI 通常联系哪些目的地,按域名分组,在此期间不标记任何内容。此后,首次出现的目的地会在 Suggestions、AI agents 卡片和 Quick Review 中被标记。上传峰值也会被标记:某一小时内该智能体的上传量至少是其此前最繁忙一小时的 4 倍,且不少于 25 MB。

FireAI 只使用元数据,即主机名和字节数,从不读取连接的有效载荷。默认情况下,它只作标记,把决定留给你。在 Agent profile 安全模式下,它会更进一步:学习结束后,连接到基线之外目的地的请求会被拦截,直到你点按 Allow;Keep blocked 则会把这次拦截变成一条在所有模式下都有效的规则。

逐步设置

  1. 安装 FireAI 并完成首次运行设置,参见 Install and finish setup。
  2. 像平常一样使用 GitHub Copilot CLI 3 天。FireAI 会在后台学习其目的地,此时还不会标记任何内容。
  3. 打开 Suggestions,找到 AI agents 卡片。出现标记时,阅读那句平实的说明,然后在 Quick Review 中向左滑动拦截,或向右滑动选择“It’s fine”(没问题)。
  4. 如果希望智能体只访问它已经在用的地方,请在安全模式菜单中选择 Agent profile,它与 Home、Coffee shop、Paranoid 和 Under attack 并列。
  5. 有内容被拦截时,打开 AI agents 卡片,选择 Allow 将其加入基线,或选择 Keep blocked 创建拦截规则。

局限

  • FireAI 无法阻止提示注入。它通过标记数据离开你的 Mac 的路径并允许你拦截该路径来限制损害。
  • FireAI 看不到 GitHub Copilot CLI 的提示、MCP 工具的内容、技能,也看不到它读取了哪些文件,因为 TLS 隐藏了有效载荷,而且 FireAI 并不在智能体内部。
  • Copilot CLI 是按脚本名称匹配的,因此 FireAI 只是对它进行标注,而不是验证:只有 Claude Code、Claude 和 Cursor 会根据其开发者的签名进行核验。
  • 由 gh 或 git 程序建立的连接通过进程树进行匹配,即按路径匹配,而很快就退出的子进程可能会被遗漏。
  • FireAI 不读取审批或命令,因此无法告诉你是哪条命令建立了某个连接。
  • 在 3 天学习期内不会标记任何内容,上传峰值只会被标记,不会被拦截。
  • 由于目的地按域名分组,智能体已在使用的域名下的新服务器会被视为已知。

该功能的说明见 Agent profile 文档。

FireAI 识别的其他智能体也有各自的指南:Claude Code、Claude 桌面 App、Cursor、ChatGPT Mac App、OpenAI Codex CLI、OpenClaw、Hermes Agent、Gemini CLI、Amp、Qwen Code、opencode、Aider、Goose、Crush、Windsurf、Kiro、Trae、Meta 的 Muse、由 Python 或 Node 运行的任何 AI 智能体。

FireAI 和 HisnLabs 在其中扮演的角色

Copilot CLI 在你批准后可以运行命令。FireAI 显示它接下来连接到哪里,并且可以拦截。

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

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

来源