Read the docs
TI-2026-38591 Aliases CVE-2026-53517GHSA-392p-2q2v-4372

Better Auth OAuth Provider: Refresh Token Rotation Race Condition Allows Concurrent Replay and Token Family Forking

Priority LOW 38CWE-362Published · Updated

Key facts

Attack vector
Network
Privileges required
Low
User interaction
None
Attack complexity
Low
Impact type
Security bypass
Confidentiality · integrity · availability
High · High · None
Fix status
Fixed

Attack profile from CVSS 3.1 · CNA. Fix status from CNA and GitHub. Impact type from CWE-294.

Summary

Better Auth is an authentication and authorization library for TypeScript. From 1.4.8-beta.7 until 1.6.11, the @better-auth/oauth-provider POST /oauth2/token endpoint on the refresh_token grant performs a non-atomic read, validate, revoke, and mint sequence on the oauthRefreshToken row, allowing concurrent requests with the same parent refresh token to pass the revoked check and create forked refresh-token families; the vulnerable range also includes embedded better-auth plugin versions before 1.6.0. This issue is fixed in version 1.6.11.

Why it matters now

Exploitation None reported CISA SSVC · not in CISA KEV
EPSS 0.00422 36th percentileScored 2026-11-07
Fix Fixed better-auth (better-auth): 1.6.0oauth-provider (@better-auth): 1.6.11+2 more products

SSVC decision points

CISA ADP · SSVC 2.0.3

Exploitation
None
Automatable
No
Technical impact
Total

The decision (Track, Attend, Act) also depends on your mission and well-being impact; see CISA's SSVC guide.

Affected products

VendorProductAffected versionsFixed inStatusSource
better-authbetter-auth1.4.8-beta.7 to before 1.6.01.6.0Patch availableCNA
better-authoauth-provider1.6.0 to before 1.6.111.6.11Patch availableCNA
—@better-auth/oauth-provider (npm)1.6.0 to before 1.6.111.6.11Patch availableGHSA-392p-2q2v-4372
—better-auth (npm)1.4.8-beta.7 to before 1.6.01.6.0Patch availableGHSA-392p-2q2v-4372
  • better-auth Vendorbetter-auth Affected 1.4.8-beta.7 to before 1.6.0 Fixed in 1.6.0 Patch available CNA
  • oauth-provider Vendorbetter-auth Affected 1.6.0 to before 1.6.11 Fixed in 1.6.11 Patch available CNA
  • @better-auth/oauth-provider (npm) Vendor— Affected 1.6.0 to before 1.6.11 Fixed in 1.6.11 Patch available GHSA-392p-2q2v-4372
  • better-auth (npm) Vendor— Affected 1.4.8-beta.7 to before 1.6.0 Fixed in 1.6.0 Patch available GHSA-392p-2q2v-4372

CPE configurations NVD · 4

CPEVersionsRoleVendor
cpe:2.3:a:better-auth:better-auth\/oauth-provider:*:*:*:*:*:node.js:*:*1.6.0 to before 1.6.11Vulnerablebetter-auth
cpe:2.3:a:better-auth:better_auth:*:*:*:*:*:node.js:*:*1.4.9 to before 1.6.11Vulnerablebetter-auth
cpe:2.3:a:better-auth:better_auth:1.4.8:-:*:*:*:node.js:*:*1.4.8Vulnerablebetter-auth
cpe:2.3:a:better-auth:better_auth:1.4.8:beta7:*:*:*:node.js:*:*1.4.8 beta7Vulnerablebetter-auth
  • cpe:2.3:a:better-auth:better-auth\/oauth-provider:*:*:*:*:*:node.js:*:* Versions 1.6.0 to before 1.6.11 Vulnerable ·better-auth
  • cpe:2.3:a:better-auth:better_auth:*:*:*:*:*:node.js:*:* Versions 1.4.9 to before 1.6.11 Vulnerable ·better-auth
  • cpe:2.3:a:better-auth:better_auth:1.4.8:-:*:*:*:node.js:*:* Versions 1.4.8 Vulnerable ·better-auth
  • cpe:2.3:a:better-auth:better_auth:1.4.8:beta7:*:*:*:node.js:*:* Versions 1.4.8 beta7 Vulnerable ·better-auth

Remediation

  • Fix · CNA better-auth (better-auth) Fixed in 1.6.0
  • Fix · CNA oauth-provider (@better-auth) Fixed in 1.6.11
  • Fix · GHSA-392p-2q2v-4372 @better-auth/oauth-provider (npm) Fixed in 1.6.11 Advisory →
  • Fix · GHSA-392p-2q2v-4372 better-auth (npm) Fixed in 1.6.0 Advisory →

Timeline

  1. 2026-10-02 Threatist record created from CVE-2026-53517
  2. 2026-10-03 Alias added: GHSA-392p-2q2v-4372

References

  • TI-2026-38592 Better Auth OAuth Provider: Race Condition in Authorization Code Exchange Enables Multi-Use Code Redemption CVSS 4.0HIGH 7.6
  • TI-2026-30026 Better Auth OAuth 2.1 Provider: Unprivileged users can register OAuth clients CVSS 4.0HIGH 7.1

Sources