CVE-2026-43899DeepChat 是一个统一模型、工具和代理的开源人工智能代理平台。在 v1.0.4-beta.1 版本之前,由于对 CVE-2025-55733 的缓解措施不完整,DeepChat 仍然容易受到任意协议执行攻击(RCE)。尽管之前的补丁正确限制了渲染器 preload 脚本中的 `api.openExternal()`,但在结构上忽略了清理原生 Electron 弹出窗口处理程序。攻击者或受损的 AI 端点可以通过返回带有 `target="_blank"` 属性的 Markdown 链接,触发 `tabPresenter.ts` 中的原生窗口拦截,进而将恶意 URL 直接转发给 `shell.openExternal()`,完全绕过 `isValidExternalUrl` 安全边界。
该漏洞的核心在于 Electron 应用中对外部 URL 验证逻辑的绕过。DeepChat 开发团队此前为了修复类似漏洞,在 `preload/index.ts` 中对 `api.openExternal()` 进行了限制,强制要求通过 `isValidExternalUrl` 验证。然而,Electron 提供了多种打开链接的方式,开发人员忽略了通过原生窗口事件打开新窗口的路径。
具体漏洞点位于 `tabPresenter.ts` 文件中。当 DeepChat 渲染 AI 返回的 Markdown 内容时,如果遇到包含 `target="_blank"` 的链接,Electron 会触发新建窗口的事件。`tabPresenter.ts` 拦截了该事件,但直接调用了 Node.js 环境下的 `shell.openExternal(url)` 来处理该 URL。由于这一调用发生在主进程而非经过严格验证的预加载脚本上下文中,它绕过了 `isValidExternalUrl` 的安全检查。
利用该漏洞,攻击者只需让 AI 模型返回包含恶意 Scheme(如 `file:///`、`custom-protocol://` 等)的 Markdown 链接。一旦用户交互或系统自动处理该链接,恶意 URL 将被传递给操作系统执行,从而导致任意命令执行。