把 SSH 私鑰和雲端金鑰寫進 Agent 提示詞之後,大語言模型中轉站為什麼還能把呼叫紀錄原樣賣掉
2026 年 9 月 11 日前後,安全研究員壽超璠稱,他從一家中國龍頭大語言模型中轉站買到約 6TB 未脫敏的 Fable 模型呼叫資料,其中出現 SSH 私鑰、VPN 設定、阿里雲金鑰和 GitLab 權杖。他聲稱這批憑證足以進入多家企業和科研機構的內部系統。本篇不復盤那家中轉站是否屬實,只拆開一層能當場核對的機制:請求只要經過必須看見正文的中轉,寫進 Agent 提示詞的金鑰就會以明文形態留下。不是隱私清理頁或閱後即焚建立頁的操作說明書。
先分清 提示詞經過了哪一層
本篇只回答「把 SSH 私鑰和雲端金鑰寫進 Agent 提示詞之後,大語言模型中轉站為什麼還能把呼叫紀錄原樣賣掉」。不是隱私清理的表單說明,也不是某家模型廠商的完整隱私權政策。
提示詞經過中轉站時發生了 什麼
這不是「模型廠商的伺服器會不會訓練你的對話」。先問:這一跳有沒有一個必須看見正文的中間人。
大語言模型中轉站夾在你的編輯器和上游模型之間。台灣團隊常用它繞過區域限制、分攤帳號或拿折扣價;華語圈也常把同一類服務叫作 API 中繼站。請求到達中轉之後,對方要核對你的呼叫額度、換上自己的上游金鑰、再把同一段提示詞轉給 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 的隱私清理在目前分頁依格式辨識六類欄位:電話、證件字號、銀行卡、信箱、常見 API Key/權杖和 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 提示詞之後,中轉站為什麼還能把呼叫紀錄原樣賣掉」。要當場用不真實的測試權杖對照格式脫敏,或把材料改走一次性連結,開啟對應頁面即可,不必先註冊。