Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate as any low-privilege user
-
DeliveryReach /oauth2/create-client endpoint
-
ExploitSubmit create request bypassing clientPrivileges hook
-
ExecutionRegister OAuth client with attacker redirect_uris
-
PersistLure victims through rogue OAuth flow
-
ImpactCapture tokens for phishing/account takeover
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V8 - Authorization Authorization logic validation
MITRE ATT&CK
1 technique across 1 tactic: Privilege Escalation The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Requires an authenticated (but low-privilege) user session (PR:L) that can reach the /oauth2/create-client or /admin/oauth2/create-client endpoint over the network. The bug only has security impact when the deployment has configured the clientPrivileges option expecting it to gate the create action - if clientPrivileges is not configured, there is no security consequence. Exploitation is limited to the create operation only (read, list, update, delete, and rotate correctly enforced the hook), and escalation to sensitive fields such as skip_consent additionally requires the separate misconfiguration of exposing the SERVER_ONLY admin creation endpoint to end-user sessions. Affected versions are @better-auth/oauth-provider >= 1.4.8-beta.7 and < 1.6.5 plus 1.7.0-beta.0/1.7.0-beta.1. |
| Impact | Signals are mixed and point to a real but non-critical, targeted risk. The CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:L/UI:N, VI:H/SI:L, score 7.1) shows network-reachable, low-complexity exploitation requiring only low privileges (an authenticated account) with a primarily integrity impact and no confidentiality or availability loss. EPSS is very low (0.05%, 15th percentile) and SSVC reports Exploitation: none, Automatable: no, Technical Impact: partial - consistent with a bug that requires a valid authenticated session and a specific configuration rather than mass, unauthenticated scanning. Publicly available POC code exists, but that is distinct from active exploitation, and there is no CISA KEV listing. A key scoping nuance: this issue only has security consequence for deployments that actually configured clientPrivileges expecting it to restrict client creation; deployments without clientPrivileges configured are unaffected, which narrows the true exposed population considerably. |
| Exploit ScenarioDerived | An attacker who holds any ordinary authenticated account on a Better Auth deployment that relies on clientPrivileges to restrict registration sends a request to /oauth2/create-client and registers a new OAuth client with attacker-controlled redirect_uris and metadata. Because the client appears as a registered first-party application, the attacker then lures victims through an OAuth flow that redirects tokens or codes to their infrastructure for phishing/account takeover. A public POC gist demonstrating the endpoint bypass is available, and the low attack complexity makes reproduction straightforward for any valid user. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Jul 24, 2026
Authorization bypass in the @better-auth/oauth-provider plugin for Better Auth (versions >= 1.4.8-beta.7 and < 1.6.5, plus 1.7.0-beta.0/1.7.0-beta.1) lets any authenticated user register OAuth clients even when the clientPrivileges option was configured to gate the create action. The OAuth client creation endpoints (/oauth2/create-client and /admin/oauth2/create-client) never invoked the clientPrivileges hook before persisting new records, so restrictions on client registration were silently ineffective. Publicly available exploit code exists; EPSS is low (0.05%) and SSVC lists no observed exploitation, indicating limited real-world weaponization to date.
RemediationAI
Vendor-released patch: @better-auth/oauth-provider 1.6.5, in which both create endpoints now invoke the clientPrivileges hook with action "create" before persisting a client - upgrade to 1.6.5 or later per GHSA-xr8f-h2gw-9xh6 (https://github.com/better-auth/better-auth/security/advisories/GHSA-xr8f-h2gw-9xh6). Note the 1.7.0 pre-release line (1.7.0-beta.0/1.7.0-beta.1) has no fixed release listed, so move off those betas onto a patched stable line. If you cannot upgrade immediately, block the /oauth2/create-client and /admin/oauth2/create-client routes at your reverse proxy or middleware for any user who should not register clients (trade-off: this also blocks legitimate self-service client registration and must be maintained in lockstep with your auth logic), and ensure the SERVER_ONLY /admin/oauth2/create-client endpoint is never reachable from end-user sessions since it exposes sensitive fields like skip_consent.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 5 packages in npm, euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
The affected component is Better Auth's OAuth 2.1 Provider plugin (npm package @better-auth/oauth-provider), a TypeScript authentication/authorization library. The clientPrivileges option is a policy hook intended to authorize dynamic client-registration operations (create, read, list, update, delete, rotate). This is a CWE-863 (Incorrect Authorization) flaw: the hook was correctly wired into every operation except create, so the create code path persisted new client records without ever consulting the authorization callback. CPE data covers cpe:2.3:a:better-auth:better-auth and cpe:2.3:a:better-auth:oauth-provider. The abused endpoints are the standard dynamic client registration routes; the admin variant (/admin/oauth2/create-client) is SERVER_ONLY by design and additionally governs sensitive fields such as skip_consent.
Know when Better Auth gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:N/VI:H/VA:N/SC:N/SI:L/SA:N
Network-reachable create endpoint needs only a low-privilege authenticated session (PR:L, AC:L); impact is limited integrity via unauthorized client registration (I:L), with no confidentiality or availability loss.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
4DescriptionCVE.org
Better Auth is an authentication and authorization library for TypeScript. Prior to 1.6.5, the clientPrivileges option documents a create action, but the OAuth client creation endpoints did not invoke the hook before persisting new clients. Deployments that configured clientPrivileges to restrict client registration were not actually restricted - any authenticated user could reach the create endpoints and register an OAuth client with attacker-chosen redirect URIs and metadata. This vulnerability is fixed in 1.6.5.
Executive ViewAI
Better Auth's @better-auth/oauth-provider plugin (versions 1.4.8-beta.7 through 1.6.4 and 1.7.0-beta releases) contains an authorization bypass that allows authenticated users to register OAuth clients regardless of configured access controls. This undermines intended privilege restrictions and enables unauthorized third-party application integrations, risking credential theft and lateral movement.
Apply vendor patch.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.
More in Better Auth
View allBetter Auth is an authentication library for TypeScript. Rated high severity (CVSS 7.9), this vulnerability is remotely
Privilege-escalating account takeover in the @better-auth/scim plugin (versions 1.4.0-beta.27 through 1.6.21 and 1.7.0-b
Authentication bypass in Better Auth before 1.6.11 stems from insecure cryptographic defaults in the legacy oidcProvider
Denial of service in Better Auth (npm) before 1.4.2 lets an unauthenticated remote attacker poison the router's base pat
Unauthenticated OAuth state values can be redeemed as Magic Link tokens in Better Auth 1.4.0-beta.18 through 1.7.6, lett
Authentication bypass in Better Auth's OAuth Proxy plugin (versions 1.5.0-beta.12 through 1.7.6) lets unauthenticated re
Path normalization bypass in Better Auth before v1.4.5 allows unauthenticated remote attackers to circumvent `disabledPa
Authorization bypass in @better-auth/scim versions 1.5.0 through 1.7.0-beta.3 allows any authenticated user to fully tak
Pre-account hijacking in better-auth (npm) allows a remote attacker to gain persistent, password-based access to any vic
Multiple authentication bypass vulnerabilities in @better-auth/sso before version 1.6.21 enable low-privileged attackers
Two domain-ownership authentication bypass flaws in @better-auth/sso allow authenticated organization owners to compromi
Better Auth versions 1.3.8-beta.3 to before 1.7.0-rc.3 with the deviceAuthorization plugin enabled are vulnerable to a U
EUVD-2026-25617
GHSA-xr8f-h2gw-9xh6
NVD
CVE.org
EPSS
Vulnrichment
VulDB
Exploit-DB