跳至主要内容

Skills 安全守則 (Safety Guide)

OpenClaw 的 Skill 系統是開放式架構 — 任何人都可以發布 Skill 到 ClawHub。這帶來了豐富的生態系,但也帶來了安全風險。本章節提供完整的安全指南,幫助你安全地使用和審核 Skills。

重要警告

社群發布的 Skills 未經 OpenClaw 官方團隊安全審核。安裝第三方 Skill 等同於在你的系統上執行不受信任的程式碼。請務必遵循本指南的安全原則。


ClawHavoc 事件 — 案例分析

事件概述

2025 年 11 月,一個名為 productivity-boost-pro 的 Skill 在 ClawHub 上架後,短短兩週內獲得超過 8,000 次安裝。該 Skill 宣稱能「大幅提升 Agent 的任務完成效率」,但實際上在背景執行了以下惡意行為:

  1. 資料外洩:將使用者的對話記錄、API Keys、環境變數傳送到外部伺服器
  2. 記憶注入:修改 Agent 的記憶系統,植入偏向特定產品的推薦
  3. Credential 竊取:擷取使用者的 OAuth Token 並轉發

時間線

2025-11-02  productivity-boost-pro 上架 ClawHub
2025-11-03 獲得數個假帳號的五星好評
2025-11-07 安裝量突破 2,000
2025-11-14 社群使用者 @sec_researcher 注意到異常網路流量
2025-11-15 安裝量達 8,000+
2025-11-15 OpenClaw 團隊確認惡意行為,緊急下架
2025-11-16 ClawHub 發布安全公告,受影響使用者通知
2025-11-20 OpenClaw 引入 Skill 簽章機制(v0.8.5)
2025-12-01 ClawHub 新增自動靜態分析掃描

事件教訓

教訓具體措施
下載量不代表安全惡意 Skill 也可能有高下載量(透過社交工程或假帳號)
審核好評檢查評論者的帳號歷史,新帳號的好評可能是假的
監控網路流量使用 security-check Skill 或手動監控異常連線
最小權限不要授予 Skill 超出其功能所需的權限
定期審核定期審核已安裝的 Skills 和它們的權限

最小權限原則 (Principle of Least Privilege)

核心概念

每個 Skill 應該只被授予完成其功能所需的最少權限

權限層級

Level 0 — 無權限(純計算)
例:Summarize, Prompt Library

Level 1 — 唯讀(本機)
例:Reddit Readonly, YouTube Digest

Level 2 — 讀寫(本機)
例:Obsidian, DuckDB CRM, Cron-backup

Level 3 — 唯讀(網路)
例:Tavily, Felo Search, Web Browsing

Level 4 — 讀寫(網路)
例:Gmail, GitHub, Slack, n8n

Level 5 — 系統控制
例:Home Assistant, Browser Automation, Codex Orchestration

實際操作

# 查看 Skill 的權限宣告
clawhub inspect community/some-skill --permissions

# 限制 Skill 權限
openclaw skill restrict some-skill \
--deny network \
--deny filesystem-write

# 設定 Skill 沙盒
openclaw skill sandbox some-skill \
--network-whitelist "api.tavily.com" \
--filesystem-whitelist "~/Documents/MyVault"

安裝前審核清單

在安裝任何第三方 Skill 之前,請逐項檢查以下清單:

1. 發布者信譽

  • 查看發布者在 ClawHub 上的其他 Skills
  • 確認發布者的 GitHub 帳號存在且活躍
  • 檢查是否為已知的社群貢獻者
# 查看發布者資訊
clawhub publisher info community/some-skill

2. 原始碼審核

  • Skill 是否開源?能否查看原始碼?
  • 是否有硬編碼的 URL 或 IP 位址?
  • 是否有加密或混淆的程式碼?
  • 是否有不必要的 eval() 或動態程式碼執行?
# 下載但不安裝,僅供審核
clawhub download community/some-skill --inspect-only

# 使用 security-check Skill 自動掃描
openclaw run security-check --target community/some-skill

3. 權限合理性

  • 宣告的權限是否合理?(例:一個待辦事項 Skill 不需要網路存取)
  • 是否要求了過度的檔案系統權限?
  • 是否要求了 Admin / Root 權限?

4. 社群評價

  • ClawHub 上的評論是否真實?(檢查評論者帳號)
  • Discord / Reddit 上是否有關於此 Skill 的討論?
  • 是否有已知的安全問題被回報?

5. 網路行為

  • Skill 連線的外部服務是否合理?
  • 是否有不明的 telemetry 或 analytics 回報?
# 在沙盒中測試並監控網路行為
openclaw skill test community/some-skill \
--sandbox \
--monitor-network \
--timeout 60

VirusTotal 整合

OpenClaw 支援透過 VirusTotal API 掃描 Skill 的可執行檔案:

# 設定 VirusTotal API Key(免費方案可用)
openclaw config set security.virustotal_key your_vt_api_key

# 掃描特定 Skill
openclaw security scan community/some-skill

# 掃描所有已安裝 Skills
openclaw security scan --all

# 自動掃描(在 clawhub install 時自動執行)
openclaw config set security.auto_scan true

VirusTotal 掃描結果解讀

✅ 0/72 detections — 安全
⚠️ 1-3/72 detections — 可能為誤報,但建議進一步審查
❌ 4+/72 detections — 高風險,不建議安裝

Security-check Skill 詳細使用

Security-check(#12)是專門審核其他 Skills 的 meta-skill:

# 完整掃描報告
openclaw run security-check --target community/some-skill --verbose

# 報告範例輸出:
# ┌──────────────────────────────────────────────┐
# │ Security Report: community/some-skill v1.2.3 │
# ├──────────────────────────────────────────────┤
# │ Source Code Analysis │
# │ ✅ No hardcoded secrets found │
# │ ✅ No obfuscated code detected │
# │ ⚠️ Uses eval() in line 142 │
# │ ✅ No known vulnerability patterns │
# │ │
# │ Permission Analysis │
# │ ✅ Requested: filesystem-read │
# │ ⚠️ Requested: network-outbound │
# │ ✅ No system-level permissions │
# │ │
# │ Network Analysis │
# │ ✅ Connects to: api.service.com (known) │
# │ ❌ Connects to: unknown-server.xyz (!) │
# │ │
# │ Overall Risk: MEDIUM │
# │ Recommendation: Review network connections │
# └──────────────────────────────────────────────┘

1Password Skill 安全整合

1Password Skill(#23)可用於安全管理 Skills 所需的 API Key 和 Token:

clawhub install community/1password-claw

# 設定 1Password CLI 連線
openclaw skill configure 1password-claw \
--account your.1password.com

# 讓其他 Skills 從 1Password 取得 credentials
openclaw config set github.token "op://Vault/GitHub/token"
openclaw config set tavily.api_key "op://Vault/Tavily/api_key"

# 這樣 API Key 不會以明文存放在設定檔中

緊急應變流程

如果你懷疑已安裝的 Skill 有惡意行為:

Step 1:立即停用

# 停用可疑 Skill
openclaw skill disable suspicious-skill

# 如果無法停用,直接移除
clawhub uninstall suspicious-skill --force

Step 2:檢查影響範圍

# 查看 Skill 的存取記錄
openclaw skill audit suspicious-skill --last 30d

# 檢查是否有異常的網路連線
openclaw security network-log --skill suspicious-skill

# 檢查記憶系統是否被修改
openclaw memory diff --since "2026-03-01"

Step 3:輪換 Credentials

# 列出可能受影響的 credentials
openclaw security credentials --exposed-by suspicious-skill

# 輪換所有相關 API Key 和 Token
# (需要到各服務的管理介面操作)

Step 4:回報

# 向 ClawHub 回報惡意 Skill
clawhub report suspicious-skill --reason malware

# 在 Discord #security 頻道通報社群

安全設定最佳實踐

全域安全設定

# 啟用 Skill 簽章驗證(拒絕未簽章的 Skills)
openclaw config set security.require_signature true

# 啟用自動 VirusTotal 掃描
openclaw config set security.auto_scan true

# 啟用網路監控
openclaw config set security.network_monitor true

# 限制 Skill 的預設權限
openclaw config set security.default_permissions "filesystem-read,network-none"

# 設定 Skill 安裝需要確認
openclaw config set security.confirm_install true

定期審核排程

# 搭配 Cron-backup Skill 定期執行安全掃描
openclaw run security-check --all --schedule "0 9 * * 1"
# 每週一早上 9 點掃描所有已安裝 Skills

安全等級速查表

安全等級說明適用情境
嚴格只安裝官方 Skills,啟用所有安全機制企業環境、處理機密資料
標準安裝高評分社群 Skills,啟用 VirusTotal 掃描一般使用者
寬鬆安裝任意 Skills,手動審核開發者/實驗環境

嚴格模式設定

openclaw config set security.require_signature true
openclaw config set security.auto_scan true
openclaw config set security.network_monitor true
openclaw config set security.allow_community_skills false
openclaw config set security.sandbox_all true

標準模式設定(推薦)

openclaw config set security.require_signature false
openclaw config set security.auto_scan true
openclaw config set security.network_monitor true
openclaw config set security.allow_community_skills true
openclaw config set security.confirm_install true

官方 vs 社群 Skills 安全對比

項目官方 Skills社群 Skills
程式碼審核✅ OpenClaw 團隊審核❌ 無官方審核
數位簽章✅ 官方簽章❌ 通常無簽章
更新頻率穩定(跟隨主版本)不定(依維護者)
安全事件回應快速(24 小時內)不一定
原始碼透明度✅ 開源不一定
支援管道官方 GitHub Issues各自維護者
本指南的侷限性

本安全指南提供的是最佳實踐建議,不能保證 100% 的安全。即使遵循所有建議,使用第三方 Skills 仍然存在固有風險。請根據你的風險承受能力做出判斷。