Anthropic在Claude Code中植入隐写术代码识别中国用户 · AI HOT
数字生命卡兹克@Khazix091876
2026-07-01 16:28·4小时前
AI 摘要社区逆向发现,Anthropic在Claude Code中植入代码,通过读取本地系统时区(如Asia/Shanghai)和ANTHROPIC_BASE_URL环境变量(与内置147个域名的列表比对)识别中国用户。识别后,使用隐写术修改系统提示词中的Unicode字符(如单引号从U+0027替换为其他字符)和日期分隔符(连字符改为斜杠),形成2-3比特标记回传服务器,而人类肉眼无法察觉。该工具拥有文件系统权限、可执行Shell命令,此举引发开发者对信任安全的广泛质疑。
数字生命卡兹克@Khazix0918 · X2026-07-01 16:28·4小时前
在 X 看原推· x.comAI 摘要社区逆向发现,Anthropic在Claude Code中植入代码,通过读取本地系统时区(如Asia/Shanghai)和ANTHROPIC_BASE_URL环境变量(与内置147个域名的列表比对)识别中国用户。识别后,使用隐写术修改系统提示词中的Unicode字符(如单引号从U+0027替换为其他字符)和日期分隔符(连字符改为斜杠),形成2-3比特标记回传服务器,而人类肉眼无法察觉。该工具拥有文件系统权限、可执行Shell命令,此举引发开发者对信任安全的广泛质疑。
不仅有N个中转站地址,国内各大厂的域名,也都赫然在列。
包括美团、网易、百度、携程、小红书、阿里巴巴、蚂蚁、字节跳动、京东、B站、月之暗面、MiniMax、阶跃星辰等等等等。
而且这些列表不是明文存储的,它们是被base64编码之后又做了一次XOR异或运算,密钥是91,如果你自己去打开Claude Code的包,看到的是一串完全无法阅读的乱码,不反混淆出来,你其实根本不知道里面写了什么。
接下来才是最骚的,也就是它识别出来之后,到底做了什么。
每一次你在Claude Code里输入一个指令,不管是让它写段代码还是干个啥,Claude Code在把你的请求发给Anthropic的后端之前,都会自动在最前面拼接一段系统提示词。
这段系统提示词为了让模型知道一些最新的事实信息,所以一般会在里面拼一行很普通的信息,就是这个:
Today's date is 2026-06-30.
其实就是告诉模型今天是几号,比如今天是6月30号。
Reddit那个老哥发现,Claude Code的打包文件里藏了一组函数,这组函数会根据上面两条路径的识别结果,如果在本地发现你是中国的用户,就会在你真正的发送请求之前,对这行日期字符串做两处修改。
而且两处修改都是人类肉眼几乎不可见的,你在任何编辑器、任何终端里看这行字,它跟正常版本长得一模一样。
但是从机器解码角度来说,也就是在Unicode编码层面,它已经变了,完完全全变成了另一个字符。
正常情况下,这个单引号的Unicode编码是U+0027,就是我们一般按键盘敲出来的那个单引号。
但Claude Code如果根据你的环境,识别到你是个中国用户,它就会极其鸡贼的把它这个单引号,替换成另外三个长得完全一样的Unicode字符之一,然后这段被修改过的Prompt,就会发回到他们的服务器上。
正常的Prompt日期格式是2026-06-30,用连字符分隔。
但如果Claude Code检测到你的操作系统时区设置是Asia/Shanghai(上海)或者Asia/Urumqi(乌鲁木齐),它就会把连字符换成斜杠,变成2026/06/30。
这两个信号叠在一起,构成了一个2到3比特的分类标记。
Anthropic的服务器在收到你的请求时,不需要做任何额外的检测,只需要机器识别一下系统提示词里那个单引号是哪个Unicode字符、日期分隔符是连字符还是斜杠,就能判断出这条请求是否来自中国大陆时区。
这个东西在技术上有个名字,叫隐写术,steganography。
如果不是这次,几乎没有人能发现Anthropic这么狗,因为即使Claude Code在本地识别到你是中国区用户,传不回Anthropic的服务器,也没啥用处。
但是如果直接大大咧咧把时区之类的封装一下传回去,那大家其实也不傻,都能看到传输的数据记录,是完全可以针对性的做清洗的。
但是没想到Anthropic这么玩,几乎真的发现不了。
为了防止中国用户用上他们高贵的Claude,都已经做到这个地步了。
社区在发现这件事后,直接就炸了,不仅中国开发者炸了,国外的开发者也炸了。
最最最核心的点是,Claude Code,这不是一个普普通通的APP而已。
它拥有你电脑的文件系统权限,它能执行Shell命令,它能读你的代码、改你的配置、操作你的Git仓库,换句话说,它几乎拥有着你家的最高权限。
而这个东西,在你完全不注意的时候,在你家门上画了一个你几乎无法察觉的标记,就是为了告诉它的同伙,这户人家不对劲,记得把他们灭门了。
而且软件行业一直有一个被广泛接受的原则,就是你可以收集用户信息,但你必须告诉用户你在收集什么、为什么收集、怎么收集。
GDPR是这么要求的,苹果的App Store审核指南是这么要求的,甚至Anthropic自己的安全白皮书里,也在反复强调"透明"和"可信"这两个词。
结果你自己的开发者工具里,用隐写术藏了一个分类标记,用XOR加密把检测目标混淆成乱码,用最不透明最狗的方式,传了用户的标记数据回来。
那对所有用Claude Code的开发者来说,信任还何在?
而且这只是目前针对中国的被爆出来的标记,那还有没有可能,有更多呢?
但是我讲道理,如果不是他发现,这个传输和识别是否是中国用户的做法,真的是又狗又隐秘。
我也把我本地的Claude Code用Codex逆向验证了一遍,答案是真的。
先从最多人关心的问题说起,它到底是怎么在你开了魔法的情况下,还能识别出你是中国用户的。
传统的地域封锁靠的是IP地理位置判断,你开个魔法就能绕过。
但Claude Code这段代码走的是两条完全不同的路径,跟你的网络出口IP没有任何关系。
它读的是你macOS或者Linux系统本地设置的时区,因为绝大多数中国开发者可能会挂魔法,但是我们也得正常生活看时间,所以电脑时区几乎不可能改,设的都是北京时间,而Claude Code,会直接读取你的本地时区。
第二条路径是ANTHROPIC_BASE_URL这个环境变量。
国外正常使用Claude Code的用户,如果使用官方API请求的话,是直接发给api.anthropic.com,不需要设置这个变量。
但国内因为基本用不了Claude,但是这个模型在过去,又确实好,所以大量中国开发者只能通过中转站来用Claude Code,方式就是把ANTHROPIC_BASE_URL改成中转站的地址。
而且很多大厂或者公司,因为不可能给每一个员工单独注册一个Claude账号,所以也是通过自建公司内部中转站的方式,来给大家Claude的API,从而让大家完成调用。
路径也就是变成了用户的消息,先统一去到中转站那边,中转站再发送到Anthropic的服务器上。
Claude Code在本地拿到你设置的这个地址之后,会自动把域名取出来,跟一份内置的列表做比对。
这份列表是Anthropic收集到的所有已知中转站、国内大厂内网代理、竞品AI公司的域名合集。
不仅有N个中转站地址,国内各大厂的域名,也都赫然在列。
包括美团、网易、百度、携程、小红书、阿里巴巴、蚂蚁、字节跳动、京东、B站、月之暗面、MiniMax、阶跃星辰等等等等。
而且这些列表不是明文存储的,它们是被base64编码之后又做了一次XOR异或运算,密钥是91,如果你自己去打开Claude Code的包,看到的是一串完全无法阅读的乱码,不反混淆出来,你其实根本不知道里面写了什么。
接下来才是最骚的,也就是它识别出来之后,到底做了什么。
每一次你在Claude Code里输入一个指令,不管是让它写段代码还是干个啥,Claude Code在把你的请求发给Anthropic的后端之前,都会自动在最前面拼接一段系统提示词。
这段系统提示词为了让模型知道一些最新的事实信息,所以一般会在里面拼一行很普通的信息,就是这个:
Today's date is 2026-06-30.
其实就是告诉模型今天是几号,比如今天是6月30号。
Reddit那个老哥发现,Claude Code的打包文件里藏了一组函数,这组函数会根据上面两条路径的识别结果,如果在本地发现你是中国的用户,就会在你真正的发送请求之前,对这行日期字符串做两处修改。
而且两处修改都是人类肉眼几乎不可见的,你在任何编辑器、任何终端里看这行字,它跟正常版本长得一模一样。
但是从机器解码角度来说,也就是在Unicode编码层面,它已经变了,完完全全变成了另一个字符。
正常情况下,这个单引号的Unicode编码是U+0027,就是我们一般按键盘敲出来的那个单引号。
但Claude Code如果根据你的环境,识别到你是个中国用户,它就会极其鸡贼的把它这个单引号,替换成另外三个长得完全一样的Unicode字符之一,然后这段被修改过的Prompt,就会发回到他们的服务器上。
正常的Prompt日期格式是2026-06-30,用连字符分隔。
但如果Claude Code检测到你的操作系统时区设置是Asia/Shanghai(上海)或者Asia/Urumqi(乌鲁木齐),它就会把连字符换成斜杠,变成2026/06/30。
这两个信号叠在一起,构成了一个2到3比特的分类标记。
Anthropic的服务器在收到你的请求时,不需要做任何额外的检测,只需要机器识别一下系统提示词里那个单引号是哪个Unicode字符、日期分隔符是连字符还是斜杠,就能判断出这条请求是否来自中国大陆时区。
这个东西在技术上有个名字,叫隐写术,steganography。
如果不是这次,几乎没有人能发现Anthropic这么狗,因为即使Claude Code在本地识别到你是中国区用户,传不回Anthropic的服务器,也没啥用处。
但是如果直接大大咧咧把时区之类的封装一下传回去,那大家其实也不傻,都能看到传输的数据记录,是完全可以针对性的做清洗的。
但是没想到Anthropic这么玩,几乎真的发现不了。
为了防止中国用户用上他们高贵的Claude,都已经做到这个地步了。
社区在发现这件事后,直接就炸了,不仅中国开发者炸了,国外的开发者也炸了。
最最最核心的点是,Claude Code,这不是一个普普通通的APP而已。
它拥有你电脑的文件系统权限,它能执行Shell命令,它能读你的代码、改你的配置、操作你的Git仓库,换句话说,它几乎拥有着你家的最高权限。
而这个东西,在你完全不注意的时候,在你家门上画了一个你几乎无法察觉的标记,就是为了告诉它的同伙,这户人家不对劲,记得把他们灭门了。
而且软件行业一直有一个被广泛接受的原则,就是你可以收集用户信息,但你必须告诉用户你在收集什么、为什么收集、怎么收集。
GDPR是这么要求的,苹果的App Store审核指南是这么要求的,甚至Anthropic自己的安全白皮书里,也在反复强调"透明"和"可信"这两个词。
结果你自己的开发者工具里,用隐写术藏了一个分类标记,用XOR加密把检测目标混淆成乱码,用最不透明最狗的方式,传了用户的标记数据回来。
那对所有用Claude Code的开发者来说,信任还何在?
而且这只是目前针对中国的被爆出来的标记,那还有没有可能,有更多呢?