当前位置: 首页 > news >正文

OpenClaw Docker 部署中的**安全漏洞和风险点**

🔴 主要安全风险

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 加密(默认 HTTP)

3.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_IMAGE="ghcr.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-c"import secrets; print(secrets.token_hex(32))"# 设置到 .env 文件echo"OPENCLAW_GATEWAY_TOKEN=$(openssl rand-hex32)">>.env
3.禁用 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.sock
4.启用 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 Mount
volumes: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:-/tmp
7.配置 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>.env<<EOF OPENCLAW_CONFIG_DIR=$HOME/.openclaw OPENCLAW_WORKSPACE_DIR=$HOME/.openclaw/workspace OPENCLAW_GATEWAY_PORT=18789 OPENCLAW_BRIDGE_PORT=18790 OPENCLAW_GATEWAY_BIND=loopback # 改为 loopback OPENCLAW_GATEWAY_TOKEN=$OPENCLAW_GATEWAY_TOKENTZ=Asia/Shanghai EOF# 3. 修改 docker-compose.yml,移除 Docker Socket 挂载sed-i's|^.*- /var/run/docker.sock.*$|# &|'docker-compose.yml# 4. 配置防火墙(Linux)sudoufw 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# 应该失败(被防火墙阻止)

🎯 结论

是的,这样安装确实存在安全漏洞,但大部分可以通过配置加固来缓解:

  1. 如果您只是在本地开发测试:风险较低,但建议至少设置强 Token
  2. 如果部署在公网 VPS:必须按照上述加固建议配置,否则非常危险
  3. 如果处理敏感数据:建议额外启用 HTTPS、Tailscale、沙箱隔离等多层防护

最关键的三个措施:

  1. 不要挂载 Docker Socket(除非绝对需要沙箱功能)
  2. 🔒配置防火墙 + 强 Token 认证
  3. 🌐使用 HTTPS 或 Tailscale 保护网络传输
http://www.jsqmd.com/news/574926/

相关文章:

  • Java 21 ZGC默认行为变更详解:不改这4个参数,你的微服务将倒退回G1时代
  • OpenClaw自动化测试:确保Kimi-VL-A3B-Thinking任务链稳定运行
  • 深入理解 Java String:从底层原理到高性能优化实战
  • 终极指南:3步让老Mac焕发新生,轻松升级最新macOS系统
  • 社区居家养老实训室设备配置与空间布局
  • 水墨江南模型网络配置排错全指南:从403 Forbidden到连接超时
  • 终极3分钟指南:让老旧电脑也能安装Windows 11的完整解决方案
  • 真诚夸赞的力量:用话语点亮人际关系的艺术
  • Omni-Vision Sanctuary C++ 高性能推理客户端开发指南
  • Wan2.2-I2V-A14B部署教程:NVIDIA Container Toolkit配置与GPU直通验证
  • OFA图像描述模型应用场景:社交媒体配图自动打标、新闻图解生成、PPT智能配文
  • 当加密音乐遇上数字锁匠:ncmdumpGUI的格式解放运动
  • Vue Json Pretty终极指南:如何快速格式化JSON数据并提升开发效率
  • MRIcroGL:革新性医学影像3D可视化开源解决方案
  • Flux Sea Studio 海景摄影生成工具:卷积神经网络(CNN)与生成模型在图像质量评估中的对比应用
  • RexUniNLU精彩案例:汽车4S店对话中‘保养’‘维修’‘保险’意图与VIN码槽位联合提取
  • SMUDebugTool硬件调试解决方案:Ryzen平台底层控制与优化全指南
  • STM32 HardFault现场捕获与栈回溯实战解析
  • WarcraftHelper终极指南:5分钟解决魔兽争霸III现代系统兼容问题
  • 忍者像素绘卷镜像免配置:Docker一键拉取+自动加载Celestial-Pixel CSS
  • intv_ai_mk11效果对比:温度0.0/0.2/0.5下Llama模型对同一问题的回答差异分析
  • C语言控制结构核心全解析,零基础入门编程逻辑必备
  • 本人对 Vibe Coding 的一些认识以及使用技巧
  • 3大技术突破:让视频剪辑效率提升10倍的Python方案
  • 从合规存储到资产赋能:2026 年档案管理系统政企选型核心逻辑与厂商适配指南
  • TCC三阶段代码怎么写才不翻车?手把手带你写出通过混沌工程验证的Try-Confirm-Cancel逻辑
  • ai赋能plc开发:让快马智能分析并优化你的液位控制程序逻辑
  • QGC地面站Mavlink协议自定义
  • C语言教程别乱选!90%的人踩坑,实测7本帮你避坑
  • 创新方法深度解析:抖音内容批量下载工具的技术实现与实战应用