Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessIdentify XML-consuming Node.js endpoint
-
DeliveryCraft single XML element with N thousand distinct attributes
-
ExploitSubmit document via unauthenticated HTTP request
-
ExecutionNamedNodeMap performs O(N²) attribute dedup lookups
-
PersistNode.js event loop stalls
-
ImpactService unavailable to all concurrent users
Vulnerability Assessment
| Weakness |
CWE
ASVS 5.0
V2 - Validation and Business Logic Algorithmic complexity limits
|
| Exploitation Conditions | No special conditions are required beyond the target application using @xmldom/xmldom prior to 0.8.15/0.9.12 or any version of the legacy xmldom package to parse XML originating from attacker-controllable input. The CVSS 4.0 vector AV:N/AC:L/AT:N/PR:N/UI:N confirms remote unauthenticated exploitation against default configurations. Exploitation is strictly limited to availability impact (event loop stall / denial of service); CVSS VC:N/VI:N confirms no confidentiality or integrity impact is possible. The stall magnitude scales with N² where N is the attribute count; on typical Node.js hardware, several thousand distinct attributes per element suffice for a perceptible stall. Applications that parse XML in a dedicated worker thread, or that enforce hard document-size or attribute-count caps before calling parseFromString, partially limit the blast radius but do not eliminate the vulnerability. |
| Impact | The CVSS 4.0 score of 8.7 with vector AV:N/AC:L/AT:N/PR:N/UI:N/VA:H accurately characterizes the threat: no authentication, no configuration precondition, and no user interaction are required - any network path to an XML-consuming endpoint is sufficient. In Node.js, blocking the event loop is especially severe because it freezes all concurrent request handling, making a single malicious request capable of producing application-wide unavailability. No EPSS data was supplied in the input; without it, empirical exploitation probability cannot be stated, but the attack surface is broad (any HTTP API accepting XML, SOAP services, XML-based configuration processors) and the trigger condition is trivially met. The absence of a CISA KEV entry and the lack of observed public POC code suggest exploitation has not yet been observed at scale, though the advisory detail is sufficient for any competent attacker to weaponize. The legacy xmldom package will never receive a patch, creating a permanent risk for downstream consumers who have not migrated. |
| Exploit ScenarioDerived | An attacker identifies an HTTP API endpoint that accepts XML payloads and is backed by a Node.js service using an affected xmldom version. The attacker submits a single HTTP request containing a valid XML document with one element bearing several thousand distinct attribute names. The parser begins attribute insertion, triggering millions of O(N²) linear lookups inside NamedNodeMap before the application's input validation layer is reached, stalling the event loop for seconds to minutes and preventing the process from handling any other request during that window. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Sep 01, 2026
Quadratic attribute-processing complexity in xmldom's DOMParser enables remote unauthenticated denial of service against any Node.js application that parses externally supplied XML. When a well-formed XML element contains many distinct attributes, DOMHandler.startElement repeatedly calls NamedNodeMap.setNamedItem, which in turn performs a full linear scan of previously inserted attributes on each insertion - producing O(N²) comparisons for N attributes and stalling the Node.js event loop before any application-level validation can execute. @xmldom/xmldom 0.8.15 and 0.9.12 contain the fix; the legacy xmldom package (≤0.6.0) has no patch and will not receive one. No public exploit has been identified at time of analysis, though the attack is trivially constructable from the published advisory alone.
RemediationAI
For @xmldom/xmldom users, upgrade to version 0.8.15 (0.8.x branch) or 0.9.12 (0.9.x branch), both confirmed released at https://github.com/xmldom/xmldom/releases/tag/0.8.15 and https://github.com/xmldom/xmldom/releases/tag/0.9.12; the fix replaces the O(N²) linear dedup scan with a null-prototype index at O(N) with byte-identical output. For users of the unmaintained legacy xmldom package (≤0.6.0), no vendor-released patch exists - migration to @xmldom/xmldom 0.8.15 or 0.9.12 is the only fully effective remediation. If immediate migration is blocked, apply attribute-count or document-size limits before invoking the parser (side effect: may reject legitimate large XML); alternatively, offload parsing to a Node.js worker thread to isolate event loop impact, which does not prevent the DoS but confines it to the worker rather than blocking the main thread. Rate-limiting XML submission endpoints reduces attack surface but does not eliminate it.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 2 packages in npm
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
The affected library is a pure JavaScript, W3C DOM Level 2 Core-compliant XML parser and serializer, identified by CPEs cpe:2.3:a:xmldom:xmldom:*:*:*:*:*:*:*:* (legacy package) and cpe:2.3:a:@xmldom:xmldom:*:*:*:*:*:*:*:* (maintained fork). The root cause is CWE-407 (Insufficient Algorithmic Complexity): lib/dom-parser.js calls setAttributeNode for every attribute in a parsed element, and lib/dom.js implements NamedNodeMap.setNamedItem with a getNamedItem/getNamedItemNS linear scan over existing attributes to enforce uniqueness before each insertion. For M distinct attributes on one element, parsing cost is O(1) + O(2) + … + O(M) = O(M²). The fix confirmed in PRs #1071 and #1072 replaces the linear scan with a null-prototype membership index, reducing complexity to O(M). The stall occurs inside DOMParser.parseFromString before any user-supplied validation callback runs, meaning application-layer defenses fire too late.
Know when Xmldom gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
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
Network-delivered XML triggers the stall with no auth, no complexity, and no interaction; impact is pure availability with unchanged scope.
AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
2DescriptionCVE.org
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 version 0.6.0 and earlier, DOMHandler.startElement in lib/dom-parser.js inserts every parsed attribute through setAttributeNode, while NamedNodeMap.setNamedItem in lib/dom.js calls the linear getNamedItem or getNamedItemNS lookup for each insertion. A well-formed element with many distinct attributes therefore requires quadratic comparisons during DOMParser.parseFromString() and can stall a Node.js event loop 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.
Blast Radius
ecosystem impact- 16 npm packages depend on @xmldom/xmldom (9 direct, 7 indirect)
- 2,014 npm packages depend on xmldom (861 direct, 1,179 indirect)
Ecosystem-wide dependent count for version 0.7.0 and other introduced versions.
Articles & Coverage 2
Technical POC Analysis
CWE-407 (inefficient algorithmic complexity).
Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.
Executive ViewAI
Node.js applications using the xmldom library face denial of service risks from specially crafted XML input that can overwhelm server processing capacity. This affects both legacy xmldom versions and the newer @xmldom/xmldom package, requiring immediate remediation of external XML parsing paths. Organizations running internet-facing services that accept XML documents need to prioritize patching and dependency audits within days to prevent operational outages.
For @xmldom/xmldom: Apply vendor patch by upgrading to version 0.8.15 or 0.9.12 immediately. For legacy xmldom: No vendor-released patch will be provided. Implement interim mitigations including strict XML input validation against schema, rate limiting on XML processing endpoints, resource quotas for parser operations, and priority migration to patched @xmldom/xmldom versions or alternative XML libraries such as fast-xml-parser with resource constraints.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
xmldom is a pure JavaScript W3C standard-based (XML DOM Level 2 Core) `DOMParser` and `XMLSerializer` module. Rated crit
XML injection via EntityReference in xmldom enables attacker-controlled XML markup to escape entity-reference boundaries
A prototype pollution vulnerability exists in the function copy in dom.js in the xmldom (published as @xmldom/xmldom) pa
Quadratic namespace-map allocation in xmldom's SAX parser allows unauthenticated remote attackers to exhaust the Node.js
Two independent quadratic-complexity denial-of-service paths in the xmldom JavaScript XML parser allow remote unauthenti
Processing-instruction target injection in the @xmldom/xmldom JavaScript library allows XML structure breakout through u
XML injection in the xmldom serializer allows a crafted DocumentType.name containing '>' or whitespace to prematurely cl
XML injection and cross-site scripting in the xmldom JavaScript library allows attacker-controlled tag names to be injec
XML injection in the xmldom JavaScript library allows crafted attribute names to break out of attribute context during s
XML injection in @xmldom/xmldom versions 0.9.10 and 0.9.11 bypasses the requireWellFormed serializer's DocumentType vali
XML injection in @xmldom/xmldom 0.9.11 allows attackers who supply crafted element or attribute names containing ECMAScr
XML injection in @xmldom/xmldom 0.9.0-0.9.11 allows an attacker to embed malicious markup into serialized XML output by
Same weakness CWE-407 – Inefficient Algorithmic Complexity
View allVendor StatusVendor
SUSE
Severity: Important| Product | Status |
|---|---|
| SUSE Linux Enterprise Desktop 15 SP7 | Not-Affected |
| SUSE Linux Enterprise Module for Python 3 15 SP7 | Not-Affected |
| SUSE Linux Enterprise Server 15 SP7 | Not-Affected |
| SUSE Linux Enterprise Server for SAP Applications 15 SP7 | Not-Affected |
| SUSE Linux Enterprise High Performance Computing 15 SP4-LTSS | Affected |
| SUSE Linux Enterprise High Performance Computing 15 SP5 | Affected |
| SUSE Linux Enterprise High Performance Computing 15 SP5-LTSS | Affected |
| SUSE Linux Enterprise Module for Python 3 15 SP6 | Affected |
| SUSE Linux Enterprise Module for Server Applications 15 SP4 | Affected |
| SUSE Linux Enterprise Module for Server Applications 15 SP5 | Affected |
| SUSE Linux Enterprise Server 15 SP4 | Affected |
| SUSE Linux Enterprise Server 15 SP4-LTSS | Affected |
| SUSE Linux Enterprise Server 15 SP5 | Affected |
| SUSE Linux Enterprise Server 15 SP5-LTSS | Affected |
| SUSE Linux Enterprise Server 15 SP6 | Affected |
| SUSE Linux Enterprise Server 15 SP6-LTSS | Not-Affected |
| SUSE Linux Enterprise Server for SAP Applications 15 SP4 | Affected |
| SUSE Linux Enterprise Server for SAP Applications 15 SP5 | Affected |
| SUSE Linux Enterprise Server for SAP Applications 15 SP6 | Not-Affected |
| SUSE CaaS Platform 4.0 | Not-Affected |
| SUSE Enterprise Storage 6 | Not-Affected |
| SUSE Enterprise Storage 7 | Not-Affected |
| SUSE Enterprise Storage 7.1 | Affected |
| SUSE Linux Enterprise Desktop 15 SP6 | Affected |
| SUSE Linux Enterprise High Performance Computing 15 SP1 | Not-Affected |
| SUSE Linux Enterprise High Performance Computing 15 SP1-ESPOS | Not-Affected |
| SUSE Linux Enterprise High Performance Computing 15 SP1-LTSS | Not-Affected |
| SUSE Linux Enterprise High Performance Computing 15 SP2 | Not-Affected |
| SUSE Linux Enterprise High Performance Computing 15 SP2-ESPOS | Not-Affected |
| SUSE Linux Enterprise High Performance Computing 15 SP2-LTSS | Not-Affected |
| SUSE Linux Enterprise High Performance Computing 15 SP3 | Affected |
| SUSE Linux Enterprise High Performance Computing 15 SP3-ESPOS | Affected |
| SUSE Linux Enterprise High Performance Computing 15 SP3-LTSS | Affected |
| SUSE Linux Enterprise High Performance Computing 15 SP4 | Affected |
| SUSE Linux Enterprise High Performance Computing 15 SP4-ESPOS | Affected |
| SUSE Linux Enterprise High Performance Computing 15 SP5-ESPOS | Affected |
| SUSE Linux Enterprise Module for Server Applications 15 SP1 | Not-Affected |
| SUSE Linux Enterprise Module for Server Applications 15 SP2 | Not-Affected |
| SUSE Linux Enterprise Module for Server Applications 15 SP3 | Affected |
| SUSE Linux Enterprise Real Time 15 SP2 | Not-Affected |
| SUSE Linux Enterprise Real Time 15 SP3 | Affected |
| SUSE Linux Enterprise Real Time 15 SP4 | Affected |
| SUSE Linux Enterprise Server 15 SP1 | Not-Affected |
| SUSE Linux Enterprise Server 15 SP1-BCL | Not-Affected |
| SUSE Linux Enterprise Server 15 SP1-LTSS | Not-Affected |
| SUSE Linux Enterprise Server 15 SP2 | Not-Affected |
| SUSE Linux Enterprise Server 15 SP2-BCL | Not-Affected |
| SUSE Linux Enterprise Server 15 SP2-LTSS | Not-Affected |
| SUSE Linux Enterprise Server 15 SP3 | Affected |
| SUSE Linux Enterprise Server 15 SP3-BCL | Affected |
| SUSE Linux Enterprise Server 15 SP3-LTSS | Affected |
| SUSE Linux Enterprise Server for SAP Applications 15 SP1 | Not-Affected |
| SUSE Linux Enterprise Server for SAP Applications 15 SP2 | Not-Affected |
| SUSE Linux Enterprise Server for SAP Applications 15 SP3 | Affected |
| SUSE Manager Proxy 4.0 | Not-Affected |
| SUSE Manager Proxy 4.1 | Not-Affected |
| SUSE Manager Proxy 4.2 | Affected |
| SUSE Manager Proxy 4.3 | Affected |
| SUSE Manager Proxy LTS 4.3 | Affected |
| SUSE Manager Retail Branch Server 4.0 | Not-Affected |
| SUSE Manager Retail Branch Server 4.1 | Not-Affected |
| SUSE Manager Retail Branch Server 4.2 | Affected |
| SUSE Manager Retail Branch Server 4.3 | Affected |
| SUSE Manager Retail Branch Server LTS 4.3 | Affected |
| SUSE Manager Server 4.0 | Not-Affected |
| SUSE Manager Server 4.1 | Not-Affected |
| SUSE Manager Server 4.2 | Affected |
| SUSE Manager Server 4.3 | Affected |
| SUSE Manager Server LTS 4.3 | Affected |
| openSUSE Leap 15.3 | Affected |
| openSUSE Leap 15.4 | Affected |
| openSUSE Leap 15.5 | Affected |
| openSUSE Leap 15.6 | Not-Affected |
EUVD-2026-69231
GHSA-8344-3jmq-59r6
NVD
CVE.org
EPSS
Vulnrichment
VulDB
Exploit-DB