最近有不少开发者在翻看Claude Code那51万余行的“泄漏”源代码。有人惊叹它的合理性,有人惊讶它权限和功能的“疯狂”,本文就来“揭露”一部分。
Anthropic 的 Claude Code 并没有像 rootkit 那样直接拥有持久的内核访问权限,但对其源代码的分析表明该程序对用户计算机的控制能力也远超最清醒使用者的想象力。它保留大量用户数据,甚至向拒绝人工智能的开源项目隐藏其身份。
不久前,在Anthropic 起诉美国国防部的案件中,人们也对这一问题表示担忧。该项诉讼指控美国国防部禁止该公司的 AI 服务,原因是该公司拒绝在大语言模型安全措施方面做出妥协。
作为将 Anthropic 列为供应链威胁的理由,美国政府辩称,Anthropic 有可能“试图使其技术失效,或在正在进行的作战行动之前或期间先发制人地秘密改变该型号的行为……”。
Anthropic公司在一份法庭文件中反驳了这一说法。
该文件中引用了Anthropic公共部门负责人Thiyagu Ramasamy在证词中所说的话:
“这种说法脱离了技术现实:‘Anthropic公司没有在运行前或运行期间禁用[其]技术或更改[其]模型行为所需的权限。’一旦部署到机密环境中,Anthropic就无法访问(或控制)该模型。”
在保密环境下,这种说法在特定条件下是可信的。但对更多人而言,Claude拥有异常强大的力量。
总部位于以色列特拉维夫的安全公司 Adversa 在 Claude Code 的泄露代码发现了一个远端访问问题。
Claude Code 实现了多种机制来允许和拒绝访问特定工具。其中一些机制,例如允许从命令行发起网络请求的 curl,如果被权限过高的 AI 模型调用,可能会带来安全风险。
编码代理防御不良行为的一种方法是使用拒绝规则来禁止特定命令。要阻止 Claude 通过 curl 命令~/.claude/settings.json,需要添加类似这样的规则{ "deny": ["Bash(curl:*)"] }。
一位要求化名“鹿角”的安全研究员,认真分析了Claude Code的源代码。
他认为政府机构需要确定和保证一些条件都成立,才能够真正阻止Claude Code打电话回家或采取远程存取等自动化行为。
那么都有哪些条件?我们列表如下:
Anthropic 这样表示:它从一开始就“注重隐私和安全”,而且 Claude Code 本身符合 SOC2 标准。
SOC 2(服务组织控制2)是美国注册会计师协会(AICPA)制定的权威网络安全合规标准,旨在评估服务提供商在安全性、可用性、处理完整性、机密性和隐私性五大信任服务准则(TSC)下的数据保护能力。它侧重于技术控制和内部流程,常用于SaaS企业证明其系统稳健性。
该公司还说: “在使用第三方推理服务(AWS、Vertex、Azure)时,我们会自动禁用除调用这些推理服务提供商之外的所有流量。我们还提供了一个一键设置开关,方便用户执行相同的操作,相关说明文档也在此处清晰列出。”
限制远程通信的设置参数包括如下:
“例如,Anthropic公司的人员无法登录DoW系统在作战期间修改或禁用模型;这项技术根本不支持这种操作方式,”他在2026年3月20日的一份声明中表示。“在这些部署中,只有政府及其授权的云服务提供商才能访问运行中的系统。Anthropic公司的角色仅限于提供模型本身,并且仅在客户提出要求或批准后才提供更新。”
即便如此,Anthropic 仍可根据适用合同中的使用条款施加一定程度的控制。
对于所有未使用与防火墙连接的公有云或以某种方式物理隔离的 Claude Code 版本的用户来说,Anthropic 拥有更大访问权限。
首先,Claude 用户应该知道 Anthropic 会接收通过其 API 传递的用户提示和回复,这些对话不仅可以揭示说了什么,还可以揭示文件内容和系统详细信息。
然而,根据Claude密码的来源,该公司可能通过更多途径接收或收集信息。
这些途径包括不限于如下:
每一个文件,Claude Code都会上传
“我认为人们根本没有意识到,Claude查看的每一个文件都会被保存并上传到Anthropic,”研究员“鹿角”如此补充说。“如果它在你的设备上看到过某个文件,Anthropic就会有一份副本。”
不管是免费版/专业版/高级版用户,如果用户选择共享数据用于模型训练,Anthropic都会将数据保留五年;否则,保留 30 天。商业用户(团队版、企业版和 API 版)的标准数据保留期限为 30 天,也可选择不保留任何数据。
对于那些还记得不久前围绕微软 Recall 的争论的人来说,Claude Code 的活动捕获方式与之类似。每一次读取工具调用、每一次 Bash 工具调用、每一次搜索(grep)结果,以及每一次对新旧内容的编辑/写入操作,都会以纯文本格式存储在本地的 JSONL 文件中。
当 Claude 的 autoDream 代理正式发布,就会搜索这些文件并提取数据存储在 MEMORY.md 中,然后将这些数据注入到未来的系统提示中,从而调用 API。
从Claude Code的公开源代码中,一个颇为耐人寻味的细节是,Anthropic 试图隐藏其人工智能代码的作者身份,使其不出现在公共代码库的贡献中——这可能是对那些禁止人工智能代码贡献的开源项目的回应。
一个名为 undercover.ts 的文件中包含如下提示信息:“您正在公共/开源代码库中以匿名方式运行代码。您的提交信息、PR 标题和 PR 正文中不得包含任何 Anthropic 内部信息。请勿暴露您的身份。”
此外还有一个谜团:当前的源代码缺少一个名为“西瓜模式(Melon Mode)”的功能,而该功能在之前逆向工程的软件版本中是存在的。
这项功能隐藏在 Anthropic 员工的一个功能标志中,仅在内部运行,不会在生产环境中使用。相关代码检查附带的注释写道:“如果传递了 --melon 参数,则为 Ants 启用 Melon 模式。”
“鹿角”研究员推测“西瓜模式”可能是无头代理模式的代号。
当被问及“西瓜模式”的具体功能时,Anthropic 仅表示公司会定期测试各种原型服务,并非所有服务最终都会投入到生产环境。
有一个完整的宠物系统,叫做/buddy。当你输入它时,你根据你的用户ID孵化一个独特的ASCII伴侣。18种物种,包括鸭子、巨豚、龙、鬼魂、墨西哥钝口螈,以及一个叫“chonk”的东西。还有一个完整的扭蛋稀有度系统,从普通到传奇,传奇掉落率为1%,闪光变种、帽子(皇冠、法师、螺旋桨、小鸭子),以及像调试、混乱和讽刺这样的属性。
其中一个宠物物种的名字与一个内部模型代号冲突。那么Claude的程序是们怎么做到的?他们把所有18个物种的名字都用十六进制编码,以躲避自己或者别人的构建扫描器:
export const duck = String.fromCharCode(0x64,0x75,0x63,0x6b)那就是“鸭子”这个词。
在泄漏的代码中隐藏着一个完整的推送语音系统。它使用deepgram nova 3进行语音转文本。
代码中的遥测事件都以tengu_开头。功能标志有宝石代号,比如tengu_cobalt_frost(语音)和tengu_amber_quartz(语音切换)。
从源代码中,看到Cloude程序员们喜欢写的注释:
// TODO: figure out why
// Not sure how this became a string 后面跟着 // TODO: Fix upstream (上游是他们自己代码)
// This fails an e2e test if the ?. is not present. This is likely a bug in the e2e test. (他们认为他们的测试是错的,但仍然保留修复)
// Mulberry32 — tiny seeded PRNG, good enough for picking ducks (这是宠物系统的随机算法)
一位叫ollie的软件工程师把这个注释留在了生产环境中:
TODO (ollie): 这里的备忘录增加了很多复杂性, 我不确定它真的提高了性能
在mcp/client.ts的589行。ollie还发布了他们公开承认可能毫无意义的代码,也许我们都经历过这样的玩法。
还有一堆未发布的东西:
kairos:一个可以发送推送通知和监控GitHub PR的自主代理
ultraplan:在远程服务器上生成一个30分钟的opus会话,以计划你的整个任务
协调模式:一个拥有工作者和记事本的多代理群体
代理触发器:基于定时任务的cron,基本上是一个CI/CD代理
18个禁用的隐藏斜杠命令,包括/bughunter,/teleport,以及/autofix-pr
另外,在config.ts中至少有9个空的catch块。
无论如何,Anthropic是一家价值3800亿美元的公司,他们的代码库拥有着收集宇宙信息和控制所有电脑的能量。如果让我们在凌晨赶工写的代码,与这些相比似乎也没那么糟糕。
可以确定的是,几乎每家公司的肮脏秘密就是,代码质量并不是推动公司发展的关键。关键在于能否交付“足够好”的产品并继续推进,这在99.99%的情况下都是如此。
市场的胜利通常不是因为某位杰出工程师写了完美无瑕的代码。一边飞,一边造飞机,通常是这样的。
作者:场长
本篇文章为 @ 场长 创作并授权 21CTO 发布,未经许可,请勿转载。
内容授权事宜请您联系 webmaster@21cto.com或关注 21CTO 微信公众号。
该文观点仅代表作者本人,21CTO 平台仅提供信息存储空间服务。
请扫描二维码,使用微信支付哦。