Better Auth: OAuth refresh-token replay via missing client authentication on oidc-provider and mcp plugins
Affects better-authSource GCVE Database
Not known to be exploited · CVSS 9.1 Critical : upgrade to 1.6.11 as a priority.
Data as of 30 Oct 2026, 06:59 UTC
- EPSS
- 0.2% chance of exploitation in 30 days – higher than 19% of CVEsExploit Prediction Scoring System: the likelihood attackers will use this flaw soon.
- Patch
- Available – fixed in 1.6.11
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:NExploitation evidence
Disclosed: evidence found.
CVE published 7 Jul 2026
Detectable: no evidence on record.
No public nuclei template indexed
Weaponized: no evidence on record.
No public exploit code indexed in Metasploit or Exploit-DB
Exploited in the wildExploited: no evidence on record.
Not in CISA KEV and no source reports exploitation
Observed by OffSeq MirageSeen by Mirage: no evidence on record.
No attack traffic recorded by OffSeq Mirage sensors
A missing step is not evidence of safety. Sources: cve.org (opens in a new tab), the Metasploit, Exploit-DB and nuclei-templates index as of 29 Oct 2026.
What to do
Upgrade better-auth to 1.6.11.
Affected software
| Product | Affected | Fixed in |
|---|---|---|
| npmbetter-auth | Affected
| Fixed in
|
Check your own hosts for these packages with threat-finder (opens in a new tab), our free open-source scanner.
AI-suggested
A fix is available in better-auth version 1.6.11 and later, which enforces client_secret verification on refresh_token grants for confidential clients and narrows CORS allowlists. Users should upgrade to better-auth@1.6.11 or later. Migration to the newer @better-auth/oauth-provider package is recommended as it enforces client authentication by default and is not affected. If upgrading is not immediately possible, workarounds include forcing all clients to public with PKCE, restricting token endpoint access by IP at the network layer, manually revoking refresh tokens on suspicion of compromise, and tightening CORS policies on the mcp endpoint. However, these workarounds do not fully mitigate the vulnerability without applying the patch.
Description
A critical vulnerability in the legacy better-auth oidcProvider and mcp plugins allows OAuth refresh-token replay due to missing client authentication on the refresh_token grant. Confidential OAuth clients are not required to provide client_secret when refreshing tokens, enabling an attacker with a valid refresh_token and client_id to mint new access and refresh tokens indefinitely until revoked or expired. The issue is fixed in better-auth version 1.6.11 by enforcing client_secret verification on refresh_token grants and narrowing CORS policies. Migration to the newer @better-auth/oauth-provider package is recommended as it enforces client authentication correctly. Workarounds include forcing all clients to public with PKCE, network ingress restrictions, and manual token revocation, but these do not fully mitigate the risk without patching.
References
- github.com/better-auth/better-auth/security/advisories/GHSA-pw9m-5jxm-xr6h (opens in a new tab)
- github.com/better-auth/better-auth (opens in a new tab)
- github.com/better-auth/better-auth/releases/tag/v1.6.11 (opens in a new tab)
- nvd.nist.gov/vuln/detail/CVE-2026-53512 (opens in a new tab)
- github.com/better-auth/better-auth/pull/9576 (opens in a new tab)
- github.com/better-auth/better-auth/commit/1f2ff4215c4affff0b140b0c0a712c0dde35659c (opens in a new tab)