Quick answers
- Is CVE-2026-83608 exploited in the wild?
- No. Junglewise Threat Intelligence has no report of CVE-2026-83608 being exploited in the wild.
- How severe is CVE-2026-83608?
- High severity, with a CVSS score of 4, published 1 September 2026.
- Which products and versions are affected?
- @xmldom/xmldom (npm) SEMVER:introduced=0.7.0,fixed=0.8.15; xmldom (npm) SEMVER:introduced=0,last_affected=0.6.0.
- Is there a fix for CVE-2026-83608?
- Yes. @xmldom/xmldom (npm): upgrade to 0.8.15 or later. Junglewise finds every place you run it, drafts the upgrade and applies it once you approve.
- How is CVE-2026-83608 attacked?
- It is attacked with local access, in a software library.
- Am I affected by CVE-2026-83608?
- Check whether you run @xmldom/xmldom (npm) or xmldom (npm) at an affected version. Junglewise does that check for you around the clock: connect your code, cloud and domains, and it matches new vulnerabilities like this one against what you actually run and tells you when one reaches you.
How to fix
- @xmldom/xmldom (npm): upgrade to 0.8.15 or later
npm install @xmldom/xmldom@0.8.15
Technical details
This is an XML markup injection vulnerability in the serialization logic of the xmldom DOM implementation. The `XMLSerializer.serializeToString()` method emits a DocumentType node's `name` field directly into the `<!DOCTYPE ...>` declaration without any well-formedness validation, even when `requireWellFormed: true` is specified. An attacker can craft a malicious name (e.g., `html><script>alert(1)</script`) that breaks out of the DOCTYPE declaration via a `>` character, injecting sibling elements or comments. The vulnerability stems from incomplete hardening in a prior fix (GHSA-f6ww-3ggp-fr8h): that fix validated `publicId`, `systemId`, and `internalSubset` fields but omitted the `name` field. On 0.8.x and the legacy unscoped `xmldom` package, the name is also unvalidated at DocumentType creation time, allowing direct injection via `createDocumentType()`. On 0.9.x, the name is validated at creation but left writable, so an attacker can bypass creation-time checks via direct property assignment. The fix adds validation of the name field under `requireWellFormed: true`, throwing `InvalidStateError` if it violates the XML Name production, but protection remains opt-in and not automatic.
Affected products
- xmldom @xmldom/xmldom 0.7.0–0.8.14, 0.9.0–0.9.11
- xmldom xmldom ≤ 0.6.0 (unscoped, no patch available)
Identifiers
- CVE-2026-83608
- GHSA-27p8-2357-5qqv
Timeline
- 2026-08-21: disclosed: Vulnerability published in GitHub Advisory Database
- 2026-09-08: advisory: Advisory updated; fix released for @xmldom/xmldom 0.8.15 and 0.9.12