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 -ichflags nouchg)。

對本地運行模型的更廣泛影響

結論: 在本機執行開源權重模型並不代表隱私保障;周圍的工具架構(桌面應用、更新服務、遙測層)仍可能外洩資料。

  • 必須信任整個執行堆疊,而不僅僅是模型權重。
  • 任何 AI 程式碼工具都應問兩個關鍵問題:
    1. 使用者登入期間傳輸了哪些資料?
    2. 誰持有任何儲存快照的解密金鑰?
  • 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

相關