CVE-2026-9487: XML::Sig versions before 0.71 for Perl allow signature wrapping via duplicate ID Timothy Legge 03 Aug 2026 13:42 UTC

========================================================================
CVE-2026-9487                                        CPAN Security Group
========================================================================

         CVE ID:  CVE-2026-9487
   Distribution:  XML-Sig
       Versions:  before 0.71

       MetaCPAN:  https://metacpan.org/dist/XML-Sig
       VCS Repo:  https://github.com/perl-net-saml2/perl-XML-Sig

XML::Sig versions before 0.71 for Perl allow signature wrapping via
duplicate ID

Description
-----------
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.

Problem types
-------------
- CWE-347 Improper Verification of Cryptographic Signature

Workarounds
-----------
Signing the outermost <samlp:Response> element rather than only the
inner <saml:Assertion> reduces exposure, but does not prevent wrapping
variants in which the duplicate ID is introduced outside the signed
element. Upgrading to 0.71 is the complete fix.

Solutions
---------
Upgrade to version 0.71

References
----------
https://github.com/perl-net-saml2/perl-XML-Sig/commit/4976bde5245df69b8e02c6ae061acbd4891cd7f9.patch
https://metacpan.org/release/TIMLEGGE/XML-Sig-0.71/source/Changes