Description
xmldom’s malformed-input error-recovery path has two quadratic-time (O(n²)) behaviors that a single crafted input triggers together, so a tiny, highly compressible document (tens of KB) stalls the Node.js event loop for multiple seconds. It is reachable from DOMParser.parseFromString under default options — i.e.
Recommendation
Update the @xmldom/xmldom package to the latest compatible version. Followings are version details:
Affected version(s): **>= 0.9.0, <= 0.9.11 >= 0.7.0, <= 0.8.14** Patched version(s): **0.9.12 0.8.15**
References
Could your website be exposed too?
SmartScanner can check your website for xmldom: Quadratic-time parsing via the malformed-input recovery path — `parseElementStartPart` re-scan and `normalize()` and gives you actionable findings to investigate.
Start a free scanRelated Issues
- xmldom: Quadratic-time parsing via the malformed-input recovery path — `parseElementStartPart` re-scan and `normalize()` - xmldom - CVE-2026-83614
- xmldom: Quadratic-time attribute deduplication - CVE-2026-83613
- xmldom: Creation-time XML Name/QName validation is bypassable via an embedded line terminator, allowing injection on the - CVE-2026-83609
- markdown-it: Quadratic-time denial of service in inline HTML parsing with html enabled - CVE-2026-111766


