CVE-2026-9487
CriticalCVSS 9.1Exploitation Probability (EPSS)
Low risk6th percentile - higher than 6% of all known CVEs
Summary
A vulnerability in the XML::Sig library for Perl (versions before 0.71) allows signature wrapping via duplicate ID. The _get_signed_xml() function selects the first node from the XPath result set, enabling an attacker to substitute the content of a signed document.
Risk Assessment
The organization may be tricked into accepting a forged XML document (e.g., SAML assertion) as authentic, potentially leading to unauthorized access.
Recommendation
Update the XML::Sig library to version 0.71 or later.
Other vulnerabilities in XML::Sig
See all- CVE-2026-9390Critical
XPath injection vulnerability in XML::Sig for Perl before version 0.71. The verify() and _get_signed_xml() functions build XPath expressions without proper escaping of the URI value from the document, allowing injection of arbitrary XPath operators.
- CVE-2025-40934Critical
XML-Sig versions 0.27 through 0.67 for Perl incorrectly validates XML files if signatures are omitted. An attacker can remove the signature from an XML document to make it pass verification. XML-Sig is a Perl module to validate signatures on XML files. An unsigned XML file should return an error, but affected versions return true when validating an XML file with no signatures.
- CVE-2026-18568High
XML::Sig for Perl versions 0.29 through 0.71 allow signature verification bypass. The verify function returns true when every signature was skipped before any cryptographic check. An attacker can supply an XML document with two Signature elements whose URI references a non-existent ID, causing verify to return true without checking the signature.
Original NVD description (English source)
XML::Sig versions before 0.71 for Perl allow signature wrapping via duplicate ID. _get_signed_xml() in lib/XML/Sig.pm, called from verify(), resolves the SignedInfo Reference/@URI to a node with the XPath expression "//*[@ID='$id']" and returns the first node of the resulting node set. A document in which two elements share that ID value is accepted: the digest and signature are checked against whichever element comes first in document order, and the duplicate is not detected. Such a document verifies successfully while an application that resolves the same ID independently can read the second, attacker supplied element; in a SAML2 context this places the contents of an Assertion under attacker control.

