ClaudeCode官方“投毒”标记中国用户翻车,国外用户也怒了

admin 2026-07-05 06:16:57 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: Anthropic在ClaudeCode2.1.196版本中嵌入隐写代码,通过检查系统时区(Asia/Shanghai或Asia/Urumqi)和代理URL(包含147个中国域名)来识别中国用户,并在系统提示词中通过Unicode字符替换(如日期分隔符和撇号)进行标记。该行为被安全研究员逆向分析发现后引发广泛争议,Anthropic承认是3月上线的实验并承诺回滚。事件暴露了AI编程工具权限过高和信任模型问题,用户应审查工具权限并关注隐私安全。 综合评分: 86 文章分类: 逆向分析,安全大事件,安全意识,红队,其他


cover_image

Claude Code官方“投毒”标记中国用户翻车,国外用户也怒了

原创

大东 大东

OSC开源社区

2026年7月2日 12:23 广东

在小说阅读器读本章

去阅读

Anthropic 这次又翻车了。

6月30日,一名 Reddit 用户发了篇逆向分析。他拆了 Claude Code 2.1.196 的二进制文件,在里面找到了一段函数。触发条件很具体,做的事情很隐蔽。

当你使用代理连接 Claude Code 时,它会检查系统时区是否为 Asia/Shanghai 或 Asia/Urumqi,并判断代理 URL 是否为中国域名或指向某个中国 AI 实验室,然后在系统提示词里动手脚。

具体干了啥呢?改日期格式和英文撇号的 Unicode 字符,比如把日期分隔符从「2026-06-30」变成「2026/06/30」,「Today’s」 里的单引号被替换成另一种肉眼完全无法区分的 Unicode 变体。三个变体对应三种状态:命中中国域名、命中中国 AI 实验室关键词、两者都命中。具体显示为:

• 中国域名 + 非 AI 实验室 → ’(右单引号 ‘)

• 非中国域名 + 中国 AI 实验室 → ʼ(修饰符撇号 ʼ)

• 中国域名 + 中国 AI 实验室 → ʹ(修饰符角分号 ʹ)

三个字符肉眼几乎无法分辨,加上日期分隔符的差异,一共能编码 6 种身份状态。用户的请求表面上看只是发送了一段普通英文提示词,Anthropic 后端服务器扫描一下日期分隔符和单引号的 Unicode 编码,就能瞬间给该用户打上标签:是不是挂了 VPN、是否实际位于中国、是否属于某家 AI 实验室

被发现后,Anthropic 承认了。说这是3月上线的实验,用于检测 API 滥用和模型蒸馏攻击,承诺在次日回滚。

但这件事引发的讨论不只是一个版本回滚能解决的。国内外所以社媒上几个高赞回答直接称其为「间谍软件」。核心争议不完全是 Anthropic 想检测什么,而是它选择了这样一种见不得人的方式。

文本隐写术

Claude Code 这段检测机制具体的触发条件是 ANTHROPIC_BASE_URL 被设置且指向非官方地址。如果这个环境变量没设,或者指向 api.anthropic.com,路径直接返回,无事发生。

接下来的检测逻辑分两路。

第一路检查系统时区,只认两个值,Asia/Shanghai 和 Asia/Urumqi。如果命中,日期格式从连字符换成斜杠。

第二路检查代理域名。域名名单被 base64 编码后通过 XOR 91 混淆藏在二进制里。解码后包含147个条目。百度、阿里、蚂蚁、字节、Moonshot、MiniMax、StepFun 都在里面,还有大量 Claude 镜像站和代理转售域名。

如果域名命中,英文撇号被替换。普通撇号 ‘ 是 U+0027;命中中国域名换成 U+2019(右单引号);命中 AI 实验室关键词换成 U+02BC(修饰符撇号);两者都命中换成 U+02B9(修饰符角分号)。

这三个字符在绝大多数等宽字体里渲染结果完全一样,代码审查看不出,PR diff 看不出,你在终端里复制出来也看不出。

系统提示词里本来就有一句固定的话「Today’s date is 2026-06-30.」改完之后它看起来还是「Today’s date is 2026-06-30.」。但 Anthropic 的服务器收到后,可以解析这些字符差异,在后台给用户打标签:这个用户挂了代理,实际在中国,甚至知道用的是什么类型的代理。

这也是为什么研究者把它叫做文本隐写术(prompt steganography)。

比技术更值得讨论的问题

无论是 Reddit、X、还是知乎,讨论这件事的几个高赞回答,情绪非常一致。

Anthropic 本来可以公开做这件事,该检测就检测,哪怕甩锅给美出口管制法规也行,硅谷巨头里面限制中国区用户访问的不止它一家。微软限制中国区访问,直接在网页上弹提示;谷歌说不做中国市场就不做。而 Anthropic 选了一个最拧巴的方案:悄悄混淆代码、Unicode 隐写、完全绕过用户知情,也不知道它究竟想干嘛。

还有的高赞回答把事件上升到系统性风险的层面。一位安全博主在分析里展开了一个场景:Unicode 标准里有数千个视觉上相同的字符,仅空格就有十几个码位。一个 500 词的 system prompt 能携带约 100 到 200 bit 的隐写信息。今天系统提示词里改的是日期格式和撇号,理论上同一套机制可以扩展到本机用户名、操作系统版本、工作目录路径特征、环境变量里的 API key 前缀。客户端代码能读什么,就能编码什么。

Anthropic 技术团队信任负责人公开回应此事时用的措辞也是越描越黑,他说这是个“实验”,语气像是在描述一次寻常的 A/B 测试。但这个所谓的“实验”从今年 3 月运行到 6 月底、涉及多工程师实现、包含了混淆代码和 Unicode 隐写的功能。这个说法在国内外社交媒体上都受到了质疑。

AI 编程工具权限是否过高

如今 AI 编程工具盛行,开发者允许 Claude Code、Cursor、Copilot 读取文件、执行命令、操作 git。原本大家能接受这些权限的前提是,工具是我主动授权的,行为是我看得到的。

而这次的“隐写”事件打破了这个默认信任。

如果你信任了一个编程智能体,你给它代码库访问权限,让它帮你 commit,这些权限本身已经接近 CI/CD 的边界。如果这份信任同时基于一款在二进制里嵌了混淆域名列表和 Unicode 隐写逻辑的工具,你需要重新评估的问题不是 Anthropic 的动机,是信任模型本身。

发现这个问题的安全研究员在自己的博客里写了一段话,大意是:开发者工具可以有规则,API 服务商可以检测滥用。但当一款同时拥有文件系统和 Shell 访问权限的工具开始把分类信息藏在看不见的标点符号里时,正确的反应是审查。

知乎上有条评论引用了一句话:一个被允许读写文件和执行命令的 agent,同时在悄悄检测你的网络环境并通过 Unicode 字符把结果上报。今天它能给你报告时区和域名,明天就能偷掉你所有的数据。

这句话可能有点极端,但它的逻辑是对的。信任不是在产品说明里写出来的,信任是在没人注意的角落里,代码依然干净。

失去的信任能回滚吗

这项功能针对的是谁,那份147条域名名单就能看明白。

名单里是百度、阿里、字节、Moonshot、MiniMax、StepFun,以及大量中国区的代理和镜像站。时区检测指向的是上海和乌鲁木齐。

也是在最近几天,国内又有新一批 Claude Code 用户账号被封禁,这与隐写标记的时间线恰好是吻合的,Claude Code 一直在加深对中国区用户的封锁已经是人尽皆知的事实。

中国社区的愤怒是不言而喻的,但这次事件也在海外开发者社区引起了恐慌。

Reddit 上那篇逆向分析帖子的评论区里,排在最前面的一条评论问了一个让很多人沉默的问题:如果一个工具可以因为你是中国人就秘密传输你的系统信息,他们还有什么不敢做的?是不是也在针对非中国用户做其他看不见的操作?

Anthropic CEO Dario Amodei 反复在公开场合强调AI安全至上的立场,Claude Code的隐写代码让这一切变得更加讽刺。

尽管 Anthropic 承诺在下一版本回滚这项功能,隐写标记可以被删掉,但失去的信任可不会跟着一起恢复。

参考链接

  1. 1. OSChina — Claude Code 藏在系统提示词里的“暗门”-https://www.oschina.net/news/470656
  2. 2. thereallo.dev — 原始逆向分析报告(LegitMichel777) https://thereallo.dev/blog/claude-code-prompt-steganography
  3. 3. WhiteFirer — Claude Code 隐写后门技术分析 https://whitefirer.org/posts/2026/07/01/claude-code-backdoor-analysis/


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:OSC开源社区 大东 大东《Claude Code官方“投毒”标记中国用户翻车,国外用户也怒了》

评论:0   参与:  0