CVE-2026-66294 Inyección XML en Saxy por terminador de sección CDATA sin escapar
Saxy.Encoder.cdata/1 envuelve los caracteres entre ![CDATA[ y ]] sin neutralizar la subsecuencia ]], que permite al atacante cerrar la sección en la posición que elija. Todo lo que se envíe después se emite como marcado normal, lo que posibilita inyectar contenido arbitrario en documentos generados con Saxy.encode!/2 o Saxy.encode_to_iodata!/2.
CVSS 4.0
- Probabilidad de explotación · EPSS del 09/110,2 % · percentil 6
- Explotada activamenteNo confirmada
- Exploit públicoNo conocido
Afectados
qcam saxy
desde 0.7.0 hasta antes de 1.7.0
qcam saxy
desde 7266632e9407842f28ffac254c56dc41210a5690 hasta antes de 71d99fae12f1d6596f5edb57b71f26ba854f4d33
Qué hacer
- Verificá si usás saxy y en qué versión.
- Actualizá a la versión corregida que indique el fabricante en su aviso o aplicá su mitigación.
- Revisá registros y accesos de los sistemas expuestos para descartar un uso previo.
Calculadora CVSS
CVSS 4.0 · 2.1 BAJA
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
- Vector de ataqueLocal
- Complejidad del ataqueBaja
- Requisitos del ataquePresentes
- Privilegios requeridosNinguno
- Interacción del usuarioNinguna
- Confidencialidad (sistema vulnerable)Ninguna
- Integridad (sistema vulnerable)Baja
- Disponibilidad (sistema vulnerable)Ninguna
- Confidencialidad (sistemas posteriores)Ninguna
- Integridad (sistemas posteriores)Baja
- Disponibilidad (sistemas posteriores)Ninguna
Descripción original
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.
Referencias (5)
Resumen traducido automáticamente de la descripción original. Fuente: Nureq Monitor. Cómo funciona.