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