AI编程工具暗藏追踪标识
最近在浏览技术社区时,看到一位开发者发布的帖子,标题直接让我震惊了:
「Claude Code正在以隐写术方式标记请求」
用通俗的话说:你的AI代码辅助工具,在系统指令中藏了身份识别信息。
这不是比喻。确实是在system prompt里,用人眼无法察觉的方式,嵌入了水印标记。
这位名叫Thereallo的开发者,原本只是想检查Claude Code客户端的隐私策略——毕竟这个工具拥有文件访问权限、命令行权限、Git权限,谁不关心安全问题呢。
他查看了Claude Code v2.1.196的打包代码,随后在一个不起眼的角落,发现了一个函数。
这个函数的逻辑极其简洁:修改系统提示词中的日期字符串。
正常情况下,Claude Code传给模型的system prompt里有一行:
看起来毫无威胁对吧?但这个函数能在你毫不知情的情况下,偷偷改动两样东西:
1. 单引号(apostrophe)
Today's里的那个 ',它不是普通的ASCII单引号。根据你的环境,它会被替换成四个不同的Unicode字符。你在屏幕上看到的都是"Today's",但底层的字节完全不同。
2. 日期分隔符
日期中的 -,有时会被替换成 /。
四个单引号 x 两个分隔符 = 8种组合。一套2比特的隐写编码系统。你的每一次API调用,都携带一个独特的身份指纹。
这位开发者继续深入研究,发现标记逻辑有三个触发条件:
known(已知域名) API请求的host是否在硬编码的域名白名单中
labKw(实验关键词) host中是否包含特定"实验"关键词
cnTZ(中国时区) 系统时区是否为Asia/Shanghai或Asia/Urumqi
更引起我关注的是第三点——专门针对中国时区做了单独判断。
代码中明确写了Asia/Shanghai和Asia/Urumqi的判断分支。这意味着:只要你的系统时区在中国,Claude Code就会给你一个独特的标记组合。Anthropic能精确识别这个请求来自中国用户、使用的哪个API端点、是否为内测版本。
这不是缺陷。这是功能特性。
原发布者给出了几个合理推测:
1. 追踪第三方客户端——如果某个分支版本使用了自定义的API代理,水印能暴露流量来源