CVE-2026-53517
Received
Received - Intake
Race Condition in Better Auth OAuth Token Refresh
Vulnerability report for CVE-2026-53517, including description, CVSS score, EPSS score, affected products, exploitability, helpful resources, and attack-flow context.
Publication date: 2026-07-15
Last updated on: 2026-07-15
Assigner: GitHub, Inc.
Description
Description
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.
CVSS Scores
EPSS Scores
| Probability: | |
| Percentile: |
Meta Information
Affected Vendors & Products
| Vendor | Product | Version / Range |
|---|---|---|
| better_auth | better_auth | From 1.4.8-beta.7 (inc) to 1.6.11 (inc) |
| better_auth | better_auth | to 1.6.0 (exc) |
| better-auth | better-auth | From 1.4.8-beta.7 (inc) to 1.6.11 (inc) |
| better-auth | better-auth | to 1.6.0 (exc) |
| better-auth | better-auth | 1.6.11 |
| better-auth | oauth-provider | to 1.6.11 (exc) |
| better-auth | oauth-provider | to 1.6.0 (exc) |
Helpful Resources
Exploitability
| CWE ID | Description |
|---|---|
| CWE-362 | The product contains a concurrent code sequence that requires temporary, exclusive access to a shared resource, but a timing window exists in which the shared resource can be modified by another code sequence operating concurrently. |
| CWE-367 | The product checks the state of a resource before using that resource, but the resource's state can change between the check and the use in a way that invalidates the results of the check. |