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.
Published: 2026-10-23
Score: 8.8 High
EPSS: n/a
KEV: No
Impact: Host code execution in Node.js
Action: Patch immediately
AI Analysis

Impact

A malformed ES module import alias in Happy DOM’s compiler can be exploited when JavaScript evaluation is enabled, allowing an attacker to inject arbitrary code that executes in the Node.js host process. The flaw caused the alias to become a valid default initializer after compilation, leading to remote code execution through user‑controlled HTML or module source. This is a distinct residual path from a prior remediation that only validated local export names and did not address named‑import aliases.

Affected Systems

The vulnerability exists in Happy DOM by capricorn86 versions 17.0.0 through 21.0.3, inclusive. Versions 21.0.4 and newer contain the fix.

Risk and Exploitability

The CVSS score of 8.8 indicates high severity. With no EPSS data, the exploit probability is uncertain, and the issue is not listed in the CISA KEV catalog. The likely attack vector requires an application that runs Happy DOM with enableJavaScriptEvaluation on and processes attacker‑controlled module source, making the vulnerability exploitable in environments that import untrusted modules.

Generated by OpenCVE AI on October 23, 2026 at 22:50 UTC.

Remediation

No solution or workaround provided in the CVE record.

OpenCVE Recommended Actions

  • Upgrade Happy DOM to v21.0.4 or later
  • If an upgrade is not possible, disable the enableJavaScriptEvaluation option so module imports are not evaluated
  • If you must keep enableJavaScriptEvaluation, ensure that only trusted module source code is processed or validate module import aliases before execution.

Generated by OpenCVE AI on October 23, 2026 at 22:50 UTC.

Tracking

Sign in to view the affected projects.

Advisories
Source ID Title
Github GHSA Github GHSA GHSA-834v-8h66-3h79 Happy DOM: Incomplete fix for CVE-2026-33943: unsanitized import alias leads to host code execution
History

Sat, 24 Oct 2026 00:30:00 +0000

Type Values Removed Values Added
References
Metrics threat_severity

None

threat_severity

Important


Fri, 23 Oct 2026 23:45:00 +0000

Type Values Removed Values Added
First Time appeared Capricorn86
Capricorn86 happy-dom
Vendors & Products Capricorn86
Capricorn86 happy-dom

Fri, 23 Oct 2026 21:45:00 +0000

Type Values Removed Values Added
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.
Title Happy DOM: Incomplete fix for CVE-2026-33943: unsanitized import alias leads to host code execution
Weaknesses CWE-94
References
Metrics cvssV3_1

{'score': 8.8, 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H'}


Subscriptions

Capricorn86 Happy-dom
cve-icon MITRE

Status: PUBLISHED

Assigner: GitHub_M

Published:

Updated: 2026-10-23T21:32:24.999Z

Reserved: 2026-10-23T19:37:27.177Z

Link: CVE-2026-115895

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Received

Published: 2026-10-23T22:16:58.987

Modified: 2026-10-23T22:16:58.987

Link: CVE-2026-115895

cve-icon Redhat

Severity : Important

Publid Date: 2026-10-23T21:32:24Z

Links: CVE-2026-115895 - Bugzilla

cve-icon OpenCVE Enrichment

Updated: 2026-10-23T23:30:17Z

Weaknesses
  • CWE-94

    Improper Control of Generation of Code ('Code Injection')