Claude Code 正在隐蔽标记请求
我出于隐私原因检查了 Claude Code。大多数开发者给予他们的工具不合理的访问权限。文件系统、shell、git、浏览器访问,甚至如今的计算机使用。这就是重点。他们需要足够的上下文来完成有用的工作。这也意味着客户端本身值得审查。如果一个编码代理可以读取你的代码库并执行命令,那么传送它的二进制文件应该是无趣的(例如,pi工具)。所以我查看了我本地的 Claude Code(2.1.196)安装。在 Claude Code 二进制文件内部,有一个函数可以更改插入到系统提示中的当前日期字符串。正常字符串看起来是这样的:Claude Code 可以悄悄改变两件事情:今天的撇号和日期分隔符,从 - 变为 /。以下是相关代码,从缩小的包中清理出来:这就是提示隐写,一种用于在明面上隐藏数据的技术。可见的句子仍然像正常的日期。模型和用户看到了无趣的东西。原始请求包含一个标记。触发器是 ANTHROPIC_BASE_URL,Claude Code 的 API 基础 URL 覆盖。然后它检查是否:系统时区是 Asia/Shanghai 或 Asia/Urumqi,API 基础 URL 主机名匹配解码的域名列表,主机名包含特定的 AI 实验室关键词。时区检查更改:变成:主机名检查更改撇号:条件撇号正常 ' 已知域名 Lab 关键词 已知域名和实验室关键词 。这些在大多数单一字体中都是视觉上微小的变化,你通常不会注意到。域名和关键词列表以 base64 字符串存储,并使用密钥 91 进行 XOR 解码。解码后的实验室关键词列表是:解码后的域名列表要大得多。它包含中文企业域名、AI 公司域名以及很多代理/转售/网关域名。一些例子:日期功能在构建代理上下文时使用:因此,标记成为发送到模型的系统上下文的一部分。(在这里,Anthropic 可能在他们的后端解析)我安装的二进制文件由 Anthropic 签名:我当前的 shell 没有设置 ANTHROPIC_BASE_URL,并且我的时区是:因此,在我的机器上,在我当前的环境下,这条路径会产生正常的撇号和正常的 YYYY-MM-DD 日期字符串。Anthropic 可能希望检测 API 转售商、未经授权的 Claude Code 网关和模型“蒸馏攻击”管道。指向已知转售域名的自定义 ANTHROPIC_BASE_URL 是一个有用的信号。包含 deepseek 或 zhipu 的主机名也是一个有用的信号。那部分是合理的,但实现方式很奇怪。Claude Code 悄悄地使用隐形 Unicode 标记更改系统提示。它将代理/网关分类编码成看起来像普通英语的句子。它将域名列表隐藏在 XOR 和 base64 之后。这不是恶意特性,但对于一个要求信任的开发者工具来说,这是个奇怪的选择。编码代理已经生活在一个可怕的边界的错误一侧。他们可以检查代码、意外地总结秘密、运行命令、安装包、编辑文件并在你的本地机器上提交。大多数开发者接受这种风险,因为提升生产力是值得的。真实开发者的信任取决于乏味的行为。如果客户端想要检测自定义 API 网关,它可以明确地说明。它可以发送带有文档的显式遥测字段。它可以让政策变得可见。它可以将行为放在发布说明中。隐藏系统提示中的信号使其他隐私声明更难以信任。对于大多数用户来说,这条路径可能保持不活跃。如果你使用官方的 Anthropic API 端点,Crt()会提前返回。如果 ANTHROPIC_BASE_URL 未设置,Crt()会提前返回。如果你使用正常的设置,日期提示保持“无趣”。有趣的情况是人们通过自定义基础 URL 路由 Claude Code。这包括:内部网关、本地代理、模型路由器、转售商、研究设置。在这种情况下,Claude Code 分类主机名并将结果编码到提示中。绕过也很简单。更改主机名、更改时区、修补二进制文件、包装过程。任何严肃的对手都可以让这个信号变得毫无用处。因此,这个特性主要惩罚那些更容易被指纹识别的确切人群:做奇怪但合情合理事情的正常开发者。我认为这本可以是明确的。开发工具可以强制执行条款。API 提供商可以检测滥用。公司可以保护他们的模型。当一个具有文件系统和 shell 访问权限的工具开始在隐形提示标点中隐藏分类位时,正确的反应是审查。信任是在乏味的部分获得的。
本站免费、广告极少。如果觉得有帮助,可以请我们喝杯咖啡 —— 任何金额都对持续运营有实际帮助。
☕请我喝杯咖啡