Claude Code 隐写标记与 AI 安全信任新警示

一位安全研究员近日发表了一篇具有深远意义的逆向分析报告:Anthropic 的 AI 编程工具 Claude Code 在系统提示中嵌入了隐写标记(steganographic markers),用于检测用户是否通过第三方代理或非官方 API 端点使用其服务。

这篇题为《Claude Code Is Steganographically Marking Requests》的文章,揭示了 AI 安全领域一个被长期忽视的维度——当 AI 工具开始对你隐藏行为时,信任就已经开始瓦解

发现了什么?

研究员在对 Claude Code 的 macOS 二进制文件进行逆向分析时,发现了以下关键机制:

  1. 隐写标记:Claude Code 会根据用户的 API 基址(ANTHROPIC_BASE_URL)和系统时区,在发送给模型的系统提示中嵌入细微的 Unicode 变体——例如将普通的撇号 ' 替换为不可见的 Unicode 字符 ʼʹ,或将日期格式从 YYYY-MM-DD 改为 YYYY/MM/DD

  2. 检测规则:代码会检查以下条件:

    • 系统时区是否为 Asia/ShanghaiAsia/Urumqi
    • API 端点 hostname 是否匹配已知域名列表
    • hostname 是否包含目标 AI 实验室关键词(如 deepseekzhipumoonshot 等)
  3. 列表混淆:域名和关键词列表经过 base64 + XOR(密钥 91) 双重编码。解码后的域名列表包含大量中国互联网企业(百度、阿里巴巴、字节跳动、快手、哔哩哔哩、科大讯飞等)以及 AI 代理和转售平台域名。

  4. 触发条件:当用户设置 ANTHROPIC_BASE_URL 指向非官方 API 端点时,该代码路径才会激活。官方 API 用户不受影响。

为什么这很重要?

这篇文章的重要性远超一次简单的安全披露。

它触及了 AI 行业最敏感的矛盾之一:AI 开发工具需要极高级别的系统权限(文件系统、shell、网络),但用户对这些工具内部行为的可见性几乎为零。

作者在文中写道:

“编程智能体已经生活在危险边界上。它们可以检查代码、意外汇总密钥、运行命令、安装包、编辑文件、在本地机器上提交修改。大多数开发者接受了这一点,因为生产收益值得冒险。”

“信任来自那些无聊的行为。如果客户端想检测自定义 API 网关,它可以直说。它可以发送一个明确的遥测字段并附上文档。它可以把策略放在明处。它可以把行为写进发布说明。把信号藏在系统提示里,只会让其他所有隐私声明变得难以相信。”

对行业的三层启示

1. 模型保护与用户信任的冲突

Anthropic 的动机是可以理解的——保护模型不被盗用、检测 API 转售和“蒸馏攻击”(利用官方 API 输出训练竞品模型)。但实现方式完全绕过了用户的知情同意,这在安全社区是极不寻常的做法。

2. 安全机制不应违背透明原则

一个真正安全的工具,其安全机制本身应该是可审计、可理解、可关闭的。隐写术本身就是一种欺骗性的通信方式——无论携带的信号是善意还是恶意,在安全工具中使用隐写术都开创了一个危险的先例。

3. 基础设施层的信任危机

随着 AI Agent 成为新的计算范式,工具对本地环境的访问权限将不断扩大。当代码助手、部署代理、数据管理 Agent 都能读取、写入、执行时,我们迫切需要一套基础透明度标准

一个值得坚持的观点

文章结尾的一句话值得每一个使用 AI 工具的人记住:

“信任来自那些无聊的部分。”

“无聊”在这里意味着可预测、可审计、可解释。一个工具在做一个合理的操作时,它的代码应该平淡无奇,而不是玩花活。当我们在隐私白皮书里读到“我们不会将你的代码用于训练模型”时,却无法验证二进制文件里是否存在隐写检测逻辑,那这种信任就是脆弱的。

这篇文章引发的不是对 Anthropic 的讨伐,而是对所有 AI 开发工具发起的一个拷问:你还能发现多少个“看不见的标记”?