CVE-2026-83613
massQuadratic Algorithmic Complexity DoS in xmldom XML Parser (npm)
CVE-2026-83613 is an algorithmic complexity denial-of-service flaw (CWE-407) in the xmldom XML parser for Node.js. When DOMParser.parseFromString() processes a well-formed element containing many distinct attributes, DOMHandler.startElement inserts each attribute via setAttributeNode, and NamedNodeMap.setNamedItem performs a linear getNamedItem/getNamedItemNS lookup per insertion, producing quadratic work. An attacker who can supply crafted XML can therefore stall the Node.js event loop and exhaust CPU, causing denial of service; per the CVSS 4.0 vector the impact is availability only (VA:H, no confidentiality or integrity impact). Any application in the npm ecosystem parsing untrusted XML with affected versions is exposed: the legacy xmldom package at version 0.6.0 and earlier (no fixed release available) and @xmldom/xmldom prior to 0.8.15 and prior to 0.9.12. No public proof-of-concept, CISA KEV listing, or reported in-the-wild exploitation is known; EPSS estimates only a 0.3% probability of exploitation in the next 30 days.
What to do: Upgrade @xmldom/xmldom to 0.8.15 or 0.9.12 (or the latest 0.9.x release); for the legacy xmldom package no patched version exists, so migrate to @xmldom/xmldom. Until patched, restrict or sanitize untrusted XML before parsing, cap the number of attributes per element, or move parsing into a worker/child process so a crafted document cannot stall the main event loop. Audit package-lock files and dependency trees for xmldom/@xmldom/xmldom to identify affected deployments.
| xmldom project (npm package: xmldom) xmldom (legacy package) | 0.6.0 and earlier; no fixed version available |
| xmldom project (npm package: @xmldom/xmldom) @xmldom/xmldom | Prior to 0.8.15 (0.8.x line) and prior to 0.9.12 (0.9.x line) |
Order-of-magnitude estimate by the model from install counts, market share and public scan data it knows; verify before quoting.
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.
- Ecosystems
- npm
- Weakness
- CWE-407
- 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-8344-3jmq-59r6 (high)
In the news0 stories
No ingested article mentions this CVE yet.