ZCode 默默上傳完整的 Git 歷史 – 隱私漏洞分析
ZCode 在未經同意的情況下上傳使用者完整的 Git 歷史
重點: ZCode 桌面應用程式會加密每位登入使用者的完整 .git 目錄,使用僅伺服器持有的 RSA 公鑰包裝加密金鑰,並將壓縮檔上傳至阿里雲 OSS 服務。使用者無法解密該資料,且沒有任何 UI 開關能阻止資料外洩。
資料外洩的運作方式
結論: ZCode 的客戶端會將工作區打包成 tar.gz,使用 AES-256-CTR 加密,再以伺服器提供的 RSA-OAEP 公鑰包裝對稱金鑰,並直接將密文 POST 至阿里雲 OSS 儲存桶。
- 客戶端會連線至
zcode.z.ai以取得簽署過的 OSS 表單、物件金鑰、大小上限,以及每筆上傳專用的 RSA 公鑰。 - 資料內容包含完整的
.git目錄(物件、LFS 快取、reflogs、設定檔)與工作樹。 - 加密後的壓縮檔會暫存在本機(例如
~/.zcode/v2/checkpoints),但無法解密,因為私鑰僅存於 Z.ai 的雲端。 - 上傳完成後,OSS 會回呼 Z.ai 的後端以註冊快照。
重建的流程圖(見原始來源中的圖片)顯示了 憑證協商 → 本機打包 → 加密 → 直接 POST 至 OSS → 後端回呼 的序列。
實際上被上傳的內容
結論: 上傳資料中超過 86% 為 Git 物件儲存區,包含專案的完整歷史,包括已刪除的金鑰、未發布的功能分支與內部設定。
| 內容 | 大小(範例) | 資料占比 |
|---|---|---|
.git/lfs/ |
196.1 MB | 56.8 % |
.git/objects/ |
102.2 MB | 29.6 % |
.git/logs/ |
0.6 MB | 0.2 % |
| 來源碼與文件 | 46.2 MB | 13.4 % |
單一包含 42k 檔案的快照,從 345 MB 的工作區產生了 313 MB 的加密壓縮檔。
UI 開關無法阻止上傳
結論: 兩個可見的設定項目——優化體驗 與 專案快照索引——僅影響後端的訓練或索引行為;它們不會阻止客戶端打包並上傳快照。
- 負責捕獲的副程式在啟動時無條件初始化,僅受有效 JWT 權杖限制。
- 會話記錄顯示單一會話中觸發了 62 次捕獲事件,分別在每次提示前與任務完成時。
- 代理的工具介面(共 31 個工具)中沒有任何快照或遙測指令;資料外洩運作於工具迴圈之外。
加密金鑰設計確認僅伺服器可存取
結論: 信封加密使用僅伺服器持有的 RSA 金鑰,表示只有 Z.ai 能解密上傳的壓縮檔。
- 公鑰是在憑證協商階段交付的。
- Ferstar 嘗試使用任何本機私鑰解包壓縮檔均失敗。
- 因此,儲存在使用者磁碟上的密文對使用者或客戶端本身而言皆無法讀取。
隱私政策的遺漏
結論: ZCode 官方隱私政策僅提及「在對話中提交的文字、檔案與程式碼」的收集,但完全未提及完整工作區或 Git 歷史的上傳。
- 沒有任何常見問題、變更紀錄或政策修訂提及快照功能。
- 唯一相關的陳述僅為針對「優化計畫」的通用退訂選項,且不涵蓋上述行為。
社群反應與驗證
結論: 此發現迅速引起關注,Ferstar 在 X 上的貼文獲得超過 276k 次觀看,同時一段中文警示貼文也達到了 63.8k 次觀看。
- 開源 AI 代理作者 Petri Kuittinen 警告:「絕對不要信任封閉原始碼的 AI 工具」。
- 多個獨立分析(例如 OrcaPromptVault)證實存在隱藏的快照/還原功能,會觸發上傳流程。
- 部分使用者表示未見
~/.zcode/v2/checkpoints目錄,暗示後續版本可能已修改機制,但尚未發布官方說明。
應對措施
結論: 唯一可靠的緩解方式是於檔案系統層級阻止客戶端寫入快照目錄。
# Linux
rm -rf ~/.zcode/v2/checkpoints
mkdir -p ~/.zcode/v2/checkpoints
sudo chattr +i ~/.zcode/v2/checkpoints
# macOS
rm -rf ~/.zcode/v2/checkpoints
mkdir -p ~/.zcode/v2/checkpoints
chflags uchg ~/.zcode/v2/checkpoints
- 此舉會停用快照回滾的 UI,但聊天、自動補全與工具呼叫功能仍可正常使用。
- 重新啟用時,移除不可變標誌(
chattr -i或chflags nouchg)。
對本地運行模型的更廣泛影響
結論: 在本機執行開源權重模型並不代表隱私保障;周圍的工具架構(桌面應用、更新服務、遙測層)仍可能外洩資料。
- 必須信任整個執行堆疊,而不僅僅是模型權重。
- 任何 AI 程式碼工具都應問兩個關鍵問題:
- 使用者登入期間傳輸了哪些資料?
- 誰持有任何儲存快照的解密金鑰?
- Tokenstead(本分析來源)將持續監控 Z.ai 的回應,並依情況更新發現。
給開發者的關鍵提醒
- 切勿假設開源權重模型代表整個系統開源。 工具可能為封閉原始碼,並執行未揭露的遙測。
- 檢查任何 AI 協助 IDE 的網路流量;留意對雲端儲存服務的出站 POST 請求。
- 優先選擇開源工具架構,其公開遙測合約並允許使用者審查程式碼。
- 若必須使用無法審查的封閉原始碼工具,請套用檔案系統強化措施(如不可變目錄)。
參考資料
- Ferstar, Inside ZCode: Silently Uploading Your Entire Git History to the Cloud, Sep 18 2026 – 完整的 forensic 報告。
- Ferstar(276k 觀看)與 FeiZ(63.8k 觀看)在 X 上的貼文。
- ZCode 變更紀錄與隱私政策(官方 Z.ai 網站)。
- OrcaPromptVault 對 ZCode 系統提示的快照。
- V2EX 討論(中文社群反應)。
- Lookonchain 對此事件的報導。
Sources
相關
- Dispatch
- Dispatch
- Dispatch
- Dispatch