SAML identity CVEs
Signature wrapping and parser differentials keep turning one valid assertion into a login as any user. If you run workforce SSO on SAML, this is the protocol page to start with.
How this protocol fails
SAML is still how a large share of enterprise SSO works. The 2024-2026 failures are almost all the same bug in different clothes: the verifier checks a signature on one XML tree and consumes NameID or attributes from another. ruby-saml, samlify, GitHub Enterprise Server, Keycloak, FortiCloud SSO, and HaloITSM all failed that test. A single leaked or captured signature is enough. Encrypted assertions did not save GHES. Incomplete fixes came back as new CVEs within months. On a firewall or VPN ACS, the same class is actively exploited and on CISA KEV.
What security people should do
- Inventory every ACS that verifies SAML itself, not only the IdP. GitLab, GHES, homegrown Rails and Node SPs, and appliance SSO all count.
- Upgrade SAML libraries past the incomplete-fix lines (ruby-saml 1.18.1 or later, samlify 2.10.0 or later) and rotate IdP signing keys after you patch.
- Prefer a single XML stack. Dual parsers (ReXML plus Nokogiri) are how wrapping survives a "we patched" ticket.
- Disable FortiCloud SSO and similar appliance SAML if you do not need it. Hunt for rogue admins after any KEV SAML bypass.
- Add a regression test: a known wrapping fixture must fail after every library bump.
CVEs in this category
Showing 22 of 22
- CVE-2026-18967highKeycloak SAML broker assertion replay, session hijackKeycloak · Red Hat · 2026-08-05 · Patched
Keycloak's SAML broker accepted a replayed assertion and hijacked a user session. An authentication bypass on the broker edge. Patched in the 2026 Keycloak SAML train with CVE-2026-2603.
- CVE-2026-2603highKeycloak accepts SAML from a disabled identity providerKeycloak · Red Hat · 2026-03-18 · Patched
A remote attacker can complete a broker login with a valid SAML response even after the SAML IdP is disabled in Keycloak. Unauthorized authentication via a control you thought you turned off.
- CVE-2026-24858criticalCISA KEVExploitedFortinet follow-on SSO SAML bypass after the 59718 patchFortinet products (FortiCloud SSO) · Fortinet · 2026-01-28 · Actively exploited
A second FortiCloud SSO SAML bypass that hits devices already patched for CVE-2025-59718 and CVE-2025-59719. Actively exploited. CISA guidance 28 January 2026.
- CVE-2025-59719critical 9.8FortiWeb FortiCloud SSO SAML bypassFortinet FortiWeb · Fortinet · 2025-12-09 · Patched
The FortiWeb twin of CVE-2025-59718. A crafted SAML message bypasses FortiCloud SSO on FortiWeb. Same CWE-347 class, same December 2025 window, same 'patch or disable SSO' advice.
- CVE-2025-59718critical 9.8CISA KEVExploitedFortiCloud SSO SAML bypass on FortiOS, FortiProxy, FortiSwitchManagerFortinet FortiOS / FortiProxy / FortiSwitchManager · Fortinet · 2025-12-09 · Actively exploited
A crafted SAML message bypasses FortiCloud SSO (CWE-347). Arctic Wolf saw malicious logins three days after disclosure. CISA added it to KEV on 16 December 2025 with a 23 December patch-by date.
- CVE-2025-66568criticalruby-saml second Fragile Lock bypassruby-saml · SAML-Toolkits · 2025-12-08 · Patched
Companion to CVE-2025-66567. Another SAML bypass in ruby-saml below 1.18.0, including 1.12.4. Same December 2025 disclosure, same 1.18.1 fix.
- CVE-2025-66567criticalruby-saml bypass after 1.12.4, PortSwigger Fragile Lockruby-saml · SAML-Toolkits · 2025-12-08 · Patched
Disclosed 8 December 2025 with CVE-2025-66568. ruby-saml below 1.18.0, including the earlier patched 1.12.4 line, still allowed SAML assertion forgery. Fixed in 1.18.1.
- CVE-2025-54572criticalruby-saml auth bypass, incomplete fix of CVE-2025-25292ruby-saml · SAML-Toolkits · 2025-07-30 · Patched
The March 2025 ruby-saml patch did not close the parser differential. CVE-2025-54572 is the incomplete-fix follow-on: still a critical SSO impersonation if you stopped at 1.12.4.
- CVE-2025-47949criticalsamlify signature wrapping, forge SAML as any usersamlify · samlify · 2025-05-20 · Patched
samlify before 2.10.0 accepted wrapped SAML signatures (CWE-347). An attacker can forge responses and impersonate any user, including admins. Node shops hit this as hard as Ruby shops hit ruby-saml.
- CVE-2025-25293highruby-saml denial of service via compressed SAML messagesruby-saml · SAML-Toolkits · 2025-03-12 · Patched
A compressed SAML message can be inflated into a resource-exhaustion hit against ruby-saml. Not an impersonation bug, but it sits in the same March 2025 patch train as the critical wrapping flaws.
- CVE-2025-25292critical 10.0ruby-saml companion signature-wrapping bypassruby-saml · SAML-Toolkits · 2025-03-12 · Patched
The pair to CVE-2025-25291. A second signature-wrapping path in ruby-saml lets an attacker forge assertions and impersonate any user. The March 2025 patch was later shown to be incomplete.
- CVE-2025-25291critical 10.0ruby-saml parser differential enables signature wrappingruby-saml · SAML-Toolkits / GitLab · 2025-03-12 · Patched
ReXML and Nokogiri disagree on the same SAML document. An attacker with one valid signature can wrap a new assertion and log in as any user on GitLab, omniauth-saml, and anything else still on ruby-saml before 1.12.4 / 1.18.0.
- CVE-2025-23369highGitHub Enterprise Server SAML bypass via libxml2 canonicalizationGitHub Enterprise Server · GitHub · 2025-01-21 · Patched
GitHub Enterprise Server accepted a crafted SAML response because libxml2 canonicalization quirks let the signed XML and the consumed XML diverge. High-severity SSO impersonation on self-hosted GitHub.
- CVE-2024-9487highGitHub Enterprise Server SAML encrypted-assertion, incomplete fixGitHub Enterprise Server · GitHub · 2024-10-10 · Patched
The leftover path after CVE-2024-4985. Encrypted SAML assertions on GHES could still be forged. GitHub shipped a second hardening pass. Treat 4985 and 9487 as one upgrade.
- CVE-2024-8698highKeycloak SAML signature validation bypassKeycloak · Red Hat · 2024-09-19 · Patched
Keycloak's XMLSignatureUtil decided a SAML response was signed when it was not bound to the assertion later consumed. Impersonation and privilege escalation on any realm using SAML. High. Red Hat patched September 2024.
- CVE-2024-45409critical 10.0ruby-saml 2024 auth bypass (ahacker1), still in the blast radiusruby-saml · SAML-Toolkits · 2024-09-10 · Patched
The original 2024 ruby-saml authentication bypass (CVSS 10.0). It is outside the last twelve months, but every 2025 ruby-saml CVE is an incomplete-fix descendant. If you are still on a pre-2024 library, start here.
- CVE-2024-6800highGitHub Enterprise Server SAML XML signature wrappingGitHub Enterprise Server · GitHub · 2024-08-20 · Patched
A third 2024 GHES SAML path. An attacker with network access could wrap a signature and provision a privileged user. Same product, same year, same lesson: do not trust encrypted assertions to save a wrapping bug.
- CVE-2024-6202criticalHaloITSM SAML signature wrapping, log in as any userHaloITSM · Halo · 2024-06-20 · Patched
HaloITSM accepted a wrapped SAML assertion. An attacker with one valid signature could impersonate any user, including admins. Critical. Another 2024 reminder that ITSM tools are identity providers in practice.
- CVE-2024-20355highCisco SAML 2.0 mixes authorization domainsCisco products (SAML 2.0) · Cisco · 2024-05-22 · Patched
Cisco's SAML 2.0 implementation did not keep authorization domains apart. A token or assertion meant for one domain could authorize in another. May 2024. The protocol-level cousin of private_key_jwt audience mix-ups.
- CVE-2024-4985highGitHub Enterprise Server SAML encrypted-assertion bypassGitHub Enterprise Server · GitHub · 2024-05-20 · Patched
GHES with optional encrypted SAML assertions accepted a forged response. An unauthenticated attacker could provision a site administrator. Fixed in 3.9.15, 3.10.12, 3.11.10, and 3.12.4. The leftover path became CVE-2024-9487.
- CVE-2023-6717highKeycloak SAML POST-binding XSS via ACS URLKeycloak · Red Hat · 2024-04-16 · Patched
The SAML POST-binding flow reflected a crafted Assertion Consumer Service URL as script. An XSS on the IdP login path is session theft. Patched with the April 2024 Keycloak train.
- CVE-2024-21893criticalCISA KEVExploitedIvanti Connect Secure SAML SSRF, chained to auth bypassIvanti Connect Secure / Policy Secure · Ivanti · 2024-01-31 · Actively exploited
SSRF in the SAML component of Ivanti Connect Secure and Policy Secure. Attackers chained it with CVE-2023-46805 and CVE-2024-21887 after those were patched. CISA KEV. The SAML ACS became the way back in.