加固 OpenClaw —— 沙箱、ClawScan 与安全模型
OpenClaw 如何沙箱化技能、ClawScan 在安装社区技能前会检查什么,以及如何在共享或公司电脑上安全运行。
OpenClaw 运行在你的机器上、读取你的邮件,所以它的安全模型值得理解。本指南讲解 Gateway 强制执行的边界、在共享或公司机器上可以做的额外加固,以及安装社区技能前的评估方法。
三层信任边界
OpenClaw 中有 3 层同心的信任边界:
- Gateway —— 始终受信任。它持有模型供应商 key、渠道 token 和记忆数据库。
- 你编写或审阅过的技能 —— 受你信任。它们以你的用户权限运行,但处于沙箱内。
- 来自 ClawHub 的社区技能 —— 必须在审阅源码或阅读 ClawScan 报告后才信任。
每次从聊天渠道发来的请求流程为:渠道 → Gateway → 技能 → 外部服务。Gateway 是唯一可以读取你记忆的组件;技能只能看到助手主动传给它的内容。
文件系统沙箱
默认情况下,技能只能读取以下根目录:
~/Documents~/Downloads~/Desktop~/.openclaw
其他路径必须在技能内部显式申请:
import { sh } from "openclaw/shell";
await sh("git log --oneline -n 20", {
cwd: "~/Code/myapp",
allow: ["~/Code/myapp"]
});
如果技能试图读取允许列表之外的路径,调用会以清晰的 PermissionError 失败。Gateway 会记录这次尝试,并暴露在 openclaw logs 中。
网络沙箱
Gateway 同样强制执行出站网络策略。每个技能需要声明它要用到的主机:
name: weather
network:
allow:
- wttr.in
其他一切在 TCP 层就被拒。你可以用下面的命令查看当前策略:
openclaw skills inspect weather --network
allow:
- wttr.in
deny: (implicit — everything else)
--network=any。这类技能在 ClawHub 上会被标记为高信任,对应的 ClawScan 报告也更严格。ClawScan —— 审计社区技能
发布到 ClawHub 的每个技能都会被 ClawScan 打分——它是 OpenClaw Foundation 维护的开源扫描器。评分等级如下:
| 等级 | 含义 |
|---|---|
| A | 最小权限、无网络、无 shell、静态类型检查通过 |
| B | 限制网络到声明的主机,作用域文件系统 |
| C | 使用 shell,但仅在沙箱内部 |
| D | 请求 --network=any 或读取密钥 |
| F | 检测到不安全模式(无界循环、未类型化 eval、prompt 注入向量) |
安装前先检查技能:
openclaw skills inspect https://clawhub.ai/skills/web-search@3.2.1
grade: D
permissions: network=any
risk: Prompt-injection vectors in result handling (mitigated by upstream)
source: github.com/openclaw/web-search
audit: https://clawscanner.app/reports/web-search@3.2.1
评分 C 或以下的技能请先阅读上面的审计报告再决定是否安装。
在共享或公司电脑上运行
如果你用着公司托管的笔记本,可以进一步加固:
- 在虚拟机或容器里跑。 官方 Docker 与 Podman 镜像以非 root 用户运行 Gateway,并启用只读根文件系统。
- 使用独立账号。 创建
openclaw标准用户,授予它对数据目录的只读访问权限,在该账号下运行 Gateway:
sudo useradd -m openclaw
sudo -u openclaw openclaw onboard
- 收紧本地 Dashboard。 Gateway 默认只监听
127.0.0.1。如果需要让同一网络的手机访问,绑定到非默认端口并放在带 TLS 的反向代理后面:
openclaw serve --bind 0.0.0.0:28889 --require-token
- 开启系统日志。 Gateway 自带
syslog输出。在 macOS 上出现在 Console.app 的user/ULI/OpenClaw;在 Linux 上可以转发到journalctl。
审计日志
每次技能调用都会被不可变地记录:
openclaw audit tail --since 24h
2026-09-21 09:14:02 skill=greet channel=telegram input={name:"Anna",language:"de"} duration=412ms
2026-09-21 09:14:18 skill=weather channel=telegram input={city:"Vienna"} duration=1280ms
2026-09-21 09:14:55 skill=inbox.unread channel=telegram input={limit:5} duration=2310ms
审计日志是 append-only 的 JSONL,非常适合合规审计。
报告漏洞
请邮件至 security@openclaw.org(PGP 公钥见 foundation 站点)。低危问题也可以在 GitHub 上提 issue。
下一步
发现问题或需要更正? 联系我们.