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
Token replay against an unbound endpoint is an attacker presenting a valid session cookie, SAML assertion, OAuth token or WebAuthn assertion that they copied, to an endpoint that only asks "is this token valid?" and never "is this the party it was issued to?". Most of these artifacts are bearer tokens unless something binds them to the client, device or key that requested it; without that binding, whoever holds a copy is accepted as the original requester.
The attack has four steps.
- Obtain the token. From an appliance memory leak, an infostealer, an adversary-in-the-middle proxy that captures the session after MFA, a phished OAuth grant, or a log or HAR file that recorded it.
- Move it to attacker infrastructure. Import it into a browser, script or API client on a host the attacker controls.
- Present it. Signature, expiry and audience all pass, because the token is genuine. No MFA prompt appears, because authentication already happened.
- Extend. Redeem refresh tokens and register new MFA methods or devices so access outlives the token.
Citrix Bleed (CVE-2023-4966) is the clearest public example of step 1 as a product bug: a buffer over-read on NetScaler ADC and Gateway returned memory containing live session tokens to an unauthenticated caller, who replayed them with no password and no MFA. NetScaler released fixed builds on October 10, 2023. Keycloak's SAML broker accepted a replayed assertion and let an attacker hijack a session (CVE-2026-18967), even though the SAML 2.0 Web Browser SSO profile says the service provider "MUST ensure that bearer assertions are not replayed" by keeping the set of used assertion IDs until NotOnOrAfter passes. In the 2026 "Pass-the-Passkey" research, Windows wrote WebAuthn assertions to event logs in cleartext (CVE-2026-34348), and Dirk-jan Mollema found that Entra ID's WebAuthn challenge, valid for five minutes, "is not bound to a session, a user or even a tenant", so a challenge requested on one host can be signed on another and redeemed there.
Why it works
Strengthening the credential does nothing if the endpoint that accepts the resulting token never checks who is presenting it. The token minted after a passkey login is usually as replayable as one minted after a password. The control assumption that fails is that "authenticated once" means "the same party for the rest of the session". Binding is the property that closes the gap, and it is often missing because the protocol made it optional (OAuth bearer tokens, browser cookies), the implementation skipped a required check (the SAML replay cache), or a bug leaked tokens through a path no binding check anticipated.
That is why these incidents report MFA as "bypassed" when it worked as designed. Appliance flaws that hand out an authenticated session sit next to the MFA blind zone: there is no login step for MFA to protect. And when the token comes from an AiTM relay or device code phishing, the victim completed a real login, so the theft is a talk-past attack and the replay its payoff.
How to detect it
- Entra ID Protection risk detections.
anomalousTokenflags tokens with an unusual lifetime or played from an unfamiliar location, and covers session and refresh tokens. Microsoft warns of false positives at low and medium risk.unfamiliarFeatureson a non-interactive sign-in "deserves increased scrutiny due to the risk of token replay attacks."attackerinTheMiddlefires when a session is linked to a malicious reverse proxy. The first two need Entra ID P2; the AiTM detection needs Microsoft 365 E5 with EMS E5. - Entra sign-in logs. In
AADNonInteractiveUserSignInLogs, look for token redemptions from hosting ASNs or scripted user agents. Huntress's 2026 campaign showednodeand bareMozilla/5.0user agents makingOAuth2:Tokenrequests, error50133(SsoArtifactRevoked) when a revoked session was replayed, and53003(BlockedByConditionalAccess) when policy stopped a valid credential. - Token Protection status. Where Token Protection runs in report-only mode, the
TokenProtectionStatusDetailsfield recordssignInSessionStatusas bound or unbound, with codes such as1002(no device state). - Okta System Log. With Identity Threat Protection,
user.session.context.changerecords a change of IP, device or session context within a session,policy.auth_reevaluate.failrecords a session that failed policy re-evaluation, anduser.session.endrecords the resulting Universal Logout. - Sessions with no matching login, from a new IP or ASN, especially after a token-leaking appliance flaw is disclosed.
Be honest about the limits: legitimate token use from new places (mobile networks, VPNs, browser sync) is constant, and attackers pick residential proxies and current browser user agents to blend in. The strongest signal is the combination of a new source with no corresponding login, followed by persistence actions such as device or MFA registration.
How to stop it
- Bind tokens to a key the client holds. DPoP (RFC 9449) binds a token to a public key at issuance and makes every request carry a fresh proof with the method, URI and an access token hash; mutual TLS (RFC 8705) binds it to a client certificate. For browsers, Device Bound Session Credentials tie the cookie to a hardware-held key. In Microsoft Entra ID, require Token Protection in Conditional Access for supported native apps on Windows, macOS and iOS, and pair it with policies that block unknown platforms, since attackers can claim a platform the policy does not cover.
- Enforce replay checks the protocol already requires. SAML service providers need a replay cache keyed on assertion ID until
NotOnOrAfter. DPoP servers should trackjtivalues and issue server nonces. WebAuthn relying parties should bind challenges to the session that requested them. - Patch edge appliances and kill every session. After the Citrix Bleed fix, NetScaler told customers to run
kill aaa session -all,kill icaconnection -alland related commands, because a patched box still honors tokens leaked before the patch. - Revoke on signal, not on schedule. Wire risk detections and CAEP events to session revocation, and revoke refresh tokens (not just reset passwords) after any suspected theft.
- Shorten session and refresh token lifetimes. This narrows the window; it does not close it.
Seen in the wild
- Comcast Xfinity customer data theft via Citrix Bleed (2023): attackers exploited CVE-2023-4966 between October 16 and 19, 2023, before Comcast finished mitigating, affecting 35,879,455 customers.
- Boeing Distribution breached by LockBit via Citrix Bleed (2023): a joint CISA, FBI, MS-ISAC and ACSC advisory named Citrix Bleed as LockBit 3.0's initial access.
- Bybit cold-wallet theft via hijacked Safe{Wallet} developer AWS sessions (2025): after a developer's Mac was compromised on February 4, 2025, attackers hijacked active AWS session tokens to avoid MFA and altered Safe's front end; the FBI put the theft at about 1.5 billion dollars.
- Stolen Microsoft 365 session tokens replayed into 79 organizations (2026): Huntress counted 497 successful sign-ins between July 14 and September 22, 2026 from tokens captured by AiTM and device-code phishing, plus 48 rogue Entra devices. See our coverage.
- Infostealers and session hijacking and three passkey attacks in one week.
Sources
- MITRE ATT&CK T1550.004: Use Alternate Authentication Material: Web Session Cookie
- MITRE ATT&CK T1550.001: Use Alternate Authentication Material: Application Access Token
- RFC 9449: OAuth 2.0 Demonstrating Proof of Possession (DPoP)
- RFC 8705: OAuth 2.0 Mutual-TLS Client Authentication and Certificate-Bound Access Tokens
- OASIS: Profiles for the SAML V2.0 (Web Browser SSO replay rule)
- NetScaler: CVE-2023-4966 security update and session-kill commands
- Microsoft Entra ID Protection: risk detections
- Microsoft Entra: Token Protection in Conditional Access
- Microsoft Entra: Token Protection deployment guide for Windows
- Okta: System Log events for Identity Threat Protection
- Dirk-jan Mollema: Borrowing Windows Hello keys for authentication and persistence
- Huntress: M365 token spray and replay campaign
- FBI IC3: North Korea responsible for $1.5 billion Bybit hack
Related identity CVEs and breaches
In the Identity Breach Database
Real incidents in our sourced breach database where this technique was used.
- Stolen Microsoft 365 session tokens replayed into 79 organizations 2026 · Phishing (adversary-in-the-middle)
- Bybit cold-wallet theft via hijacked Safe{Wallet} developer AWS sessions 2025 · Session or token theft
- Comcast Xfinity customer data theft via Citrix Bleed 2023 · Identity infrastructure vulnerability
- Boeing Distribution breached by LockBit via Citrix Bleed session hijacking 2023 · Identity infrastructure vulnerability
Related on Start with Identity
- Blog39% of identity CVEs are on CISA KEV, and edge appliances hold 62% of the exploited ones
SWI's Identity Vulnerability Report 2026 checked 137 identity CVEs against CISA's Known Exploited Vulnerabilities catalog and NVD. 53 are exploited, most of the
- PodcastAuth0
The late Vittorio Bertocci's interviews with the authors of OAuth, OpenID Connect, FIDO, and SAML. Ended in 2022, and still the best audio archive on identity s
- 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
- BlogExploited NetScaler SAML zero-day forces a second upgrade after the September patch
CVE-2026-88779 crashes NetScaler ADC and Gateway appliances configured as a SAML service provider or identity provider. Exploited before the fix, on CISA KEV si
- 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