用途
dont-hack-me 是一个面向 Clawdbot / Moltbot 的安全自检技能,用于对配置文件 ~/.clawdbot/clawdbot.json 进行快速审计,帮助用户发现最常见的安全错误配置。它基于社区整理的“Top 10 Clawdbot/Moltbot Security Vulnerabilities”清单,覆盖其中适用于典型 macOS 原生部署的 7 个项目。
主要能力
该技能读取 ~/.clawdbot/clawdbot.json 并解析 JSON 内容,同时通过 shell 命令获取文件权限(macOS 使用 stat -f '%Lp',Linux 使用 stat -c '%a')。检查以下 7 项:
- Gateway Bind:路径 gateway.bind,期望值为 "loopback"、"localhost"、"127.0.0.1" 或 "::1",或键缺失(默认 loopback)。若为 "0.0.0.0"、"::" 或任何非回环地址则 FAIL,严重级别 CRITICAL。
- Gateway Auth Mode:路径 gateway.auth.mode,期望值为 "token" 或 "password",或键缺失(默认 token)。若为 "off" 或 "none" 则 FAIL,严重级别 CRITICAL。
- Token Strength:路径 gateway.auth.token,期望 32 个字符及以上。>=32 为 PASS,16–31 为 WARN,<16 或为空为 FAIL;若认证模式为 password 则 SKIP。严重级别 HIGH。
- DM Policy:路径 channels.<name>.dmPolicy,期望 "pairing",或若为 "open" 则必须有非空 allowFrom 数组。若 dmPolicy 为 "open" 且 allowFrom 缺失或为空则 FAIL;无频道配置则 SKIP。严重级别 HIGH。
- Group Policy:路径 channels.<name>.groupPolicy,期望 "allowlist" 或缺失(默认 allowlist)。若为 "open" 或 "any" 则 FAIL;无频道配置则 SKIP。严重级别 HIGH。
- File Permissions:检查 ~/.clawdbot/clawdbot.json 的文件模式,期望 600 或 400。644 或 640 为 WARN,777、755、666 或任何全局可写为 FAIL。严重级别 MEDIUM。
- Plaintext Secrets Scan:扫描 JSON 中所有字符串值,查找名为 password、secret、apiKey、api_key、privateKey、private_key(不区分大小写)且值为非空字符串的键。未发现为 PASS,存在则为 WARN,提醒用户考虑使用环境变量或密钥管理器。用于网关认证的 token 字段属于预期,不应被标记。严重级别 MEDIUM。
使用方式
用户说出以下任意指令即可触发:"run a security check"、"check my security settings"、"audit my clawdbot config"、"am I secure?"。
技能按步骤执行检查后,输出固定格式的报告:
🔒 Security Check Report
- Gateway Bind <ICON> <STATUS> — <detail>
- Gateway Auth <ICON> <STATUS> — <detail>
- Token Strength <ICON> <STATUS> — <detail>
- DM Policy <ICON> <STATUS> — <detail>
- Group Policy <ICON> <STATUS> — <detail>
- File Permissions <ICON> <STATUS> — <detail>
- Secrets Scan <ICON> <STATUS> — <detail>
Score: X/7 PASS, Y WARN, Z FAIL
其中 ICON 为 ✅(PASS)、⚠️(WARN)、❌(FAIL)、⏭️(SKIP),STATUS 为 PASS、WARN、FAIL、SKIP,detail 为简短说明(如 "loopback"、"token mode"、"48 chars"、"permissions 600")。
自动修复流程
若存在 FAIL 或 WARN 项,技能会先展示报告,列出每个可修复项及将要更改的简短说明,然后询问用户:"Want me to fix these? (yes / no / pick)"。yes 表示自动修复所有 FAIL 和 WARN 项;no 表示停止;pick 表示由用户选择修复哪些项。应用修复后会重新读取配置并重新运行完整检查以确认全部 PASS。若配置有更改,会提醒用户运行 clawdbot gateway restart 以应用新设置。
修复配方:
- #1 Gateway Bind FAIL:将 gateway.bind 设为 "loopback"。
- #2 Gateway Auth FAIL:将 gateway.auth.mode 设为 "token";若尚无 token,同时生成一个,使用 openssl rand -hex 24 生成 48 字符十六进制字符串(192 位熵)。
- #3 Token Strength FAIL / WARN:用 openssl rand -hex 24 生成新强令牌并写入 gateway.auth.token。
- #4 DM Policy FAIL:将受影响频道的 dmPolicy 设为 "pairing"。
- #5 Group Policy FAIL:将受影响频道的 groupPolicy 设为 "allowlist"。
- #6 File Permissions FAIL / WARN:运行 chmod 600 ~/.clawdbot/clawdbot.json。
- #7 Secrets Scan WARN:无法安全自动修复,列出被标记的键并提醒用户将值移至环境变量或使用密钥管理器,若平台支持可在配置中以 "$ENV_VAR_NAME" 引用。
自动修复的重要规则:始终先备份,复制原文件为 ~/.clawdbot/clawdbot.json.bak;合并而非覆盖,读取完整 JSON 只修改特定键后写回完整 JSON,不丢失现有设置;保留格式,以 2 空格缩进写入 JSON;单次写入操作,收集所有 JSON 修复后一次性写入以避免部分状态;若更改了网关令牌,用户必须用新令牌更新已配对客户端,并警告:"Your gateway token was changed. Any paired devices will need the new token to reconnect."
适用场景
适用于使用 Clawdbot / Moltbot 并希望快速自查配置安全性的用户,尤其是 macOS 原生部署环境。可在日常维护或部署后运行,以发现网关暴露、认证缺失、令牌过弱、私信/群组策略过开、文件权限过松及明文密钥等常见问题。
限制
该技能不检查以下内容:沙箱配置(大多数设置不需要)、网络隔离 / Docker(macOS 原生设置不使用)、MCP 工具权限(对基础审计过于复杂)、操作系统防火墙是否配置、代理代码是否存在漏洞。如需更全面的审计,可参考社区工具如 clawdbot-security-check。