CVE-2025-40934

9.3 CRITICAL

📋 TL;DR

CVE-2025-40934 is a critical signature validation bypass vulnerability in XML-Sig Perl module versions 0.27 through 0.67. Attackers can remove signatures from XML documents to make them pass verification checks, potentially enabling forged or tampered XML data to be accepted as valid. This affects any Perl application using vulnerable XML-Sig versions for XML signature validation, particularly in SAML, SOAP, or other XML-based security implementations.

💻 Affected Systems

Products:
  • XML-Sig Perl module
Versions: 0.27 through 0.67
Operating Systems: All operating systems running Perl with XML-Sig
Default Config Vulnerable: ⚠️ Yes
Notes: Any Perl application using XML-Sig for XML signature validation is vulnerable regardless of configuration.

📦 What is this software?

⚠️ Risk & Real-World Impact

🔴

Worst Case

Complete authentication bypass in SAML/SSO systems, forged authorization tokens, tampered financial transactions, or malicious XML payloads accepted as legitimate signed documents.

🟠

Likely Case

Authentication bypass in applications relying on XML signatures for verification, allowing unauthorized access or data manipulation.

🟢

If Mitigated

Limited impact if additional validation layers exist, but XML signature verification remains compromised.

🌐 Internet-Facing: HIGH - XML-Sig is commonly used in web applications for SAML, SOAP, and API security where XML documents are received from external sources.
🏢 Internal Only: MEDIUM - Internal systems using XML signatures for inter-service communication or document validation could be compromised by internal threats.

🎯 Exploit Status

Public PoC: ⚠️ Yes
Weaponized: LIKELY
Unauthenticated Exploit: ⚠️ Yes
Complexity: LOW

Exploitation requires only removing signature elements from XML documents, which is trivial. Public proof-of-concept exists in GitHub issues.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: 0.68 or later

Vendor Advisory: https://github.com/perl-net-saml2/perl-XML-Sig/issues/63

Restart Required: Yes

Instructions:

1. Update XML-Sig using CPAN: 'cpan XML::Sig'
2. Or install manually: 'cpanm XML::Sig@0.68'
3. Restart all Perl applications/services using XML-Sig
4. Verify the update with 'perl -MXML::Sig -e "print $XML::Sig::VERSION"'

🔧 Temporary Workarounds

Pre-validation signature check

all

Add custom validation to check for signature elements before calling XML-Sig validation

perl -e 'use XML::LibXML; my $doc = XML::LibXML->load_xml(string => $xml); if (!$doc->findnodes("//*[local-name()='Signature' and namespace-uri()='http://www.w3.org/2000/09/xmldsig#']")) { die "No signature found" }'

🧯 If You Can't Patch

  • Implement additional XML schema validation to ensure required signature elements are present
  • Deploy network controls to block or inspect XML traffic to vulnerable applications

🔍 How to Verify

Check if Vulnerable:

Check XML-Sig version with: perl -MXML::Sig -e 'print "VERSION: $XML::Sig::VERSION\n"; print "VULNERABLE\n" if $XML::Sig::VERSION >= 0.27 && $XML::Sig::VERSION <= 0.67'

Check Version:

perl -MXML::Sig -e 'print $XML::Sig::VERSION'

Verify Fix Applied:

Verify version is 0.68 or higher: perl -MXML::Sig -e 'print "VERSION: $XML::Sig::VERSION\n"; print "PATCHED\n" if $XML::Sig::VERSION >= 0.68'

📡 Detection & Monitoring

Log Indicators:

  • XML validation successes on documents without signature elements
  • Unexpected authentication successes in SAML/SSO logs
  • XML parsing errors or warnings in application logs

Network Indicators:

  • XML traffic to applications using XML-Sig without proper signature elements
  • Unusual XML document patterns with missing signature sections

SIEM Query:

source="application.log" AND ("XML validation" OR "signature verification") AND (success OR passed) AND NOT "signature found"

🔗 References

📤 Share & Export