Skip to main content

xmldom CVE-2026-83613

| EUVDEUVD-2026-69231 HIGH
Inefficient Algorithmic Complexity (CWE-407)
2026-09-01 GitHub_M GHSA-8344-3jmq-59r6
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
    Identify XML-consuming Node.js endpoint
  2. Delivery
    Craft single XML element with N thousand distinct attributes
  3. Exploit
    Submit document via unauthenticated HTTP request
  4. Execution
    NamedNodeMap performs O(N²) attribute dedup lookups
  5. Persist
    Node.js event loop stalls
  6. Impact
    Service 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.

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

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

xmldom 0.7.0, < 0.8.15
xmldom 0.9.0, < 0.9.12
xmldom ≤ 0.6.0

Affected Packages

npm @xmldom/xmldom fix: 0.8.15, 0.9.12
npm xmldom fix: 0.8.15, 0.9.12

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

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-delivered XML triggers the stall with no auth, no complexity, and no interaction; impact is pure availability with unchanged scope.

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:38 cve.org
HIGH 8.7

DescriptionCVE.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
† from your stack dependencies † transitive graph · vuln.today resolves 4-path depth
  • 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.

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

Why It Matters

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.

Business Impact: High
Compensating Controls

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

EPSS Score
0.3%
Top 74% exploitable
Prevalence
High
popular Node.js XML parser, tens of millions of weekly npm downloads
Threat Intel
1
1 sources
Exploit
POC
Public exploit code exists
Data Quality
8 sources
Confidence: High
EUVD NVD CVE.org EPSS Vulnrichment GHSA MSRC Vendor GitHub VulDB

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
Out-of-Cycle
Exploitation
Poc
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

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-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

CVE-2026-83609 HIGH POC
8.7 Sep 01

XML injection in @xmldom/xmldom 0.9.0-0.9.11 allows an attacker to embed malicious markup into serialized XML output by

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