IPBUF安全漏洞报告
English
CVE-2026-33943 CVSS 8.8 高危

CVE-2026-33943 Happy DOM远程代码执行漏洞

披露日期: 2026-03-27

漏洞信息

漏洞编号
CVE-2026-33943
漏洞类型
远程代码执行
CVSS评分
8.8 高危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
需要交互 (UI:R)
影响产品
Happy DOM

相关标签

RCE代码注入Happy DOMJavaScriptCVE-2026-33943

漏洞概述

Happy DOM 是一个无图形用户界面的 JavaScript Web 浏览器实现。在版本 15.10.0 至 20.8.7 中,其 `ECMAScriptModuleCompiler` 组件存在严重的代码注入漏洞。攻击者能够通过在 ES 模块脚本的 `export {}` 声明中注入任意 JavaScript 表达式,从而实现远程代码执行(RCE)。该漏洞的核心原因在于编译器将未经过滤的内容直接插入生成的代码中,且引号过滤器未能移除反引号,导致基于模板字面量的攻击载荷可以轻易绕过安全机制。官方已在 20.8.8 版本中修复了此问题。

技术细节

该漏洞位于 Happy DOM 处理 ES 模块的 `ECMAScriptModuleCompiler` 类中。当解析包含 `export` 声明的脚本时,编译器会提取导出内容并将其动态拼接到生成的 JavaScript 代码字符串中。尽管存在旨在阻止代码逃逸的引号过滤器,但该过滤器仅处理单引号和双引号,忽略了反引号(`)。因此,攻击者可以构造包含模板字面量的恶意 payload,例如 `export { ${malicious_code} as name }`。当 Happy DOM 加载并编译该模块时,反引号内的表达式会被直接求值并执行。由于 Happy DOM 常用于服务端渲染或测试环境,这种未经授权的代码执行可能导致服务器被完全控制,造成严重的数据泄露或系统破坏。

攻击链分析

STEP 1
步骤1
攻击者识别目标应用程序使用 Happy DOM 处理或解析不受信任的 ES 模块。
STEP 2
步骤2
攻击者创建包含恶意 JavaScript 表达式的 ES 模块文件,利用反引号构造模板字面量 payload。
STEP 3
步骤3
攻击者诱导目标应用程序加载并解析该恶意模块文件(例如通过文件上传或供应链攻击)。
STEP 4
步骤4
Happy DOM 的 ECMAScriptModuleCompiler 处理 export 声明,将恶意内容内插并执行代码。
STEP 5
步骤5
实现远程代码执行,攻击者获得系统控制权,可执行任意命令。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
// PoC for CVE-2026-33943 // Create a file named 'exploit.js' with the following content // The vulnerability allows injecting template literals inside export declarations // because the quote filter does not strip backticks. export { // Using template literal syntax to execute arbitrary code `${globalThis.process.mainModule.require('child_process').execSync('calc.exe')}` as exploit }; // Load this file using Happy DOM to trigger the RCE.

影响范围

Happy DOM 15.10.0 至 20.8.7

防御指南

临时缓解措施
在无法立即升级的情况下,应严格审查所有传入的 ES 模块代码,确保 `export` 声明中不包含反引号或复杂的 JavaScript 表达式。同时,建议在沙箱环境中运行 Happy DOM 以限制代码执行权限。

参考链接

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