CVE-2026-66295 json
Processing instruction target and content emitted unescaped in Saxy encoder allows XML injection
published 2026-11-06 2 d ago modified 2026-11-06 2 d ago also EEF-CVE-2026-66295 , GHSA-f9r9-vrxq-g566 , EUVD-2026-118038
- cvss
- 2.1
- version 4.0, CNA
- cisa kev
- Not listed
- not in CISA's catalog
- epss
- 0.2%
- EPSS 0.2% chance of exploitation in 30 days, percentile 6%
- public exploits
- 0
- none known
Summary
Saxy's XML encoder writes the target and the content of a processing instruction into the output document verbatim, without validation or escaping. The encoder builds the construct by concatenating both fields between <? and ?>, so neither field is checked against the constraints the XML specification places on it.
Because ?> terminates a processing instruction, a target or content value containing that sequence closes the construct at a position the attacker chooses. Everything the attacker writes after it is emitted as ordinary markup at document level, which allows arbitrary elements, attributes, and further processing instructions to be injected into the serialized document. Appending a matching <? keeps the encoder's own terminator well-formed, so the result still parses and the injection is silent rather than a visible corruption. The target is additionally unconstrained by the XML Name production, which permits injection before the remainder of the processing instruction.
The result is XML injection into a serialized document: the tree the application asks Saxy to encode and the tree a downstream parser reads back are no longer the same. Character data, attribute values, and comments are all escaped by the encoder, so processing instructions are the one construct that passes user bytes through untouched. Since Saxy.XML.processing_instruction/2 is a documented public builder, an application inherits the flaw without misusing the API. The consequences depend on what consumes the XML: forged records in a feed or export read by another system, injected stylesheet or rendering directives, or active content where the output is served to a browser as XML or SVG.
This issue affects saxy: from 0.7.0 before 1.7.0.
Patch / fix
- hex saxy 1.7.0
- qcam saxy 1.7.0
- github.com/qcam/saxy@7266632 commit
- github.com/qcam/saxy@4aeb80e commit
Exploit prediction
0.17% chance of exploitation in the next 30 days, higher than 6% of all scored CVEs (FIRST EPSS, 2026-11-08).
CVSS scores
| assigned by | version | score | vector |
|---|---|---|---|
| CNA | 4.0 | 2.1 | CVSS:4.0/AV:L/AC:L/AT:P/PR:N/UI:N/VC:N/VI:L/VA:N/SC:N/SI:L/SA:N |
| CNA | 4.0 | 2.1 | CVSS:4.0/AV:L/AC:L/AT:P/PR:N/UI:N/VC:N/VI:L/VA:N/SC:N/SI:L/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 |
Affected packages
| ecosystem | package | affected | fixed in |
|---|---|---|---|
| hex | saxy | >=0.7.0, <1.7.0 |
1.7.0 |
Affected products
- qcam saxy
Classification
- Weakness
-
- CWE-91 XML Injection
References
-
github.com
/qcam/saxy/commit/7266632e9407842f28ffac254c56dc41210a5690
related, web
-
github.com
/qcam/saxy/commit/4aeb80e2acc318f57bd7453ad2eafd59101a90e0
patch
-
github.com
/qcam/saxy/security/advisories/GHSA-f9r9-vrxq-g566
vendor-advisory, related, advisory
-
cna.erlef.org
/cves/CVE-2026-66295.html
related, web
-
osv.dev
/vulnerability/EEF-CVE-2026-66295
related
-
hex.pm
/packages/saxy
package
Sources
- CVE List CVE-2026-66295
- NVD CVE-2026-66295
- OSV EEF-CVE-2026-66295
Fencer Vulns keeps one entry per vulnerability: the CVE id wins, then GHSA, and records that alias each other are merged, except that two CVEs always keep separate entries. The same data is available as JSON.