当前位置: 首页 > 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.cnnetsun.cn/news/1642800.html

相关文章:

  • uniApp实现跨平台跳转支付宝小程序的完整方案
  • 硬字幕智能消除技术:从行业痛点到AI解决方案的突破
  • Graphormer开源模型优势解析:纯Transformer架构对长程分子相互作用建模
  • WarcraftHelper技术指南:解决魔兽争霸III现代系统兼容问题的完整方案
  • WarcraftHelper技术配置指南:魔兽争霸3现代化兼容解决方案
  • Obsidian PDF++: 革新PDF注释体验的双向链接解决方案
  • 开源烧录工具esptool:从入门到精通的全场景应用指南
  • 从 Claude Code 泄露的 50 万行代码中,我们能学到什么,又可以借鉴哪些设计?
  • 用GLM-OCR搭建智能档案管理系统:批量解析历史文档,提升工作效率
  • 星穹铁道全能助手:March7thAssistant自动化解决方案
  • 超透镜设计:从逆向到深度学习与RCWA算法的奇妙融合
  • DriverStore Explorer:开源驱动管理工具释放磁盘空间的高效解决方案
  • VUE前端项目的搭建过程
  • 【好靶场】你能找到上传路径吗?
  • Graphormer一文详解:Graphormer在OGB-lsc上的leaderboard表现与技术突破
  • 探索 Trnsys 系统在暖通领域的仿真奥秘
  • CALICO:让大视觉语言模型学会“找茬”——多图像部件级语义共分割新突破
  • 新手必看:nli-distilroberta-base快速上手教程,一键启动推理服务
  • 三自由度机械手-工业机器人(说明书+CAD图纸)
  • LeetCode 最长回文子串:python 题解
  • AudioSeal Pixel Studio一文详解:Streamlit界面+FFmpeg后端完整工作流
  • Phi-4-mini-reasoning效果验证:在Codeforces Div2 C类题目上的AC率实测报告
  • seo网站推广的常见案例有哪些_seo网站推广的具体步骤是什么
  • 雪女-斗罗大陆-造相Z-Turbo在.NET生态中的集成应用开发
  • Mugen:8000美元打造的终极AI动漫绘图模型
  • Nunchaku FLUX.1 CustomV3开源镜像实操:FLUX.1-Turbo+Ghibsky双LoRA协同优化详解
  • 【RAG】【embeddings42】Amazon SageMaker 嵌入端点集成案例
  • Stable Diffusion 3.5 FP8保姆级部署教程:5分钟搞定,12G显卡就能跑
  • 动态路由协议与 RIP 协议核心总结
  • Qwen3.5-9B多模态能力解析:图文输入联合建模+VL变体兼容性说明