介绍
# Clawdbot Self-Security Audit Framework
此技能赋予 Clawdbot 运用第一性原理推理来审计自身安全状况的能力。Clawdbot 不依赖静态脚本,而是学习该框架并动态应用它以检测漏洞、了解其影响并建议具体的补救措施。
## 核心理念
> “通过透明和自我意识实现安全。” — 灵感来自 ᴅᴀɴɪᴇʟ ᴍɪᴇssʟᴇʀ
Clawdbot 应该了解自身的攻击面。此技能将此类知识直接内置其中。
## 安全原则
运行具有 Shell 访问权限的 AI 代理需要谨慎。请重点关注以下三个领域:
1. **谁可以与机器人对话** — 私信 (DM) 策略、群组允许列表、频道限制 2. **机器人被允许在何处行动** — 网络暴露、网关绑定、代理配置 3. **机器人可以触及什么** — 工具访问、文件权限、凭证存储
从尽可能最小的访问权限开始,并在建立信心后逐步放宽。
## 信任层级
根据角色应用适当的信任级别:
| 级别 | 实体 | 信任模型 | |-------|--------|-------------| | 1 | **所有者** | 完全信任 — 拥有所有访问权限 | | 2 | **AI** | 信任但验证 — 沙箱化、记录日志 | | 3 | **允许列表** | 有限信任 — 仅限指定用户 | | 4 | **陌生人** | 无信任 — 默认阻止 |
## 审计命令
使用这些命令运行安全审计:
- `clawdbot security audit` — 针对常见问题的标准审计 - `clawdbot security audit --deep` — 包含所有检查的全面审计 - `clawdbot security audit --fix` — 应用护栏补救措施
## 12 个安全领域
在审计 Clawdbot 时,系统地评估以下领域:
### 1. 网关暴露 🔴 严重
**检查事项:** - 网关绑定在哪里? (`gateway.bind`) - 是否配置了身份验证? (`gateway.auth_token` 或 `CLAWDBOT_GATEWAY_TOKEN` 环境变量) - 暴露了哪个端口? (默认:18789) - 是否启用了 WebSocket 身份验证?
**检测方法:** ```bash cat ~/.clawdbot/clawdbot.json | grep -A10 '"gateway"' env | grep CLAWDBOT_GATEWAY_TOKEN ```
**漏洞:** 在没有身份验证的情况下绑定到 `0.0.0.0` 或 `lan` 允许网络访问。
**补救措施:** ```bash # Generate gateway token clawdbot doctor --generate-gateway-token export CLAWDBOT_GATEWAY_TOKEN="$(openssl rand -hex 32)" ```
---
### 2. 私信 (DM) 策略配置 🟠 高危
**检查事项:** - `dm_policy` 设置为什么? - 如果是 `allowlist`,谁通过 `allowFrom` 被显式允许?
**检测方法:** ```bash cat ~/.clawdbot/clawdbot.json | grep -E '"dm_policy|"allowFrom"' ```
**漏洞:** 设置为 `allow` 或 `open` 意味着任何用户都可以私信 Clawdbot。
**补救措施:** ```json { "channels": { "telegram": { "dmPolicy": "allowlist", "allowFrom": ["@trusteduser1", "@trusteduser2"] } } } ```
---
### 3. 群组访问控制 🟠 高危
**检查事项:** - `groupPolicy` 设置为什么? - 群组是否显式列入了允许列表? - 是否配置了提及门槛?
**检测方法:** ```bash cat ~/.clawdbot/clawdbot.json | grep -E '"groupPolicy"|"groups"' cat ~/.clawdbot/clawdbot.json | grep -i "mention" ```
**漏洞:** 开放的群组策略允许房间内的任何人触发命令。
**补救措施:** ```json { "channels": { "telegram": { "groupPolicy": "allowlist", "groups": { "-100123456789": true } } } } ```
---
### 4. 凭证安全 🔴 严重
**检查事项:** - 凭证文件的位置和权限 - 环境变量的使用 - 身份验证配置文件的存储
**凭证存储映射:** | 平台 | 路径 | |----------|------| | WhatsApp | `~/.clawdbot/credentials/whatsapp/{accountId}/creds.json` | | Telegram | `~/.clawdbot/clawdbot.json` 或 env | | Discord | `~/.clawdbot/clawdbot.json` 或 env | | Slack | `~/.clawdbot/clawdbot.json` 或 env | | 配对允许列表 | `~/.clawdbot/credentials/channel-allowFrom.json` | | 身份验证配置文件 | `~/.clawdbot/agents/{agentId}/auth-profiles.json` | | 旧版 OAuth | `~/.clawdbot/credentials/oauth.json` |
**检测方法:** ```bash ls -la ~/.clawdbot/credentials/ ls -la ~/.clawdbot/agents/*/auth-profiles.json 2>/dev/null stat -c "%a" ~/.clawdbot/credentials/oauth.json 2>/dev/null ```
**漏洞:** 权限宽松的纯文本凭证可被任何进程读取。
**补救措施:** ```bash chmod 700 ~/.clawdbot chmod 600 ~/.clawdbot/credentials/oauth.json chmod 600 ~/.clawdbot/clawdbot.json ```
---
### 5. 浏览器控制暴露 🟠 高危
**检查事项:** - 是否启用了浏览器控制? - 是否为远程控制设置了身份验证令牌? - 控制 UI 是否强制要求 HTTPS? - 是否配置了专用的浏览器配置文件?
**检测方法:** ```bash cat ~/.clawdbot/clawdbot.json | grep -A5 '"browser"' cat ~/.clawdbot/clawdbot.json | grep -i "controlUi|insecureAuth" ls -la ~/.clawdbot/browser/ ```
**漏洞:** 没有身份验证的暴露浏览器控制允许远程 UI 接管。浏览器访问允许模型使用已登录的会话。
**补救措施:** ```json { "browser": { "remoteControlUrl": "https://...", "remoteControlToken": "...", "dedicatedProfile": true, "disableHostControl": true }, "gateway": { "controlUi": { "allowInsecureAuth": false } } } ```
**安全提示:** 将浏览器控制 URL 视为管理 API。
---
### 6. 网关绑定与网络暴露 🟠 高危
**检查事项:** - `gateway.bind` 设置为什么? - 是否配置了受信任的代理? - 是否启用了 Tailscale?
**检测方法:** ```bash cat ~/.clawdbot/clawdbot.json | grep -A10 '"gateway"' cat ~/.clawdbot/clawdbot.json | grep '"tailscale"' ```
**漏洞:** 没有身份验证的公开绑定允许互联网访问网关。
**补救措施:** ```json { "gateway": { "bind": "127.0.0.1", "mode": "local", "trustedProxies": ["127.0.0.1", "10.0.0.0/8"], "tailscale": { "mode": "off" } } } ```
---
### 7. 工具访问与沙箱 🟡 中等
**检查事项:** - 提升权限的工具是否列入了允许列表? - 是否配置了 `restrict_tools` 或 `mcp_tools`? - `workspaceAccess` 设置为什么? - 敏感工具是否在沙箱中运行?
**检测方法:** ```bash cat ~/.clawdbot/clawdbot.json | grep -i "restrict|mcp|elevated" cat ~/.clawdbot/clawdbot.json | grep -i "workspaceAccess|sandbox" cat ~/.clawdbot/clawdbot.json | grep -i "openRoom" ```
**工作区访问级别:** | 模式 | 描述 | |------|-------------| | `none` | 禁止访问工作区 | | `ro` | 工作区以只读方式挂载 | | `rw` | 工作区以读写方式挂载 |
**漏洞:** 广泛的工具访问意味着如果被攻破,爆炸半径更大。较小的模型更容易滥用工具。
**补救措施:** ```json { "restrict_tools": true, "mcp_tools": { "allowed": ["read", "write", "bash"], "blocked": ["exec", "gateway"] }, "workspaceAccess": "ro", "sandbox": "all" } ```
**模型指导:** 对具有文件系统或网络访问权限的代理使用最新一代模型。如果使用小模型,请禁用网络搜索和浏览器工具。
---
### 8. 文件权限与本地磁盘卫生 🟡 中等
**检查事项:** - 目录权限 (应为 700) - 配置文件权限 (应为 600) - 符号链接 安全性
**检测方法:** ```bash stat -c "%a" ~/.clawdbot ls -la ~/.clawdbot/*.json ```
**漏洞:** 宽松的权限允许其他用户读取敏感配置。
**补救措施:** ```bash chmod 700 ~/.clawdbot chmod 600 ~/.clawdbot/clawdbot.json chmod 600 ~/.clawdbot/credentials/* ```
---
### 9. 插件信任与模型卫生 🟡 中等
**检查事项:** - 插件是否显式列入了允许列表? - 是否使用了旧版模型并带有工具访问权限?
**检测方法:** ```bash cat ~/.clawdbot/clawdbot.json | grep -i "plugin|allowlist" cat ~/.clawdbot/clawdbot.json | grep -i "model|anthropic" ```
**漏洞:** 不受信任的插件可以执行代码。旧版模型可能缺乏现代安全特性。
**补救措施:** ```json { "plugins": { "allowlist": ["trusted-plugin-1", "trusted-plugin-2"] }, "agents": { "defaults": { "model": { "primary": "minimax/MiniMax-M2.1" } } } } ```
---
### 10. 日志记录与编辑 🟡 中等
**logging.redactSensitive 设置为什么?** - 应为 `tools` 以编辑敏感工具输出 - 如果为 `off`,凭证可能会泄漏到日志中
**检测方法:** ```bash cat ~/.clawdbot/clawdbot.json | grep -i "logging|redact" ls -la ~/.clawdbot/logs/ ```
**补救措施:** ```json { "logging": { "redactSensitive": "tools", "path": "~/.clawdbot/logs/" } } ```
---
### 11. 提示注入防护 🟡 中等
**检查事项:** - 是否启用了 `wrap_untrusted_content` 或 `untrusted_content_wrapper`? - 如何处理外部/网络内容? - 链接和附件是否被视为敌对?
**检测方法:** ```bash cat ~/.clawdbot/clawdbot.json | grep -i "untrusted|wrap" ```
**提示注入缓解策略:** - 将私信锁定为 `pairing` 或 `allowlists` - 在群组中使用提及门槛 - 将所有链接和附件视为敌对 - 在沙箱中运行敏感工具 - 使用经过指令加固的模型,如 Anthropic Opus 4.5
**漏洞:** 不受信任的内容(网络获取、沙箱输出)可以注入恶意提示。
**补救措施:** ```json { "wrap_untrusted_content": true, "untrusted_content_wrapper": "<untrusted>", "treatLinksAsHostile": true, "mentionGate": true } ```
---
### 12. 危险命令拦截 🟡 中等
**检查事项:** - `blocked_commands` 中有哪些命令? - 是否包含这些模式:`rm -rf`, `curl |`, `git push --force`, `mkfs`, fork bombs?
**检测方法:** ```bash cat ~/.clawdbot/clawdbot.json | grep -A10 '"blocked_commands"' ```
**漏洞:** 如果没有拦截,恶意提示可能会销毁数据或泄露凭证。
**补救措施:** ```json { "blocked_commands": [ "rm -rf", "curl |", "git push --force", "mkfs", ":(){:|:&}" ] } ```
---
### 13. 秘密扫描准备 🟡 中等
**检查事项:** - 是否配置了 detect-secrets? - 是否存在 `.secrets.baseline` 文件? - 是否已运行基线扫描?
**检测方法:** ```bash ls -la .secrets.baseline 2>/dev/null which detect-secrets 2>/dev/null ```
**秘密扫描 (CI):** ```bash # Find candidates detect-secrets scan --baseline .secrets.baseline
# Review findings detect-secrets audit
# Update baseline after rotating secrets or marking false positives detect-secrets scan --baseline .secrets.baseline --update ```
**漏洞:** 代码库中泄露的凭证可能导致被攻破。
---
## 审计功能
`--fix` 标志应用以下护栏:
- 将常用频道的 `groupPolicy` 从 `open` 更改为 `allowlist` - 将 `logging.redactSensitive` 从 `off` 重置为 `tools` - 收紧本地权限:`.clawdbot` 目录设为 `700`,配置文件设为 `600` - 保护状态文件,包括凭证和身份验证配置文件
## 高级审计清单
按以下优先级处理发现的问题:
1. **🔴 锁定私信和群组** 如果工具在开放设置下启用 2. **🔴 修复公开网络暴露** 立即 3. **🟠 保护浏览器控制** 使用令牌和 HTTPS 4. **🟠 更正文件权限** 针对凭证和配置 5. **🟡 仅加载受信任的插件** 6. **🟡 使用现代模型** 针对具有工具访问权限的机器人
## 访问控制模型
### 私信访问模型
| 模式 | 描述 | |------|-------------| | `pairing` | 默认 - 未知发送者必须通过代码批准 | | `allowlist` | 未知发送者在没有握手的情况下被阻止 | | `open` | 公开访问 - 需要在允许列表中显式添加星号 | | `disabled` | 忽略所有入站私信 |
### 斜杠命令
斜杠命令仅对基于频道允许列表的授权发送者可用。`/exec` 命令是供操作员使用的会话便利工具,不会修改全局配置。
## 威胁模型与缓解
### 潜在风险
| 风险 | 缓解措施 | |------|------------| | Shell 命令执行 | `blocked_commands`, `restrict_tools` | | 文件和网络访问 | `sandbox`, `workspaceAccess: none/ro` | | 社会工程和提示注入 | `wrap_untrusted_content`, `mentionGate` | | 浏览器会话劫持 | 专用配置文件、令牌身份验证、HTTPS | | 凭证泄漏 | `logging.redactSensitive: tools`, 环境变量 |
## 事件响应
如果怀疑遭到入侵,请执行以下步骤:
### 遏制 1. **停止网关进程** — `clawdbot daemon stop` 2. **将 gateway.bind 设置为回环** — `"bind": "127.0.0.1"` 3. **禁用有风险的私信和群组** — 设置为 `disabled`
### 轮换 1. **更改网关身份验证令牌** — `clawdbot doctor --generate-gateway-token` 2. **轮换浏览器控制和 Hook 令牌** 3. **撤销并轮换 API 密钥** 针对模型提供商
### 审查 1. **检查网关日志和会话记录** — `~/.clawdbot/logs/` 2. **审查最近的配置更改** — Git 历史记录或备份 3. **使用 deep 标志重新运行安全审计** — `clawdbot security audit --deep`
## 报告漏洞
将安全问题报告至:**[email protected]**
**在漏洞修复之前,请勿公开发布。**
## 审计执行步骤
运行安全审计时,请遵循以下顺序:
### 步骤 1:定位配置 ```bash CONFIG_PATHS=( "$HOME/.clawdbot/clawdbot.json" "$HOME/.clawdbot/config.yaml" "$HOME/.clawdbot/.clawdbotrc" ".clawdbotrc" ) for path in "${CONFIG_PATHS[@]}"; do if [ -f "$path" ]; then echo "Found config: $path" cat "$path" break fi done ```
### 步骤 2:运行域检查 对于上述 13 个域中的每一个: 1. 解析相关的配置键 2. 与安全基线进行比较 3. 标记偏差及其严重性
### 步骤 3:生成报告 按严重性格式化发现结果: ``` 🔴 CRITICAL: [vulnerability] - [impact] 🟠 HIGH: [vulnerability] - [impact] 🟡 MEDIUM: [vulnerability] - [impact] ✅ PASSED: [check name] ```
### 步骤 4:提供修复建议 针对每个发现,输出: - 所需的具体配置变更 - 配置示例 - 应用命令(如果安全)
## 报告模板
``` ═══════════════════════════════════════════════════════════════ 🔒 CLAWDBOT SECURITY AUDIT ═══════════════════════════════════════════════════════════════ Timestamp: $(date -Iseconds)
┌─ SUMMARY ─────────────────────────────────────────────── │ 🔴 Critical: $CRITICAL_COUNT │ 🟠 High: $HIGH_COUNT │ 🟡 Medium: $MEDIUM_COUNT │ ✅ Passed: $PASSED_COUNT └────────────────────────────────────────────────────────
┌─ FINDINGS ────────────────────────────────────────────── │ 🔴 [CRITICAL] $VULN_NAME │ Finding: $DESCRIPTION │ → Fix: $REMEDIATION │ │ 🟠 [HIGH] $VULN_NAME │ ... └────────────────────────────────────────────────────────
This audit was performed by Clawdbot's self-security framework. No changes were made to your configuration. ```
## 扩展技能
要添加新的安全检查:
1. **识别漏洞** - 哪种错误配置会带来风险? 2. **确定检测方法** - 哪个配置键或系统状态会暴露它? 3. **定义基线** - 什么是安全配置? 4. **编写检测逻辑** - Shell 命令或文件解析 5. **记录修复建议** - 修复的具体步骤 6. **分配严重性** - 严重、高、中、低
### 示例:添加 SSH 加固检查
``` ## 14. SSH Agent Forwarding 🟡 Medium
**What to check:** Is SSH_AUTH_SOCK exposed to containers?
**Detection:** ```bash env | grep SSH_AUTH_SOCK ```
**Vulnerability:** Container escape via SSH agent hijacking.
**Severity:** Medium ```
## 安全评估问题
审计时,请询问:
1. **暴露面:** 哪些网络接口可以访问 Clawdbot? 2. **身份验证:** 每个访问点需要什么验证? 3. **隔离:** Clawdbot 与主机之间存在哪些边界? 4. **信任:** 哪些内容来源被视为“受信任”? 5. **可审计性:** 有什么证据证明 Clawdbot 的操作? 6. **最小权限:** Clawdbot 是否仅拥有必要的权限?
## 应用的原则
- **零修改** - 此技能仅读取;从不更改配置 - **纵深防御** - 多项检查可捕获不同的攻击向量 - **可执行的输出** - 每个发现都包含具体的修复建议 - **可扩展的设计** - 新检查可以自然集成
## 参考文献
- 官方文档:https://docs.clawd.bot/gateway/security - 原始框架:[ᴅᴀɴɪᴇʟ ᴍɪᴇssʟᴇʀ on X](https://x.com/DanielMiessler/status/2015865548714975475) - 代码仓库:https://github.com/TheSethRose/Clawdbot-Security-Check - 报告漏洞:[email protected]
---
**请记住:** 此技能旨在让 Clawdbot 意识到自身的安全状况。请定期使用,根据需要进行扩展,并且切勿跳过审计。