
OpenClaw 安全必看:v2026.4.9 安全漏洞完整解析与分级加固方案
一、风暴来袭:三大安全风险全景解析
2026年4月8日,360安全团队通过自动化漏洞挖掘智能体,对 OpenClaw 进行了系统性安全审计,完整披露了三处风险。以下为技术细节原文梳理。
高危漏洞:本地脚本审批与执行机制存在路径穿越风险,攻击者可通过篡改已审批脚本实现任意代码执行,直接控制用户设备。 中危漏洞①:OAuth 授权流程存在参数复用缺陷,第三方应用可构造授权绑定劫持攻击。 中危漏洞②:语音通话 WebSocket 通道存在资源管控缺陷,攻击者可通过长连接耗尽服务端资源。
需要说明的是,这三处漏洞均有条件限制——攻击者需要先获得 OpenClaw 所在设备的网络访问权限,才能利用这些缺陷。因此,本地部署用户风险远低于云端/公网部署用户,但无论如何,在 OpenClaw 已深度嵌入企业工作流的当下,任何疏漏都可能造成数据泄露或横向渗透。
二、高危漏洞详解:脚本执行机制与权限逃逸
2.1 漏洞原理
OpenClaw 的核心能力之一,是通过本地脚本(Shell/Batch/PowerShell)执行操作系统级操作。v2026.4.9 之前的版本中,脚本执行流程如下:
用户提交脚本请求 ↓ Gateway 验证脚本签名(白名单) ↓ 将脚本写入临时目录(路径固定) ↓ 执行器调用系统 shell 运行脚本 ↓ 返回执行结果 问题出在"路径固定"这一环:旧版本使用 C:\Users\ 作为统一写入目录,且未对脚本内容进行路径穿越(Path Traversal)过滤。攻击者若能在 Gateway 认证通过的前提下(合法用户本身,或借助 XSS/CSRF 等手段),构造如下脚本文件名:
..\..\..\..\Windows\System32\config\system 即可将恶意脚本写入系统关键目录,实现权限逃逸。
2.2 受影响版本
OpenClaw v2026.3.7-beta.1 及之前版本(所有平台) OpenClaw v3.23.0 及之前版本 - 已修复
:v2026.4.9 版本已完全修复此漏洞,所有用户务必升级
2.3 漏洞检测脚本
powershell# 检查当前 OpenClaw 版本(PowerShell)openclaw--version# 检查是否存在可疑的脚本文件(Windows)Get-ChildItem-Path"$env:TEMP\openclaw\scripts"-Recurse-File-ErrorActionSilentlyContinue|Where-Object{$_.LastWriteTime-gt(Get-Date).AddDays(-30)}|Select-ObjectFullName,Length,LastWriteTime# Linux/macOS 检测find/tmp/openclaw/scripts-typef-mtime-302>/dev/null三、中危漏洞①:OAuth 授权校验参数复用
3.1 漏洞原理
OpenClaw 支持接入大量第三方服务(微信、飞书、企业微信、Google Workspace 等),其 OAuth 授权流程使用标准 PKCE(Proof Key for Code Exchange)机制,但旧版本在处理 state 参数时存在参数复用漏洞:
- 1用户发起 OAuth 授权请求,Gateway 生成唯一
state值并缓存 - 2授权回调(Callback)携带
state参数,Gateway 验证后颁发 Token - 3漏洞:旧版本缓存的
state未设置 TTL(生存时间),理论上存在被旧state绕过的可能性(需攻击者配合社工)
3.2 影响范围
仅影响通过 OpenClaw Gateway 管理第三方 OAuth 集成的场景(本地独立 OAuth 应用不受影响)。
3.3 缓解方案
v2026.4.9 版本已引入 state 参数 TTL 机制(默认 300 秒),强烈建议升级。同时可通过以下命令手动验证 OAuth 配置:
bash# 检查 OAuth 配置安全性(Windows PowerShell) openclawconfiggetauth.oauth.stateTtl # 若返回为空或 0,强制设置 TTL openclawconfig set auth.oauth.stateTtl300四、中危漏洞②:WebSocket 资源管控缺陷
4.1 漏洞原理
OpenClaw 的语音通话模块通过 WebSocket 维持双向实时连接。旧版本中,单个 IP 可同时建立的 WebSocket 连接数无上限,攻击者可发起大量并发 WebSocket 连接请求,耗尽 Gateway 的文件描述符资源,导致正常用户的服务中断(DoS)。
4.2 影响范围
所有开启语音通话(Voice Call)功能的 OpenClaw 实例 面向公网的 Gateway 实例(风险最高)
4.3 紧急修复
bash# 在 Gateway 配置文件中添加 WebSocket 并发限制(config.yaml) gateway: websocket: maxConnectionsPerIp:10connectionTimeout:60# 秒# 重启 Gateway 使配置生效 openclawgatewayrestart v2026.4.9 版本已将上述配置纳入默认值,但若采用自定义 Gateway,仍需手动配置。
五、生产级加固方案:分级实施路线图
加固原则:安全加固不能影响业务连续性。建议按"紧急修复→配置强化→架构优化"三阶段推进,每个阶段完成后验证功能正常再进入下一阶段。
阶段一:紧急修复(0~24小时)
第一步:升级到 v2026.4.9
bash# 通过 npm 升级(推荐) npminstall-gopenclaw@latest # 或通过 Python pip pipinstall--upgradeopenclaw # 验证升级成功 openclaw--version # 期望输出:openclaw v2026.4.9 或更高第二步:重置所有脚本执行权限
升级后,务必重新审批所有已存脚本白名单:
bash# 清除旧脚本白名单缓存 openclawscriptsreset--all # 查看当前白名单状态 openclawscriptslist--approved ⚠️ 警告:重置后,所有依赖脚本的任务(如定时推送、邮件自动发送)需要重新审批,请提前通知用户并预留处理窗口。
第三步:强制重新授权 OAuth
bash# 吊销所有第三方 OAuth Token 并强制重新授权 openclawauthrevoke--all 阶段二:配置强化(1~3天)
关闭公网 Gateway 暴露
最高风险场景:Gateway 监听 0.0.0.0 且端口对公网开放。
yaml# config.yaml — 推荐配置gateway:bind: 127.0.0.1# 仅本地监听# bind: 192.168.1.100 # 仅内网 IP,禁用 0.0.0.0port: 19000remoteAccess: false# 禁用远程访问# 若必须远程访问,启用 mTLS 双向认证gateway:tls:enabled: truecert: /path/to/server.crtkey: /path/to/server.keyclientCa: /path/to/ca.crtverifyClient: true启用脚本沙箱隔离
v2026.4.9 新增 ContextEngine 插件接口,可接入自定义沙箱插件:
bash# 安装官方沙箱插件 openclawskillsinstallsandbox-context-engine # 配置启用(config.yaml) plugins: -name:sandbox-context-engine enabled: trueconfig: isolationLevel:strict# strict | moderate | looseallowedCommands: -powershell -python -node blockedPatterns: -"rm -rf /"-"format"-"del /f /s /q"强化 WebSocket 安全
yaml# config.yaml 补充配置gateway:websocket:maxConnectionsPerIp: 5connectionTimeout: 30rateLimitPerMinute: 20# 启用 WebSocket TLS 加密tls:enabled: true阶段三:架构优化(3~7天)
部署企业级网络安全方案
湘江鲲鹏与华为鲲鹏联合推出的 OpenClaw 部署方案,提供了三级配置支撑体系:
来源:拓维信息湘江鲲鹏联合方案(2026年4月9日发布)
开启审计日志
yaml# config.yamllogging:level: infoaudit:enabled: truepath: /var/log/openclaw/audit.log# Windows: C:\ProgramData\openclaw\audit.logmaxSize: 100MBrotation: daily# 敏感操作实时告警alerts: - event: script.executechannel: email - event: oauth.revokechannel: email - event: websocket.floodchannel: webhookurl: https://your-alerting-system/webhook配置网络隔离策略
powershell# Windows 防火墙规则示例:仅允许受信任 IP 访问 Gateway# 创建入站规则New-NetFirewallRule-DisplayName"OpenClaw Gateway"`-DirectionInbound`-ProtocolTCP`-LocalPort19000`-RemoteAddress192.168.1.0/24`-ActionAllow# 阻止其他所有访问New-NetFirewallRule-DisplayName"Block OpenClaw External"`-DirectionInbound`-ProtocolTCP`-LocalPort19000`-RemoteAddressAny`-ActionBlock六、v2026.4.9 安全新特性详解
6.1 Dreaming REM 记忆安全机制
本次版本最大亮点之一是"Dreaming REM"——AI 模拟人类睡眠时的记忆巩固机制,对 Memory 中的敏感信息进行自动加密压缩:
javascript// config.yaml 中配置 Dreaming REMmemory:dreaming:enabled:trueencryption:aes-256-gcmcompressSensible:trueforgetAfterDays:30#自动遗忘阈值原理:当 AI 进入空闲状态时,会将 Memory 中的敏感字段(如 Token、密码、API Key)替换为加密引用,日常对话仅访问脱敏摘要,大幅降低记忆泄漏风险。
6.2 强化结构化日记视图
v2026.4.9 新增日记视图,对 AI 的所有操作决策进行结构化记录:
[2026-04-16 08:30:15] Agent: 分析邮件 [2026-04-16 08:30:16] Tool: imap-smtp-email.read [2026-04-16 08:30:18] Decision: 标记高优先级邮件 [2026-04-16 08:30:19] Action: 回复确认 [2026-04-16 08:30:20] Memory: 写入关键日程到 Diary 通过日记视图,管理员可完整审计 AI 的每一步决策链路,一旦发生安全事件,可快速溯源。
七、自动化安全巡检:每日健康检查脚本
以下脚本可加入定时任务(cron),每日自动检查 OpenClaw 安全状态:
bash#!/bin/bash# openclaw_security_check.sh# 使用方式: chmod +x openclaw_security_check.sh && ./openclaw_security_check.shLOG_FILE="/var/log/openclaw/security_check_$(date+%Y%m%d).log"echo "<mark style="background:linear-gradient(120deg,#DBEAFE 0%, rgba(255,255,255,0) 100%); padding: 0 4px; border-radius: 2px; font-weight: 600; color: #1e3a5f;">= OpenClaw 安全巡检 $(date) </mark>=" | tee -a "$LOG_FILE"# 1. 版本检查echo "[1/6] 检查版本..." | tee-a"$LOG_FILE"CURRENT_VERSION=$(openclaw--version2>/dev/null)if<span style="color: #1e40af; border-bottom: 1px dashed #1e40af;">"$CURRENT_VERSION" < "v2026.4.9"</span>; then echo "⚠️ 版本过低: $CURRENT_VERSION,建议升级到 v2026.4.9" | tee-a"$LOG_FILE"else echo "✅ 版本正常: $CURRENT_VERSION" | tee-a"$LOG_FILE"fi# 2. Gateway 绑定检查echo "[2/6] 检查 Gateway 绑定..." | tee-a"$LOG_FILE"BIND=$(openclawconfiggetgateway.bind2>/dev/null)if<span style="color: #1e40af; border-bottom: 1px dashed #1e40af;">"$BIND" == "0.0.0.0"</span>; then echo "🚨 高危: Gateway 监听 0.0.0.0(公网暴露),立即修复!" | tee-a"$LOG_FILE"else echo "✅ Gateway 绑定正常: $BIND" | tee-a"$LOG_FILE"fi# 3. WebSocket 并发限制检查echo "[3/6] 检查 WebSocket 并发限制..." | tee-a"$LOG_FILE"WS_LIMIT=$(openclawconfiggetgateway.websocket.maxConnectionsPerIp2>/dev/null)if<span style="color: #1e40af; border-bottom: 1px dashed #1e40af;">| "$WS_LIMIT" == "0"</span>; then echo "⚠️ 未配置 WebSocket 并发限制,建议设置" | tee-a"$LOG_FILE"else echo "✅ WebSocket 并发限制: $WS_LIMIT" | tee-a"$LOG_FILE"fi# 4. OAuth state TTL 检查echo "[4/6] 检查 OAuth 安全配置..." | tee-a"$LOG_FILE"STATE_TTL=$(openclawconfiggetauth.oauth.stateTtl2>/dev/null)if<span style="color: #1e40af; border-bottom: 1px dashed #1e40af;">| "$STATE_TTL" == "0"</span>; then echo "⚠️ OAuth state 未设置 TTL,请升级到 v2026.4.9" | tee-a"$LOG_FILE"else echo "✅ OAuth state TTL: ${STATE_TTL}s" | tee-a"$LOG_FILE"fi# 5. TLS 启用检查echo "[5/6] 检查 TLS 配置..." | tee-a"$LOG_FILE"TLS_ENABLED=$(openclawconfiggetgateway.tls.enabled2>/dev/null)if<span style="color: #1e40af; border-bottom: 1px dashed #1e40af;">"$TLS_ENABLED" != "true"</span>; then echo "⚠️ 未启用 TLS,建议启用以加密通信" | tee-a"$LOG_FILE"else echo "✅ TLS 已启用" | tee-a"$LOG_FILE"fi# 6. 审计日志检查echo "[6/6] 检查审计日志..." | tee-a"$LOG_FILE"AUDIT_ENABLED=$(openclawconfiggetlogging.audit.enabled2>/dev/null)if<span style="color: #1e40af; border-bottom: 1px dashed #1e40af;">"$AUDIT_ENABLED" != "true"</span>; then echo "⚠️ 审计日志未启用,建议开启" | tee-a"$LOG_FILE"else echo "✅ 审计日志已启用" | tee-a"$LOG_FILE"fiecho "" | tee-a"$LOG_FILE"echo "<mark style="background:linear-gradient(120deg,#DBEAFE 0%, rgba(255,255,255,0) 100%); padding: 0 4px; border-radius: 2px; font-weight: 600; color: #1e3a5f;">= 巡检完成 </mark>=" | tee -a "$LOG_FILE"Windows PowerShell 版:
powershell# openclaw_security_check.ps1$LogFile="C:\ProgramData\openclaw\security_check_$(Get-Date-Format'yyyyMMdd').log"functionWrite-Log{param($Msg)$ts=Get-Date-Format'yyyy-MM-dd HH:mm:ss'"$ts $Msg"|Tee-Object-FilePath$LogFile-Append}Write-Log"<mark style="background:linear-gradient(120deg,#DBEAFE 0%, rgba(255,255,255,0) 100%); padding: 0 4px; border-radius: 2px; font-weight: 600; color: #1e3a5f;">= OpenClaw 安全巡检 $(Get-Date) </mark>="# 1. 版本检查$v=openclaw--version2>$nullWrite-Log"[1/6] 版本: $v"if($v-lt"v2026.4.9"){Write-Log"⚠️ 建议升级到 v2026.4.9"}# 2. Gateway 绑定$bind=openclawconfiggetgateway.bind2>$nullif($bind-eq"0.0.0.0"){Write-Log"🚨 高危: Gateway 公网暴露!"}else{Write-Log"✅ Gateway 绑定: $bind"}# 3. WebSocket 限制$wsLimit=openclawconfiggetgateway.websocket.maxConnectionsPerIp2>$nullWrite-Log"WebSocket 并发限制: $($wsLimit??'未配置')"# 4. OAuth TTL$ttl=openclawconfiggetauth.oauth.stateTtl2>$nullWrite-Log"OAuth state TTL: $($ttl??'未设置')"Write-Log"<mark style="background:linear-gradient(120deg,#DBEAFE 0%, rgba(255,255,255,0) 100%); padding: 0 4px; border-radius: 2px; font-weight: 600; color: #1e3a5f;">= 巡检完成 </mark>="八、安全加固清单:一键核查
✅ 立即升级到 OpenClaw v2026.4.9 或更高版本 ✅ 执行 openclaw scripts reset --all重新审批所有脚本✅ 执行 openclaw auth revoke --all强制重新 OAuth 授权✅ Gateway 绑定改为 127.0.0.1或内网 IP,禁止0.0.0.0✅ 开启 WebSocket 并发限制(建议 ≤10/IP) ✅ 启用 TLS 加密 Gateway 通信 ✅ 开启审计日志并配置异常告警 ✅ 启用 Dreaming REM 记忆加密 ✅ 接入 ContextEngine 沙箱插件 ✅ 部署每日自动化安全巡检脚本
写在最后:安全不是终点,而是持续的过程。OpenClaw 的迭代速度极快(v2026.3.7 到 v2026.4.9 仅用一个月),每一次更新都伴随着新的能力与新的风险。建议将 OpenClaw 版本订阅官方公告(GitHub Releases),重要版本发布后 48 小时内完成安全评估并更新本文推荐的加固配置。数据安全是 AI 助手最核心的信任基础。保护好自己"养"的龙虾,它才能真正成为你最可靠的数字伙伴。
■ END
夜雨聆风