Signature reference wrapping in LightSAML permits unsigned assertion claims
Key facts
- Attack vector
- Network
- Privileges required
- Low
- User interaction
- None
- Attack complexity
- Low
- Impact type
- Security bypass
- Confidentiality · integrity · availability
- High · High · None
- Fix status
- Fixed
Attack profile from CVSS 3.1 · CNA. Fix status from CNA. Impact type from CWE-347.
Summary
LightSAML versions before 4.7.1 and from 5.0.0 before 5.0.1 disagree with xmlseclibs about which assertion a SAML signature covers. An attacker who has captured one genuinely signed assertion can place its signature-stripped copy earlier in the document and present a forged assertion with the same ID and the copied signature, so validation covers the hidden genuine bytes while LightSAML consumes the unsigned attacker-controlled Subject/NameID, Conditions and Attributes. This is CWE-347, and the flaw can enable authentication bypass or privilege escalation even when signature validation is required.
Written with Claude Haiku 5.5 from the sources below · 2026-11-06
Description from the CNA
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.
Why it matters now
SSVC decision points
CISA ADP · SSVC 2.0.3
- Exploitation
- Poc
- Automatable
- No
- Technical impact
- Total
The decision (Track, Attend, Act) also depends on your mission and well-being impact; see CISA's SSVC guide.
Affected products
Remediation
Upgrade LightSAML to version 4.7.1 or 5.0.1, which fix the issue in the 4.x and 5.x branches respectively.
Written with Claude Haiku 5.5 from the sources below · 2026-11-06
- Fix · CNA lightsaml (litesaml) Fixed in 4.7.1, 5.0.1
Timeline
- 2026-10-30 Threatist record created from CVE-2026-63182
- 2026-11-01 Priority changed: MEDIUM → LOW
- 2026-11-06 CISA SSVC decision points changed
- 2026-11-06 Priority changed: LOW → HIGH
References
Other 7
- https://github.com/litesaml/lightsaml/security/advisories/GHSA-w553-pwx6-3mg9
- https://github.com/litesaml/lightsaml/pull/113
- https://github.com/litesaml/lightsaml/pull/122
- https://github.com/litesaml/lightsaml/commit/230e62d1325f2cbcaac814b78409775f7a8806a2
- https://github.com/litesaml/lightsaml/commit/3af82bf2f3865e6aafeeb1a97c97b383b8bb7b00
- https://github.com/litesaml/lightsaml/releases/tag/4.7.1
- https://github.com/litesaml/lightsaml/releases/tag/5.0.1
Sources
This product uses the NVD API but is not endorsed or certified by the NVD. Sources and licences