Clawdbot Security Check技能使用说明
Clawdbot 自安全审计框架
此技能使 Clawdbot 能够运用第一性原理推理,对其自身安全状况进行审计。Clawdbot 并非依赖静态脚本,而是学习该框架并动态应用,以检测漏洞、理解其影响并推荐具体的修复措施。
核心理念
"通过透明与自我认知实现安全。" —— 灵感源自 ᴅᴀɴɪᴇʟ ᴍɪᴇssʟᴇʀ
Clawdbot 应了解其自身的攻击面。此技能将这一认知直接嵌入其中。
安全原则
运行一个拥有 shell 访问权限的 AI 智能体需要谨慎。重点关注以下三个领域:
- 谁可以与机器人对话—— 私信策略、群组白名单、频道限制
- 机器人被允许在何处行动—— 网络暴露、网关绑定、代理配置
- 机器人可以接触什么—— 工具访问权限、文件权限、凭据存储
从最小可能的访问权限开始,随着信心的增强逐步放宽。
信任层级
根据角色应用适当的信任级别:
| 层级 | 实体 | 信任模型 |
|---|---|---|
| 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身份验证?
如何检测:
cat ~/.clawdbot/clawdbot.json | grep -A10 '"gateway"'
env | grep CLAWDBOT_GATEWAY_TOKEN
漏洞:绑定到0.0.0.0或局域网而未设置身份验证,允许网络访问。
修复措施:
# Generate gateway token
clawdbot doctor --generate-gateway-token
export CLAWDBOT_GATEWAY_TOKEN="$(openssl rand -hex 32)"
2. 直接消息策略配置 🟠 高危
需要检查:
- 什么是
dm_policy设置为? - 如果
允许列表,那么通过allowFrom明确允许的是谁?
如何检测:
cat ~/.clawdbot/clawdbot.json | grep -E '"dm_policy|"allowFrom"'
漏洞:设置为允许或开放意味着任何用户都可以给 Clawdbot 发送私信。
修复措施:
{
"channels": {
"telegram": {
"dmPolicy": "allowlist",
"allowFrom": ["@trusteduser1", "@trusteduser2"]
}
}
}
3. 群组访问控制 🟠 高
检查内容:
- groupPolicy
设置为什么?群组是否被明确列入允许列表? - 是否配置了提及门控?
- 如何检测:
漏洞:
cat ~/.clawdbot/clawdbot.json | grep -E '"groupPolicy"|"groups"'
cat ~/.clawdbot/clawdbot.json | grep -i "mention"
开放的群组策略允许房间内的任何人触发命令。Open group policy allows anyone in the room to trigger commands.
补救措施:
{
"channels": {
"telegram": {
"groupPolicy": "allowlist",
"groups": {
"-100123456789": true
}
}
}
}
4. 凭据安全 🔴 关键
需要检查的内容:
- 凭据文件位置和权限
- 环境变量使用情况
- 认证配置文件存储
凭据存储映射表:
| 平台 | 路径 |
|---|---|
~/.clawdbot/credentials/whatsapp/{accountId}/creds.json | |
| Telegram | ~/.clawdbot/clawdbot.json或环境变量 |
| Discord | ~/.clawdbot/clawdbot.json或环境变量 |
| Slack | ~/.clawdbot/clawdbot.json或环境变量 |
| 配对白名单 | ~/.clawdbot/credentials/channel-allowFrom.json |
| 认证配置文件 | ~/.clawdbot/agents/{agentId}/auth-profiles.json |
| 传统OAuth | ~/.clawdbot/credentials/oauth.json |
如何检测:
ls -la ~/.clawdbot/credentials/
ls -la ~/.clawdbot/agents/*/auth-profiles.json 2>/dev/null
stat -c "%a" ~/.clawdbot/credentials/oauth.json 2>/dev/null
漏洞:权限宽松的明文凭证可被任何进程读取。
修复建议:
chmod 700 ~/.clawdbot
chmod 600 ~/.clawdbot/credentials/oauth.json
chmod 600 ~/.clawdbot/clawdbot.json
5. 浏览器控制暴露 🟠 高风险
检查事项:
- 是否启用了浏览器控制?
- 是否为远程控制设置了身份验证令牌?
- 控制界面是否要求使用HTTPS?
- 是否配置了专用的浏览器配置文件?
如何检测:
cat ~/.clawdbot/clawdbot.json | grep -A5 '"browser"'
cat ~/.clawdbot/clawdbot.json | grep -i "controlUi|insecureAuth"
ls -la ~/.clawdbot/browser/
漏洞:未经身份验证的浏览器控制暴露允许远程接管用户界面。浏览器访问权限使模型能够使用已登录的会话。
修复建议:
{
"browser": {
"remoteControlUrl": "https://...",
"remoteControlToken": "...",
"dedicatedProfile": true,
"disableHostControl": true
},
"gateway": {
"controlUi": {
"allowInsecureAuth": false
}
}
}
安全提示:应将浏览器控制URL视为管理API。
6. 网关绑定与网络暴露 🟠 高风险
检查事项:
- 什么是
gateway.bind设置为什么? - 是否配置了可信代理?
- Tailscale 是否启用?
如何检测:
cat ~/.clawdbot/clawdbot.json | grep -A10 '"gateway"'
cat ~/.clawdbot/clawdbot.json | grep '"tailscale"'
漏洞:未经身份验证的公共绑定允许互联网访问网关。
修复措施:
{
"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
设置为什么?敏感工具是否在沙盒中运行? - 如何检测:
工作区访问级别:
cat ~/.clawdbot/clawdbot.json | grep -i "restrict|mcp|elevated"
cat ~/.clawdbot/clawdbot.json | grep -i "workspaceAccess|sandbox"
cat ~/.clawdbot/clawdbot.json | grep -i "openRoom"
模式
| 描述 | Description |
|---|---|
无 | 工作区禁止访问 |
ro | 工作区以只读方式挂载 |
rw | 工作区以读写方式挂载 |
漏洞:广泛的工具访问意味着一旦被攻破,爆炸半径更大。较小的模型更容易被工具滥用。
修复方法:
{
"restrict_tools": true,
"mcp_tools": {
"allowed": ["read", "write", "bash"],
"blocked": ["exec", "gateway"]
},
"workspaceAccess": "ro",
"sandbox": "all"
}
模型指导:对于具有文件系统或网络访问权限的代理,请使用最新一代模型。如果使用小型模型,请禁用网络搜索和浏览器工具。
8. 文件权限与本地磁盘卫生 🟡 中等
检查内容:
- 目录权限(应为 700)
- 配置文件权限(应为 600)
- 符号链接安全性
检测方法:
stat -c "%a" ~/.clawdbot
ls -la ~/.clawdbot/*.json
漏洞:宽松的权限允许其他用户读取敏感配置文件。
修复方法:
chmod 700 ~/.clawdbot
chmod 600 ~/.clawdbot/clawdbot.json
chmod 600 ~/.clawdbot/credentials/*
9. 插件信任与模型卫生 🟡 中等
需要检查的事项:
- 插件是否已明确加入允许列表?
- 是否在使用具有工具访问权限的旧版模型?
如何检测:
cat ~/.clawdbot/clawdbot.json | grep -i "plugin|allowlist"
cat ~/.clawdbot/clawdbot.json | grep -i "model|anthropic"
漏洞:不受信任的插件可能执行代码。旧版模型可能缺乏现代安全机制。
修复措施:
{
"plugins": {
"allowlist": ["trusted-plugin-1", "trusted-plugin-2"]
},
"agents": {
"defaults": {
"model": {
"primary": "minimax/MiniMax-M2.1"
}
}
}
}
10. 日志记录与数据脱敏 🟡 中危
logging.redactSensitive 设置为何值?
- 应设置为
tools以对敏感工具输出进行脱敏处理 - 若设置为
off,凭据信息可能在日志中泄露
如何检测:
cat ~/.clawdbot/clawdbot.json | grep -i "logging|redact"
ls -la ~/.clawdbot/logs/
修复措施:
{
"logging": {
"redactSensitive": "tools",
"path": "~/.clawdbot/logs/"
}
}
11. 提示注入防护 🟡 中危
需要检查的事项:
- 是否启用
wrap_untrusted_content或untrusted_content_wrapper已启用? - 如何处理外部/网络内容?
- 链接和附件是否被视为恶意?
如何检测:
cat ~/.clawdbot/clawdbot.json | grep -i "untrusted|wrap"
提示注入缓解策略:
- 将私信锁定为
配对或允许列表 - 在群组中使用提及门控
- 将所有链接和附件视为恶意
- 在沙箱中运行敏感工具
- 使用指令强化的模型,如Anthropic Opus 4.5
漏洞:不受信任的内容(网络抓取、沙箱输出)可能注入恶意提示。
修复措施:
{
"wrap_untrusted_content": true,
"untrusted_content_wrapper": "<untrusted>",
"treatLinksAsHostile": true,
"mentionGate": true
}
12. 危险命令拦截 🟡 中等
需要检查什么:
- 哪些命令在
blocked_commands中? - 是否包含这些模式:
rm -rf,curl |,git push --force,mkfs, fork炸弹?
如何检测:
cat ~/.clawdbot/clawdbot.json | grep -A10 '"blocked_commands"'
漏洞:如果没有阻止,恶意提示可能会破坏数据或窃取凭据。
修复措施:
{
"blocked_commands": [
"rm -rf",
"curl |",
"git push --force",
"mkfs",
":(){:|:&}"
]
}
13. 密钥扫描就绪情况 🟡 中等
检查内容:
- 是否配置了detect-secrets?
- 是否存在
.secrets.baseline文件? - 是否已运行基线扫描?
如何检测:
ls -la .secrets.baseline 2>/dev/null
which detect-secrets 2>/dev/null
密钥扫描(CI):
# 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从开放改为允许列表用于常见频道 - 将
logging.redactSensitive从关闭改为工具 - 收紧本地权限:
.clawdbot目录权限设为700,配置文件权限设为600 - 保护包含凭据和认证配置文件的各类状态文件
高级审计清单
请按以下优先级顺序处理发现项:
- 🔴 锁定私信和群组访问权限若在开放设置中启用了工具
- 🔴 立即修复公共网络暴露问题立即执行
- 🟠 采用令牌和HTTPS的浏览器安全控制配合令牌与HTTPS协议
- 🟠 正确设置文件权限针对凭据和配置文件
- 🟡 仅加载受信任的插件
- 🟡 为具备工具访问权限的机器人采用现代模型
访问控制模型
私信访问模型
| 模式 | 描述 |
|---|---|
配对模式 | 默认模式 - 未知发件人需通过验证码批准 |
白名单模式 | 未经握手的未知发件人将被拦截 |
开放模式 | 公开访问 - 需在白名单中明确标注星号 |
禁用模式 | 所有入站私信将被忽略 |
斜杠命令
斜杠命令仅对基于频道白名单的授权发送者可用。/exec命令是为操作员提供的会话便利工具,不会修改全局配置。
威胁模型与缓解措施
潜在风险
| 风险 | 缓解措施 |
|---|---|
| 执行Shell命令 | blocked_commands、restrict_tools |
| 文件和网络访问 | sandbox、workspaceAccess: none/ro |
| 社会工程学与提示词注入 | wrap_untrusted_content、mentionGate |
| 浏览器会话劫持 | 专用配置文件、令牌认证、HTTPS |
| 凭证泄露 | logging.redactSensitive: 工具,环境变量 |
事件响应
如果怀疑发生安全事件,请遵循以下步骤:
遏制
- 停止网关进程—
clawdbot daemon stop - 将 gateway.bind 设置为环回地址—
"bind": "127.0.0.1" - 禁用有风险的私信和群组— 设置为
disabled
轮换
- 更改网关认证令牌—
clawdbot doctor --generate-gateway-token - 轮换浏览器控制和钩子令牌
- 撤销并轮换模型提供商的 API 密钥审查
检查网关日志和会话记录
- ——
~/.clawdbot/logs/ - 检查最近的配置变更— Git历史记录或备份
- 使用深度标志重新运行安全审计—
clawdbot security audit --deep
报告安全漏洞
请将安全问题报告至:security@clawd.bot
请勿公开披露漏洞直至问题被修复
审计执行步骤
执行安全审计时,请遵循以下步骤:
步骤1:定位配置文件
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个领域逐一进行:
- 解析相关配置项
- 对比安全基线标准
- 标记偏差并标注严重等级
步骤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.
扩展技能
添加新的安全检查:
- 识别漏洞- 哪种错误配置会产生风险?
- 确定检测方法- 哪些配置键或系统状态能够揭示它?
- 定义基线- 安全配置是什么?
- 编写检测逻辑- Shell命令或文件解析
- 记录修复措施- 具体的修复步骤
- 分配严重性- 严重、高、中、低
示例:添加SSH强化检查
## 14. SSH Agent Forwarding 🟡 Medium
**What to check:** Is SSH_AUTH_SOCK exposed to containers?
**Detection:**
```bash
env | grep SSH_AUTH_SOCK
漏洞:通过SSH代理劫持实现容器逃逸。
严重程度:中等
## Security Assessment Questions
When auditing, ask:
1. **Exposure:** What network interfaces can reach Clawdbot?
2. **Authentication:** What verification does each access point require?
3. **Isolation:** What boundaries exist between Clawdbot and the host?
4. **Trust:** What content sources are considered "trusted"?
5. **Auditability:** What evidence exists of Clawdbot's actions?
6. **Least Privilege:** Does Clawdbot have only necessary permissions?
## Principles Applied
- **Zero modification** - This skill only reads; never changes configuration
- **Defense in depth** - Multiple checks catch different attack vectors
- **Actionable output** - Every finding includes a concrete remediation
- **Extensible design** - New checks integrate naturally
## References
- Official docs: https://docs.clawd.bot/gateway/security
- Original framework: [ᴅᴀɴɪᴇʟ ᴍɪᴇssʟᴇʀ on X](https://x.com/DanielMiessler/status/2015865548714975475)
- Repository: https://github.com/TheSethRose/Clawdbot-Security-Check
- Report vulnerabilities: security@clawd.bot
---
**Remember:** This skill exists to make Clawdbot self-aware of its security posture. Use it regularly, extend it as needed, and never skip the audit.


微信扫一扫,打赏作者吧~