Join our Newsletter — 33% off our NHI Course

How do attackers use refresh token theft?

Attackers use refresh token theft to obtain long-lived access by exchanging the stolen token for new access tokens after the original session ends. This can extend access well beyond a single login. Defenders should store refresh tokens securely, revoke them when risk changes, limit their lifetime, and alert on token refresh from unexpected devices or locations.

How refresh token theft turns a single compromise into durable access

refresh token theft is dangerous because refresh token are designed to outlive ordinary access tokens. Once stolen, they can let an attacker mint new access tokens repeatedly, even after password resets or a normal session timeout, until the refresh token is revoked or expires. That makes the theft less like a one-time login and more like a persistent access path.

The practical security issue is not just “can the attacker log in?” but “can the attacker keep re-entering the environment without tripping obvious session expiry controls?” In OAuth-based systems, that usually means the stolen token can be used to keep requesting fresh access, so defenders need to treat refresh tokens as long-lived authentication material rather than disposable session artifacts.

For a deeper treatment of refresh token handling, revocation, sender-constraining, and replay resistance, Token and Session Security Guide is the most directly relevant internal reference. If the theft came through a third-party integration or consented app, SaaS-to-SaaS and OAuth App Governance Guide helps frame the governance side of token exposure and revocation.

How attackers get value from stolen refresh tokens

Attackers usually want persistence, not just initial access. A refresh token can be replayed to obtain fresh access tokens on demand, which lets the attacker operate across a longer window, return after sign-out, and sometimes bypass the user noticing that the original session was interrupted. That is especially useful when the stolen token belongs to a high-trust app, a privileged user, or a SaaS integration with broad scopes.

Refresh token theft also supports stealth. Because the attacker is often exchanging a valid token rather than forcing repeated password prompts, the activity can look like legitimate renewal traffic unless the environment tracks device, location, client, or token-binding anomalies. Where an ecosystem supports it, binding tokens to the client and restricting audience reduce the usefulness of a stolen token even when it is exposed.

For the protocol mechanics behind this pattern, RFC 6749: The OAuth 2.0 Authorization Framework defines the token model, while RFC 9700: Best Current Practice for OAuth 2.0 Security captures current security guidance on reducing token theft and replay risk. Where you need stronger replay resistance, sender-constrained options such as RFC 9449: OAuth 2.0 Demonstrating Proof of Possession (DPoP) materially change how useful a stolen token is.

What defenders should verify when refresh token theft is suspected

The first verification step is to confirm whether the refresh token could still be used after the suspected compromise point. If it can, assume the attacker may still be able to renew access even when active sessions appear to have ended. That means you should look beyond the current access token and inspect the token family, the issuing client, the scope granted, and whether token refresh came from an unexpected device, IP range, or geography.

The next check is blast radius. A stolen refresh token may only unlock one application, or it may open multiple downstream APIs and SaaS resources through consented scopes and long-lived delegation. If the app has broad delegated access, the right question is not only whether the token was stolen, but what the token could reach before revocation. If the environment supports rotation, revoke the token family and any related grants, then validate that replacement tokens are actually tied to the expected client and user context.

When the compromise path runs through connected apps or SaaS integrations, the strongest internal navigation is SaaS-to-SaaS and OAuth App Governance Guide, because it addresses consent, scopes, and token revocation as a governance problem, not only a technical one. For protocol-level hardening, RFC 8707: Resource Indicators for OAuth 2.0 is relevant because audience restriction limits where a stolen token can be reused.

Risk and Threat Considerations

Refresh token theft matters because it turns a single credential exposure into sustained, low-friction access. The attacker can continue to mint access tokens until revocation or expiry closes the path, so the main failure mode is delayed detection, not just initial compromise.

Failure mechanism: A valid long-lived token is replayed from a new device or location, allowing the attacker to keep renewing access tokens while blending into normal refresh traffic. If the token is not sender-constrained and the application does not aggressively revoke on risk change, the attacker can preserve access after the original session should have ended.

Impact: The exposed account or integration can remain live long enough for mailbox access, API calls, data exfiltration, or privilege chaining, especially when refresh tokens are tied to high-scope SaaS apps or delegated enterprise integrations.

Standards & Framework Alignment

This section maps relevant standards and security frameworks to the operational risks and controls described in this guidance.

OWASP API Security Top 10 and OWASP Non-Human Identity Top 10 address the attack and risk surface, while NIST SP 800-53 Rev 5 sets the governance and control requirements practitioners need to meet.

Framework Control / Reference Relevance
NIST SP 800-53 Rev 5 IA-5 — Authenticator Management Refresh tokens are long-lived authenticators requiring lifecycle control and revocation.
IA-9 — Service Identification and Authentication Stolen refresh tokens often authenticate services, apps, or integrations to APIs.
AC-6 — Least Privilege Refresh-token abuse is worse when delegated scopes are broader than needed.
Recommendation — Manage refresh token lifecycle, revoke compromised tokens promptly, and limit their valid lifetime. Require strong client authentication and constrain token use to the intended service. Reduce token scopes so a stolen refresh token cannot reach unnecessary resources.
OWASP API Security Top 10 API2 — Broken Authentication Token theft enables continued API authentication after the original session ends.
API5 — Broken Function Level Authorization A stolen refresh token may unlock functions beyond the user's intended access.
Recommendation — Harden token issuance, rotation, and revocation so stolen refresh tokens cannot be reused. Verify each renewed session still enforces function-level authorization on sensitive actions.
OWASP Non-Human Identity Top 10 NHI-07 — Long-Lived Secrets Refresh tokens are long-lived secrets whose theft creates extended replay risk.
Recommendation — Shorten token lifetime and rotate or revoke long-lived refresh tokens on risk change.

Practitioner Guidance

What to prioritise: Treat the refresh token as the compromise boundary, not the access token. If you only rotate short-lived access tokens but leave the refresh token valid, the attacker still has a renewal path.

What to verify: Confirm whether refresh traffic is coming from the expected client, device posture, and location pattern, and check whether the token family was revoked everywhere it could be replayed. If the platform supports token binding or sender-constraining, verify that those controls are actually enforced for the sensitive client.

Decision rule: If the stolen token can reach production data, admin scopes, or third-party SaaS connectors, prioritise revocation and scope reduction before waiting for proof of active abuse. In refresh-token incidents, “no suspicious login” is not a safe stopping point because the access path can persist after the visible session disappears.

Practitioner takeaway: The operational question is whether the stolen token still has a working renewal path, because that is what converts a short compromise into durable access.