CVE-2026-66294 json
XML injection in Saxy via unescaped CDATA section terminator
published 2026-11-06 2 d ago modified 2026-11-06 2 d ago also EEF-CVE-2026-66294 , GHSA-hq6g-j46w-wx72 , EUVD-2026-118039
- 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
XML injection in the Saxy XML encoder. Saxy.Encoder.cdata/1 serializes a {:cdata, characters} node by wrapping the supplied characters between <![CDATA[ and ]]> and passing the payload through byte for byte. The encoder's character-data and attribute-value paths escape the XML metacharacters <, >, &, ", and ', but the CDATA path applies no neutralization at all. XML provides no character escaping mechanism inside a CDATA section, so the only correct way to represent a ]]> substring is to split the section and rejoin it as ]]]]><![CDATA[>. Saxy neither performs that split nor rejects the substring.
An application that renders untrusted text as CDATA, by building the node with Saxy.XML.cdata/1 and serializing it with Saxy.encode!/2 or Saxy.encode_to_iodata!/2, therefore lets an attacker terminate the section at a position of their choosing. Everything supplied after the ]]> is emitted outside any CDATA context and is parsed as markup, so a single attacker-controlled text field becomes attacker-controlled document structure: arbitrary sibling elements and attributes that the application never built. Downstream consumers of the serialized document accept the injected markup as genuine. Services that generate SOAP envelopes, RSS or Atom feeds, sitemaps, SVG, or XML exports from user-supplied content can have trusted fields forged or overridden. Applications that never place untrusted text in a CDATA node are not affected.
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@71d99fa 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/71d99fae12f1d6596f5edb57b71f26ba854f4d33
patch
-
github.com
/qcam/saxy/security/advisories/GHSA-hq6g-j46w-wx72
vendor-advisory, related, advisory
-
cna.erlef.org
/cves/CVE-2026-66294.html
related, web
-
osv.dev
/vulnerability/EEF-CVE-2026-66294
related
-
hex.pm
/packages/saxy
package
Sources
- CVE List CVE-2026-66294
- NVD CVE-2026-66294
- OSV EEF-CVE-2026-66294
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.