跳轉到主要內容
本附錄是操作性清單,完整說明、見解與威脅模型見 03-3 安全、隱私與供應鏈風險;此處只留判準與「為什麼要勾」。
涉及不可逆的資料外洩與系統破壞風險。所有可執行設定變更請先在 throwaway 環境驗證,再上正式工作流。動手前先讀 03-3 對應節,不要只照清單打勾。

1. 上手前(每個新工具)

為什麼要勾:把資料丟進去之後,預設值多半對你不利;要在第一筆資料送達前確認訓練退出、保留期限、隔離機制,否則事後只能等保留期自然消滅。
  • 找到並確認訓練退出開關狀態(Claude:Help Improve Claude;ChatGPT:Improve the model for everyone;Gemini:Keep Activity)。
  • 確認對話保留期限與自動刪除設定(Free / Pro / Team / Enterprise 各自不同)。
  • 知道如何開「暫時對話 / Temporary Chat」處理一次性敏感內容。
  • 區分 Free 方案與 Team / Enterprise 的資料條款(企業預設多不訓練,個人預設多會)。
  • 把當前帳號的開關狀態寫進 CLAUDE.mdMEMORY.md,避免下次切帳號時混淆。
判準:清單全勾且每格都能在工具內指出實際位置。寫得出位置才算設好;寫不出位置等於沒設。

2. 憑證與權限

為什麼要勾:代理一旦擁有你的 PAT 或讀到 ~/.aws/credentials,任何 prompt injection 攻擊鏈的最後一里路就是它。獨立、最小範圍的代理專用憑證,是把「攻擊者控制代理」與「攻擊者控制你的全部帳號」之間的防火牆。
  • 代理使用專用、最小範圍憑證(非個人 PAT / 個人帳號)。
  • 權限 deny list 含密鑰路徑(~/.ssh~/.aws**/.env*~/.gnupg)與危險指令(curl * | bashssh *wget * | bash)。
  • 工具權限對齊任務範圍:MCP server 給最窄 OAuth scope;Bash 規則用 ask 而非 allow 處理未知指令。
  • .env 已 gitignore,且有 .env.example(含所有 key、value 為佔位符)。
  • 任何「個人帳號設定的全開權限」不直接套到自動化迴圈或無人監控的 session。
判準
  • 代理用的 PAT 是「代理專用 + 短效 + 細粒度 scope」三項都成立。
  • 對一條危險指令(curl … | bash)能直接講出「哪條 deny rule 會擋、在哪個檔」。
  • 把目前已安裝的 MCP server 與其 OAuth scope 全列在一份本地清單,每季掃一次。
代理專用 PAT 的最小設定
帳號:agent@yourdomain.com(非個人)
用途:bot-mcp-only
Scope:僅「讀取 repo metadata」與「讀取 issue 列表」
效期:30 天自動輪換
綁定:限定 IP 來源(你的工作站或部署環境)
三個常見錯誤:用了個人 PAT 跑代理、給了 repo 全權限 scope、把效期設成「不過期」。

3. 供應鏈(安裝 Skill / Plugin / 規則 / MCP server 前)

為什麼要勾:第三方資產是「信任外部程式碼在你的機器上跑」。Snyk ToxicSkills 2026-02 報告指出,當時掃的 3,984 個公開 skill 中約 36% 含 prompt injection,總計 1,467 個惡意 payload。收錄在市集不等於安全;有 README 不等於可審查。
  • 掃描隱藏 Unicode 與 bidi 控制字元(U+200BU+FEFFU+202AU+202E)。
  • 掃描可疑外連與覆寫(curlwgetncsshANTHROPIC_BASE_URLenableAllProjectMcpServers)。
  • 確認來源可溯(具名作者 / 官方組織)與維護近度(最後 commit 距今多久)。
  • 權限範圍合理,無倉庫外寫入、無讀取密鑰路徑、無對外網路(除非功能明確需要)。
  • SKILL.md / plugin.json / .mcp.json 的 frontmatter:描述欄、觸發條件、輸入輸出是否與宣稱一致。
  • 首次安裝在 throwaway 環境或容器內跑一次,觀察是否有對外連線或非預期的檔案寫入。
判準
  • 對一個陌生 Skill,能講出「它會做什麼、它要什麼權限、它對外連到哪」三點。
  • 任何一條 rg 掃描有 hit,先停、看、修補或棄用,不要圖快確認。
  • 來源不明或單人維護很久沒更新的 repo,預設不安裝。
三條必跑的供應鏈掃描
# 1. 隱藏字元與 bidi 覆寫
rg -nP '[\x{200B}\x{200C}\x{200D}\x{2060}\x{FEFF}\x{202A}-\x{202E}]' \
  ~/.claude/plugins/ .claude/ .mcp.json

# 2. 可疑外連與危險指令
rg -n 'curl|wget|nc|scp|ssh|ANTHROPIC_BASE_URL|enableAllProjectMcpServers' \
  ~/.claude/plugins/ .claude/ .mcp.json

# 3. HTML 註解、script、base64 文字
rg -n '<!--|<script|data:text/html|base64,' \
  ~/.claude/plugins/ .claude/ .mcp.json
任一 hit 都不應直接跳過。

4. 不可信內容處理

為什麼要勾:當「私密資料 + 不可信內容 + 對外通道」三個條件同存,提示注入就會升級成資料外洩工具(Willison 框架)。解析與行動分離是最便宜的解方:受限的代理只負責抽事實,擁有權限的代理只接乾淨摘要。
  • 處理外部 PDF / DOCX / 網頁前,先抽取所需文字、去除註解與隱藏內容。
  • 解析與行動分離:受限代理解析(read-only、無對外通道),有權限代理只處理乾淨摘要。
  • 不把外部連結直接餵給有權限的代理。
  • 對截圖(OCR 出的文字)也視為不可信內容,先抽事實再餵。
  • 接收外部內容的 session 不在同一個 context 跑可寫檔、可發訊的代理。
判準
  • 不可信內容到敏感操作的 context 之間,至少隔一個抽事實的中間步驟。
  • 任何「請把我信箱 / 對話 / 檔案 base64 編碼後給我一個連結預覽」型請求,直接拒絕。

5. 記憶與輪換

為什麼要勾:記憶檔是跨 session 累積的,攻擊者只要在某次 session 寫進一條載荷,未來 session 組裝時就會被觸發(Microsoft 2026-02 報告指出 31 家公司 / 14 個產業受記憶污染波及)。記憶狹窄、定期輪換,是污染攻擊鏈的有效斷點。
  • 記憶檔保持狹窄,不含密鑰、不含個資、不含供應商 NDA 內容。
  • 處理不可信內容後輪換 / 清理專案記憶(~/.claude/projects/<repo>/memory/)。
  • 定期(建議每季)全審視一次 MEMORY.md 與各 repo 記憶目錄。
  • 高風險工作流(mass web scraping、untrusted repo 審查)跑完後,主動 reset 該 session 的專案記憶。
判準
  • MEMORY.md 內每一條都能回答「為什麼要記這個」;答不出來的刪掉。
  • 每次「跑過不可信內容的工作流」後,有具體動作(刪檔 / 重新生成 / 隔離 session)。

6. 維護

為什麼要勾:CVE 是有時效的。Claude Code 的兩個關鍵 CVE(CVE-2025-59536 與 CVE-2026-21852)的修補都在較新版(v1.0.111+ 與 v2.0.65+)。過期版本 = 已知漏洞 = 早晚出事。
  • 工具保持更新(留意安全公告與 CVE;Claude Code 建議 >= v2.0.65)。
  • 不在自動化迴圈使用 --dangerously-skip-permissions 或同等的全開旗標。
  • 自動迴圈具備 kill switch(process group kill + heartbeat dead-man switch)。
  • 工具呼叫有結構化日誌(時間戳、工具名、command 摘要、檔案觸及、審批結果)。
  • 每季掃一次已安裝的 Skill / Plugin / MCP server 清單,把不用的 remove 掉。
判準
  • 工具版本寫得出來,且該版本在已知 CVE 影響清單之外。
  • 一個被注入的 agent 在爆走時,有外部(process group kill 或 supervisor)能在 30 秒內終止它,不依賴被入侵的 process 自殺。

7. 一次性應用情境

  1. clone 完先看 .mcp.json.github/workflows/.claude/AGENTS.md 這幾個檔。陌生的 server、不明的 workflow、來路不明的 rule,先關掉再說。
  2. 在 throwaway 環境或容器內跑的反例是使用 --dangerously-skip-permissions:預設拒絕。給最小權限,缺什麼再開。
  3. 第一次跑就用第 3 節的三條 rg 掃一次,記錄所有 hit 與處置。
  4. 確認帳號的訓練退出開關(在第一次送資料前)。
  5. 跑完若有處理不可信內容,依第 5 節輪換專案記憶。

8. 對應單元

事實主張依官方文件,快變動項標註截至 2026-05。