Token replay against an unbound endpoint
A token that is not bound to the client, session, or challenge that requested it can be lifted once and replayed anywhere the check for binding is missing, no matter how it was strengthened.
How it works
Most authentication tokens, session cookies, SAML assertions, OAuth access tokens, WebAuthn challenges, are bearer credentials at the protocol level unless something explicitly binds them. A bound token is tied to the specific client, device, or session that requested it, so a copy presented from anywhere else is rejected. An unbound token carries no such link: any party holding a valid copy is accepted exactly as if they were the original requester, regardless of where the request comes from.
Token replay against an unbound endpoint means an attacker obtains a valid token through any means, a buffer over-read that leaks memory, a stolen HAR file, a copied cookie, or a challenge issued on one host and never checked against the host that completes it, and simply presents that token to the endpoint again. Citrix Bleed (CVE-2023-4966) is the clearest public example: a buffer over-read on NetScaler ADC and Gateway returned memory containing live session cookies to an unauthenticated caller, who replayed them and was authenticated with no password and no MFA check, because the session already existed and the endpoint accepted the cookie with no additional binding verification. The same failure pattern showed up again in 2026 research on Entra ID's WebAuthn challenges, which are not bound to the session, user, or tenant that requested them, so a challenge obtained on one host can be signed and replayed from a different one entirely.
Why it works
Strengthening the credential does nothing if the endpoint that accepts it never checks whether the presenter is the party who obtained it. Passkeys, hardware keys, and short-lived tokens all raise the bar for stealing a credential in the first place, but none of that matters if the verification step at the other end is "is this a valid token" rather than "is this a valid token presented by the party it was issued to." Binding is the property that closes that gap, and it is frequently the piece left out, either because the protocol did not require it, the implementation skipped it for convenience, or a bug like Citrix Bleed exposed tokens through a path the binding check never anticipated.
How to detect it
- Session or token use with no matching interactive authentication event for that session, particularly from a new IP or ASN.
- Authentication artifacts (WebAuthn assertions, session cookies) used from a device or client different from the one that originally requested them, where correlation data exists.
- A spike in successful authentications from previously unseen sources immediately following disclosure of a token-leaking vulnerability in an internet-facing appliance.
Be honest about the limits: legitimate token use from a new device happens constantly through browser sync, password managers, and multi-device workflows, so an unbound token used from an unfamiliar source is not proof of replay on its own. The strongest signal is the complete absence of a corresponding interactive login event, which legitimate multi-device use should still produce somewhere in the chain.
How to stop it
- Bind tokens and sessions to a device or client using DPoP or mutual TLS, so a replayed token fails everywhere except its origin.
- Bind challenges to the session, user, and tenant that requested them, closing the specific gap that let a WebAuthn challenge be signed on a different host than the one that asked for it.
- Patch internet-facing appliances promptly and, when a token-leak vulnerability like Citrix Bleed is disclosed, terminate all existing sessions rather than assuming a patch alone is sufficient; a patched system with live leaked tokens is still compromised.
- Shorten token and session lifetimes to reduce the window in which a leaked or replayed token remains useful.
- Hunt for sessions with no matching login event as a standing detection rule, not just a one-time response to a disclosed vulnerability.
Seen in the wild
- Three passkey attacks land in one week, none of them breaking the cryptography
- CVE-2023-4966: Citrix Bleed, session-token leak from NetScaler ADC
Sources
Related identity CVEs and breaches
Related on Start with Identity
- CVEKeycloak SAML broker assertion replay, session hijack
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
- CVECisco SAML 2.0 mixes authorization domains
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 pr
- CVEFortiCloud SSO SAML bypass on FortiOS, FortiProxy, FortiSwitchManager
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
- BlogFortinet's January SSO bypass hit boxes already patched for December's SAML bug
CVE-2026-24858 is the follow-on FortiCloud SSO SAML bypass. Devices patched for CVE-2025-59718 and 59719 were still exploitable. Actively exploited. CISA guidan
- GlossaryIdentity Federation
A trust relationship between identity providers and service providers that lets users authenticate once at their home IdP and access applications at the other p
- GlossaryService Provider (SP)
The application that consumes identity assertions from an IdP to grant the user access. In SAML it's the SP; in OIDC the equivalent is the Relying Party. The se