Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessIdentify Better Auth endpoint on PostgreSQL
-
DeliveryPrepare credential/code guess list
-
ExploitFire concurrent request bursts
-
ExecutionWin non-atomic check-then-update race
-
PersistExceed configured rate limit
-
ImpactBrute-force auth or OTP
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A07:2025 - Authentication Failures
ASVS 5.0
V6 - Authentication Brute-force prevention, rate limiting
|
| Exploitation Conditions | Requires the target to use Better Auth's database-backed rate limiting with a PostgreSQL store on an affected version (better-auth/@better-auth/drizzle-adapter 1.6.17-1.7.6, or @better-auth/kysely-adapter 1.6.17 before 1.7.0), and rate limiting must be enabled on the targeted endpoints (password sign-in, two-factor verification, one-time code, password reset). Exploitation further depends on the attacker achieving genuine request concurrency within the narrow check-then-update window - reflected in AC:H/AT:P - so server-side request serialization, low connection concurrency, or an external throttle (WAF/reverse-proxy rate limit) materially limits success. No special authentication is required (PR:N), but the impact is bounded to defeating throttling rather than direct data or system compromise. |
| Impact | This is a moderate-severity integrity/control weakness, not a high-urgency flaw. The single provided scoring signal is a CVSS 4.0 base vector (6.3, AV:N/AC:H/AT:P/PR:N/UI:N/VC:L/VI:N/VA:N): network-reachable and pre-authentication (PR:N), but with high attack complexity (AC:H) and a present attack requirement (AT:P) that reflects the race-window timing/concurrency needed to win the TOCTOU condition. No EPSS score, no CISA KEV listing, and no public POC were provided, so there is no evidence of active or at-scale exploitation; the signals are mutually consistent (a timing-dependent logic flaw scored at only Low confidentiality impact), not conflicting. The practical risk is that this flaw erodes a security control (rate limiting) rather than granting direct code execution or data access - its danger is as a force-multiplier for brute-force/credential-stuffing against sign-in, 2FA, OTP, and password-reset endpoints. Net priority: patch in the normal cycle for internet-facing deployments on PostgreSQL, elevated if those auth endpoints are high-value, but it does not warrant emergency response on the data provided. Note the input 'Information Disclosure' tag overstates impact - this is a rate-limit bypass (CWE-307), with only incidental confidentiality exposure through successful brute force. |
| Exploit ScenarioDerived | An attacker scripts many concurrent authentication attempts against a vulnerable Better Auth deployment on PostgreSQL, firing bursts so that multiple requests read the rate-limit counter before any of them writes the increment, letting far more attempts through than the configured limit. By repeatedly bursting, they brute-force or credential-stuff password sign-in, 2FA codes, or one-time codes well beyond intended throttling. No public exploit code was identified at time of analysis, and the narrow race window (AC:H/AT:P) makes reliable exploitation timing-sensitive. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 15, 2026
Rate-limit bypass in Better Auth (better-auth and @better-auth/drizzle-adapter 1.6.17 through 1.7.6, plus @better-auth/kysely-adapter 1.6.17 up to but not including 1.7.0) lets remote unauthenticated attackers defeat throttling on password sign-in, two-factor verification, one-time-code and password-reset endpoints by firing bursts of concurrent requests that all pass the limit check before any counter update lands. It is rated moderate (CVSS 4.0 6.3; independent assessment CVSS 3.1 AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:N/A:N) because success depends on achieving genuine request concurrency inside a narrow check-then-update window, and the realized impact is defeat of throttling that can enable credential or one-time-code guessing rather than direct data or system compromise. No CISA KEV listing and no public exploit identified at time of analysis; the bypass only applies where the deployment uses Better Auth database-backed rate limiting with a PostgreSQL store and has rate limiting enabled on the targeted endpoints.
RemediationAI
Vendor-released patch: upgrade better-auth and @better-auth/drizzle-adapter to 1.7.7 or later, and @better-auth/kysely-adapter to 1.7.0 or later, per GHSA-44jh-23m7-hpcf (https://github.com/better-auth/better-auth/security/advisories/GHSA-44jh-23m7-hpcf); no workaround or configuration flag is documented as fully restoring atomicity, so the version bump is the primary fix. If immediate upgrade is not possible, layer compensating controls and accept their trade-offs: enforce per-account and per-IP attempt limits at a reverse proxy or WAF in front of the authentication routes, accepting that this is typically IP-based and therefore both bypassable from distributed source addresses and prone to blocking legitimate users behind NAT; or move rate-limit state to a store that provides native atomic counter increments such as Redis with INCR or INCRBY and expiry, accepting the added dependency, operational complexity and the need to fail closed if the external store is unavailable; or, for teams able to modify the database layer, wrap the counter read-modify-write in an atomic conditional upsert or SELECT FOR UPDATE and/or raise the transaction isolation level to SERIALIZABLE with retry on serialization failure, accepting reduced throughput and additional retry logic on hot authentication endpoints. Regardless of the chosen path, alert on anomalous burst patterns against sign-in, two-factor, one-time-code and password-reset routes, and consider shorter token lifetimes for the affected flows while unpatched.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 3 packages in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
Better Auth is a TypeScript authentication framework whose optional rate limiter can persist counters in a database through adapter packages such as @better-auth/drizzle-adapter and @better-auth/kysely-adapter. On PostgreSQL, the limiter performs a read of the current attempt count, decides whether the configured threshold has been reached, and then writes the incremented value; because that check and the subsequent update are separate statements, the sequence is a classic time-of-check to time-of-use race (CWE-307, improper restriction of excessive authentication attempts). Under PostgreSQL's default READ COMMITTED isolation, concurrent requests can each read a pre-limit count and each proceed, so a burst of simultaneous requests against a protected endpoint consumes fewer counted attempts than were actually issued, and the configured limit is exceeded. The weakness is a missing atomic operation: a solution requires either an atomic conditional increment or upsert with an affected-row check, a SELECT FOR UPDATE row lock around the read-modify-write, or SERIALIZABLE isolation with retry handling. No CPE identifiers were supplied in the available data, so affected components are identified by npm package name and version range from the vendor advisory. The CVSS 4.0 vector supplied (AV:N/AC:H/AT:P/PR:N/UI:N) and the independent CVSS 3.1 vector (AC:H, AT:P equivalent) both reflect that exploitation demands reliable concurrency within a small window rather than a simple sequential request loop.
Know when PostgreSQL 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:L/VI:N/VA:N/SC:N/SI:N/SA:N
Network-reachable and pre-auth (AV:N/PR:N), but winning the concurrency race is timing-dependent (AC:H); impact is limited to weakened throttling enabling brute force, so C:L and I:N/A:N.
Primary rating from Vendor (vulncheck).
CVSS VectorVendor: vulncheck
Lifecycle Timeline
1DescriptionCVE.org
Better Auth @better-auth/drizzle-adapter and better-auth from 1.6.17 before 1.7.7, and @better-auth/kysely-adapter from 1.6.17 before 1.7.0, contain a race condition in database-backed rate limiting on PostgreSQL where the limit check is not atomic with the counter update. Remote attackers can send bursts of concurrent requests that pass the check together, exceeding configured limits on password sign-in, two-factor verification, one-time code, password reset, and other rate-limited endpoints.
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 PostgreSQL
View allPostgreSQL libpq functions PQescapeLiteral(), PQescapeIdentifier(), PQescapeString(), and PQescapeStringConn() improperl
An issue was discovered in Appsmith before 1.52. Rated critical severity (CVSS 9.8), this vulnerability is remotely expl
Argument injection vulnerability in PostgreSQL 9.2.x before 9.2.4, 9.1.x before 9.1.9, and 9.0.x before 9.0.13 allows re
Unauthenticated arbitrary file write in Splunk Enterprise (below 10.2.4 and 10.0.7) and Splunk Cloud Platform (below 10.
Unauthenticated SQL injection in Sangoma Switchvox SMB Edition 8.3 (build 104997) lets remote attackers execute arbitrar
PostgreSQL versions before 9.2.22, 9.3.18, 9.4.13, 9.5.8 and 9.6.4 are vulnerable to incorrect authentication flaw allow
The build_tablename function in pgsql.c in the PostgreSQL (aka pgsql) extension in PHP through 5.6.7 does not validate t
A vulnerability in the h2oai/h2o-3 REST API versions 3.46.0.4 allows unauthenticated remote attackers to execute arbitra
In PostgreSQL 9.3 through 11.2, the "COPY TO/FROM PROGRAM" function allows superusers and users in the 'pg_execute_serve
Unauthenticated SQL injection in Vendure Shop API allows remote attackers to execute arbitrary SQL commands against the
Parse Server is an open source http web server backend. Rated critical severity (CVSS 10.0), this vulnerability is remot
Hard-coded default PostgreSQL credentials shipped in the docker-compose.yaml of langgenius Dify through version 1.5.1 al
EUVD-2026-101744
GHSA-wrjq-vqr4-qw7r
NVD
CVE.org
EPSS
Exploit-DB