先記一句能核對的結論:網址列或用戶端裡的小鎖,只說明你到中轉這一跳用了 TLS,不說明中轉讀不懂提示詞。開啟開發人員工具的 Network,看請求的 Host 是模型廠商的網域,還是另一個代打網域。金絲雀只進測試,不要用正式環境的 SSH 或 AWS 存取金鑰做實驗。
這週在討論的不是又一次「模型會不會訓練」,是中間那一跳
9 月 10 日前後,安全研究者壽超凡(Chaofan Shou)在社交平台發文,稱自己從一家中國頭部大語言模型中轉買到約 6TB 的 Fable 模型呼叫資料,並稱其中的 SSH 金鑰、VPN 設定、阿里雲金鑰和 GitLab 權杖,足以存取若干企業和政府相關機構。後續中文資安媒體把這件事寫成「中轉日誌流入黑市」。公開報導同時寫明:被點名的企業沒有公開確認失陷,也沒有獨立稽核把「資料集裡出現過權杖」等同於「內網已被接管」。本文把這條新聞當鉤子,不把貼文截圖當入侵判決。
它和上一篇「把金鑰貼進 ChatGPT」不是同一題。那一篇核對的是消費級對話框:對話紀錄、訓練開關、暫存對話大約 30 天的安全留存。這一篇核對的是開發者更常碰到的灰色基礎設施:你以為請求發給了 Claude 或 GPT,實際先打到一個會解密、改請求頭、再轉發的路由器。Agent 還會自己讀 .env、終端機輸出和工作區檔案。金鑰不必你親手貼上,也可能進提示詞。
台灣開發者剛經歷過另一條相近、但機制不同的路徑。2026 年 8 月,部署平台 Zeabur 證實攻擊者讀取了部分專案環境變數,官方列出的名稱包含 OPENAI_API_KEY、ANTHROPIC_API_KEY、OPENROUTER_API_KEY 以及 AWS、GitHub 權杖。那是平台被入侵後讀走變數,不是中轉把呼叫紀錄整包賣掉。兩件事不要混成同一則新聞,卻指向同一類後果:明文一旦離開你的分頁、進了第三方磁碟,撤銷時鐘就不在你手上。
SSH 私鑰、雲端廠商存取金鑰、GitLab 個人存取權杖、VPN 設定,都屬於 OWASP 日誌速查表 裡通常不該以明文落入共用紀錄的內容。OWASP 大語言模型應用 Top 10 把敏感資訊外洩和供應鏈寫進了風險清單。API 中轉正好同時踩中這兩條:它既是提示詞的下一個儲存位置,也是你和模型廠商之間多出來的供應商。
小鎖只護住單跳:中轉會合法解開 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 是同一類誤解:傳輸加密擋的是鏈路上的旁觀者,擋不住已經入站的儲存副本。差別在於,郵件至少還能在「已傳送」裡搜到自己寫出的那封;中轉的呼叫紀錄預設不給你開啟,你刪掉本機對話,動不了對方已經落盤的那一行。
具名聚合商和灰色代打,在「能不能讀明文」這件事上沒有本質差別。OpenRouter 這類公開閘道有資料政策、活動紀錄和帳號可查;論文抽樣的是淘寶、閒魚和 Shopify 店面上的付費節點,再加上社群散佈的免費節點。前者至少還能對照對方寫得出來的留存說明,後者通常連對等的資料政策都沒有。不管你付的是美元還是點數,只要 Host 不是模型廠商自己的網域,明文就已經在中間落地。
程式設計 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、AWS AKIA、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.com、api.openai.com 或你公司自建且合約寫明的閘道,才是「這一跳的對端是廠商或自己的機器」;若是名不見經傳的代打網域、IP 或一串中轉路徑,明文已經在中間落地。再開啟請求體:金絲雀應出現在 JSON 裡。這說明中轉只要記日誌,記下來的就是這串字元。
不要把真實 .env 交給 Agent 去「幫你看看哪一行寫錯了」。先在本機把口令和私鑰換成金絲雀,或整份檔案先在本地打成密文再決定要不要離開瀏覽器。必須把真金鑰交給同事、而不是交給模型時,換閱後即焚:金鑰留在 URL 的 # 片段,伺服器只暫存密文。把完整帶井號的連結再貼回中轉對話框,這一層保護就沒了。
- 在測試專案發一條只含金絲雀的提示,例如
canary-relay-2026-do-not-reuse;不要用真實金鑰。 - 開啟 Network 或本機代理,對照請求的
Host:是模型廠商網域,還是代打網域。 - 開啟請求體,確認金絲雀以明文出現在 JSON 裡;這就是中轉能記進日誌的內容。
- 正式環境金鑰先作廢再換新;提示詞出門前在本機遮罩;必須交給人時走閱後即焚,不要走中轉。
這套步驟證明的範圍很窄:這一次操作裡,明文作為請求體打到了你看見的那個 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 之前記住的三件事
第一,API 中轉會合法解明文。用戶端到代打是一跳 TLS,代打到模型是另一跳;提示詞、工具呼叫和 .env 裡的金鑰在中間那部機器上預設可讀。第二,9 月的 6TB 故事說的是呼叫紀錄可能被整包賣掉;論文的 428 個節點說明付費也會投毒、金絲雀會被自動撈。第三,當場只核對 Host 和請求體:金絲雀能出門,真金鑰就能出門。已經進過中轉的口令先作廢,提示詞出門前在本機遮罩。
若你還要繼續追問消費級對話框的對話和訓練,請讀把密碼或 API 金鑰貼進 ChatGPT,這次對話和訓練側還可能留下什麼。若要核對井號後面的金鑰會不會進 HTTP,請讀URL 的井號後面為什麼適合放金鑰,以及什麼時候會失效。本文只把「金鑰進了 LLM API 中轉之後還可能剩什麼」收成可以寫進結論的範圍。