Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessFetch SP metadata, extract encryption cert
-
DeliveryForge unsigned assertion with victim NameID
-
ExploitEncrypt to SP cert, wrap in samlp:Response
-
ExecutionPOST to assertion consumer service
-
PersistUnsigned assertion accepted as verified
-
ImpactAuthenticated as arbitrary user
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A04:2025 - Cryptographic Failures
ASVS 5.0
V11 - Cryptography Signature verification
|
| Exploitation Conditions | The target Service Provider must be built on Net::SAML2 before 0.86 AND be configured with a decryption key_file so it accepts EncryptedAssertions - this is the exact precondition; SPs with no key_file never decrypt and are not exploitable. Given that configuration, exploitation needs no authentication, no user interaction, and no non-public information: the SP's encryption certificate is deliberately published in its SAML metadata, so any party can encrypt an unsigned assertion to it. The attacker must simply produce a samlp:Response containing an EncryptedAssertion with no dsig:Signature and deliver it to the assertion consumer service endpoint. The only meaningful limiting factor is the key_file/EncryptedAssertion configuration; there is no version-specific, platform-specific, or timing constraint beyond running an unpatched (<0.86) release. |
| Impact | This is a genuine high-priority issue, not a CVSS-inflation case. The provided CVSS 3.1 vector CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H (9.8 Critical) is well supported by the description: exploitation is network-based, requires no authentication and no user interaction, and yields full identity impersonation. Encryption to a published certificate is intentionally public, so there is no secret the attacker must obtain, and complexity is genuinely low - the attack is deterministic once the SP accepts EncryptedAssertions. The one real limiter, which raw CVSS does not capture, is a configuration precondition: only SPs configured with a decryption key_file (i.e. that actually accept EncryptedAssertions) are exploitable; callers without a key_file never decrypt and are unaffected. No EPSS score, KEV listing, or SSVC decision data was provided, so exploitation-probability and automatability signals are unavailable; the vulnerability is not on CISA KEV and no active exploitation is claimed. The bug was reported by CPANSec (a credible coordinated-disclosure source) and the fixing commit is public, which somewhat lowers the barrier to reverse-engineering a working exploit even though no POC was supplied. |
| Exploit ScenarioDerived | An attacker retrieves the target SP's published SAML metadata, extracts its encryption certificate, and crafts a SAML assertion whose NameID is a privileged victim account. They encrypt this unsigned assertion to the SP's certificate, wrap it in a samlp:Response, and POST it to the assertion consumer service. Because the vulnerable code treats the unsigned decrypted assertion as verified, the SP authenticates the attacker as the chosen user. No POC was provided, but the flaw is deterministic and the fixing commit is public. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Aug 03, 2026
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.
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.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
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.
Know when Net gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
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.
Primary rating from Vendor (CPANSec).
CVSS VectorVendor: CPANSec
Lifecycle Timeline
3DescriptionCVE.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.
Executive ViewAI
The Net::SAML2 Perl module before version 0.86 contains a critical authentication bypass in encrypted assertion validation, allowing unauthenticated attackers to forge SAML assertions and impersonate any user. Organizations running vulnerable versions face immediate risk of unauthorized access to systems relying on SAML-based authentication.
Apply vendor patch.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.
Denial of service against HTTP/2 server implementations allows remote unauthenticated attackers to exhaust server resour
Remote code execution is possible in Node.js releases that bundle a vulnerable Brotli decoder: a malformed brotli-compre
.NET and Visual Studio Denial of Service Vulnerability. Rated high severity (CVSS 7.5), this vulnerability is remotely e
Heap-based buffer overflow (CWE-122) in Microsoft .NET and Visual Studio allows a network-based unauthenticated attacker
Heap-based buffer overflow in Microsoft Visual Studio 2022 and 2026 enables network-delivered remote code execution when
Privilege escalation in Microsoft .NET runtimes (8.0, 9.0, and 10.0) and Microsoft Visual Studio 2022 and 2026 results f
Heap-based buffer overflow (CWE-122) in Microsoft .NET enables local code execution across all actively supported .NET r
Local code execution via out-of-bounds write in Microsoft .NET allows an unauthenticated local attacker to achieve full
Local privilege escalation in Microsoft .NET (versions 8.0, 9.0, and 10.0) and Microsoft Visual Studio 2022/2026 allows
Denial-of-service in Microsoft .NET runtimes and Visual Studio allows unauthenticated remote attackers to crash or hang
Integer overflow in Microsoft .NET Framework and modern .NET runtimes enables local code execution with full process com
Use-after-free memory corruption in Microsoft's QUIC protocol implementation (MsQuic) exposes sensitive heap memory to u
EUVD-2026-52268
GHSA-g48m-j5m7-625h
NVD
CVE.org
EPSS
Vulnrichment
VulDB
Exploit-DB