ZeroHour

CVE-2026-83615

mass

Memory-exhaustion DoS in xmldom XML parser via quadratic namespace-map cloning

CVSS 4.0
8.7 high
EPSS
<1%p28
Published
()
Modified
AI analysis

xmldom's SAX event handler (appendElement in lib/sax.js) clones the entire current namespace map for every nested element that declares a new namespace prefix, keeping every ancestor's map alive on the parse stack and producing quadratic peak memory usage during parsing (CWE-770). A remote, unauthenticated attacker can trigger this by supplying a small but deeply nested XML document with many namespace-prefix declarations to any application that parses it with a vulnerable version of the library, exhausting the process heap before application-level validation can run. The impact is denial of service only, reflected in the CVSS 4.0 score of 8.7 (High) with high availability impact and no confidentiality or integrity impact. Any JavaScript application or service bundling @xmldom/xmldom prior to 0.8.15 or 0.9.12, or the legacy xmldom package versions 0.1.5 through 0.6.0 (which has no fixed release), and that parses untrusted XML is affected; exploitation has not been observed (EPSS 0.4%, not in CISA KEV, no public PoC).

What to do: Upgrade to @xmldom/xmldom 0.8.15 or 0.9.12 (matching your current release line) and, if you use the legacy xmldom package (0.1.5-0.6.0), migrate to the maintained @xmldom/xmldom package since no fixed version exists for it. Until patched, bound XML input size and nesting/namespace-declaration depth for untrusted XML and monitor services for memory-exhaustion crashes. Audit your dependency tree and lockfiles (e.g. npm ls xmldom @xmldom/xmldom) for transitive exposure.

Affected
xmldom project (npm) @xmldom/xmldomall versions prior to 0.8.15 and prior to 0.9.12
xmldom project (npm) xmldom (legacy package)0.1.5 through 0.6.0 (no fixed version available)
Estimated exposure
masstens of millions of weekly npm downloads across the xmldom packages, i.e. millions of dependent projects (estimate); count of deployments actually parsing… — Based on public npm registry usage: @xmldom/xmldom and the legacy xmldom package are foundational, heavily transitively depended-upon XML parsing libraries in the JavaScript ecosystem, though only services that feed untrusted XML to the…

Order-of-magnitude estimate by the model from install counts, market share and public scan data it knows; verify before quoting.

Description

xmldom is a pure JavaScript W3C standard-based (XML DOM Level 2 Core) DOMParser and XMLSerializer module. Prior to @xmldom/xmldom versions 0.8.15 and 0.9.12, and in xmldom versions 0.1.5 through 0.6.0, appendElement in lib/sax.js uses _copy to clone the complete currentNSMap for each nested element that declares a new namespace prefix. Keeping every ancestor map live on the parse stack creates quadratic peak namespace-map storage, so a small highly compressible XML document can exhaust the process heap before application validation. This issue is fixed in @xmldom/xmldom versions 0.8.15 and 0.9.12; no fixed version is available for xmldom.

Ecosystems
npm
Weakness
CWE-770
Vector
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
GHSA
GHSA-965w-775f-mr7g (high)

In the news

No ingested article mentions this CVE yet.