2026 OpenClaw 安全加固与漏洞响应实操:CVE-2026-25253 事件复盘、防火墙规则与最小权限部署清单

约 13 分钟阅读 · MACCOME

2026 年 1 月,OpenClaw 爆出 CVE-2026-25253——超过 13.5 万个公开暴露在公网的实例因配置不当面临远程代码执行风险。 如果你的 OpenClaw 部署(无论是本机 npm / Docker 还是 VPS)尚未通过安全基线检定,现在就是加固的最后时机。本文从该漏洞事件复盘出发,提供 Docker / systemd(VPS)/ npm 全局安装三种形态下的最小权限部署清单,并给出漏洞响应的 5 阶段节奏(检测 → 备份 → 升级 → 验证 → 监控 72h),助你一口气把 OpenClaw 从"能跑起来"变成"经得起攻防"。

CVE-2026-25253 事件复盘:13.5 万实例为何被暴露

2026 年 1 月中旬,OpenClaw 安全团队披露了 CVE-2026-25253:当 Gateway 以默认配置(监听 0.0.0.0 且未配置认证)直接暴露在公网时,攻击者可通过精心构造的 WebSocket 握手包触发远程代码执行。Shodan 扫描显示,当时全球有 超过 13.5 万个实例 可在无认证情况下访问,涵盖个人开发者、小团队及部分企业内网穿透不当的节点。

漏洞的根本原因并非代码缺陷,而是默认配置过于宽松

  • Gateway 默认 bind 地址为 0.0.0.0,若无额外防火墙或反向代理 auth,等同于向整个互联网开放管理端口。
  • 早期安装脚本未强制要求设置 OPENCLAW_GATEWAY_TOKEN 或启用 TLS,导致明文信道易受中间人攻击。
  • 大量用户在 VPS 上仅执行 openclaw onboard 后即认为完成部署,忽略了后续 gateway.bind 的收紧与 ufw 规则。

该事件促使官方在 v2026.2.0 起将 默认监听地址改为 127.0.0.1,并强化安装向导的安全性检查。但存量实例仍需手动修复——本文即为此提供可操作清单。

安全防护总原则:三条防线

无论采用何种部署形态,都必须同时满足以下三条:

  1. 不暴露公网:Gateway 仅绑定 loopback(127.0.0.1)或内网 IP;必须通过反向代理(Nginx/Caddy)或隧道(Cloudflare Tunnel)对外提供服务,且代理层需强制认证。
  2. 强制认证:所有通往 Gateway 的请求必须携带有效 OPENCLAW_GATEWAY_TOKEN,且该 token 长度 ≥ 32 字符、每 90 天轮换一次。
  3. 最小端口集:宿主机只开放必要端口(如 SSH 22、HTTPS 443);Gateway 内部端口(默认 18789)严禁对 0.0.0.0 直接监听。

Docker 部署安全清单

如果你使用 Docker / Docker Compose 运行 OpenClaw,请逐项检查:

检查项安全配置危险配置(示例)修复命令/步骤
network_mode使用自定义 bridge 或 host + 限制端口映射ports: "0.0.0.0:18789:18789"改为 127.0.0.1:18789:18789 或通过反向代理映射
--read-only容器根文件系统设为只读,卷挂载明确列出未使用 --read-onlyCompose 中追加 read_only: true,并确保 ./openclaw-data:/home/node/.openclaw 等卷挂载
user 与卷权限指定非 root 用户(node:1000)且卷 UID/GID 一致容器内 root、宿主机 755 宽松权限user: "1000:1000";卷目录提前 chown 1000:1000
restart policyunless-stoppedon-failure:3无 restart(偶发崩溃后容器Exit)确保服务自愈,结合 healthcheck 使用
OPENCLAW_GATEWAY_TOKEN通过环境变量注入,长度 ≥32,与 CLI 配置一致空 token 或硬编码在镜像中environment: OPENCLAW_GATEWAY_TOKEN=${TOKEN},并在宿主机 openclaw config set gateway.token $TOKEN

完成后通过 docker exec <container> netstat -tlnp 验证 Gateway 只监听 127.0.0.1:18789(或配置的反向代理端口)。

systemd / VPS(Ubuntu 24.04)部署安全清单

在云 VPS 上用 systemd 常驻 OpenClaw 时,必须配置以下防火墙与系统级加固:

4.1 防火墙规则(ufw)

  1. 默认拒绝 incoming,仅放行必要端口:
bash
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow 22/tcp      # SSH
sudo ufw allow 443/tcp     # HTTPS (若使用反向代理)
sudo ufw allow 80/tcp      # HTTP (可选,重定向至 HTTPS)
sudo ufw enable
  1. 确认 Gateway 端口(18789)未对外开放:
bash
sudo ufw status numbered
# 应看不到 18789/tcp 的 allow 规则

4.2 sshd 加固

  • 禁用密码登录,仅允许密钥:PasswordAuthentication no
  • 修改默认端口(非 22)或在防火墙上进一步限制源 IP
  • 安装 fail2ban 防止暴力破解(可选但推荐)

4.3 日志轮转

OpenClaw 日志默认落在 /tmp/openclaw/openclaw-YYYY-MM-DD.log,需配置 logrotate 避免撑盘:

bash
# /etc/logrotate.d/openclaw
/tmp/openclaw/*.log {
    daily
    rotate 7
    compress
    missingok
    notifempty
    copytruncate
}

4.4 systemd unit 示例(含安全选项)

ini
[Unit]
Description=OpenClaw Gateway
After=network.target

[Service]
Type=simple
User=node
Group=node
ExecStart=/usr/bin/openclaw gateway start
ExecStop=/usr/bin/openclaw gateway stop
Restart=on-failure
RestartSec=5
# 安全加固
PrivateTmp=yes
NoNewPrivileges=yes
ProtectSystem=strict
ProtectHome=yes
ReadWritePaths=/home/node/.openclaw /var/log/openclaw
Environment="OPENCLAW_GATEWAY_TOKEN=${OPENCLAW_GATEWAY_TOKEN}"
# 资源限制(可选)
LimitNOFILE=65535

[Install]
WantedBy=multi-user.target

npm 全局安装场景的安全配置

本机 npm 安装(常见于开发机或 Manual 运维)必须收紧 Gateway bind 地址:

bash
# 强制 Gateway 监听 127.0.0.1
openclaw config set gateway.bind 127.0.0.1

# 确认生效
openclaw config get gateway.bind
# 应输出 127.0.0.1

若需对外提供访问,必须搭配反向代理(Nginx/Caddy)并使用 HTTP 基础认证或 OAuth:

nginx
location /openclaw/ {
    proxy_pass http://127.0.0.1:18789/;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    # 基础认证(示例)
    auth_basic "OpenClaw Admin";
    auth_basic_user_file /etc/nginx/.htpasswd;
    # 或集成 OAuth 反向代理(oauth2-proxy)

漏洞响应节奏:从检测到监控 72 小时的 5 阶段流程

  1. 阶段 1 — 检测与影响评估
    • 检查当前版本:openclaw --version。若 < 2026.2.0 且 Gateway 暴露公网,立即判定为高风险。
    • 扫描暴露面:nmap -p 18789 <你的公网IP> 确认端口是否对公网可达。
  2. 阶段 2 — 配置与数据备份
    • 备份 ~/.openclaw/ 整编:tar -czf openclaw-backup-$(date +%F).tar.gz ~/.openclaw
    • 导出当前 Gateway 状态(包含配对 token、通道配置):openclaw gateway export > gateway-state.json
  3. 阶段 3 — 分步升级与加固
    • 升级 CLI:npm update -g openclawdocker pull openclaw/openclaw:latest
    • 重设 gateway.bind 为 127.0.0.1;若使用反向代理,确保代理层启用 TLS 与基础认证。
    • 生成新 token:openclaw gateway token rotate,并同步更新所有 CLI 实例与 CI 环境变量。
  4. 阶段 4 — 连通性验证
    • 重启 Gateway:openclaw gateway restart
    • 本地连通性:openclaw gateway status 应显示 "healthy"。
    • 外部访问测试:从另一台机器尝试连接(应代理层拦截或返回 401/403)。
  5. 阶段 5 — 72 小时监控窗口
    • 关注日志负载与异常登录:openclaw logs --follow | grep -i error
    • 确认所有通道(Telegram/Slack 等)正常工作,无配对丢失。
    • 72 小时后若无异常,将此次加固记入运维手册,并计划下一个 token 轮换日。

安全基线自查表(端口 / 认证 / 日志 / 更新 / 备份)

每月至少执行一次以下 5 项检查,确保 OpenClaw 未因配置漂移或版本落后而再度暴露:

类别检查命令 / 动作合格标准不合格处理
端口ss -tlnp | grep 18789监听地址 = 127.0.0.1执行 openclaw config set gateway.bind 127.0.0.1 并重启
认证openclaw config get gateway.token(长度与更新时间)token ≥32 字符,90 天内未超期执行 openclaw gateway token rotate 并更新所有依赖
日志du -sh /tmp/openclaw/ 与 logrotate 状态日志目录 <500MB,logrotate 已启用调整 logrotate 配置,清理历史日志
更新openclaw --version 与 npm/docker 镜像版本版本 ≥ 2026.2.0(latest)执行 npm update -g openclawdocker pull
备份检查 ~/.openclaw/backup/ 是否存在 < 7 天的归档最近 7 天内有完整备份立即运行 openclaw backup

可引用技术信息

  • CVE-2026-25253 官方公告:GHSA-2026-25253(受影响版本:<2026.2.0,CVSS 9.8 严重)。
  • OpenClaw Gateway 默认端口:18789(Control UI 同端口,仅 localhost)。
  • v2026.2.0 起默认 bind 地址变更为 127.0.0.1(依旧允许本机与 Docker bridge 访问,但不再对外)。
  • Docker 官方镜像标签:openclaw/openclaw:latest:2026.3.13:stable

替代方案的局限:生产环境为何不能"只启动不加固"

许多团队在快速验证阶段会采用"能跑起来就行"的思维,跳过防火墙配置、token 轮换与日志轮转。这种思路在开发机或临时实例上或许能节省 15 分钟,但在生产环境会带来三个致命问题:

  • 暴露攻击面:公网可达的 Gateway 如同敞开大门,CVE-2026-25253 仅是已知的一个;未知漏洞或零日同样会通过相同路径入侵。
  • 合规风险:企业审计要求所有对外服务必须经过认证与最小权限评审,裸奔实例无法通过 SOC2 / ISO27001 等标准。
  • 运维不可逆:一旦实例被植入后门或数据被篡改,即便事后加固,也无法确认是否已留下持久化后门。此时唯一安全的选项是销毁重建。

因此,安全加固是部署的第一步,而非事后补丁。对于需要稳定、长期运行 OpenClaw 的生产环境,MACCOME 提供的托管方案已内置上述所有基线(含自动 token 轮换、防火墙白名单与 24/7 监控),让你无需自行维护即可安心使用。如果你选择自托管,请务必对照本章清单逐项 audit,并把自查结果写入团队运维手册。

常见问题

我的 OpenClaw 安装于 v2026.1.0,是否一定受 CVE-2026-25253 影响?

影响版本是 <2026.2.0,且仅当 Gateway 直接暴露公网(无反向代理或 firewall)时可行利用。即使版本符合,只要网关监听 127.0.0.1 或通过受控隧道暴露,风险评级会大幅降低。建议先行升级并收紧 bind 地址。

Docker compose 中已经设置 read_only: true,是否还需要额外防火墙?

需要。read_only 防止容器内文件被修改,但 Gateway 端口仍可能被外部直接访问。必须同时满足:只读 + bind 127.0.0.1 + 反向代理认证,才能算完整加固。

Token 轮换会导致现有通道(Telegram/Slack)掉线吗?

会。Gateway token 是 CLI ↔ Gateway 通信的凭证;轮换后所有已连接的 CLI/Agent 需重新配对。通道层 token(如 Telegram bot token)不受影响,无需重配。

在生产环境必须对外提供服务,最小权限该怎么设?

最小权限 = (Gateway 仅监听 localhost) + (反向代理层强制 TLS + 认证) + (源 IP 白名单,若可能)。代理层(Nginx/Caddy/Traefik)应置于独立容器或边缘节点,仅转发已认证请求至 127.0.0.1:18789。

如何验证自己的实例是否已被利用?

检查以下痕迹:1) 未知的 CLI token 出现在 openclaw config list 中;2) ~/.openclaw/logs/ 有异常 IP 的连接记录;3) 系统进程中出现不明子进程(如 curl/wget 外连)。若发现可疑,立即隔离机器并执行备份后重装。