FireAI 安全博客

作者 FireAI Security & Research Team · 发布于

FireAI 识别 macOS 上的 19 个 AI 智能体,并限制其数据的去向

FireAI 识别 macOS 上的 19 个 AI 智能体,并限制其数据的去向

描述语言模型系统安全的两份 OWASP 清单,都把数据离开系统视为核心后果:Top 10 for LLM Applications 2025 将敏感信息泄露列为 LLM02 [2];2025 年 12 月 9 日发布的 Top 10 for Agentic Applications for 2026 在其十个条目中的八个里提到了数据外泄 [4]。在 Mac 上,这种外泄表现为一个网络连接。FireAI 1.0.4 将 Agent profile 可识别的智能体从三个扩展到 19 个,其中包括在 node 或 python 内运行的智能体。本文说明这项工作应对了哪些 OWASP 风险,以及哪些没有应对。

由 19 个黏土小角色组成的网格,每个角色对应 FireAI 1.0.4 识别的一个 AI 智能体,从 Claude Code 和 Cursor 到 OpenClaw、Hermes Agent 和 Muse。
FireAI 为每个已识别智能体显示的角色。这些是 FireAI 的插画,并非各厂商的标志。

背景

Mac 上的 AI 智能体以启动它的账户的权限运行。它读取文件、执行 shell 命令并建立网络连接,并根据所读到的文本(包括他人撰写的文本)决定下一步行动。OWASP 将提示词注入定义为一种漏洞,它“在用户提示词以非预期方式改变 LLM 的行为或输出时发生”,并将“敏感信息泄露”列为其影响之一 [1]。

FireAI 是一款网络防火墙。它不在智能体内部运行,也不读取提示词、文件或加密连接的内容。它所能看到的是:每个连接由哪个程序发起、目标主机,以及发送了多少字节 [5]。FireAI 1.0.2 引入的 Agent profile 利用这些元数据了解每个智能体通常连接到哪里,并对其从未联系过的目标地址或异常大的上传发出标记。1.0.3 中新增的 Agent profile 安全模式会阻止新的目标地址,直到用户允许为止 [6]。

OWASP 的描述

Top 10 for LLM Applications 2025

  • LLM01:2025 提示词注入。示例场景 2 描述了网页中的隐藏指令使模型“插入一张链接到某个 URL 的图片,从而导致私密对话被外泄” [1]。
  • LLM02:2025 敏感信息泄露。该条目将“个人身份信息(PII)、财务细节、健康记录、机密商业数据、安全凭据和法律文件”列为面临风险的信息 [2]。
  • LLM06:2025 过度代理。该条目将风险归因于过度的功能、权限和自主性;其示例中,一封收到的电子邮件诱骗智能体扫描用户收件箱,并将敏感信息转发给攻击者 [3]。

Top 10 for Agentic Applications for 2026

  • ASI01 智能体目标劫持:网页或文档中的隐藏指令“悄然将智能体重定向,使其外泄敏感数据或滥用所连接的工具” [4]。
  • ASI02 工具滥用与利用:智能体滥用合法工具,“导致数据外泄、工具输出被操纵或工作流被劫持”。示例包括一个智能体串联合法的管理工具(其中包括 cURL)将敏感日志发送出去,以及一个经批准的 ping 工具被用来通过 DNS 查询泄露数据 [4]。
  • ASI04 智能体供应链漏洞:示例之一是一个被攻陷的 npm 包,由编程智能体自动安装,并“外泄了 SSH 密钥和 API 令牌” [4]。
  • ASI05 意外代码执行:隐藏在提示词中、由智能体执行的 shell 命令,“导致未经授权的系统访问或数据外泄” [4]。
  • ASI10 失控智能体:在间接提示词注入之后持续向外发送数据的智能体;缓解措施是设置一个监测偏离行为的行为层,其中包括“意外的数据外泄尝试” [4]。

针对 ASI02,该文件的第三项缓解措施标题为 Execution Sandboxes and Egress Controls,内容为:“实施出站允许列表,并拒绝所有未经批准的网络目标地址” [4]。同一条目还要求为每个工具配置包含出站允许列表的最小权限配置文件。这两项建议正是 Mac 上的网络防火墙能够执行的。

FireAI 1.0.4 识别哪些智能体

早期版本通过代码签名识别 Claude Code、Claude 桌面应用和 Cursor,通过路径识别 ChatGPT 和 Codex。在脚本运行时内运行的智能体则无法识别:在防火墙看来,OpenClaw 只是 node,Aider 只是 python [5]。FireAI 1.0.4 读取 node、bun、deno 和 python 进程的参数以找出其运行的脚本,并新增了 14 个智能体。

FireAI 1.0.4 中的识别规则。部分智能体可通过多种方式匹配。
智能体FireAI 的识别方式
Claude Code、Claude、Cursor带有开发者团队标识符的代码签名;Claude Code 还可通过其安装文件夹识别
ChatGPT、Windsurf、Kiro、Trae、Goose、OpenClaw程序运行所在的应用包
Meta 的 Muse其 Mac App Store 应用的签名标识符
Codex、opencode、Crush、Goose、Cursor 的命令行智能体原生命令行程序的名称
OpenClaw、Hermes Agent、Gemini CLI、GitHub Copilot CLI、Amp、Qwen Code、opencode、Aider、Codex、Claude Code由 node、bun、deno 或 python 运行的脚本,或其安装所在的文件夹

OpenAI 将 dots 描述为在云端各自的计算机上运行的智能体 [8]。它们在 Mac 上的流量经由 ChatGPT 应用,因此 FireAI 将其计入 ChatGPT。Meta 的 Muse [9] 通过其 App Store 标识符识别。

识别范围延伸到智能体所启动的程序。当 shell、git、curl 或包安装程序建立连接时,FireAI 会沿父进程链向上追溯,最多八层,直到找到一个已识别的智能体,并将该连接记录在该智能体名下 [5]。这正是 OWASP 在 ASI02 中描述的情形,即由 cURL 等合法工具将数据带出:工具本身是可信的,但其父进程是智能体。

具备智能体功能的网页浏览器和终端应用被有意排除在外。否则它们的全部流量都会计入智能体,而 Agent profile 模式随之会阻止正常的网页浏览。

各项控制措施与 OWASP 条目的对应

来源:条目依据 OWASP [1] 至 [4];控制措施依据 FireAI 文档 [5]。
OWASP 条目FireAI 控制措施仍在其范围之外的部分
LLM01、ASI01:注入的指令使智能体改变方向向智能体从未联系过的主机发出的请求会被标记,在 Agent profile 模式下则被阻止注入本身;发送到智能体已在使用的目标地址的数据
LLM02:敏感信息泄露上传激增会被标记:某一小时的上传量至少是该智能体最繁忙一小时的 4 倍,且绝不低于 25 MB单个密钥或令牌等小规模泄露;FireAI 无法判断数据是否敏感
LLM06:过度代理按应用设置的规则限制任何程序可访问的目标地址通过智能体被允许使用的服务(例如其邮件服务商)发送的消息
ASI02:利用合法工具外泄数据子进程归属于智能体;Agent profile 模式相当于一份通过学习得到的出站允许列表编码在 DNS 查询中的数据:Agent profile 模式从不阻止 DNS
ASI04、ASI05:由智能体运行的包或命令来自智能体所运行代码的连接,与智能体自身的连接一样被标记或阻止之后在智能体之外运行的代码,则改由常规的按应用规则管理
ASI10:持续向外发送数据的智能体每个智能体都有一条基线;偏离基线的行为会以一句通俗的话标记出来前 3 天内学到的行为会成为基线的一部分

标记描述的是 FireAI 测得的事实,例如某个智能体此前从未联系过某台服务器,却向其发送了 40 MB。启用本地 AI 模型后,它会将这些事实改写成一句话。它不判断目标地址是否安全;决定权始终在用户手中 [5]。

2026 清单中的其余条目,即身份与权限滥用(ASI03)、记忆与上下文投毒(ASI06)、不安全的智能体间通信(ASI07)、级联故障(ASI08)和人机信任利用(ASI09),涉及智能体内部及智能体之间发生的事情。Mac 上的网络防火墙只有在其后果最终表现为一个连接时才能看到。

建议

  1. 让每个智能体在最初 3 天内正常运行,使其基线反映日常工作,而不是对某个新工具的试用。
  2. 定期查看 Suggestions 中的 AI 智能体卡片。智能体刚读完一个网页、一封电子邮件或一个陌生代码仓库后立即出现首次目标地址,正是 OWASP 在 ASI01 中描述的模式。
  3. 对于处理敏感代码或文档的智能体,请切换到 Agent profile 安全模式,使新的目标地址在获得允许之前一律被阻止 [6]。
  4. 让机密信息远离智能体的访问范围。FireAI 看到的是数据去往何处,而不是数据内容,也无法撤回已发送到允许目标地址的数据。
  5. 对于 FireAI 未列名的智能体,请为其运行时所用的程序编写一条规则 [7]。

与 FireAI 的关联

FireAI 在 Mac 本机上落实 OWASP 指南中的出站部分:为每个智能体建立一份通过学习而非手工编写的允许列表,一旦越界即发出标记或予以阻止。它仅依据连接元数据工作,与用户活动有关的任何信息都不会离开 Mac。它不能防止提示词注入,不检查智能体发送的内容,也不能替代沙箱、最小权限凭据或对高影响操作的人工审批,而这些也是 OWASP 文件所建议的措施。

局限性

  • FireAI 识别的是上文列出的 19 个智能体,而非任意智能体。其他任何程序,无论是否为智能体,都受 FireAI 常规连接提示和按应用规则的约束,但没有基线,也不会触发智能体标记。
  • 按路径或脚本名称进行的识别只是基线的标签,并不能证明身份。一个程序可以复制另一个智能体的文件夹名称。只有 Claude Code、Claude 和 Cursor 会对照开发者团队标识符进行核验;Muse 的团队标识符尚未在已安装的副本上核验。
  • 在大约十分之一秒内退出的子进程,可能在 FireAI 追溯其父进程之前就已消失,此时其连接不会归属于智能体。
  • 最初 3 天内不会发出任何标记,智能体在此期间的一切行为都会成为其常态。
  • 目标地址按域名分组。发送到智能体已在使用的域名下的新服务器,或发送到代码托管平台等共享服务的数据,不会被标记。
  • FireAI 无法读取提示词、MCP 工具内容、技能或加密流量,也看不到智能体打开了哪些文件。
  • 上述对应关系是 HisnLabs 对 OWASP 文件的解读。OWASP 并未审查或认可 FireAI。

FireAI 和 HisnLabs 在其中扮演的角色

你 Mac 上的智能体可能被一条隐藏指令操控。FireAI 会显示其数据接下来流向何处,并可以加以阻止。

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

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

来源