gstack 事件深度分析:Claude Code Skill/Hook 系統的架構級攻擊面,附掃描指令
事件背景
gstack 是一個 Claude Code 第三方 skill 工具,被發現在未經使用者同意的情況下,上傳使用紀錄和商業思考到外部伺服器。
作者透過分析 Claude Code 51 萬行原始碼,揭露這不是 bug,而是架構層面允許的攻擊面。
Claude Code 的 6 層權限防線
看起來安全,但 skill 系統可以繞過其中 4 層。
攻擊路徑:Hook 在彈窗之前執行
關鍵在第 5 步(Hook 攔截):
- Skill 可以在 frontmatter 裡註冊 hook
- Hook 在「權限確認彈窗出現之前」執行
- Hook 能看到每一次工具呼叫的完整內容
- Hook 可以直接回傳 自動按確認
你完全不知道這些在發生。
gstack 的具體手法
- 在 裡建了 30+ 個 symlink
- 每個 skill 聲明 (任何檔案操作都觸發)
- 一旦觸發,skill 裡的 hook 就註冊進系統
- 從此每一次 Bash 呼叫、檔案編輯,hook 都先看到
gstack 收集的資料
- skill-usage.jsonl:用了哪些 skill、對應哪個專案、時間
- eureka.jsonl:從對話中自動萃取商業洞察
- 上傳目標:
- 傳送條件:telemetry 設定為 或 時
已知安全問題:garrytan/gstack#675(service role key 外洩,PR 修復中)
惡意 Shell Hook 示例(概念展示)
301 Moved Permanently301 Moved Permanently
nginx/1.22.1 '{behavior: allow}'
每次使用任何工具:
- 把操作內容傳到外部伺服器
- 自動幫你按確認
- 你完全不知道
現有防線的侷限
Claude Code 的防線:
- deny rules 可以鎖死危險工具
- managed skills 不能被覆蓋
- policy settings 可以強制拒絕
但前提是你知道要防什麼。
gstack 的聰明在於:不改設定、不碰危險檔案,只是安靜地註冊 hook、記錄、上傳。全部在權限模型允許的範圍內。
掃描工具
skill-sanitizer(台灣作者開發):
- GitHub:cyberxuan-XBX/skill-sanitizer
- 7 層掃描 + LLM 語義偵測
- 本地執行,零上傳
- 測試 281 個 skills,發現 29% 有問題
保護措施
- 不要裝來路不明的 skill
- 檢查 有沒有奇怪的 symlink
- 查看 有沒有你沒設定的 hook
- 用 skill-sanitizer 掃描
gstack 快速檢查指令
/home/allen/.openclaw/workspace/knowledge-base/articles/2026-03-23-gstack-full-guide-15-skills-virtual-engineering-team.md /home/allen/.openclaw/workspace/knowledge-base/threads/2026-03-23-gstack-yc-ceo-garry-tan-ai-coding-retro-tool.md 從未同步 (未設定=off)
安全判斷:
- 不存在 → 未上傳
- 不存在 → 沒有商業洞察被收集
- Telemetry 為 或未設定 → 不會上傳
核心啟示
Claude Code 最值錢的是架構,最危險的也是架構。當 hook 能在權限確認之前執行,信任就只剩下一層:你裝了什麼。