CVE-2026-83616
mass1XML injection via unvalidated processing-instruction target in xmldom
xmldom, a pure-JavaScript W3C XML DOM parser and serializer distributed on npm, does not validate the target argument of Document.createProcessingInstruction(), and its serializer — which emits processing instructions as "<?target data?>" — only checks the target for a colon and the reserved "xml" name on 0.9.x and performs no target check at all on 0.8.x. A target containing ">", "?", whitespace, or other invalid XML-name characters therefore breaks the processing-instruction boundary and injects attacker-controlled XML structure into the serialized output, yielding high integrity impact (CVSS 4.0: 8.7) with no direct confidentiality or availability impact. Applications that pass attacker-controlled data as the target of createProcessingInstruction and then serialize the document are exposed to malformed or re-forged XML consumed by downstream processors. All npm consumers of @xmldom/xmldom prior to 0.8.15 (0.8.x line) or prior to 0.9.12 (0.9.x line), and users of the legacy unscoped xmldom package version 0.6.0 and earlier, are affected. There is no public proof-of-concept, the flaw is not in CISA KEV, and EPSS assigns a 0.3% probability of exploitation within 30 days (28th percentile).
What to do: Upgrade @xmldom/xmldom to 0.8.15 if you are on the 0.8.x line or 0.9.12 if you are on the 0.9.x line; the legacy unscoped xmldom package has no fixed release, so migrate to the maintained @xmldom/xmldom package. Scan lockfiles and transitive dependencies (e.g., via npm audit) and review code paths where createProcessingInstruction receives attacker-controlled target values, validating the target against XML Name rules before serialization.
| xmldom project @xmldom/xmldom (npm) | all versions prior to 0.8.15 on the 0.8.x line and prior to 0.9.12 on the 0.9.x line; fixed in 0.8.15 and 0.9.12 |
| xmldom project xmldom (legacy unscoped npm package) | 0.6.0 and earlier; no fixed version available |
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, Document.createProcessingInstruction(target, data) in lib/dom.js accepts an unvalidated target, while the requireWellFormed: true serializer checks only for a colon and the reserved case-insensitive xml name on 0.9.x and performs no target check on 0.8.x. Because serialization emits , a target containing >, ?, whitespace, or another invalid XML-name character can break the processing-instruction boundary and inject XML structure. 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-91
- Vector
- CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:H/VA:N/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-c7q8-3ch8-vqpv (high)
In the news0 stories
No ingested article mentions this CVE yet.