把 SSH 私钥和云密钥写进 Agent 提示词之后,大模型中转站为什么还能把调用记录原样卖掉
2026 年 9 月 11 日前后,安全研究员寿超璠称,他从一家国内头部大模型中转站买到约 6TB 未脱敏的 Fable 模型调用数据,其中出现 SSH 私钥、VPN 配置、阿里云密钥和 GitLab 令牌。他声称这批凭证足以进入多家企业和科研机构的内部系统。本篇不复盘那家中转站是否属实,只拆开一层能当场核对的机制:请求只要经过必须看见正文的中转,写进 Agent 提示词的密钥就会以明文形态留下。不是隐私清洗页或阅后即焚创建页的操作说明书。
先分清 提示词经过了哪一层
本篇只回答「把 SSH 私钥和云密钥写进 Agent 提示词之后,大模型中转站为什么还能把调用记录原样卖掉」。不是隐私清洗的表单说明,也不是某家模型厂商的完整隐私政策。
提示词经过中转站时发生了 什么
这不是「模型厂商的服务器会不会训练你的对话」。先问:这一跳有没有一个必须看见正文的中间人。
大模型中转站夹在你的编辑器和上游模型之间。国内团队常用它绕过区域限制、分摊账号或拿折扣价。请求到达中转之后,对方要核对你的调用额度、换上自己的上游密钥、再把同一段提示词转给 Claude 或其它模型。要完成这三步,中转站必须先把 HTTPS 接到自己这一跳上的请求解开,读出 JSON 里的 messages 或 Agent 上下文。安全内参 9 月 11 日对寿超璠披露的报道,把这一层写成「任何缺乏端到端加密的应用层代理,本质上就是一个流量抓包工具」,见《实测揭秘:AI中转站数据流入黑市》。ChainCatcher 同一天的转述也写明:请求和回复都会先经过中转,因此能看到完整明文,见《研究员称购 6TB 中转站数据可攻入 19 家企业》。
编程 Agent 让这一跳更危险。Cursor、Claude Code 以及各类自研智能体,会按你的授权去读工作区、扫描 .env、抓终端输出,再把这些片段拼进下一次提示词。开发者不一定亲手把 -----BEGIN OPENSSH PRIVATE KEY----- 粘进对话框;只要 Agent 为了「帮你连上测试机」把私钥或部署脚本读进来,这段字节就已经在将要发给中转站的正文里。寿超璠团队更早的论文 Your Agent Is Mine: Measuring Malicious Intermediary Attacks on the LLM Supply Chain 测过 428 个路由器:9 个会改返回内容,17 个在看到研究人员放入的 AWS 测试密钥后真的拿去调 AWS,还有 1 个转走了测试钱包里的 ETH。那是另一条「中转站会不会主动作恶」的证据。本篇要核对照的,是更普通的一条:它只要开着全局日志,不必作恶,也能把你写进去的密钥留下。
这和「对话式网页里贴工单」不是同一条路径。工单贴进网页版模型时,你至少看见自己按了粘贴。Agent 走中转时,上下文往往是工具自动拼的。你在本机核对的,不该是「我有没有亲手贴密钥」,而该是「这一跳有没有一个必须看见正文的中转,以及正文里现在有没有能直接用的凭证」。
中转站能卖掉调用记录,不是因为它破解了上游模型,而是因为它在转发前就必须看见明文。HTTPS 只保护你到中转、中转到上游这两段线路,不保护中转进程里已经解开的那一份。
调用日志为什么能 原样卖掉
「原样」指的是请求正文还在,不是只留下「某用户调用了一次」这种计数。
中转站要排错、计费、做微调语料,最省事的做法是把解开后的请求整段写入数据库。提示词、系统指令、Agent 读到的文件片段、工具返回值,都会以文本字段留下来。卖掉 6TB 调用数据,卖的就是这层已经解开的历史。研究员声称其中有可直连内网的 SSH 私钥和 glpat- 令牌;公开报道展示过打码后的企业 GitLab 地址。本站没有买过那份数据,也不把「足以接管某家公司」写成已核实结论。能当场核对的是机制:只要日志里存的是请求正文,写进去的密钥就不会自动变成星号。
HTTPS 证书和「厂商说不训练」都挡不住这一层。你的浏览器或编辑器把请求发给中转站时,TLS 在这一跳终止。中转站用自己的上游账号再开一跳新的 TLS。两段线路各自加密,中间那台机器上的进程看到的仍是明文 JSON。上游模型即使承诺不把对话用于训练,也看不见中转站自己留下的副本。副本在不在、卖不卖,取决于中转站的存储策略,不取决于你有没有勾选「临时对话」。
计费日志和调用正文也不是同一份文件。只记 token 数、模型名和状态码,卖不掉 SSH 私钥。一旦运维为了「复现那次失败的 Agent 步骤」把完整 messages 留下,这份文件就同时具备排错价值和黑市价值。寿超璠的披露之所以能在中文技术圈传开,正是因为买家买到的不是摘要,而是还能用的凭证。你要判断的不是「中转站有没有日志」,而是「日志里有没有提示词正文」。
路上的人看不到正文。保护的是传输,不是中转进程里已经解开的那一份。
要改认证头、计费、转发给上游,就得读出提示词和附件片段。
6TB 之所以值钱,是因为里面还是请求历史,不是只剩调用次数。
官方模型接口直连,少了这一跳「必须看见正文的中间人」,但并不等于提示词从此只留在你电脑上。模型厂商自己的服务器同样会收到明文,只是买家从「灰色中转站」变成了「你选择的那一家」。本篇盯住中转站,是因为 9 月这则披露把「正文被整包卖掉」从假设变成了正在讨论的事件。直连官方接口之后,密钥该不该进提示词,结论仍然一样:不该。
格式脱敏盖得住 哪一类密钥
打星号能降低「常见令牌被原样抄走」的概率,盖不住没有固定前缀的私钥块。
UsePwd 的隐私清洗在当前标签页按格式识别六类字段:电话、证件号、银行卡、邮箱、常见令牌和 IP。令牌这一类认的是能核对的前缀,例如 sk-、sk-ant-、sk-proj-、AKIA、ghp_、github_pat_、glpat-、xoxb- 和 Bearer 。打开即用,原文默认不上传,也不写进 analytics。你把一段带 glpat- 的测试文本贴进去,页面会留下前缀、盖住中间、露出后四位,或在全掩模式下只留前缀加星号。这一步能当场证明:常见云和代码托管令牌,至少能被格式规则抓住。
SSH 私钥通常不是这种前缀。OpenSSH 私钥是 -----BEGIN OPENSSH PRIVATE KEY----- 开头的 PEM 块,中间是 Base64,结尾有对应的 END 行。VPN 配置、kubeconfig、数据库连接串、阿里云 AccessKey 若没用 AKIA 这类规则认得出的形状,格式脱敏也抓不住。工单里把手机号打星,解决不了「Agent 把 id_ed25519 读进上下文」这件事。把工单贴进对话式 AI 之前,格式脱敏为什么仍可能对回同一个客户,见把工单原文贴进对话式 AI 之前,格式脱敏为什么仍可能对回同一个客户。那篇写的是身份层还在;本篇写的是通行凭证还在,而且中转站日志里的凭证往往能直接登录。
即便令牌被盖成 glpat-***wQ4x,后四位加上仓库地址,仍可能缩小到具体项目。全掩能去掉后四位,仍然去不掉「这段对话在谈哪台机器、哪个集群」。真正少一层风险的做法,是根本不让私钥和云密钥进入提示词:部署说明写成「密钥走另一条一次性链接」,Agent 只看到步骤,看不到材料。需要把口令交给同事时,用阅后即焚:当前标签页按 AES-256-GCM 加密,明文上限 32 KB,密钥接在 s.html?id={id}#{key} 的 # 之后,服务器只暂存密文。创建和阅读都打开即用,不必先注册。
sk-、glpat-、ghp_、AKIA 这类可按规则识别。后四位仍可能缩小范围。
没有那种短前缀。整块 Base64 进了提示词,中转站日志里就是整块。
提示词只写步骤。材料走阅后即焚,密文在服务器,密钥只在 # 后。
和工单脱敏、聊天发密钥 差在哪
三件事都和「明文离开你眼前」有关,留下的副本却不是同一种东西。
工单贴进对话式 AI,风险首先是「还指得回同一个人」。手机号打了星,姓名、地址和单号仍在。中转站卖掉 Agent 调用记录,风险首先是「还登得上别人的系统」。GitLab 令牌、SSH 私钥、云密钥本身就是登录材料。把这两件事合成「都是贴进 AI」会漏掉处置顺序:工单要先问身份层还在不在;密钥要先问正文里有没有能直接用的凭证,以及这一跳有没有必须看见正文的中转。
云平台环境变量被拖走之后,新密钥不该再发到聊天窗口,见云平台环境变量被拖走之后,新密钥为什么不该再发到聊天窗口。那篇写的是轮换之后的第二轮泄露:Slack、微信、工单和截图会留下可搜索的明文副本。本篇写的是第一轮就可以发生在模型调用链上:你甚至没有把密钥「发给同事」,只是让 Agent 带着工作区去完成部署。聊天记录和中转站日志不是同一份档案,但处置一样——新密钥不要再走会留下正文的通道。
URL 的 # 片段不会进入 HTTP 请求,见URL 的 # 片段为什么不会出现在服务器日志里。阅后即焚把解密密钥接在片段里,正是为了让暂存密文的那一台服务器看不到密钥。中转站正好相反:它的业务就是读正文。不要把「焚链服务器看不到密钥」理解成「任意中间人看不到提示词」。两条链路的可见范围不一样,能当场用网络面板核对。
UsePwd 不能关掉别人的中转站日志,也不能阻止 Agent 读取你授权过的工作区。能核对的是:常见令牌能不能在本机被盖住,以及密钥能不能改走一条只暂存密文的一次性链接。不要把本篇写成「装了本站就不会被中转站卖掉」。
当场怎么 核对照盖住和没盖住
目标不是证明「所有中转站都在卖 6TB」,而是证明:在你正在用的这台浏览器里,哪一类字符串会被盖住,哪一类原样留着。
-
01
准备两段不会用于真实系统的测试文本
不要写入正在使用的私钥、云密钥或 GitLab 令牌。第一段用假令牌,例如
glpat-TESTONLY0000000000wQ4x和sk-test_UsePwdRelayCheck20260916。第二段用一段假的 PEM 外壳,只写-----BEGIN OPENSSH PRIVATE KEY-----、USEPWD-FAKE-KEY-NOT-REAL和对应的END行。下面的步骤只为对照格式规则,不把任何真实凭证交给模型或中转站。 -
02
在本机脱敏页贴第一段,看令牌是否被抓住
打开隐私清洗,页面打开即用。把第一段贴进脱敏区。常见结果是
glpat-和sk-test_被识别成令牌,中间变成星号。按 F12 打开网络面板:处理这段原文时,请求体里不应出现你刚贴的测试串。这一步核对照的是「格式规则盖得住常见前缀」,不是「中转站已经被关掉」。 -
03
再贴第二段,看 PEM 块是否原样留下
清空后再贴假私钥块。常见结果是整段
BEGIN/END仍在,因为格式脱敏不按 PEM 装甲识别。把这个结果记下来:若 Agent 把真实id_ed25519读进提示词,中转站日志里出现的就是这种盖不住的块,而不是打了星号的手机号。工单脱敏解决不了这一层。 -
04
把「步骤」和「材料」拆开,走一条一次性链接
打开阅后即焚,把假口令
RelayCheck-20260916写成一条测试链接,次数保持默认 1,过期保持 24 小时。生成后应看到s.html?id=和#两段。网络面板里发给服务器的应是密文,请求 URL 里不应出现#后面那一段。提示词里只写「材料在一次性链接里」,不写口令本身。测完丢掉这条链接。 -
05
需要对照整份配置文件时,改走文件加密盒
VPN 配置或超过 32 KB 的材料,不适合塞进阅后即焚。单文件不超过 5 GB 时,用文件加密盒在本机做 AES-256-GCM 流式加密,输出
.lock/.enc,文件默认不上传。口令仍用一次性链接单独传。核对照的是「密文文件和口令不走同一条会留正文的通道」,不是「加密之后 Agent 就可以读私钥」。
若你的编辑器已经把 API Host 指到第三方中转,先用测试项目核对照它会不会把 .env 或 ~/.ssh 读进上下文,再决定要不要继续走这一跳。正式密钥不要用来做实验。官方接口直连少一个灰色中间人,仍然不要把私钥写进提示词。
不把密钥写进提示词之后 挡不住什么
把「我没亲手粘贴」读成「中转站日志里不会有密钥」,会漏掉几条同样能核对的边界。
Agent 只要有权读工作区,就能在你没打开对话框的情况下把密钥拼进请求。YOLO 模式、自动批准终端命令、把整个仓库当成上下文,都会扩大这一面。论文里测到的「返回内容被植入额外指令」,是另一条主动作恶路径:中转站不但能留下你发出去的密钥,还能改你收回来的代码。本站核对不了某家中转是否在改包,只能提醒:你看不见的那一跳,既可能记日志,也可能改响应。
已经卖掉的 6TB 不会因为你今天改了提示词习惯而消失。研究员声称其中的凭证仍可能有效;处置顺序是先在云控制台、GitLab、主机和 VPN 上撤销,再换新材料。新密钥不要再进 Agent 上下文,也不要再进聊天窗口。需要长期保存或多设备同步时,应使用专门的密码管理器。UsePwd 没有账号和密码库,也不能按用户找回丢失的链接。身份说明见关于。
格式脱敏是辅助,不是保证一个不漏。重要外发请再人工看一眼。口令本身可用密码生成器在 6–128 位之间生成,再用密码检测看本机强度和公开弱口令名单,不是全网 HIBP。这些页面和本篇一样打开即用。不要把「HTTPS 小锁」或「对话标了临时」理解成「中转站进程里没有明文」:线路加密和进程内正文不是同一层。
密钥写进提示词之后 常被问到的
下面四条只回答本篇的边界,不重复工具页上的按钮说明。
读完去 核对照盖住和没盖住
文章回答「密钥写进 Agent 提示词之后,中转站为什么还能把调用记录原样卖掉」。要当场用不真实的测试令牌对照格式脱敏,或把材料改走一次性链接,打开对应页面即可,不必先注册。