把 SSH 密钥或云厂商令牌交给大模型中转站代打,调用日志和转售数据集还可能留下什么

把 Claude Code 或自研 Agent 的 API Host 指到国内中转站、为了便宜和稳定「代打」海外模型——2026 年 9 月最热的安全讨论,已经从「别把密钥贴进 ChatGPT」扩到了「代打这一跳会不会把内网钥匙一起卖掉」。有研究员称花五位数买到约 6TB 调用数据,里面有 SSH 私钥、VPN 配置、云厂商密钥和 GitLab 令牌。中转站不是透明管道:它是应用层代理,会合法解开 JSON 明文。下面按 arXiv 论文和公开披露,把「还剩什么」收成可以当场核对的范围;不把点名企业写成已经失陷。

先记一句能核对的结论:地址栏或客户端里的小锁,只说明你到中转站这一跳用了 TLS,不说明中转站读不懂提示词。打开开发者工具的 Network,看请求的 Host 是模型厂商的域名,还是另一个代打域名。金丝雀只进测试,不要用生产 SSH 或阿里云 AK 做实验。

这周在讨论的不是又一次「模型会不会训练」,是中间那一跳

9 月 10 日前后,安全研究者寿超凡(Chaofan Shou)在社交平台发帖,称自己从一家国内头部大模型中转站买到约 6TB 的 Fable 模型调用数据,并称其中的 SSH 密钥、VPN 配置、阿里云密钥和 GitLab 令牌,足以访问若干中国企业和政府相关机构。后续中文安全媒体把这件事写成「中转站日志流入黑市」。公开报道同时写明:点名企业没有公开确认失陷,也没有独立审计把「数据集里出现过令牌」等同于「内网已被接管」。本文把这条新闻当钩子,不把推文截图当入侵判决。

它和上一篇「把密钥贴进 ChatGPT」不是同一题。那一篇核对的是消费级对话框:会话历史、训练开关、临时对话大约 30 天的安全留存。这一篇核对的是开发者更常碰到的灰色基础设施:你以为请求发给了 Claude 或 GPT,实际先打到一个会解密、改请求头、再转发的路由器。Agent 还会自己读 .env、终端输出和工作区文件。密钥不必你亲手粘贴,也可能进提示词。

SSH 私钥、云厂商访问密钥、GitLab 个人访问令牌、VPN 配置,都属于 OWASP 日志速查表 里通常不该以明文落入共享记录的内容。OWASP 大模型应用 Top 10 把敏感信息泄露和供应链写进了风险清单。中转站正好同时踩中这两条:它既是提示词的下一个存储位置,也是你和模型厂商之间多出来的供应商。

小锁只护住单跳:中转站会合法解开 JSON

很多人把「全程 HTTPS」听成「沿途谁也读不懂」。应用层代理不是这样工作的。arXiv:2604.08407《Your Agent Is Mine: Measuring Malicious Intermediary Attacks on the LLM Supply Chain》开篇就写:这些路由器作为应用层代理运行,对飞行中的每一份 JSON 载荷拥有完整明文访问权;没有任何厂商在客户端和上游模型之间强制做密码学完整性校验。请求到中转站必须先解密、拆包、改认证头,再另建一条 TLS 转到上游。加密没有被破解,而是在中转站处被合法终止了一次。

于是会出现一种看起来矛盾的现场:你的 IDE 到中转站是 TLS,中转站到 Anthropic 或 OpenAI 也可能是 TLS,但中间那台机器已经看见提示词、工具调用、环境变量和返回的代码。这和邮件的 STARTTLS 是同一类误解:传输加密挡的是链路上的旁观者,挡不住已经入站的存储副本。差别在于,邮件至少还能在「已发送」里搜到自己写出的那封;中转站的调用日志默认不给你打开,你删掉本地对话,动不了对方已经落盘的那一行。

编程 Agent 把暴露面放大了。Claude Code、Cursor 和各类自研智能体会扫描工作区、读项目配置、抓终端输出。把 API Host 指到未审计的第三方之后,调试脚本、部署测试机、拉取私有代码时出现的密钥,可能随上下文一起进入请求体。你没有点「发送密钥」,只是让 Agent「修一下连不上」。

位置 通常还剩什么 谁还能读到
中转站调用日志 提示词、工具调用、环境变量里的明文密钥 中转站运营方;拿到日志或备份的人
转售 / 微调数据集 未脱敏的历史请求,可被整包买走 买到数据包的人;后续镜像的人
上游模型厂商 中转站转发后的同一份明文 按该厂商自己的留存和训练政策
被改写的工具调用 论文里的投毒载荷,可能在本地静默执行 该中转站的运营方及其后续控制端

论文里的 428 个节点:付费也会投毒,金丝雀会被自动捞

9 月的 6TB 故事之前,同一研究方向已经做过一次可引用的测量。论文从淘宝、闲鱼和 Shopify 店面购买了 28 个付费路由器,又从公开社区收集了 400 个免费节点,一共 428 个。他们在沙箱 Agent 的流量里放入可追踪的 AWS 凭证和预充值的以太坊私钥,看中转站会不会读、会不会用。

结果可以写成四句,不必再加形容词。9 个节点会主动注入恶意代码:1 个付费、8 个免费。2 个部署了自适应逃避触发。17 个碰了研究者自有的 AWS 金丝雀凭证。1 个转走了测试钱包里的 ETH。论文还写了两条「看起来善意的节点也会被拖下水」的投毒观察:故意泄露的 OpenAI 密钥和配置很弱的诱饵,处理过来自这些路由器的约 21 亿 token;440 次 Codex 会话里暴露了 99 个凭证,其中 401 次已经跑在无需人工确认的 YOLO 模式。客户端几乎不校验中转站返回的工具调用——论文针对四个公开 Agent 框架搭了研究用代理 Mine,用来演示改写载荷。

这些数字不证明「你正在用的那一家」一定在这 9 个或 17 个里面。它们证明的是机制:中转站看得到明文;一部分会主动改返回;一部分会自动捞凭证;付费不能当端到端承诺。换一家「更贵的代打」,对照的仍应是 Host、日志政策和你有没有把真密钥送进去,而不是价格标签。

调用日志一旦当商品卖,删除本地对话收不回

9 月这条新闻刺耳的地方,不是又一个对话框会训练,而是调用历史被当成数据集出售。公开叙述写的是:未脱敏的请求记录里出现了 GitLab 令牌、主机 SSH 密钥、VPN 配置和公有云高权限密钥。买方不必再去黑进华为或小米的办公网——如果令牌仍有效,持有合法凭证的登录在企业日志里看起来像正常运维。这是「有效账户」加「供应链多了一跳」,不是破解 TLS。

因此「我已经把 IDE 里的对话清了」救不回已经卖出去的包。中转站的保留时钟由对方决定:全局日志、对象存储、卖给微调市场的副本,都不共享你的删除按钮。消费级 ChatGPT 至少还把训练开关和临时对话写进帮助页;灰色代打通常不给你一份对等的数据政策。核对现场时,不要去下载那 6TB,也不要传播截图里的令牌。已经走过中转站的真实密钥,应先在签发方作废,再谈换通道。

上游模型厂商是另外一份副本。中转站转发成功后,Anthropic 或 OpenAI 仍按自己的 API 留存规则处理那份明文。关掉某一个消费级产品的「改进模型」,管不到你从未登录过的代打账号,也管不到已经卖出的历史包。两条线要分开记:厂商政策是一册,中转站日志是另一册。

不要用生产 SSH、阿里云 AK/SK、GitLab glpat- 或未脱敏连接串做实验,也不要去买、下或转发那份 6TB 数据包。准备一句可丢弃的金丝雀,例如 canary-relay-2026-do-not-reuse。核对的是 Network 里的 Host 和请求体有没有这串字符,不是把内网钥匙再传播一遍。已经进过中转站的真实密钥,应先作废。

当场核对:看 Host,金丝雀只进测试请求

口号写「我们只是转发」无法自证。能当场看到的是三件事:这条请求的 Host 是不是模型厂商自己的域名,请求体里有没有不该出门的密钥,以及 Agent 是否在无需确认的模式下执行返回的工具调用。这一步只证明「这一次调用把明文交给了谁」,不证明某家中转站有没有把日志卖掉——后者只能对照对方是否提供可审计的留存说明,以及你是否还把真密钥送进去。

在测试项目里把 API Base URL 指到你正在用的那个地址。打开开发者工具或代理软件的请求列表,发一条只含金丝雀的提示,例如「请复述 canary-relay-2026-do-not-reuse,不要做别的」。看请求行:Host 若是 api.anthropic.comapi.openai.com 或你公司自建且合同写明的网关,才是「这一跳的对端是厂商或自己的机器」;若是名不见经传的代打域名、IP 或一串中转路径,明文已经在中间落地。再打开请求体:金丝雀应出现在 JSON 里。这说明中转站只要记日志,记下来的就是这串字符。

不要把真实 .env 交给 Agent 去「帮你看看哪一行写错了」。先在本机把口令和私钥换成金丝雀,或整份文件先在本地打成密文再决定要不要离开浏览器。必须把真密钥交给同事、而不是交给模型时,换阅后即焚:密钥留在 URL 的 # 片段,服务端只暂存密文。把完整带井号的链接再贴回中转站对话框,这一层保护就没了。

  1. 在测试项目发一条只含金丝雀的提示,例如 canary-relay-2026-do-not-reuse;不要用真实密钥。
  2. 打开 Network 或本地代理,对照请求的 Host:是模型厂商域名,还是代打域名。
  3. 打开请求体,确认金丝雀以明文出现在 JSON 里;这就是中转站能记进日志的内容。
  4. 生产密钥先作废再换新;提示词出门前在本机掩码;必须交给人时走阅后即焚,不要走中转站。

这套步骤证明的范围很窄:这一次操作里,明文作为请求体打到了你看见的那个 Host。它不证明扩展程序没有另存,也不证明 6TB 包里有没有你的仓库地址。换中转站或换 Agent 之后,值得对着新的 Base URL 再跑一遍金丝雀。

用打开即用的本机掩码,把真密钥留在标签页里

若你希望把「密钥不进代打请求」练成可重复的动作,可以从 MakePwd 的隐私清洗切入。打开即可使用,无需注册,也没有账号。规则脱敏在当前标签页处理文本,不把原文上传,也不把待脱敏正文写进分析。先把准备丢给 Agent 的报错、配置片段和终端粘贴打一遍掩码,再决定这条请求还要不要走中转站。掩码不是匿名化,漏掉的姓名、口述数字和自定义令牌格式仍要人看一眼。细节见把工单或聊天记录外发出去前,规则脱敏能遮住什么、遮不住什么

整份 .env 或密钥文件不要改回「丢进网盘再让模型读」。文件加密盒在当前标签页用 AES-256-GCM 做成 .lock / .enc(单文件不超过 5 GB),密文可以走网盘,口令走另一条通道。必须把真口令交给同事时,用阅后即焚:浏览器用 Web Crypto 按 AES-256-GCM 加密,出站字段是密文、过期时间和阅读次数;页面把密钥接到 s.html?id={编号}#{密钥} 的片段上。按 RFC 9110,请求行里不该出现井号后面那一段。已经进过中转站的登录口令,应先作废,再用密码生成器在本机生成 6–128 位的新串(默认 16;低于 8 位会提示较弱)。这些步骤都不要求登录。

消费级对话框怎么留会话、怎么训练,仍然以厂商帮助页为准,见把密码或 API 密钥贴进 ChatGPT,这次会话和训练侧还可能留下什么。两篇不要混:ChatGPT 那篇回答「官方对话框还剩什么」;本文回答「代打这一跳还剩什么」。官方对话框关训练,关不掉中转站已经卖掉的日志。

常见问题

请求走了 HTTPS,中转站是不是也读不懂明文?

不是。论文写明:大模型 API 路由器是应用层代理,对飞行中的每一份 JSON 载荷拥有完整明文访问权。你的客户端到中转站是一跳 TLS,中转站到上游模型是另一跳。密钥在中转站磁盘上默认是可读正文,不是「只有 Anthropic 能看见」。

付费中转站是不是就安全?

付费不等于端到端。论文从淘宝、闲鱼和 Shopify 买了 28 个付费节点,加上 400 个免费节点共 428 个:9 个会主动注入恶意代码,其中包含付费节点;17 个碰了研究者自有的 AWS 金丝雀凭证;1 个转走了测试钱包里的 ETH。

9 月那份 6TB 数据是不是已经证明华为、小米被攻破了?

没有。公开叙述是研究员称购得约 6TB 调用数据,并称其中的 SSH、VPN、云厂商密钥和 GitLab 令牌足以访问若干企业与机构。截至成文,点名企业没有公开确认失陷。本文只把「中转站能看见并可能转售明文」收成可核对的范围,不把点名当成已证实的入侵。

必须让模型看一段含密钥的配置时,还能怎么做?

先在本机把口令、令牌和私钥掩成金丝雀,再决定这条请求的 Host 是不是模型厂商自己的域名。真实密钥不要进中转站,也不要进消费级对话框。必须交给同事时,用阅后即焚一次性发送,密钥留在 URL 的 # 片段;创建与阅读均打开即用。

下次改 API Host 之前记住的三件事

第一,中转站会合法解明文。客户端到代打是一跳 TLS,代打到模型是另一跳;提示词、工具调用和 .env 里的密钥在中间那台机器上默认可读。第二,9 月的 6TB 故事说的是调用日志可能被整包卖掉;论文的 428 个节点说明付费也会投毒、金丝雀会被自动捞。第三,当场只核对 Host 和请求体:金丝雀能出门,真密钥就能出门。已经进过中转站的口令先作废,提示词出门前在本机掩码。

若你还要继续追问消费级对话框的会话和训练,请读把密码或 API 密钥贴进 ChatGPT,这次会话和训练侧还可能留下什么。若要核对井号后面的密钥会不会进 HTTP,请读URL 的井号后面为什么适合放密钥,以及什么时候会失效。本文只把「密钥进了大模型中转站之后还可能剩什么」收成可以写进结论的范围。