zn-gate 1.4.1 与离开你机器的数据

John Silver7 分钟阅读

默认情况下,任何内容都不会离开你的机器。如果开启云端检测,只会发送提示词,且会先移除机密信息;工具输出永远不会被发送。但对于设置了 ZN_API_KEY 的 zn-gate 1.4.0 用户,这一承诺并不成立。本文说明该软件包做了什么、我们的 API 存储了什么、我们在 1.4.1 中做了哪些修改,以及你应当采取的措施。简而言之:请升级;如果你在设置了 API 密钥的情况下运行过 1.4.0,请轮换所有可能出现在工具输出中的凭据。

1.4.0 做了什么

zn-gate 检查三类文本:提示词、工具调用参数,以及工具结果(智能体读取的文件内容、它运行的命令输出)。这三类文本都会先经过本地规则评估。在 1.4.0 及更早版本中,如果本地规则没有拦截文本,并且设置了 ZN_API_KEY,Node 软件包就会把该文本发送到 api.usezn.com,由 Galvanize-60M 分类器再次判断。它发送时不会对机密信息进行脱敏,并且不仅针对提示词,也针对工具结果和工具参数。

README 称该软件包以本地为先,并且会应用机密脱敏。脱敏函数确实存在于代码中,但没有任何可执行路径调用它。我们在 2026-10-11 对已发布软件包的内部审查中发现了这个问题。

受影响的对象:

  • npm 软件包的用户(MCP 服务器、zn-gate shield、zn-gate analyze、zn-gate test 或库),前提是设置了 ZN_API_KEY 且 ZN_LOCAL_ONLY 未设为 true。
  • Python 软件包的用户,前提是设置了 ZN_API_KEY:只有 analyze() 和 zn-gate analyze 会发送文本,且未经脱敏。guard、check_tool_call、check_tool_result、sanitize_tool_result 以及框架集成始终是本地运行的。
  • 从未设置 ZN_API_KEY,或设置了 ZN_LOCAL_ONLY=true 的用户不受影响。没有任何数据离开机器。

我们的 API 存储了什么

文本通过 TLS 传输,并由分类器评估。另外有两条路由会把每条输入的前 1,000 个字符存入我们的证据表,且没有过期时间:旧版 /prod/analyze 路由和 MCP analyze 路由。zn-gate 默认使用的当前 /v30/analyze 路由,对付费套餐不存储输入;只有选择加入的免费 Contributor 套餐才会保留经过脱敏和截断的副本。访问日志只记录路由和状态,从不记录内容。

2026-10-11,我们将 API 改为只存储 SHA-256 哈希值和输入长度,并且在证据表中,为所有存有输入文本的记录删除了这些文本:共 1,281 条记录,日期介于 2026 年 8 月 22 日至 9 月 12 日之间。

1.4.1 的变化

  • 工具结果、工具调用参数和工具描述在所有配置下都只在本地评估:包括 MCP 服务器、shield 代理和库。
  • 云端是可选的。 只有同时设置 ZN_CLOUD=1 和 ZN_API_KEY 时,提示词分析才会查询云端。仅设置 ZN_API_KEY 不会启用任何功能。ZN_LOCAL_ONLY=true 仍然可以覆盖所有设置。
  • 脱敏在真实的代码路径上运行。 check_tool_result 始终返回经过机密脱敏器处理的内容;check_tool_call 返回已净化的参数;shield 转发工具输出时会对机密信息进行脱敏。启用云端时,提示词文本会先经过脱敏器,然后才会发送。
  • zn-gate status 会显示你的配置会发送什么内容,自检过程从不使用网络。
  • 新测试会模拟网络并统计请求数:即使设置了 ZN_API_KEY 和 ZN_CLOUD=1,包含假机密的工具输出也会被脱敏返回,且不发出任何请求。针对 1.4.0 的代码,这八项测试中有七项失败。

README 现在在三个软件包中都包含"What leaves your machine"(什么会离开你的机器)表格,本网站也有同样的表格。

你需要做什么

  1. 升级:npx -y zn-gate@latest(或 npm install -g zn-gate@1.4.1)以及 pip install -U zn-gate。
  2. 如果你在设置了 ZN_API_KEY 的情况下运行过 1.4.0 或更早版本,请假定在此期间出现在工具输出或工具参数中的任何凭据都可能已被传输,并轮换这些凭据。
  3. 运行 npx -y zn-gate status,查看你当前的配置会发送什么。

该安全公告已在 GitHub 发布,编号为 GHSA-r4h2-qcf2-8227,受影响代码路径的完整列表见 1.4.1 更新日志。

为什么要写这篇文章

没有人向我们报告此事,是我们自己发现的。我们本可以在更新日志里加一行就发布 1.4.1。我们之所以公开细节,是因为 zn-gate 的全部意义在于,你可以信任它如何处理你的数据,而这份信任必须经得起我们犯错的日子的考验。如果你有疑问,或者你认为这里的某些内容仍不够准确,请写信至 security@usezn.com。

— John Silver

2026 年 10 月 14 日更新:数据处理的表述已修改,以描述软件包和 API 当前的实际行为。

Share