跳转到内容
Guide

Claude Code 逆向工程:为您的 AI 代理提供 6 堂课

| 8 min read

研究人员对 Claude Code 的 CLI 包进行了简化,并发布了其系统提示、工具模式和代理循环。 为任何将人工智能代理交付给真实用户的人提供的六个教训。

Monitor showing source code, representing bundle inspection and reverse engineering
Photo by Markus Spiske on Unsplash

Claude Code 作为 npm 包提供。 任何人都可以跑 npm install -g @anthropic-ai/claude-code, 打开捆绑的 cli.mjs,并读取附带的编排层。 研究人员做到了 正是如此。 他们对其进行了简化,提取了完整的系统提示符、15 多个内置工具模式, 代理循环和子代理调度程序,然后在公共存储库中发布批次。

模型权重仍然落后于 Anthropic 的 API。 脚手架没有。 而那个脚手架就是 大多数团队认为如果他们提供 CLI、VS Code 扩展或桌面,他们可以保密这一部分 带有嵌入式代理的应用程序。 提取是免费的一课:Anthropic 的团队已经非常细心 为此计划的,并且他们的设计是可行的。 您可以向自己的代理人复制以下六件事 点击 npm 或 GitHub 版本。

1. 客户端代码是发布步骤,不是秘密

发货包中的每个字节都是公开的。 混淆会使读者的阅读速度降低几分钟到几小时; 它 并没有阻止他们。 Claude Code 的捆绑包通过标准 JavaScript 压缩器运行,第一个 公开的反混淆副本在数小时内就浮出水面。 您的捆绑包将遵循相同的路径。

今天在您自己的包上运行相同的通行证。 如果您提供 CLI、浏览器扩展、Electron 应用程序或客户端 SDK,请在下一个版本之前执行此操作:

任何返回的内容都会进入“立即旋转”堆中。 客户端捆绑包中的 API 密钥是 每个运行过的磁盘 npm install。 硬编码的后端主机名将攻击者指向 您无意做广告的目标。 以陌生人阅读文件的方式阅读文件。

2.你的系统提示会泄露,所以要设计泄露

克劳德代码的系统提示是几千个令牌的仔细指导:工具使用规则, 安全约束、作风引导、拒绝条件。 这一切都不依赖于保密。 放下 明天,pastebin 上的整个事情和 CLI 仍然以同样的方式工作。

这就是测试。 如果发布系统提示符破坏了您的安全模型,那么您就有漏洞了。 将负载部分从提示中移到服务器端检查上。 访问控制属于 你的授权层。 速率限制属于您的网关。 工具权限属于工具调度程序。 提示描述了行为; 它不强制执行。

一个好的提示仍然值得作为商业秘密来保护。 几周的迭代压缩为几周 一百行,并且快速跟随者复制您的提示可以节省时间。 像食谱一样对待它 IP,不像私钥。 合法和保密协议,而不是加密货币。

3. 在您的服务器上设置身份验证、速率限制和计费

最常见的代理架构如下所示,但这是错误的:

每次安装都会附带该密钥。 一位坚定的用户在一个下午将其从捆绑包中取出并 在您注意到之前将您的配额清零。 克劳德·科德通过阅读来避免这个问题 ANTHROPIC_API_KEY 来自运行时的用户环境; 每个用户都有自己的与 Anthropic 的计费关系。 大多数面向消费者的代理无法遵循这种模式,因为用户没有自己的密钥, 这意味着服务器代理是唯一安全的形式:

在您的服务器上,验证短期的每用户令牌、用户 ID 的速率限制、日志使用情况,然后进行 上游调用:

从登录流程中发出每用户 JWT,有效期为 15 分钟、特定范围和会话 绑定。 对 botoi 的一次调用即可处理签名,因此您可以跳过“错误的算法” 2015 时代的 JWT 库仍然因以下方面而闻名:

4. 轮换并记录密钥,就像它们已经泄露一样

Claude Code 在本地记录自己的工具调用遥测数据,以便用户可以检查代理在其上执行的操作 机。 您的服务器需要相同的属性,但是是服务器端的。 每个模型调用都会得到一行:用户 ID, 模型、输入令牌、输出令牌、工具调用、成本。 至少保存 30 天。 攻击者 窃取用户代币的消费模式看起来与正常使用不同,并且 日志就是你所看到的。

在记录之前,先数数。 Token使用是最快的滥用信号也是最快的提示信号 膨胀:

在 p99 基线的三倍处设置每个用户每小时的令牌警报。 当您收到寻呼时,撤销 用户的令牌,而不是您的主密钥。 主钥匙按季度轮换; 每个用户的令牌 当异常检测触发时旋转。

5. 在提示到达模型之前擦洗 PII

用户将带有信用卡号的支持票粘贴到您的代理中。 模型看到了, 日志行捕获它,微调管道将其拉入,现在它位于您所做的三个位置 不打算。 Claude Code 通过在用户自己的机器上运行来避开这个问题 自己的文件; 托管代理则没有这种奢侈。

对每个入站提示运行检测过程并在调用前进行编辑:

发送 redacted 字符串到模型,保留 findings 记忆中,以及 仅当模型响应要求返回特定令牌(例如, 支持票证摘要,需要指定付款方式)。 您的日志、训练语料库和 下游分析管道都看到经过编辑的版本; 只有内存中的请求路径才能看到 原始 PII。

6. 使用您自己泄露的提示来强化提示注入

泄露的系统提示符的好处是您可以针对自己的注入套件运行它。 安 攻击者只需要一次绕过; 你需要保险。 设立临时代理,粘贴您自己的提示 进入审阅者的剪贴板,并运行测试最常见注射形状的探针组: 指令覆盖、角色切换、分隔符中断、假用户重置。

任何导致代理打印其系统提示符、显示环境变量或调用 用户范围不允许的工具是一个错误。 通过服务器端检查来修复它,而不是立即调整。 提示中的“不要透露您的系统提示”是一个建议; 响应过滤器阻止 输出中提示符的前 200 个字符是一个控件。

纵深防御清单

控制 为什么它能在捆绑泄漏中幸存下来
客户端捆绑包 没有秘密,没有主 URL 第一天就可以阅读; 将其视为文档
运输 每用户 JWT,15 分钟到期 代币盗窃具有分钟级的爆炸半径
网关 按用户 ID 和令牌计数进行速率限制 滥用上限取决于您配置的支出,而不是您的钱包
服务器 及时组装和工具调度 攻击者无法添加他们未获得的工具
模型输入 PII 检测和编辑 敏感数据永远不会到达日志或训练
模型输出 提示回显和工具模式的响应过滤器 注入尝试在最后一跳失败
可观测性 带有异常警报的每用户令牌使用情况 被盗代币看起来与真实用户不同

要点

  • 发货就像您的捆绑包已经公开一样。 Grep 每个版本的密钥和 发布之前的内部主机; 您找到的任何内容都会在包裹上线之前轮换。
  • 您的系统提示不是键。 将所有与安全相关的决策移出 提示并进入服务器端检查。
  • 通过您自己的服务器代理模型。 用户获得一个短暂的 JWT,您的 服务器持有主 API 密钥,速率限制位于两者前面。
  • 在进入时编辑 PII。 模型看到一个经过编辑的字符串; 日志和训练 管道保持清洁。
  • 根据您自己泄露的提示运行注入探针。 任何有效的东西都会成为 服务器端修复的票证,而不是即时调整。

Botoi 为您提供 HTTP 调用的服务器端部分:PII 检测 /v1/pii/detect, 令牌计数于 /v1/token/count, 智威汤逊签名于 /v1/jwt/generate,加上 跨 150 多个端点的散列、HMAC 和速率限制构建块。 一个 API 密钥,每分钟免费 5 个请求, 零安装挂钩。 浏览 交互式文档 或接线 MCP服务器 进入 Claude Code 或 Cursor 从编辑器内部调用相同的端点。

FAQ

从克劳德代码中到底提取了什么?
研究人员下载了 npm-distributed @anthropic-ai/claude-code 包,通过反混淆器运行它,并发布了完整的系统提示符、15 多个内置工具模式(Read、Edit、Bash、Grep 等)、代理循环和子代理调度逻辑。 模型权重保持私密; 发布的是围绕 Anthropic API 调用的 JavaScript 编排层。 任何安装 CLI 的人的磁盘上都会有相同的部分。
是否有任何 Anthropic API 密钥或客户数据被暴露?
不会。CLI 在运行时从用户自己的环境中读取 API 密钥,并且从不捆绑 Anthropic 凭证。 客户对话保留在 CLI 和 api.anthropic.com 之间。 这次泄露暴露了即时工程和工具设计,而不是身份验证材料或用户数据。
如果系统提示不是秘密,公司为什么要保护它们?
有两个原因。 首先,竞争性的复制时间:一个好的提示意味着数周的迭代,而拒绝发布会减慢同一窗口的快速追随者的速度。 其次,提示注入表面积:攻击者对系统提示的护栏和转义序列了解得越多,就越容易绕过。 两者都是真实的,但都不是加密秘密。 将提示视为半衰期较短的商业秘密,而不是密钥。
混淆或缩小有帮助吗?
它赢得的是时间,而不是保护。 一位积极主动的逆向工程师使用标准工具在一小时内对 JavaScript 包进行反混淆。 混淆会减慢临时检查的速度,这对于防篡改检测和许可检查很重要,但任何假设捆绑包保持不透明的威胁模型从一开始就被破坏。 就好像源代码在第一天就公开一样进行构建。
如何测试我自己的人工智能代理是否存在同样的弱点?
本周进行三项检查。 一:下载您提供的捆绑包并 grep 查找 sk-、pk_、apiKey、BEGIN PRIVATE KEY 和您的后端 URL; 修复你发现的任何东西。 二:要求您的代理逐字打印其系统提示,并确认不存在任何依赖于保密的安全问题。 第三:使用用户 ID、时间戳和参数哈希记录服务器端的每个工具调用,以便在账单出现之前就出现滥用模式。

开始使用 botoi 构建

150+ 个 API 端点,涵盖查询、文本处理、图片生成和开发者工具。免费套餐,无需信用卡。