乐于分享
好东西不私藏

【AI安全】openclaw-cn失守!浏览器点击绕过SSRF直探内网

【AI安全】openclaw-cn失守!浏览器点击绕过SSRF直探内网

一、直接导航被拦住,一次“点击”却把浏览器送进内网 🧭

AI 时代!人人都在深耕 AI 安全,你缺的就是这关键一步!

AI 正重塑安全边界,与其在门外徘徊,不如直接掌握主动权!

免费课程持续更新

https://space.bilibili.com/452583051/lists/7870008?type=season

浏览器 Agent 与普通爬虫最大的区别,是它不仅能访问 URL,还能观察页面、识别交互元素、点击按钮和链接,并继续读取跳转后的内容。能力更强,安全边界也更复杂。CVE-2026-17458 揭示的正是一个典型问题:openclaw-cn 对显式导航做了 SSRF 校验,却没有在会触发导航的交互动作后重新验证最终地址。

漏洞位于 openclaw-cn 的 Browser Control HTTP API,影响记录列出 0.2.0 与 0.2.1,相关函数为 src/browser/routes/agent.act.ts 调用的 clickViaPlaywright。CVE 将其归类为 CWE-918 服务端请求伪造(SSRF),CVSS 4.0 为 5.3,CVSS 3.1 为 6.3,评级均为中危。⚠️

它并不是“互联网上任何人都能直接访问内网”的无条件漏洞。已公开的复现前提包括:

  • 🔑 攻击者能够以有效身份调用浏览器控制 HTTP API;
  • 🌐 部署启用了 Browser Control API;
  • 🛡 配置明确设置 browser.ssrfPolicy.allowPrivateNetwork=false
  • 🖥 浏览器宿主能够访问某个 loopback 或私网 HTTP 目标;
  • 🎯 调用者能让受控浏览器打开包含恶意跳转链接的页面。

这些条件限制了攻击面,但并没有消除问题。一旦系统承诺“禁止访问私网”,所有可能改变页面地址的动作都必须遵守同一条策略。 直接导航拦截成功、点击跳转却放行,意味着安全控制只覆盖了一个入口,而不是保护了整项能力。

真正失守的是策略一致性,而不是单个 URL 检查函数。 浏览器 Agent 的导航可能来自地址栏、链接点击、表单提交、脚本跳转、重定向、新窗口和下载回调。只守住 /navigate,相当于只检查大楼正门,却把侧门、货梯和连廊留给同一把高权限钥匙。🚪

路径
是否经过私网校验
能否改变最终页面
结果
POST /navigate
私网地址被阻断
GET /snapshot
不适用
返回可交互元素引用
POST /act
 点击
缺失
可跟随链接进入私网
点击后再次 snapshot
缺失
可能读回私网页面内容

二、为什么浏览器点击能变成“可读型 SSRF” 🕸️

传统 SSRF 经常被理解为“后端替攻击者发一个 HTTP 请求”。浏览器控制场景更危险的地方在于:浏览器不只是网络客户端,还是一个带 Cookie、脚本执行、渲染和页面读取能力的交互环境。Agent 可以先观察页面,再执行动作,最后把结果转换成结构化快照返回给调用者。

在 openclaw-cn 中,直接导航函数会先执行 assertBrowserNavigationAllowed(),对目标 URL 应用 ssrfPolicy。这条路径能够正确拒绝 127.0.0.1 或私网地址。✅

但交互路径的逻辑不同:

  • 🧪 调用者让浏览器加载一个可控页面;
  • 📸 /snapshot?format=ai&interactive=1&compact=1 生成页面元素引用;
  • 🖱 /act 根据引用调用 clickViaPlaywright()
  • 🔀 Playwright 执行真实点击,浏览器跟随链接跳转;
  • 👁 后续 snapshot 将新页面内容转换为可读结果。

点击函数验证了“这个元素能不能点”,却没有验证“点完以后浏览器去了哪里”。 元素引用解决的是定位问题,不是信任问题;链接文本看起来无害,也不能代表其最终 URL、重定向链或解析结果安全。

SSRF 防线的对象应是网络状态变化,而不是 API 方法名。 无论变化由 goto()locator.click()、表单提交还是 JavaScript 触发,只要最终产生新的网络目标,就必须进入相同的目标分类与策略决策。🔍

这条链路能够形成“可读型”风险,是因为跳转后内容仍可通过同一个控制 API 读取。潜在目标包括:

  • 🧰 仅绑定 localhost 的管理或调试页面;
  • 📊 浏览器宿主可达的私网仪表盘;
  • ☁️ 类元数据服务或内部服务发现接口;
  • 🔐 假设私网隔离成立、因而没有额外认证的 HTTP 服务;
  • 🧾 包含配置、状态、日志或运行信息的内部页面。
能力阶段
正常用途
被滥用后的作用
加载外部页面
打开任务网页
承载指向私网的跳板链接
生成交互快照
帮助 Agent 理解页面
获得稳定的可点击引用
执行点击
完成网页操作
触发未复核的跨边界导航
读取新快照
获取操作结果
把私网页面转成可回传文本

需要特别强调:这不是缺少 API 身份认证。公开报告明确指出,根因是已认证调用者在交互路径中绕过了部署者配置的私网访问限制。这类问题常被“调用者本来就可信”轻描淡写,但可信操作者模型不等于无限网络权限;更何况 API 凭据可能被共享、误配,或被上层 Agent 的提示注入间接驱动。🧯

三、根因是一条“检查前置、跳转后失忆”的控制链 🧱

🎯【根因是一条“检查前置、跳转后失忆”的控制链 🧱】

这一节真正关键的不是「根因是一条“检查前置、跳转后失忆”的控制链 🧱」这个概念本身,而是它背后的判断路径、执行边界和可复用方法。

它怎样落到真实安全团队的工作流里?哪些细节会直接影响 AI 代理的可靠性?

加入 Oxo AI Security 知识星球,可查看本节完整内容,系统掌握「根因是一条“检查前置、跳转后失忆”的控制链 🧱」的完整拆解与实战用法。

📚 AI 文献解读:最前沿的 LLM 安全论文深度剖析。

🐛 AI 漏洞情报:第一时间掌握主流大模型的 0-day 漏洞与越狱方式。

🛡 AI 安全体系:从红队攻击到蓝队防御的全方位知识图谱。

🛠 AI 攻防工具:红队专属的自动化测试与扫描工具箱。

🚀立即加入 Oxo AI Security 知识星球,掌握 AI 安全攻防核心能力!