Read the docs
TI-2026-85812 Aliases CVE-2026-66294GHSA-w2hc-m8qc-7hgm

XML injection in Saxy via unescaped CDATA section terminator

Priority LOW 10CWE-91Published · Updated

Key facts

Attack vector
Local
Privileges required
None
User interaction
None
Attack complexity
Low
Attack requirements
Present
Impact type
—
Confidentiality · integrity · availability
None · Low · None
Fix status
Fixed

Attack profile from CVSS 4.0 · CNA. Fix status from CNA.

Summary

The Saxy XML encoder for Elixir, from 0.7.0 before 1.7.0, does not neutralize the ]]> sequence in CDATA sections. Saxy.Encoder.cdata/1 wraps supplied text in CDATA markers without splitting the section, so a terminator in untrusted text ends the section early. A local user with low privileges can inject arbitrary sibling elements and attributes (CWE-91) into documents an application generates from untrusted text, when that text is placed in a CDATA node. Applications that never place untrusted text in CDATA nodes are not affected.

Written with Claude Haiku 5.5 from the sources below · 2026-11-06

Description from the CNA

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.

Why it matters now

EPSS 0.00168 6th percentileScored 2026-11-07
Fix Fixed saxy (qcam): 1.7.0

SSVC decision points

Not available: CISA has not published SSVC decision points for this record.

Affected products

VendorProductAffected versionsFixed inStatusSource
qcamsaxy0.7.0 to before 1.7.01.7.0Patch availableCNA
  • saxy Vendorqcam Affected 0.7.0 to before 1.7.0 Fixed in 1.7.0 Patch available CNA

CPE names CNA · 1

CPEVersionsRoleVendor
cpe:2.3:a:qcam:saxy:*:*:*:*:*:*:*:*——qcam
  • cpe:2.3:a:qcam:saxy:*:*:*:*:*:*:*:* Versions — — ·qcam

Remediation

Upgrade saxy to version 1.7.0 or later, which fixes the issue for the saxy package.

Written with Claude Haiku 5.5 from the sources below · 2026-11-06

  • Fix · CNA saxy (qcam) Fixed in 1.7.0

Fixed in the same release

Records fixed by the same vendor advisory or release, as the CNA lists them.

  • Release ·

    qcam saxy 1.7.0

    3 records Highest priority Priority LOW 3 LOW

    Other records, highest priority first

    • TI-2026-85813 Unescaped processing instructions in Saxy encoder allow XML injectionPriority LOW 10
    • TI-2026-85811 XML comment injection in Saxy encoder lets attackers inject markupPriority LOW 10

Timeline

  1. 2026-11-06 Threatist record created from CVE-2026-66294
  2. 2026-11-06 Alias added: GHSA-w2hc-m8qc-7hgm

References

  • TI-2026-85813 Unescaped processing instructions in Saxy encoder allow XML injection CVSS 4.0LOW 2.1
  • TI-2026-85811 XML comment injection in Saxy encoder lets attackers inject markup CVSS 4.0LOW 2.1

Sources