PT-2026-137920

CVE-2026-66295

·

Published

2026-11-06

·

Updated

2026-11-06

Description by

CVSS 4.0
2.1
Low
MetricsAV: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
Name of the Vulnerable Software and Affected Versions saxy versions 0.7.0 through 1.6.x
Description The XML encoder fails to validate or escape the target and content of processing instructions, writing them verbatim into the output document. Because the sequence ?> terminates a processing instruction, an attacker can use this sequence to close the construct prematurely and inject arbitrary elements, attributes, and further processing instructions into the serialized document. This occurs because the encoder concatenates fields without checking them against XML specification constraints. The Saxy.XML.processing instruction/2 function is a public builder that allows this flaw to be inherited. This can lead to XML injection, resulting in forged records, injected stylesheets, or active content when the output is processed by a downstream parser or browser. The issue is triggered when a {:processing instruction, name, content} node is passed to Saxy.encode!/2 or Saxy.encode to iodata!/2 using untrusted input.
Recommendations Update saxy to version 1.7.0 or later. As a temporary workaround, avoid placing untrusted data in processing instructions. Validate dynamic values before building the node by rejecting any content containing ?> and any target that does not match the XML Name production or equals xml case-insensitively. Carry dynamic values in element content or attributes instead of processing instructions.
Exploitability
Fix
Researchers
Vendors
Affected products
Related identifiers
GHSA-F9R9-VRXQ-G566
Found an issue in the description? Have something to add? Feel free to write us 👾