CVE-2026-33943Happy 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 常用于服务端渲染或测试环境,这种未经授权的代码执行可能导致服务器被完全控制,造成严重的数据泄露或系统破坏。