Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessSend HTTP request with malformed PI XML
-
DeliveryDOMParser.parseFromString() invokes grammar.js PI regex
-
ExploitGreedy S+ and lazy Char*? repartition whitespace tail quadratically
-
ExecutionNode.js event loop stalls
-
ImpactAll concurrent requests denied
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A06:2025 - Insecure Design
ASVS 5.0
V2 - Validation and Business Logic Resource consumption limits
MITRE ATT&CK
1 technique across 1 tactic: Impact The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Exploitation requires that the target application uses @xmldom/xmldom in the version range 0.9.0-beta.9 through 0.9.10 and passes attacker-controlled data to DOMParser.parseFromString() under the library's default options - no non-default xmldom configuration is required. The CVSS vector PR:N/UI:N confirms no authentication and no user interaction are needed. Exploitation is limited to Node.js runtime environments (the library has no native bindings and is JavaScript-only) and strictly to the affected version range. Applications on versions prior to 0.9.0-beta.9 or on 0.9.11 and later are not affected. The key limiting factor for defenders is whether the application exposes an XML-parsing endpoint to unauthenticated or lightly authenticated callers - internal-only parsers with network-layer access controls reduce realistic exploitability despite the PR:N vector. |
| Impact | The CVSS 4.0 score of 8.7 (AV:N/AC:L/AT:N/PR:N/UI:N/VA:H) accurately characterizes a network-reachable exploit requiring no authentication, no special attack requirements, and no user interaction, with high availability impact on the vulnerable system. EPSS data was not supplied in the intelligence feed, so probabilistic exploitation likelihood cannot be quantified; however, the attack mechanism is algorithmically simple - crafting a small malformed PI element with a whitespace tail - placing effective exploit effort near zero for any developer familiar with ReDoS techniques. No CISA KEV listing is indicated, and no separately published POC has been identified, meaning this is not confirmed as actively exploited at time of analysis. The real-world risk profile is more severe than a typical library-level DoS because Node.js operates a single-threaded event loop: one stalled regex call blocks all concurrent I/O, converting a per-request parse delay into a full service outage. Services accepting external XML in the affected version range, regardless of their scale, should treat patching as urgent rather than deferring to a scheduled maintenance window. The absence of scope change (SC/SI/SA:N) correctly reflects that the impact is contained to the parsing process itself, not propagated to downstream systems. |
| Exploit ScenarioDerived | An attacker submits an HTTP request containing a small XML payload such as '<?foo ' followed by several thousand space characters and no closing ?>, targeting any endpoint that passes request body content to DOMParser.parseFromString(). The xmldom regex engine enters quadratic backtracking over the whitespace tail, blocking the Node.js event loop for seconds per request with only kilobytes of input, causing all concurrent requests to queue and the service to appear fully unresponsive. No public exploit code has been identified, but the advisory and patch diff make the attack trivially reproducible. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Sep 01, 2026
Quadratic regex backtracking in @xmldom/xmldom versions 0.9.0-beta.9 through 0.9.10 allows unauthenticated remote attackers to stall the Node.js event loop by supplying a small malformed XML document containing an unterminated processing instruction with a long whitespace tail. The flaw resides in the processing-instruction production regex in lib/grammar.js, where the greedy S+ separator and lazy Char*? data group endlessly repartition whitespace when the required closing ?> is absent, causing O(n²) backtracking in both parsePI and parseProcessingInstruction. No public exploit has been identified at time of analysis, but the fix commit and GitHub Security Advisory GHSA-g53g-w8rj-fmg7 fully document the vulnerable code path, making independent reproduction straightforward. Vendor-released patch: 0.9.11.
RemediationAI
Upgrade to @xmldom/xmldom version 0.9.11 or later via npm (npm install @xmldom/xmldom@0.9.11), confirmed by the official GitHub release at https://github.com/xmldom/xmldom/releases/tag/0.9.11 and the merged fix in PR #1039. If an immediate upgrade is blocked by dependency constraints, two compensating controls can bound exposure: first, validate or reject incoming XML at the application boundary before it reaches DOMParser.parseFromString() - specifically, reject documents where a <? sequence is not followed by a corresponding ?> within a reasonable character limit, eliminating the malformed-PI trigger with no functional impact on well-formed input; second, execute parsing inside a worker thread with a hard timeout (e.g., worker_threads with a timeout-based abort) to cap event-loop stall duration, accepting the trade-off that some large but legitimate documents may be incorrectly terminated. Neither workaround is a substitute for patching, as both add operational complexity and potential false-positive rejection of valid XML.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 2 packages in npm, euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
xmldom (@xmldom/xmldom on npm) is a pure JavaScript implementation of the W3C XML DOM Level 2 Core specification, widely used in Node.js applications to parse and serialize XML without native bindings. The root cause is CWE-400 (Uncontrolled Resource Consumption) triggered by a pathological regular expression. The processing-instruction (PI) production in lib/grammar.js combined a greedy S+ quantifier (matching whitespace separators) with a lazy Char*? group (matching PI data); when a PI element lacks its required ?> terminator, the JavaScript regex engine repeatedly attempts to split the trailing whitespace between these two groups across every possible boundary, yielding O(n²) backtracking steps proportional to the whitespace length. Both the parsePI and parseProcessingInstruction functions applied this regex to the full remaining source buffer, amplifying the effect. Affected CPE: cpe:2.3:a:xmldom:xmldom:*:*:*:*:*:*:*:* and cpe:2.3:a:@xmldom:xmldom:*:*:*:*:*:*:*:* for versions 0.9.0-beta.9 through 0.9.10. The fix (PR #1039, commit 73df6b8) inserts a negative lookahead (?!S) immediately after the S+ group, asserting that the data portion begins with a non-whitespace character and thereby eliminating the ambiguous overlap that drives backtracking.
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-reachable with no privileges or interaction required; impact is pure availability (event-loop stall); scope is unchanged as only the parsing process is affected.
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. From 0.9.0-beta.9 until 0.9.11, the processing-instruction production in lib/grammar.js lets the greedy S+ separator and lazy Char*? data group repeatedly repartition a long whitespace tail when the required closing ?> is absent. Both parsePI and parseProcessingInstruction apply the expression to the entire remaining source, causing quadratic backtracking during DOMParser.parseFromString() under default options and allowing a small unauthenticated XML input to stall the Node.js event loop. This issue is fixed in @xmldom/xmldom version 0.9.11.
Articles & Coverage 2
Technical POC Analysis
Quadratic regular-expression backtracking (CWE-400 Uncontrolled Resource Consumption, mapped by the advisory also to CWE-1333 Inefficient Regular Expression Complexity) in the processing-instruction…
Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.
Executive ViewAI
The @xmldom library versions 0.9.0-beta.9 through 0.9.10 contain a denial-of-service vulnerability exploitable by remote, unauthenticated attackers through malformed XML input. Organizations using these versions in production risk application unavailability and should immediately upgrade to version 0.9.11.
Apply vendor patch: @xmldom/xmldom 0.9.11
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
Attack Technique
Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.
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
Quadratic attribute-processing complexity in xmldom's DOMParser enables remote unauthenticated denial of service against
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
Same weakness CWE-400 – Uncontrolled Resource Consumption
View allSame technique Denial Of Service
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-69216
GHSA-g53g-w8rj-fmg7
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB