Anthropic在Claude Code里埋了一个隐蔽的检测逻辑,专门查你的代理和时区,一旦发现中国相关就偷偷改系统提示里的日期标点符号,还把代码给混淆了。这不是什么正经的安全措施,这是在用户电脑里装了个不打招呼的监视器。
Claude Code偷偷摸摸干了一件大事
事情是这样的。我平时用Claude Code干活的时候,习惯在前面挂一个代理,方便混着用GPT和Claude的模型,还能精细管理上下文。这玩意说白了就是让不同的AI模型在同一个工具里干活,省得来回切换网页。
结果前几天更新到2.1.196版本,我忽然发现远程控制功能被禁用了。这个功能对我来说挺重要,我就想着逆向分析一下,看看能不能把这个限制给绕过去。
不翻不知道,一翻吓一跳。我在Claude Code的二进制文件里挖出了一段极其可疑的代码。这段代码藏在各种混淆过的函数名后面,什么Crt()、Rrt(e)、e0t()、Zup(),乍一看完全不知道在干嘛。
但你仔细追下去就会发现,这玩意从2.1.91版本开始就有了,一直偷偷摸摸运行到现在。要不是我因为功能被禁用跑去逆向工程,根本不可能发现这种级别的隐藏操作。
他们到底在查什么东西
先说说这个检测逻辑具体干了什么。首先它会检查你是不是在使用代理,如果发现了代理,就开始干活了。
第一件事是查你的系统时区。代码里明确写着检查Asia/Shanghai和Asia/Urumqi这两个时区。如果你的系统时区正好是这两个之一,那你就被标记了。
第二件事是查你的代理URL。代码会判断你的代理域名是不是中国的域名,是不是匹配了一个特定的域名列表,还看这个代理是不是指向了中国的人工智能实验室。
这两件事单独拿出来看好像也没什么,但组合在一起就很有意思了。如果你是中国的时区,你在用代理,而且你的代理还跟中国的AI实验室有关系,那你就被盯上了。
那被盯上了之后会怎么样呢?Anthropic做了一件非常巧妙的事情——他们修改了系统提示里日期部分的格式。
正常情况下,系统提示里的日期格式是2026-06-30,用短横线连接。但如果你的时区是中国的,日期格式就变成了2026/06/30,用斜杠连接。
这还不算完。系统提示里有一句"Today's date is",那个撇号会根据你的代理情况发生变化。
如果你的代理是中国的域名,但不是AI实验室,撇号变成\u2019,就是右单引号’。
如果你的代理不是中国的域名,但指向了中国的AI实验室,撇号变成\u02BC,修饰字母撇号ʼ。
如果你的代理既是中国的域名又指向了中国的AI实验室,撇号变成\u02B9,修饰字母素数ʹ。
三种情况三种不同的符号,不仔细看根本发现不了区别。但Anthropic那边只要看看返回的系统提示,就能准确判断出你是哪一类用户。
这是间谍软件吗
现在问题来了,这算不算间谍软件?
支持Anthropic的人会说,这明明是在保护自己的知识产权,防止中国公司通过代理来窃取模型能力搞蒸馏。蒸馏是什么意思呢?就是用一个模型教另一个模型,把本事学过去。对于大语言模型来说,这可是要命的事情。
听起来很有道理对吧?一家公司保护自己的核心技术,有什么问题?
问题大了。
首先,你在用户的电脑上偷偷摸摸查时区、查代理、查指向哪个AI实验室,然后把结果编码进系统提示里传回你的服务器。整个过程用户完全不知情,没有任何提示,也没有征求过同意。
这就像你请了个保洁阿姨来家里打扫卫生,结果她趁你不注意翻了你家户口本还拍了照,然后告诉你她只是在检查你有没有在偷偷开补习班。
其次,Claude Code不是普通的软件。它的工作性质决定了它需要获得文件系统的访问权限,需要执行shell命令,需要读写你的代码。这相当于你把家里的钥匙、保险柜密码、甚至车的启动钥匙都交给它了。
在这种权限下搞悄悄的数据收集,跟在自己家客厅里装了别人安的摄像头有什么区别?
那串标点符号到底能说明什么
有人可能会说,不就改个标点符号嘛,又没偷你的代码,又没偷你的密码,紧张什么。
这个逻辑最大的漏洞在于,标点符号只是一个载体,真正的问题是数据收集本身。
Anthropic在这个问题上明确说了,他们不收集用户的隐私数据。但有了这套机制,他们实际上就能拿到用户的地理位置信息、是否使用代理、代理指向哪个国家的AI机构,甚至是用户可能跟哪个AI实验室有关联。
这还不叫数据收集?那什么叫数据收集?
更让人后背发凉的是隐蔽性。如果他们这波操作没问题,为什么要把代码用XOR混淆起来,密钥还用了91?为什么在版本更新日志里一个字都不提?
strings是Linux下一个专门从二进制文件里提取可读文本的工具。他们之所以做混淆,就是不想让开发者在运行strings命令时看到这些检测逻辑。
如果一件事情光明正大,为什么需要藏着掖着?
Fable事件的前科让人细思极恐
说到隐蔽操作,Anthropic不是第一次干这种事了。
之前有个叫Fable的项目,有研究人员发现Anthropic试图让模型在特定情况下表现出更差的行为模式。后来这事被曝光了,他们才收手。
有了这种前科,你再回头看这次的标点符号事件,很难不产生联想。
今天他们在代码里埋个逻辑,检查你的时区和代理,偷偷传点数据回去。明天呢?既然代码已经能在你电脑上跑了,而且权限还这么大,后天会不会让模型在你的代码里植入后门?会不会把你的源代码打包传走?
有人会说,这是滑坡谬误,不能因为一件事就推测另一件事。但问题是,他们已经在滑坡上了,而且这辆滑板车的刹车好像不太灵光。
我现在给Claude Code的权限,它理论上可以读到我的配置文件,可以修改我的代码,可以执行任何shell命令。如果Anthropic存了坏心思,他们完全可以做到远程代码执行。
远程代码执行听起来很专业,其实就是说,别人能在你的电脑上运行他们想运行的任何东西。这比你家门口被人画了个记号严重多了。
合法的用户被误伤的概率有多大
这套检测机制还有一个荒唐的地方在于,它的打击范围太大了。
你想想,一个在新加坡工作的开发者,用的可能是北京时间。一个在台湾的程序员,时区也是UTC+8。一个在中东出差的工程师,为了访问某些资源挂了个中国的代理。
这些人都不是Anthropic想打击的目标,但他们的信息照样被收集,照样被标记,照样被送回Anthropic的服务器。
而且根据我找到的代码逻辑,只要你的系统时区是中国的,就会被标记。不管你是不是中国人,不管你用不用代理,不管你是不是在搞什么蒸馏。
这就像商场里抓小偷,结果在门口装了个刷脸摄像头,不管是谁进门先拍个照存档。你说这是为了安全,那怎么不把每个人的购物记录都调出来查一遍?
更别提这套机制能不能真的阻止那些想偷模型的人。但凡有点技术的,改个时区、换个代理、伪造个环境变量,分分钟就绕过去了。
所以这套东西防君子不防小人,防不了真正想搞事的人,却能精准地骚扰到所有合法的、无辜的、只是凑巧用了个中国时区的用户。
问题不在检测本身而在信任
有人可能会说,Anthropic被中国AI实验室搞蒸馏搞得受不了了,出此下策也是情有可原。
这个观点看起来理性,但忽略了一个根本的问题:保护知识产权不应该建立在偷偷收集用户信息的基础上。
如果Anthropic真的需要这些数据来保护自己,他们完全可以大大方方地说。在用户协议里写清楚,在安装界面弹个提示,在更新日志里说一句。
"我们正在采取措施防止未经授权的模型使用,可能会检测您的时区和代理设置。如果您位于受限区域,某些功能可能无法使用。"
就这么几行字的事。
但他们选择了一个完全相反的做法。把代码藏起来,把逻辑混淆掉,把行为隐蔽化,然后在公开场合说自己不收集用户数据。
这就是典型的言行不一,而且是那种被抓到之后很难解释的言行不一。
信任这个东西,建立起来可能需要几年时间。一个公司做出好产品,更新版本,修复bug,维护社区,一点点攒口碑。但摧毁信任只需要一个被发现的行为。
现在这个行为被发现了,而且是那种被抓了现行、证据确凿、代码都翻出来摆在那里的情况。
这对普通开发者意味着什么
如果你只是一个普通的Claude Code用户,不关心什么时区检测什么代理检查,那这件事对你意味着什么呢?
意味着你手里的工具可能不只是工具。
这意味着当你敲代码的时候,有一个你看不见的进程在悄悄检查你的系统配置,然后把它认为重要的信息塞进了系统提示里,送回了远方的服务器。
你可能会说,我没什么好藏的,查就查吧。
问题不是你有没有什么好藏的,问题是这种机制的存在本身就改变了你和使用工具之间的关系。
以前你信任Claude Code,是因为你觉得它就是个帮你写代码的AI助手。现在你知道它还会偷偷干别的事,下次它更新版本的时候,你会不会担心又多了什么新功能没告诉你?
更可怕的是,一旦开了这个头,其他AI公司会不会也学起来?OpenAI会不会也在Codex里加类似逻辑?Google会不会在Antigravity里搞同样的操作?
整个生态都会变成一个互相监视的系统,而开发者就是那个被监视的对象。
破解这套机制的方式简单到可笑
最后说一个最讽刺的地方。
这套被混淆了的、藏在二进制深处的、用了XOR加密的检测逻辑,破解方式简单得让人想笑。
改一下系统时区。换一个代理。改一下环境变量。
就这么简单。所有花里胡哨的混淆、加密、隐藏操作,只需要一个export TZ=America/New_York就能绕过去。
有经验的开发者甚至可以自己写个脚本,在运行Claude Code之前自动把系统时区改了,启动之后再改回来。整个过程用户完全无感,Claude Code毫无办法。
所以Anthropic费了这么大劲,搞了这么复杂的检测机制,实际上只能防住那些不懂技术的新手。真正想搞蒸馏的人,几十行shell脚本就能把这个检查变成空气。
这就像你家门上装了一把看起来特别高级的锁,结果钥匙孔是通用的,谁拿个铁丝都能捅开。唯一被挡在外面的是你自己,还有你家那位忘了带钥匙的客人。
结论
Anthropic在Claude Code里埋了个检测时区和代理的逻辑,把信息编码进系统提示的标点符号里传回服务器,代码还做了混淆处理。这不是什么光明正大的保护措施,这是在一款需要高权限运行的软件里藏了悄悄收集用户信息的代码。信任一旦碎了,粘起来比做新软件还难。
作者单位背景: LegitMichel777,Claude Code逆向工程研究者