編按:本文綜合整理自 GitHub Issue anthropics/claude-code#74066、Anthropic 官方 Claude Sonnet 5 System Card、April 23 Claude Code Postmortem、以及 NDSS 2025 學術論文《Prompt Leakage via KV-Cache Sharing in Multi-Tenant LLM Serving》,並加入 Siami 編輯部觀點與分析。
事件經過:一位 Enterprise ZDR 客戶的「麥塊廟宇」驚魂
2026 年 7 月 4 日,GitHub 用戶 milesrichardson-edb 在 anthropics/claude-code#74066 開了一則 bug 回報,標題為「Potential session/cache leakage between workspace instances or consumer accounts」。回報者使用的是 Anthropic 的 Enterprise ZDR(Zero Data Retention)方案,這本應是 Anthropic 對企業客戶承諾的最高隔離等級。
他在 issue 中描述:「Agent 突然開始問要用什麼磚塊來蓋 Minecraft 廟宇,並在 recap 中自信地表示自己正在蓋 Minecraft 廟宇。回報者原本以為 cache 是 workspace 隔離的——也許是某個同事在蓋 Minecraft 廟宇,這種 token 消耗方式還挺特別的。又或者,這是從某個 consumer plan 漏過來的。如果是這樣,那 Enterprise ZDR 到底把哪些敏感的對話紀錄送到哪去了?」
更值得注意的是,他在 14 小時後回報:「同樣的情況發生在同一個 Enterprise 帳號的 Claude Mobile session 上。兩個案例的共同點是 Sonnet 5,以及『超過 5 分鐘後的第一次回應』(cache miss)。」
這個 5 分鐘並非巧合——它正好對應 Claude Sonnet 5 System Card 中明確揭露的「5-minute cache TTL」。
為什麼這件事重要
這不是 Claude Code 第一次出包,但很可能是「性質最嚴重」的一次。
1. ZDR 是企業付費的信任基礎
Zero Data Retention 是 Anthropic 對企業客戶的核心承諾:付錢換資料不落地、不訓練、不共享。但若 cache 在 eviction 後從同一個 inference pool 中被另一個 session 撿走,這個承諾在技術層面已經失效。對金融、醫療、國防等高度監管產業而言,這是 P0 等級的事件。
2. Sonnet 5 的 5 分鐘 cache TTL 讓攻擊面變大
Sonnet 5 System Card 明確寫出「5-minute cache TTL」以換取 1M context window 下的成本可控。這個設計直接對應回報者觀察到的「超過 5 分鐘後的第一次回應」模式。在 cache miss 後,Sonnet 5 必須重新處理整段 prompt——但若 inference backend 用 shared prefix KV-cache 來加速 cold-start,就會出現 NDSS 2025 論文《Prompt Leakage via KV-Cache Sharing in Multi-Tenant LLM Serving》所描述的攻擊面。
3. 這是 4 月事件後的第二次大爆
2026 年 3-4 月 Anthropic 才剛發過 Claude Code 品質 postmortem,承認三個 bug 疊加導致 Claude Code 在 3-4 月「變笨」,其中包含一個 cache bug。當時 Anthropic 表示已在 v2.1.116(4 月 20 日)修復。但 issue #74066 的回報時間是 7 月 4 日,版本 v2.1.199——代表所謂的「修復」並沒有涵蓋 inference backend 的 KV-cache 隔離問題,只是修了 client-side 的 cache eviction 邏輯。
數據解讀:是 bug、還是 KV-cache 共用的設計後遺症?
目前社群提出三種可能解釋:
| 假設 | 支持證據 | 反證 |
|---|---|---|
| A. KV-cache hash collision(最危險) | 5 分鐘 cache TTL、Sonnet 5、回報者觀察到「cache miss 後」才出現 | 沒有直接證據顯示跨帳號資料外洩 |
| B. 本地 session file 污染 | yurukusa 建議檢查 ~/.claude/projects/ 是否有 Minecraft 字串 | 回報者已 grep 過,無 match |
| C. Pygments lexer 名稱誤觸發 | DevBrent 指出 Pygments 有個 lexer 叫 minecraft.py | 不能解釋為何 Claude「自信地宣稱在蓋廟宇」 |
yv3nne 在 comment 中補了一個重要觀察:「已經有『shared KV-caches in inference』context leakage 的已知問題」。NDSS 2025 那篇論文早就警告過,三個關鍵條件下,KV-cache 共享會導致 prompt leakage:
- Multi-tenant inference pool(同一個 model 服務多個客戶)
- Shared prefix optimization(用 prefix hash 復用 KV-cache)
- Cache eviction 後重新填充的時間窗口
Sonnet 5 的 5 分鐘 cache TTL 完美對應第三點。
社群與業界反應
Hacker News 上這則 issue 衝到當日第一,GitHub 上 14 條 comment 中有 3 位用戶(milesrichardson-edb、yv3nne、arbirk)都聲稱遇到類似的「對話內容污染」現象。arbirk 的描述更為具體:
「Partway through this task, one batch of tool results contained injected content that did not come from the tools I actually called — a fabricated ‘MCP servers need auth’ notice, an unsolicited dump of a different CLAUDE.md, and fake ‘Plan mode is active’ instructions telling me to stop and use tools I don’t have.」
這暗示不只是「別人的 prompt」被讀進來,而是「別人的 prompt 內容反過來指示 Claude 執行非預期的操作」——這已經踩到 prompt injection 的紅線。
資安研究員 lc-nyovchev 諷刺道:「Vibe coding company has vibe coding security, what a surprise.」直指 Anthropic 在「vibe coding」這個新興開發模式上快速推進,卻沒同步強化基礎安全機制。
質疑與待釐清的事項
- Anthropic 至今未公開回應:issue 開立已超過 36 小時,狀態仍為 open,沒有官方 acknowledgement。這跟 4 月那次「48 小時內 postmortem」的反應速度形成對比。
- 沒有官方確認或否認「跨帳號」:若屬於 KV-cache hash collision,這是 inference 架構層級問題,修復成本遠高於 client-side cache eviction。
- Claude Mobile 也中招:回報者在同一個 Enterprise 帳號的 Mobile session 也遇到相同問題,顯示問題不在 CLI client,而在後端。
- ZDR 合約的法律後果:若確認有 cross-tenant 洩漏,Enterprise 客戶可能有合約索賠權——但目前沒有任何客戶公開提告。
截至 2026 年 7 月 5 日,Anthropic 尚未對此 issue 發出官方回應。Siami 將持續追蹤後續發展。
延伸閱讀:
網友熱門留言 (6)