GHSA-mm3m-xwmf-v698: XML comment injection in Saxy encoder via unescaped double hyphen

Published Nov 6, 2026
·
Updated

Summary

XML injection in the encoder of Saxy. Saxy.Encoder does not neutralize the -- sequence in XML comment content: escapecomment/2 returns the comment binary unchanged in every clause and only appends a space when the comment ends in a single -, so neither an interior -- nor a full --> is escaped or rejected before the encoder wraps the content in the <!-- and --> delimiters.

When an application serializes attacker-controlled text as a comment, through Saxy.XML.comment/1 or a raw {:comment, text} simple form child, the attacker can close the comment early with --> and inject arbitrary sibling markup into the serialized document. A downstream parser then sees elements, attributes, and text that the application never built. Where the document is rendered as HTML or SVG, the injected markup executes as stored cross-site scripting; where it is consumed by another XML processor, the attacker can forge data that the producing application never emitted. Documents that Saxy only parses are not a vector.

This issue affects saxy: from 0.7.0 before 1.7.0.

Workarounds

Reject or rewrite the -- sequence in untrusted text before passing it to Saxy.XML.comment/1, for example by replacing -- with - -.

Alternatively, stop emitting untrusted data as XML comments. Comments carry no semantic payload for consumers, so the text can usually be moved into an element or a CDATA section instead.

Configurations

Only applications that place untrusted text into an XML comment node are affected. The untrusted value must reach Saxy.XML.comment/1 or a raw {:comment, text} simple form child that is then serialized with Saxy.encode!/2 or Saxy.encodetoiodata!/2. Documents that are only parsed by Saxy never reach the encoder and are not a vector.

Affected Software

1 affected componentFixes available
erlang/saxy>=0.7.0<1.7.0
1.7.0

Remediation

Recommended actions to resolve this vulnerability, in priority order.

  1. Upgrade

    Upgrade erlang/saxy to a version that resolves this vulnerability.

    Fixed in 1.7.0
  2. Upgrade

    Upgrade saxy to a version that resolves this vulnerability.

    Fixed in 1.7.0
  3. Configuration

    Reject or rewrite the -- sequence in untrusted text before passing it to Saxy.XML.comment/1 or serializing a raw {:comment, text} child; for example, replace -- with - -.

    Saxy XML encoder untrusted XML comment content = reject or rewrite --

Event History

Nov 6, 2026
CVE Published
via OSV·10:16 AM
Data Sourced
via OSV·10:16 AM
DescriptionSeverityWeaknessAffected Software

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203