主要安全风险1.Docker Socket 挂载风险最高危如果启用了沙箱功能需要挂载 Docker Socket# docker-compose.yml 中被注释的部分volumes:-/var/run/docker.sock:/var/run/docker.sock风险等级: CRITICAL潜在攻击:容器逃逸: 容器内进程可以创建新容器获得宿主机 root 权限特权提升: 攻击者可以启动特权容器完全控制宿主机横向移动: 访问同一 Docker 网络中的其他容器官方文档承认的风险来自 [docker.md](file://d:\project\openclaw\docs\install\docker.md):“Shared-network security note: openclaw-cli uses network_mode: ‘service:openclaw-gateway’ so CLI commands can reach the gateway over 127.0.0.1. Treat this as a shared trust boundary.”2.网络暴露风险默认配置绑定到lan(0.0.0.0)所有网络接口都可访问ports: -18789:18789# Gateway WebSocket-18790:18790# Bridge风险等级: HIGH问题:如果没有配置防火墙公网可直接访问WebSocket 端口暴露可能导致未授权访问缺少 TLS/HTTPS 加密默认 HTTP3.Token 认证强度不足环境变量中的 Token 可能较弱environment:OPENCLAW_GATEWAY_TOKEN:${OPENCLAW_GATEWAY_TOKEN:-}# 可为空风险等级: MEDIUM问题:Token 未设置时可能允许匿名访问没有强制复杂度要求Token 以明文存储在 [.env](file://d:\project\openclaw\openclaw.podman.env) 文件中4.卷挂载权限问题volumes:-${OPENCLAW_CONFIG_DIR}:/home/node/.openclaw-${OPENCLAW_WORKSPACE_DIR}:/home/node/.openclaw/workspace风险等级: MEDIUM问题:宿主机目录可能包含敏感文件SSH 密钥、数据库密码等容器内 [node](file://d:\project\openclaw\scripts\dev\ios-node-e2e.ts#L130-L130) 用户 (uid 1000) 可读写这些文件如果配置文件被篡改可能导致凭证泄露5.镜像供应链攻击使用预构建镜像时exportOPENCLAW_IMAGEghcr.io/openclaw/openclaw:latest风险等级: MEDIUM问题:镜像可能被篡改尽管有 SHA256 校验基础镜像node:24-bookworm可能有漏洞第三方扩展extensions代码未审计6.Agent 沙箱隔离不完全即使启用沙箱仍存在风险{ agents: { defaults: { sandbox: { mode: non-main, workspaceAccess: none } } } }风险等级: HIGH问题:沙箱容器仍可访问 Docker Socket如果挂载Agent 可能执行恶意代码如加密货币挖矿工具调用bash、file read/write可能破坏系统7.凭证存储安全配置文件存储位置~/.openclaw/ ├── identity/ # 身份密钥 ├── credentials/ # 渠道凭证WhatsApp、Telegram 等 └── openclaw.json # 配置含 API Keys风险等级: HIGH问题:凭证以 JSON 明文存储可能加密但不确定没有提到加密机制如果宿主机被入侵所有凭证泄露8.缺少安全审计日志风险等级: MEDIUM问题:没有提到安全事件日志登录尝试未记录异常行为检测缺失️ 安全加固建议立即执行必须做1.限制网络访问# 只允许本地回环访问如果在单机运行dockercompose run--rmopenclaw-cli configsetgateway.bind loopback# 或者配置防火墙sudoufw allow from127.0.0.1 to any port18789sudoufw allow from192.168.1.0/24 to any port18789# 仅内网2.生成强 Token# 生成 64 字节随机 Tokenopenssl rand-hex32# 或使用 Pythonpython3-cimport secrets; print(secrets.token_hex(32))# 设置到 .env 文件echoOPENCLAW_GATEWAY_TOKEN$(openssl rand-hex32).env3.禁用 Docker Socket 挂载除非绝对需要编辑 [[docker-compose.yml](file://d:\project\openclaw\docker-compose.yml)](file://d:\project\openclaw\docker-compose.yml):# 注释掉这行# - /var/run/docker.sock:/var/run/docker.sock4.启用 HTTPS生产环境必须使用反向代理如 Nginx 或 Caddy# Nginx 配置示例 server { listen 443 ssl; server_name openclaw.example.com; ssl_certificate /etc/letsencrypt/live/openclaw.example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/openclaw.example.com/privkey.pem; location / { proxy_pass http://127.0.0.1:18789; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection upgrade; proxy_set_header Host $host; } }中期加固推荐做5.使用命名卷而非 Bind Mountvolumes:openclaw_data:services:openclaw-gateway:volumes:-openclaw_data:/home/node/.openclaw避免暴露宿主机文件系统。6.进一步限制容器权限编辑 [[docker-compose.yml](file://d:\project\openclaw\docker-compose.yml)](file://d:\project\openclaw\docker-compose.yml):services:openclaw-gateway:cap_drop:-ALLcap_add:-NET_BIND_SERVICEsecurity_opt:-no-new-privileges:trueread_only:truetmpfs:-/tmp7.配置 DM 配对策略防止垃圾消息// openclaw.json { channels: { whatsapp: { dmPolicy: pairing, // 必须配对才能接收私信 allowFrom: [1234567890] // 白名单 } } }8.定期更新镜像# 每周检查更新dockerpull ghcr.io/openclaw/openclaw:latestdockercompose up-d--force-recreate高级加固可选9.使用 Tailscale 组网不在公网暴露端口通过 Tailscale 访问{ gateway: { tailscale: { mode: serve // 仅在 Tailscale 网络内可见 }, bind: loopback } }10.启用沙箱隔离权衡利弊如果不需要 Agent 执行 shell 命令关闭沙箱{ agents: { defaults: { sandbox: { mode: off // 禁用沙箱减少攻击面 } } } } 风险评估总结风险点严重程度利用难度是否必须修复Docker Socket 挂载 CRITICAL低✅ 必须网络暴露 HIGH中✅ 必须凭证明文存储 HIGH中✅ 必须Agent 沙箱逃逸 HIGH高⚠️ 推荐Token 弱密码 MEDIUM低✅ 必须镜像供应链 MEDIUM高⚠️ 推荐权限过大 MEDIUM中⚠️ 推荐✅ 最小化安全配置清单在运行./scripts/docker/setup.sh之前至少完成以下步骤# 1. 生成强 TokenexportOPENCLAW_GATEWAY_TOKEN$(openssl rand-hex32)# 2. 创建受限的 .env 文件cat.envEOF OPENCLAW_CONFIG_DIR$HOME/.openclaw OPENCLAW_WORKSPACE_DIR$HOME/.openclaw/workspace OPENCLAW_GATEWAY_PORT18789 OPENCLAW_BRIDGE_PORT18790 OPENCLAW_GATEWAY_BINDloopback # 改为 loopback OPENCLAW_GATEWAY_TOKEN$OPENCLAW_GATEWAY_TOKENTZAsia/Shanghai EOF# 3. 修改 docker-compose.yml移除 Docker Socket 挂载sed-is|^.*- /var/run/docker.sock.*$|# |docker-compose.yml# 4. 配置防火墙Linuxsudoufw allow from127.0.0.1 to any port18789sudoufwenable# 5. 运行安装脚本./scripts/docker/setup.sh# 6. 验证安全配置curlhttp://127.0.0.1:18789/healthz# 应该成功curlhttp://your-server-ip:18789/healthz# 应该失败被防火墙阻止 结论是的这样安装确实存在安全漏洞但大部分可以通过配置加固来缓解如果您只是在本地开发测试风险较低但建议至少设置强 Token如果部署在公网 VPS必须按照上述加固建议配置否则非常危险如果处理敏感数据建议额外启用 HTTPS、Tailscale、沙箱隔离等多层防护最关键的三个措施❌不要挂载 Docker Socket除非绝对需要沙箱功能配置防火墙 强 Token 认证使用 HTTPS 或 Tailscale 保护网络传输