安全
锁定网关。文件权限、网络暴露、配对与加固。
快速检查:moltbot security audit
另见:形式化验证(安全模型)。定期运行(尤其在修改配置或暴露网络面后):
moltbot security audit
moltbot security audit --deep
moltbot security audit --fix
# 旧版安装中命令可能为 clawdbot ...它会标记常见隐患(网关认证暴露、浏览器控制暴露、提升白名单、文件系统权限)。--fix 会应用安全护栏:将常见频道的 groupPolicy="open" 收紧为 groupPolicy="allowlist"(及每账号变体);将 logging.redactSensitive="off" 改回 "tools";收紧本地权限(~/.moltbot → 700,配置文件 → 600,以及 credentials/*.json、agents/*/agent/auth-profiles.json、agents/*/sessions/sessions.json 等常见状态文件)。
在机器上运行带 shell 权限的 AI agent 风险较高。以下是如何避免被入侵。Moltbot 既是产品也是实验:你把前沿模型行为接到真实消息面与真实工具上。没有「绝对安全」的配置。 目标是有意识地控制:谁可以和你的机器人对话、机器人被允许在哪里行动、机器人能接触什么。先用最小可用权限,再随信心逐步放宽。
审计检查内容(概要)
- 入站访问(私信策略、群组策略、白名单):陌生人能否触发机器人?
- 工具影响范围(提升工具 + 开放房间):提示注入是否会变成 shell/文件/网络操作?
- 网络暴露(网关绑定/认证、Tailscale Serve/Funnel)。
- 浏览器控制暴露(远程节点、中继端口、远程 CDP 端点)。
- 本地磁盘卫生(权限、符号链接、配置包含、「同步文件夹」路径)。
- 插件(扩展无显式白名单)。
- 模型卫生(配置模型看起来过时时警告;非硬性拦截)。
运行 --deep 时,Moltbot 还会尽力对网关进行实时探测。
凭证存储一览
审计访问或决定备份时可参考:
- WhatsApp:
~/.moltbot/credentials/whatsapp/<accountId>/creds.json - Telegram bot token:配置/环境变量或
channels.telegram.tokenFile - Discord bot token:配置/环境变量(token 文件尚未支持)
- Slack tokens:配置/环境变量(
channels.slack.*) - 配对白名单:
~/.moltbot/credentials/<channel>-allowFrom.json - 模型认证配置:
~/.moltbot/agents/<agentId>/agent/auth-profiles.json - 旧版 OAuth 导入:
~/.moltbot/credentials/oauth.json
安全审计清单
审计输出结果时,按以下优先级处理:
- 任何「open」+ 工具启用:先锁定私信/群组(配对/白名单),再收紧工具策略/沙箱。
- 公网暴露(LAN 绑定、Funnel、缺少认证):立即修复。
- 浏览器控制远程暴露:视为操作员访问(仅 tailnet、明确配对节点、避免公网暴露)。
- 权限:确保 state/config/credentials/auth 非组/全局可读。
- 插件/扩展:只加载你明确信任的。
- 模型选择:对带工具的机器人优先使用现代、指令加固的模型。
控制 UI over HTTP
控制 UI 需要安全上下文(HTTPS 或 localhost)才能生成设备身份。若启用 gateway.controlUi.allowInsecureAuth,UI 会回退到仅 token 认证并在省略设备身份时跳过设备配对。这是安全降级——优先使用 HTTPS(Tailscale Serve)或在 127.0.0.1 上打开 UI。仅应急场景下,gateway.controlUi.dangerouslyDisableDeviceAuth 会完全关闭设备身份检查。这是严重安全降级;除非正在调试且能快速回滚,否则保持关闭。moltbot security audit 会在启用该设置时警告。
反向代理配置
若网关在反向代理(nginx、Caddy、Traefik 等)后运行,应配置 gateway.trustedProxies 以便正确识别客户端 IP。当网关从不在 trustedProxies 中的地址检测到代理头(X-Forwarded-For 或 X-Real-IP)时,不会将连接视为本地客户端。若网关认证关闭,这些连接会被拒绝。这可以防止通过代理的连接被误认为来自 localhost 而获得自动信任的认证绕过。
gateway:
trustedProxies:
- "127.0.0.1" # 若代理在 localhost 上运行
auth:
mode: password
password: ${CLAWDBOT_GATEWAY_PASSWORD}配置 trustedProxies 后,网关会使用 X-Forwarded-For 头判断真实客户端 IP 以做本地客户端检测。确保代理覆盖(而非追加)入站 X-Forwarded-For 头以防伪造。
本地会话日志在磁盘上
Moltbot 将会话记录存于 ~/.moltbot/agents/<agentId>/sessions/*.jsonl。这是会话连续性与(可选)会话记忆索引所需,但也意味着任何有文件系统访问权限的进程/用户都能读取这些日志。将磁盘访问视为信任边界,并收紧 ~/.moltbot 的权限(见下方审计节)。若需 agent 间更强隔离,请在独立 OS 用户或独立主机下运行。
节点执行(system.run)
若已配对 macOS 节点,网关可在该节点上调用 system.run。这是 Mac 上的远程代码执行:需节点配对(批准 + token);在 Mac 上通过 设置 → Exec approvals(安全 + 询问 + 白名单)控制。若不希望远程执行,将安全设为 deny 并移除该 Mac 的节点配对。
动态 skills(watcher / 远程节点)
Moltbot 可在会话中刷新 skills 列表:Skills watcher:对 SKILL.md 的修改可在下一轮 agent 时更新 skills 快照。远程节点:连接 macOS 节点可使仅 macOS 的 skills 可用(基于 bin 探测)。将 skill 目录视为受信任代码并限制谁可修改。
威胁模型
你的 AI 助手可以:执行任意 shell 命令、读写文件、访问网络服务、向任何人发消息(若你给了 WhatsApp 访问)。给你发消息的人可以:试图诱使 AI 做坏事、社会工程获取你的数据、探测基础设施细节。
核心概念:先访问控制,再智能
多数问题不是复杂利用,而是「有人给机器人发消息,机器人照做了」。Moltbot 的立场:身份优先:决定谁可以和机器人对话(私信配对/白名单/显式「open」)。作用域其次:决定机器人被允许在哪里行动(群组白名单 + @ 提及门控、工具、沙箱、设备权限)。模型最后:假设模型可被操纵;设计使操纵的影响范围有限。
命令授权模型
斜杠命令与指令仅对已授权发件人生效。授权来自频道白名单/配对及 commands.useAccessGroups(见 配置 与 斜杠命令)。若频道白名单为空或包含 "*",该频道下命令实质开放。/exec 仅对已授权操作员是会话级便利;不会写配置或改其他会话。
插件/扩展
插件与网关同进程运行。将其视为受信任代码:只从信任来源安装;优先使用显式 plugins.allow 白名单;启用前检查插件配置;插件变更后重启网关。若从 npm 安装(moltbot plugins install <npm-spec>),视为运行非受信任代码:安装路径为 ~/.moltbot/extensions/<pluginId>/(或 $CLAWDBOT_STATE_DIR/extensions/<pluginId>/);Moltbot 会 npm pack 然后在该目录运行 npm install --omit=dev(npm 生命周期脚本可能在安装时执行代码);优先使用固定精确版本(@scope/pkg@1.2.3),启用前检查解压后的磁盘代码。详见 插件。
私信访问模型(pairing / allowlist / open / disabled)
当前所有支持私信的频道都支持在处理消息之前门控入站私信的 DM 策略(dmPolicy 或 *.dm.policy):pairing(默认):未知发件人收到短线配对码,批准前机器人忽略其消息。配对码 1 小时后过期;重复私信不会重发码直到新建请求。待处理请求默认每频道上限 3。allowlist:未知发件人直接拒绝(无配对握手)。open:允许任何人私信(公开)。要求频道白名单包含 "*"(显式选择加入)。disabled:完全忽略入站私信。通过 CLI 批准:moltbot pairing list <channel>、moltbot pairing approve <channel> <code>。详情与磁盘文件见 配对。
配置加固示例、沙箱、浏览器控制风险、每 agent 访问配置、事件响应、秘密扫描、信任层级、安全漏洞报告
更多章节(网络暴露、mDNS、网关 WebSocket 认证、Tailscale、磁盘机密、日志脱敏、提示注入、安全基线、示例配置、安全规则、事件响应步骤等)请参阅 英文安全文档 获取完整内容。报告安全问题:请发送至 security@clawd.bot,修复前勿公开披露,我们会致谢(除非你选择匿名)。