CVE-2026-43900DeepChat是一个开源的人工智能代理平台。在v1.0.4-beta.1版本之前,该平台存在一个严重的跨站脚本(XSS)漏洞。漏洞成因在于后端的SVGSanitizer组件与前端Vue.js的渲染机制之间存在差异。后端使用正则表达式清洗`javascript:`协议以防止脚本执行,但未考虑到HTML实体编码的处理。当前端使用`v-html`指令渲染经过清洗的SVG内容时,会自动解码HTML实体,导致攻击者构造的混淆载荷(如`javascript:`)绕过过滤,最终在受害者浏览器中执行任意JavaScript代码。
该漏洞源于DeepChat处理SVG工件时的逻辑缺陷。具体来说,`src/main/lib/svgSanitizer.ts` 文件中的清洗逻辑主要依赖纯文本正则表达式来识别并移除危险的`javascript:`协议。然而,这种过滤机制存在盲点:它直接对输入字符串进行匹配,而没有先对HTML实体进行解码。
在前端渲染阶段,`SvgArtifact.vue` 组件使用Vue.js的`v-html`指令将SVG内容插入DOM。根据HTML规范和Vue的实现机制,`v-html`在渲染前会自动解析HTML实体。因此,攻击者可以利用这一特性,将`javascript:`关键字中的字符进行HTML实体编码(例如将`a`编码为`a`)。
攻击流程如下:攻击者提交包含混淆实体的SVG载荷(如`<svg><a href="javascript:alert(1)">click</a></svg>`)。后端正则匹配器检测不到完整的`javascript:`字符串,放行了该数据。当受害者浏览包含该工件的页面时,Vue将`javascript:`还原为`javascript:`,并触发执行。由于无需认证即可触发(PR:N)且影响范围广(S:C),该漏洞风险极高。