Skip to main content
← All vulnerabilities
CVE-2026-115895EUVD-2026-109189GHSA-834V-8H66-3H79

Happy DOM: Incomplete fix for CVE-2026-33943: unsanitized import alias leads to host code execution

Published
Last modified
Status
published
Known exploitation
Not listed in CISA KEV
Fix
Fixed in 21.0.4
Public exploit
None on Exploit-DB

Summary

Happy DOM, a JavaScript browser implementation for Node.js, is affected when JavaScript evaluation is enabled, from version 17.0.0 up to but not including the fixed release. Attacker-supplied HTML or module code can exploit an unvalidated import alias to run arbitrary code in the Node.js host process.

Summarized by anthropic/claude-haiku-5.5. Verify details against the original sources.

Read the original description

Happy DOM is a JavaScript implementation of a web browser without its graphical user interface. From 17.0.0 until 21.0.4, packages/happy-dom/src/module/ECMAScriptModuleCompiler.ts accepts a named ESM import alias without validating that it is a JavaScript binding identifier before inserting it into a generated destructuring binding. With enableJavaScriptEvaluation enabled, attacker-controlled HTML or module source can use an invalid alias that becomes a valid default initializer after compilation, causing the generated JavaScript to execute in the Node.js host process. The demonstrated reachable path uses a JSON module import attribute, which prevents the malicious alias from being emitted again in a later ESM circular-import assignment and keeps the generated function syntactically valid. This incomplete fix for CVE-2026-33943 is a distinct residual path because the earlier remediation validated the local export importName path but not the named-import alias. This issue is fixed in version 21.0.4.

Affected versions

  • capricorn86 happy-dom

    From 17.0.0 · fixed in 21.0.4

  • happy-domnpm

    From 17.0.0 · fixed in 21.0.4

References 4

GitHub · capricorn86/happy-dom