Skip to main content

Net::SAML2 EUVDEUVD-2026-52268

| CVE-2026-18108 CRITICAL
Improper Verification of Cryptographic Signature (CWE-347)
2026-08-03 CPANSec GHSA-g48m-j5m7-625h
9.8
CVSS 3.1 · Vendor: CPANSec
Share

Severity by source

Vendor (CPANSec) PRIMARY
9.8 CRITICAL
AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
vuln.today AI
9.8 CRITICAL

Network-reachable ACS, no auth or interaction, and a published cert make it AV:N/AC:L/PR:N/UI:N; full identity impersonation yields C:H/I:H/A:H, though it applies only to SPs accepting EncryptedAssertions.

3.1 AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
4.0 AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N

Primary rating from Vendor (CPANSec).

CVSS VectorVendor: CPANSec

Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
User Interaction
None
Scope
Unchanged
Confidentiality
High
Integrity
High
Availability
High

Lifecycle Timeline

5
Source Code Evidence Fetched
Aug 03, 2026 - 20:25 vuln.today
Analysis Generated
Aug 03, 2026 - 20:25 vuln.today
CVSS changed
Aug 03, 2026 - 20:22 NVD
9.8 (CRITICAL)
CVE Published
Aug 03, 2026 - 13:00 cve.org
UNKNOWN (no severity yet)
CVE Published
Aug 03, 2026 - 13:00 cve.org
CRITICAL 9.8

DescriptionCVE.org

Net::SAML2 versions before 0.86 for Perl allow authentication bypass because _verify_encrypted_assertion accepts an EncryptedAssertion whose decrypted content carries no signature.

_verify_encrypted_assertion decrypts the EncryptedAssertion and returns it as verified when it carries no signature, via "return $xml unless $xpath->exists('dsig:Signature', $assert);". The signature check and the trust anchor check that follow run only when a signature is present, so a decrypted assertion with no dsig:Signature element reaches new_from_xml unverified and its NameID and attributes are read into the assertion object. An SP's encryption certificate is published in its SAML metadata so the IdP can encrypt to it, so any party can encrypt an unsigned assertion to that certificate, wrap it in a samlp:Response, and post it to the assertion consumer service.

Any caller that configures a decryption key_file, and so accepts EncryptedAssertions, takes identity fields from an assertion that no trust anchor covers, and an unauthenticated party can authenticate as an arbitrary user. Callers with no key_file configured do not decrypt and are unaffected.

AnalysisAI

Authentication bypass in the Net::SAML2 Perl module before 0.86 lets an unauthenticated attacker log in as any user against Service Providers that accept EncryptedAssertions. The flaw stems from _verify_encrypted_assertion returning a decrypted assertion as 'verified' whenever it contains no dsig:Signature element, skipping both the signature and trust-anchor checks. Because an SP publishes its encryption certificate in SAML metadata, anyone can encrypt a forged unsigned assertion to it, wrap it in a samlp:Response, and post it to the assertion consumer service; no public exploit identified at time of analysis but the logic bug is trivially reproducible.

Technical ContextAI

Net::SAML2 is a Perl SAML 2.0 toolkit (CPAN distribution timlegge/Net::SAML2) used to build SAML Service Providers and Identity Providers. In SAML SSO, an IdP asserts a user's identity via a signed Assertion; when confidentiality is required the assertion is delivered as an EncryptedAssertion encrypted to the SP's published encryption certificate. Integrity and authenticity are supposed to come from an XML Digital Signature (dsig:Signature) that the SP validates against a trusted IdP certificate (trust anchor). The root cause is CWE-347 (Improper Verification of Cryptographic Signature): in Assertion.pm, _verify_encrypted_assertion executes 'return $xml unless $xpath->exists('dsig:Signature', $assert);', meaning that when the decrypted assertion has no signature at all, the code short-circuits and treats it as valid instead of rejecting it. The signature verification and cacert trust-anchor logic are gated behind the presence of a signature, so an unsigned assertion never reaches them and its NameID and attributes are consumed by new_from_xml. The patch (commit d9164685) removes the best-effort anchoring on the first signature reference and instead croaks 'No trusted signature found in the assertion' unless the caller explicitly opts in with insecure_trust_embedded_cert => 1 (documented dev/test only), and adds a guard that dies when no Assertion is present.

RemediationAI

Vendor-released patch: upgrade Net::SAML2 to version 0.86 or later, which rejects assertions lacking a trusted signature (see https://metacpan.org/release/TIMLEGGE/Net-SAML2-0.86/changes and fixing commit https://github.com/perl-net-saml2/perl-Net-SAML2/commit/d916468586404518b8cf3c78dbd001cc1f1046a7.patch). Do not set the new insecure_trust_embedded_cert => 1 flag in production - it re-enables trusting embedded certificates and is documented for dev/test only. If you cannot upgrade immediately, the most effective compensating control is to remove the decryption key_file from the SP configuration so EncryptedAssertions are no longer accepted; the trade-off is that any IdP relying on assertion encryption will break, so coordinate with your IdP to use signed (unencrypted) assertions delivered over TLS in the interim. Additionally, enforce that every accepted assertion is signed at the application layer and validate the IdP signing certificate against a pinned trust anchor before consuming NameID/attributes.

CVE-2013-3900 MEDIUM
5.5 Dec 11

Why is Microsoft republishing a CVE from 2013? We are republishing CVE-2013-3900 in the Security Update Guide to update

CVE-2026-48558 CRITICAL POC
9.5 Jun 12

Authentication bypass in SimpleHelp 5.5.15 and prior (plus 6.0 pre-release builds) allows remote unauthenticated attacke

CVE-2025-59718 CRITICAL
9.8 Dec 09

Authentication bypass in Fortinet FortiOS, FortiProxy, and FortiSwitchManager allows unauthenticated remote attackers to

CVE-2025-25291 CRITICAL POC
9.3 Mar 12

ruby-saml provides security assertion markup language (SAML) single sign-on (SSO) for Ruby. Rated critical severity (CVS

CVE-2025-25292 CRITICAL POC
9.3 Mar 12

ruby-saml provides security assertion markup language (SAML) single sign-on (SSO) for Ruby. Rated critical severity (CVS

CVE-2022-25898 CRITICAL POC
9.8 Jul 01

The package jsrsasign before 10.5.25 are vulnerable to Improper Verification of Cryptographic Signature when JWS or JWT

CVE-2024-42004 CRITICAL POC
9.8 Dec 18

A library injection vulnerability exists in Microsoft Teams (work or school) 24046.2813.2770.1094 for macOS. Rated criti

CVE-2024-41145 CRITICAL POC
9.8 Dec 18

A library injection vulnerability exists in the WebView.app helper app of Microsoft Teams (work or school) 24046.2813.27

CVE-2024-41138 CRITICAL POC
9.8 Dec 18

A library injection vulnerability exists in the com.microsoft.teams2.modulehost.app helper app of Microsoft Teams (work

CVE-2024-45409 CRITICAL POC
9.8 Sep 10

The Ruby SAML library is for implementing the client side of a SAML authorization. Rated critical severity (CVSS 9.8), t

CVE-2022-35929 CRITICAL POC
9.8 Aug 04

cosign is a container signing and verification utility. Rated critical severity (CVSS 9.8), this vulnerability is remote

CVE-2022-31053 CRITICAL POC
9.8 Jun 13

Biscuit is an authentication and authorization token for microservices architectures. Rated critical severity (CVSS 9.8)

Share

EUVD-2026-52268 vulnerability details – vuln.today

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy