SECURITYCRITICALCVE-2026-121802

CVE-2026-121802: Account Takeover in @better-auth/expo via Unsigned State

@better-auth/expo before 1.7.16 signs caller-supplied state without checking it was server-issued, enabling account takeover (CVE-2026-121802, CVSS 9.1).

Dylan H.

Security Team

November 4, 2026
2 min read
CVE-2026-121802: Account Takeover in @better-auth/expo via Unsigned State

Critical severity

Rated critical. Prioritise patching — see the remediation guidance below.

Affected Products

  • @better-auth/expo versions before 1.7.16

CVE-2026-121802: Account Takeover in the better-auth Expo Plugin

CVE-2026-121802 affects @better-auth/expo before version 1.7.16. The package signs a caller-supplied state value without checking whether that value had actually been issued by the server. An attacker can therefore get the server to vouch for a value it never created, which leads to account-takeover outcomes. The NVD example given is unauthenticated changes of any account's email address.

The entry is scored at CVSS 9.1 (Critical).

Key Facts

FieldDetail
CVECVE-2026-121802
SeverityCritical (CVSS 9.1)
Package@better-auth/expo
AffectedVersions before 1.7.16
Fixed in1.7.16
ImpactAccount takeover, including unauthenticated email changes
Published2026-11-04

Why It Matters

Mobile apps built with Expo and better-auth rely on signed state to bind an authentication flow to a request the server started. If the server signs any state a client supplies, that binding stops meaning anything. Email change is a common stepping stone to full takeover through password reset, so every account in an affected deployment should be treated as exposed.

Remediation

  1. Upgrade @better-auth/expo to 1.7.16 or later and redeploy.
  2. Rotate the application secret after upgrading. The advisory notes this is required, because state values signed with the old secret remain a risk if the secret is not changed.
  3. Audit account email changes made since you adopted an affected version, and look for accounts whose email changed without a matching user-initiated request.
  4. Invalidate active sessions for any account you cannot verify.
  5. Notify affected users if you find signs of abuse.

References