Skip to main content

xmldom CVE-2026-83619

| EUVDEUVD-2026-69248 HIGH
Uncontrolled Resource Consumption (CWE-400)
2026-09-01 GitHub_M GHSA-x4fp-j954-r2f4
8.7
CVSS 4.0 · Vendor: GitHub_M
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Craft XML with long-whitespace-run end tag
  2. Delivery
    Submit payload to xmldom-parsing HTTP endpoint
  3. Exploit
    DOMParser.parseFromString() invokes 0.8.x SAX parser
  4. Execution
    Unanchored regex retries quadratically across whitespace positions
  5. Persist
    Node.js event loop stalls
  6. Impact
    Service-wide availability disruption

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

The target application must use @xmldom/xmldom at a version between 0.7.0 and 0.8.14 and must pass attacker-controlled content to DOMParser.parseFromString() under default parser options - no special non-default configuration is required on the xmldom side. The crafted payload must contain an XML end tag with a long run of ASCII whitespace characters (spaces, tabs, newlines, or carriage returns) immediately followed by at least one non-whitespace character, which triggers the unanchored regex's quadratic retry loop. No authentication is required - CVSS PR:N confirms any unauthenticated HTTP endpoint, webhook receiver, or file-upload handler that parses XML with affected xmldom versions is vulnerable. Exploitation is bounded by: (1) the 0.8.x release line only - 0.9.x and unscoped npm do not contain the vulnerable expression; (2) impact is purely availability - no code execution, data exfiltration, or integrity compromise is possible; and (3) applications that enforce strict payload size limits or XML structural pre-validation upstream of xmldom can reduce but not eliminate exposure without patching.

Impact

The CVSS 4.0 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 yields a score of 8.7, representing the highest realistic risk tier for a DoS-only vulnerability: network-reachable, no authentication, no special attack requirements, no user interaction. Real-world priority is significant for any Node.js application that exposes an endpoint accepting XML and processes it with affected xmldom versions, since complete event loop stall causes total service disruption rather than degraded throughput. The attack is highly automatable: a single short XML string suffices and can be replayed at negligible bandwidth. Mitigating factors include: impact is limited strictly to availability with no confidentiality or integrity exposure; exploitation is not confirmed in CISA KEV; and no public proof-of-concept code is present in the provided intelligence. EPSS data is absent from the supplied data, so probabilistic exploitation likelihood cannot be quantified. Applications that validate XML payload length upstream of the parser or that offload xmldom parsing to a worker thread with a timeout substantially reduce exposure without patching.

Exploit ScenarioDerived

An attacker sends a small HTTP POST body containing a valid XML document whose closing element tag embeds several hundred whitespace characters followed by a trailing non-whitespace byte - for example, </tag[300 spaces]x> - to any endpoint that passes the raw body into DOMParser.parseFromString(). The V8 regex engine backtracks quadratically through the whitespace run, stalling the Node.js event loop for seconds to minutes and causing all concurrent requests to time out; the attack requires no authentication and can be sustained from a single low-bandwidth connection.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available 0.3% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Sep 01, 2026

ReDoS in @xmldom/xmldom versions 0.7.0 through 0.8.14 allows remote unauthenticated attackers to stall the Node.js event loop by submitting a small crafted XML document containing a malformed end tag. The SAX parser in lib/sax.js uses an unanchored global regex /[ \t\n\r]+$/g to trim end-tag names; a tag with N whitespace characters followed by one non-whitespace character causes the engine to retry the match from every character position with O(N) backtracking per position, yielding O(N²) total work that blocks the single-threaded event loop. No public exploit code or CISA KEV listing is identified at time of analysis, but the CVSS 4.0 score of 8.7 with VA:H and PR:N reflects the severity of unauthenticated, network-reachable availability impact.

RemediationAI

The primary fix is to upgrade @xmldom/xmldom to version 0.8.15, which replaces the unanchored global regex with an anchored linear-time expression, producing byte-identical trimmed output with no behavioral change for well-formed documents. The patched release is confirmed at https://github.com/xmldom/xmldom/releases/tag/0.8.15 and the security advisory at https://github.com/xmldom/xmldom/security/advisories/GHSA-x4fp-j954-r2f4; the fixing commit is https://github.com/xmldom/xmldom/commit/3abb0934f5a8a84d83a1f9cde0f2bd04c08b2a09. If immediate patching is not feasible, enforce a strict maximum byte length on XML payloads at the HTTP or application layer before they reach DOMParser.parseFromString() - note this reduces but does not eliminate risk since a short payload can still embed a long whitespace run in a single end tag. A more robust compensating control is to parse XML inside a Node.js worker_thread with a hard timeout that terminates the thread on expiration, preventing event loop blockage at the cost of added per-request latency and infrastructure complexity. Applications that cannot patch and cannot absorb the worker_thread overhead should evaluate migrating to the 0.9.x branch if API compatibility permits.

Affected VersionsENISA

xmldom 0.7.0, < 0.8.15

Affected Packages

npm @xmldom/xmldom fix: 0.8.15
euvd xmldom_0_7_0 fix: 0.8.15

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 is a pure-JavaScript W3C DOM Level 2 Core implementation providing DOMParser and XMLSerializer for Node.js, scoped as @xmldom/xmldom on npm. The flaw is a classic ReDoS (Regular Expression Denial of Service) under CWE-400 (Uncontrolled Resource Consumption). In the 0.8.x release line's lib/sax.js, the regex /[ \t\n\r]+$/g is applied without a start anchor to trim trailing whitespace from captured XML end-tag names. With the global flag, the JavaScript engine (V8 Irregexp) retries the match from each successive character position; at each starting position, the greedy quantifier consumes available whitespace characters one by one, then backtracks step-by-step when the end anchor fails to match. For a payload of N whitespace characters followed by one non-whitespace character, work is N + (N-1) + ... + 1 = O(N²). Because Node.js runs on a single-threaded event loop, blocking the regex engine for hundreds of milliseconds prevents all I/O callbacks from executing, taking down the service. The CPE identifiers cpe:2.3:a:xmldom:xmldom:* and cpe:2.3:a:@xmldom:xmldom:* both map to this package; affected versions are 0.7.0 through 0.8.14 inclusive. The 0.9.x branch and the legacy unscoped 'xmldom' npm package are confirmed by the CVE description not to contain the vulnerable expression.

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

Vendor (GitHub_M) PRIMARY 8.7 HIGH
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
vuln.today AI 7.5 HIGH

Network-reachable with no authentication or interaction via any XML-accepting endpoint; sole impact is high availability via event loop stall with no scope change.

3.1 AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
4.0 AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N
SUSE 7.5 HIGH
AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
Red Hat 7.5 HIGH

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

Attack Vector
Network
Attack Complexity
Low
Attack Requirements
None
Privileges Required
None
User Interaction
None
Vulnerable system: Confidentiality
None
Vulnerable system: Integrity
None
Vulnerable system: Availability
High
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

Lifecycle Timeline

2
Patch available
Sep 01, 2026 - 16:02 EUVD
CVE Published
Sep 01, 2026 - 14:51 cve.org
HIGH 8.7

DescriptionCVE.org

xmldom is a pure JavaScript W3C standard-based (XML DOM Level 2 Core) DOMParser and XMLSerializer module. From 0.7.0 until 0.8.15, the release-0.8.x parser in lib/sax.js trims captured end-tag names with the unanchored global expression /[ \t\n\r]+$/g. For an end tag containing a long whitespace run followed by a non-whitespace character, the expression retries from each possible starting position and backtracks quadratically before failing its end anchor. DOMParser.parseFromString() reaches the path under default options, allowing a small unauthenticated XML input to stall the Node.js event loop; the 0.9.x and unscoped npm lines do not contain this expression. This issue is fixed in @xmldom/xmldom version 0.8.15.

Blast Radius

ecosystem impact
† from your stack dependencies † transitive graph · vuln.today resolves 4-path depth
  • 16 npm packages depend on @xmldom/xmldom (9 direct, 7 indirect)

Ecosystem-wide dependent count for version 0.7.0.

Technical POC Analysis

CWE-1333 Inefficient Regular Expression Complexity, surfaced as CWE-400 Uncontrolled Resource Consumption.

Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.

Executive ViewAI

Why It Matters

@xmldom/xmldom versions 0.7.0 through 0.8.14 are vulnerable to a denial-of-service attack that allows unauthenticated remote attackers to stall Node.js event loops by submitting crafted XML documents. While no public exploit is identified at time of analysis, the vulnerability is network-reachable and requires no authentication, making any production deployment using these versions a potential availability risk. Organizations must act immediately to identify and remediate affected systems as no vendor patch is currently available.

Business Impact: High
Compensating Controls

Implement strict XML input validation to reject malformed end tags and enforce rigorous document size limits on all XML parsing operations. Configure rate limiting on XML parsing endpoints to prevent event loop stalls. Deploy Web Application Firewall (WAF) rules to detect and block requests with suspicious XML structures. Establish timeout configurations on XML parsing operations to fail safely. Monitor vendor advisories for patch releases and consider migrating to alternative XML parsing libraries with active security maintenance.

Threat Intelligence Overview

EPSS Score
0.3%
Top 78% exploitable
Prevalence
Medium
popular Node.js XML parsing library, not universally deployed
Threat Intel
1
1 sources
Exploit
POC
Public exploit code exists
Data Quality
7 sources
Confidence: High
EUVD NVD CVE.org EPSS Vulnrichment GHSA MSRC Vendor GitHub

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.

SignalValue
Severity HIGH
CISA KEV No
Public POC Yes
EPSS 0.3%
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
Yes
Human Impact
High
Technical Impact
Partial

Priority Score

64
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +44
PoC: +20
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.

More in Xmldom

View all
CVE-2022-39353 CRITICAL POC
9.8 Nov 02

xmldom is a pure JavaScript W3C standard-based (XML DOM Level 2 Core) `DOMParser` and `XMLSerializer` module. Rated crit

CVE-2026-83610 MEDIUM POC
6.3 Sep 01

XML injection via EntityReference in xmldom enables attacker-controlled XML markup to escape entity-reference boundaries

CVE-2022-37616 CRITICAL
9.8 Oct 11

A prototype pollution vulnerability exists in the function copy in dom.js in the xmldom (published as @xmldom/xmldom) pa

CVE-2026-83615 HIGH POC
8.7 Sep 01

Quadratic namespace-map allocation in xmldom's SAX parser allows unauthenticated remote attackers to exhaust the Node.js

CVE-2026-83614 HIGH POC
8.7 Sep 01

Two independent quadratic-complexity denial-of-service paths in the xmldom JavaScript XML parser allow remote unauthenti

CVE-2026-83616 HIGH POC
8.7 Sep 01

Processing-instruction target injection in the @xmldom/xmldom JavaScript library allows XML structure breakout through u

CVE-2026-83608 HIGH POC
8.7 Sep 01

XML injection in the xmldom serializer allows a crafted DocumentType.name containing '>' or whitespace to prematurely cl

CVE-2026-83607 HIGH POC
8.7 Sep 01

XML injection and cross-site scripting in the xmldom JavaScript library allows attacker-controlled tag names to be injec

CVE-2026-83605 HIGH POC
8.7 Sep 01

XML injection in the xmldom JavaScript library allows crafted attribute names to break out of attribute context during s

CVE-2026-83613 HIGH POC
8.7 Sep 01

Quadratic attribute-processing complexity in xmldom's DOMParser enables remote unauthenticated denial of service against

CVE-2026-83618 HIGH POC
8.7 Sep 01

XML injection in @xmldom/xmldom versions 0.9.10 and 0.9.11 bypasses the requireWellFormed serializer's DocumentType vali

CVE-2026-83617 HIGH POC
8.7 Sep 01

XML injection in @xmldom/xmldom 0.9.11 allows attackers who supply crafted element or attribute names containing ECMAScr

Vendor 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

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy