Skip to main content

LightSAML CVE-2026-63182

| EUVDEUVD-2026-114520 HIGH
Improper Verification of Cryptographic Signature (CWE-347)
2026-10-30 GitHub_M
8.1
CVSS 3.1 · Vendor: GitHub_M
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Capture a genuine IdP-signed assertion
  2. Delivery
    Bury signature-stripped bytes in samlp:Extensions
  3. Exploit
    Submit forged duplicate-ID direct-child assertion
  4. Execution
    Copied signature passes required validation
  5. Impact
    Impersonate user or escalate to admin

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A04:2025 - Cryptographic Failures
ASVS 5.0
V11 - Cryptography Signature verification
Exploitation Conditions

The attacker must already possess at least one genuinely IdP-signed SAML assertion from the trusted issuer (e.g. a captured earlier login response or their own legitimate low-privilege assertion); without a valid signature to copy, the wrap cannot pass. The target must be a Service Provider using LightSAML prior to 4.7.1 (4.x branch) or 5.0.1 (5.x branch) together with robrichards/xmlseclibs for inbound samlp:Response assertion signature validation. The flaw triggers precisely because Response::deserialize collects only direct-child saml:Assertion elements while xmlseclibs resolves Reference URI="#id" through //*[@Id] item(0) document-wide; this works even with signature validation required (requireSignature=true) and against default per-assertion validation, so no non-default configuration is needed. Limiting factors: exploitation is bounded by the need to obtain a valid signed assertion from the specific trusted IdP, and complete remediation requires upgrading to a fixed version.

Impact

This is a genuine high-priority signature-verification flaw (CWE-347) rather than an inflated high-CVSS issue. The provided CVSS 3.1 vector (AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N = 8.1) is consistent with the mechanism: an inbound SAML Response is delivered over the network, the XML Signature Wrapping technique is deterministic (xmlseclibs always resolves //*[@Id] item(0), the first ID-bearing element in document order), and the outcome is full authentication bypass or privilege escalation. The PR:L in the input is defensible because the attacker must first possess at least one genuinely IdP-signed assertion (plausibly their own earlier low-privilege login), which is a meaningful precondition and the reason this reads as privilege escalation rather than pure anonymous bypass. EPSS is NOT provided in the input, so exploitation probability cannot be quantified. There is NO CISA KEV entry in the input, so this is not confirmed as actively exploited. No formal SSVC decision tuple (exploitation/automatable/technical impact) is supplied; the only decision signal is the vuln.today priority label 'this_week', which indicates prompt but not emergency remediation. A complete, working reproduction PoC (composer install plus xmlsec1 signing and a PHP tamper script against LightSAML 5.0.0) is published directly in the GHSA advisory, which materially raises real-world risk even without KEV confirmation. Net: prioritize patching within the week as the decision label indicates - the combination of a trivial, reliable, published exploit and a complete auth-bypass impact outweighs the absence of EPSS and KEV data, which reflect measurement gaps here rather than low risk.

Exploit ScenarioDerived

An attacker who has captured one genuinely IdP-signed SAML assertion - for example their own earlier legitimate login response - strips its ds:Signature and buries those genuine bytes inside samlp:Extensions so they become the first @Id element in document order, then presents a single forged direct-child saml:Assertion carrying the same ID, a verbatim copy of the genuine signature, and attacker-chosen Subject/NameID, Conditions, and Attributes (e.g. role=admin). xmlseclibs validates the copied signature against the hidden genuine element and passes, while LightSAML reads claims from the forged direct-child assertion, yielding authentication bypass or privilege escalation even with signature validation required. A full working PoC is published in the GHSA-w553-pwx6-3mg9 advisory.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available 0.2% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Oct 30, 2026

XML signature wrapping in LightSAML (4.x before 4.7.1 and 5.x before 5.0.1) lets an attacker who already holds one genuinely IdP-signed SAML assertion redirect signature validation to a buried copy of that genuine assertion while LightSAML consumes attacker-authored claims from a forged direct-child assertion, yielding authentication bypass and privilege escalation up to full impersonation of arbitrary NameID, Conditions and role attributes. The flaw requires only a low-privilege position (PR:L) - a captured earlier login response or the attacker's own legitimate assertion - and works even when the Service Provider enforces requireSignature=true, since the copied genuine ds:Signature still validates. Fixed in 4.7.1 and 5.0.1; the vendor advisory and a working PoC script are public, and no confirmed active exploitation (CISA KEV) or EPSS signal was provided at time of analysis.

RemediationAI

Upgrade the Composer package litesaml/lightsaml to 5.0.1 (5.x branch) or 4.7.1 (4.x branch) as released by the vendor; both fix tags publish the assertNoXmlSignatureWrapping() check that confirms the ds:Signature parent element carries the referenced ID and that the ID is unique in the document, closing the wrap before xmlseclibs resolves the reference. Details are in advisory GHSA-w553-pwx6-3mg9 and the release notes at https://github.com/litesaml/lightsaml/releases/tag/5.0.1 and https://github.com/litesaml/lightsaml/releases/tag/4.7.1. Because complete remediation in the vendor's assessment requires upgrading to a fixed version, organizations that cannot patch immediately should treat every inbound SAML assertion ID as untrusted and add a pre-validation layer that rejects any samlp:Response containing more than one element with the same ID attribute, and reject any samlp:Extensions content carrying saml:Assertion nodes; the trade-off is that legitimate IdPs which populate Extensions for other extensions (for example IdP-initiated flows or vendor-specific attributes) may break, and the duplicate-ID inspection must itself run on the raw DOM before LightSAML's own deserialization to be effective. Restricting accepted Response shapes at a SAML proxy or WAF that enforces unique IDs and strips Assertion content from Extensions is an alternative compensating control, but it introduces a new parsing component that must be kept in sync with the library.

Affected VersionsENISA

lightsaml 5.0.0, < 5.0.1
lightsaml < 4.7.1

Affected Packages

euvd lightsaml fix: 4.7.1, 5.0.1

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

LightSAML is a PHP SAML 2.0 data-model and binding library used to build Service Providers, and it delegates XML signature verification to robrichards/xmlseclibs. The root cause is a CWE-347 (improper verification of cryptographic signature) disagreement between the two layers about which element a signature covers. Response::deserialize uses manyElementsFromXml with the relative XPath saml:Assertion, so it collects only direct children of samlp:Response; AssertionSignatureValidatorAction then validates each collected assertion's ds:Signature against an out-of-band trusted IdP credential resolved by Issuer entityId (never a key taken from the document). Validation calls XMLSecurityDSig::validateReference(), which first removes the enveloped signature node from the shared DOM, and processRefNode() then resolves Reference URI="#id" document-wide with an XPath of the form //*[@Id] and takes item(0) - the first ID-bearing element anywhere in the document, of any name or namespace, not necessarily the assertion LightSAML collected. XML requires IDs to be unique, so the duplicate-ID document that makes the wrap possible is malformed but previously accepted. The fix in PR #113 adds assertNoXmlSignatureWrapping(), executed before validateReference() detaches the signature node, which verifies that the ds:Signature's parent element actually carries the referenced ID and that the ID is unique across the document, rejecting both mismatches and duplicate IDs. Note the issue is separate from a plain XML External Entity or JWT-style confusion attack; the 'Jwt Attack' tag refers to the general signed-token-wrapping class, and the CPE cpe:2.3:a:litesaml:lightsaml:*:*:*:*:*:*:*:* confirms all LightSAML releases are flagged in the CPE range, with Composer data narrowing vulnerable ranges to <=5.0.0 and >=4.0.0 <4.7.1.

Know when Lightsaml 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

Vendor (GitHub_M) PRIMARY 8.1 HIGH
AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N
vuln.today AI 8.1 HIGH

Network-delivered SAML Response (AV:N); deterministic wrapping with no race (AC:L); attacker needs one captured genuine signed assertion, treated as PR:L; no victim interaction; impersonation gives C:H/I:H, no availability impact.

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

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

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

Lifecycle Timeline

2
Patch available
Oct 30, 2026 - 23:03 EUVD
CVE Published
Oct 30, 2026 - 21:46 cve.org
HIGH 8.1

DescriptionCVE.org

LightSAML implements SAML 2.0 data model classes, XML serialization and deserialization, XML security, certificate support, and message bindings. Prior to 4.7.1 and 5.0.1, LightSAML and xmlseclibs disagree about which assertion an inbound SAML signature covers. Response::deserialize uses manyElementsFromXml to collect only direct-child saml:Assertion elements of samlp:Response, and AssertionSignatureValidatorAction validates their ds:Signature using an out-of-band trusted IdP credential resolved by Issuer, not a key from the document. XMLSecurityDSig::validateReference() removes the enveloped signature from the shared DOM, but processRefNode() resolves Reference URI="#id" document-wide through an XPath of the form //*[@Id] and takes item(0), which need not be the assertion whose claims LightSAML consumes. An attacker who has captured one genuinely signed assertion, such as an earlier login response, can place its signature-stripped bytes earlier in samlp:Extensions and present a forged direct-child assertion with the same ID and copied genuine signature. Validation then covers the hidden genuine bytes while LightSAML surfaces unsigned attacker-controlled Subject/NameID, Conditions, and Attributes, enabling authentication bypass or privilege escalation even when signature validation is required. The behavior was confirmed in versions 5.0.0 and 4.6.1. This issue is fixed in versions 4.7.1 and 5.0.1.

Technical POC Analysis

CWE-347 (Improper Verification of Cryptographic Signature) - specifically an XML signature wrapping (XSW) defect arising from two layers disagreeing about which element a signature covers.

Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.

Executive ViewAI

Why It Matters

LightSAML versions 4.x before 4.7.1 and 5.x before 5.0.1 contain an XML signature wrapping flaw that enables an authenticated attacker to bypass SAML authentication and escalate privileges, potentially impersonating any user or role within federated applications. This affects all service providers using these LightSAML versions for single sign-on, undermining trust in identity federation and risking unauthorized access to sensitive systems and data.

Business Impact: High
Compensating Controls

Apply vendor patch.

Threat Intelligence Overview

EPSS Score
0.2%
Top 96% exploitable
Prevalence
Low
niche PHP SAML 2.0 library, limited to specific PHP SSO integrations
Social Media
1
Sightings
Data Quality
3 sources
Confidence: Low

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.

SignalValue
Severity HIGH
CISA KEV No
Public POC No
EPSS 0.2%
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation· derived
None
System Exposure· derived
Open
Automatable· derived
No
Human Impact
High

Priority Score

40
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +40
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.

Privilege escalation occurs when an attacker leverages flaws in access control mechanisms to gain permissions beyond what they were originally granted.

Insecure deserialization occurs when an application converts serialized data (a stream of bytes representing an object's state) back into a living object without proper validation.

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