Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessRead OIDC discovery advertising alg=none
-
DeliveryForge unsigned ID token or intercept exposed auth code
-
ExploitPresent token to non-pinning relying party
-
ExecutionRelying party accepts unsigned/unprotected credential
-
ImpactAuthenticate as victim user
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A04:2025 - Cryptographic Failures
ASVS 5.0
V11 - Cryptography Approved algorithm selection
|
| Exploitation Conditions | Exploitation requires the target application to run better-auth below 1.6.11 with the legacy oidcProvider() or mcp() plugin enabled. For the unsigned-token path, a relying party of that OIDC server must use a JWT verification library that performs algorithm negotiation from the discovery document without pinning to a specific signing algorithm - if the RP pins its algorithm, the 'none' advertisement is inert. For the PKCE path, the authorization URL must be exposed to some party other than the user agent and the OP, and the client must use or omit code_challenge_method (which is silently downgraded to 'plain'); if S256 is enforced end-to-end there is no exposure. Limiting factors: the flaw is not exploitable against a correctly configured relying party, requires either RP-side algorithm mis-negotiation or authorization-URL exposure (reflected in CVSS AC:H and AT:P), and applications on @better-auth/oauth-provider are not affected. |
| Impact | The CVSS 4.0 vector (AV:N/AC:H/AT:P/PR:N/UI:N/VC:H/VI:H/VA:N/SC:H/SI:H/SA:N, base 9.4) reflects a network-reachable, unauthenticated issue with high confidentiality and integrity impact on both the vulnerable system and subsequent systems (relying parties), but with elevated attack complexity (AC:H) and a present attack requirement (AT:P). Those two conditions are the key tempering signals: exploitation is not turn-key. The 'none'-algorithm path only bites relying parties whose JWT verification performs algorithm negotiation from discovery without pinning a real signing algorithm - a client-side misconfiguration outside the affected server's control - and the PKCE path requires the authorization URL to be observable by a party other than the user agent and the OP. No EPSS score was provided in the input, and the CVE is not in CISA KEV, so there is no evidence of active or widespread exploitation. There is no POC referenced. This is a genuine high-severity design flaw worth prompt remediation because the impact is authentication/token integrity, but the real-world exploitability is gated by relying-party behavior and network exposure rather than being a default-config remote takeover. |
| Exploit ScenarioDerived | An attacker positioned to observe an application's OIDC discovery document forges an ID token signed with alg=none and presents it to a relying party whose JWT library negotiates the algorithm from that metadata without pinning, causing the relying party to accept the unsigned token and authenticate the attacker as an arbitrary user. Alternatively, where the authorization URL is exposed to a third party and plain PKCE is in use, the attacker intercepts the authorization code and completes the flow because plain PKCE provides no cryptographic binding. No public POC is referenced, and the high attack complexity (AC:H) plus present attack requirement (AT:P) mean success depends on relying-party misconfiguration or code exposure. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Aug 01, 2026
Authentication bypass in Better Auth before 1.6.11 stems from insecure cryptographic defaults in the legacy oidcProvider and mcp plugins, which advertise the 'none' signing algorithm in OIDC discovery and accept plain PKCE by default. Relying parties whose JWT libraries negotiate the algorithm from discovery metadata without pinning can be tricked into accepting unsigned ID tokens, while exposed authorization URLs allow interception of codes because plain PKCE offers no protection. Reported by VulnCheck with a vendor patch available; there is no public exploit identified at time of analysis and it is not listed in CISA KEV.
RemediationAI
Vendor-released patch: better-auth 1.6.11 - upgrade to 1.6.11 or later, which removes 'none' from the advertised algorithm list and stops accepting plain PKCE. Where feasible, migrate off the deprecated oidcProvider and mcp plugins to the canonical @better-auth/oauth-provider package, whose discovery document excludes 'none' and whose authorize schema rejects 'plain' at parse time. If you cannot upgrade immediately, apply the workarounds in the GHSA advisory (https://github.com/better-auth/better-auth/security/advisories/GHSA-9h47-pqcx-hjr4): concretely, ensure relying parties pin a specific signing algorithm (e.g. RS256) rather than negotiating from the discovery document so unsigned 'none' tokens are refused, and enforce S256-only PKCE by rejecting requests with code_challenge_method=plain or a missing method rather than downgrading to plain - the trade-off being that legacy clients that omit or send plain PKCE will break and must be updated. Also treat authorization URLs as sensitive and avoid logging or exposing them beyond the user agent and OP to blunt code interception.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in npm
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, a TypeScript/JavaScript authentication framework, specifically its OpenID Connect provider surface exposed via the oidcProvider() plugin and the mcp() plugin (which delegates to oidcProvider and inherits its defaults). The root cause maps to CWE-327 (use of a broken or risky cryptographic algorithm): the metadata builders unconditionally inject 'none' into id_token_signing_alg_values_supported (and resource_signing_alg_values_supported for mcp on the OAuth protected-resource metadata), signaling to relying parties that unsigned tokens are acceptable. Separately, the authorize handler silently rewrites a missing code_challenge_method to 'plain' before the allowlist check, so plain PKCE is accepted at runtime even though discovery advertises only S256 - a contradiction that violates RFC 9700 §2.1.1 (OAuth 2.1), which forbids plain. The canonical replacement package @better-auth/oauth-provider excludes 'none' from discovery and rejects 'plain' at parse time, and is not affected. Affected CPE: cpe:2.3:a:better-auth:better-auth:*:*:*:*:*:*:*:*.
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:H/AT:P/PR:N/UI:N/VC:H/VI:H/VA:N/SC:H/SI:H/SA:N
Network-reachable and unauthenticated (AV:N/PR:N) but success depends on relying-party mis-negotiation or URL exposure (AC:H); impact crosses to relying-party systems (S:C) with high confidentiality/integrity and no availability effect.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
Lifecycle Timeline
2DescriptionCVE.org
better-auth versions before 1.6.11 contain insecure cryptographic defaults in the oidcProvider and mcp plugins that advertise the none algorithm and accept plain PKCE by default. Attackers can exploit algorithm negotiation to accept unsigned tokens or intercept authorization codes when PKCE plain is used instead of the required S256 method.
Blast Radius
ecosystem impact- 34 npm packages depend on better-auth (21 direct, 13 indirect)
Ecosystem-wide dependent count for version 1.6.11.
Executive ViewAI
Better Auth (versions before 1.6.11) contains a critical authentication bypass vulnerability that allows attackers to forge authentication tokens and gain unauthorized access to protected systems. Any organization using this library for OIDC authentication faces immediate risk to user identity and data access controls, requiring urgent patching across all affected deployments.
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
Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.
More in Better Auth
View allBetter Auth is an authentication library for TypeScript. Rated high severity (CVSS 7.9), this vulnerability is remotely
Authorization bypass in the @better-auth/oauth-provider plugin for Better Auth (versions >= 1.4.8-beta.7 and < 1.6.5, pl
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
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-51816
GHSA-mw34-3w2r-wp9p
NVD
CVE.org
EPSS
Vulnrichment
VulDB
Exploit-DB