{"id":"EUVD-2026-101744","enisaUuid":"bef2cf64-115f-3c7c-b6fc-dc8cd8e86a27","description":"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.","datePublished":"Oct 14, 2026, 10:52:45 PM","dateUpdated":"Oct 20, 2026, 2:26:30 AM","baseScore":6.3,"baseScoreVersion":"4.0","baseScoreVector":"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","references":"https://github.com/better-auth/better-auth/security/advisories/GHSA-44jh-23m7-hpcf\nhttps://www.vulncheck.com/advisories/better-auth-drizzle-adapter-1.6.17-before-1.7.7-rate-limit-bypass-via-race-condition\n","aliases":"CVE-2026-110861\nGHSA-wrjq-vqr4-qw7r\n","assigner":"VulnCheck","epss":0.22,"enisaIdProduct":[{"id":"3f6f6344-2710-3712-85ae-e7596e2df6f1","product":{"name":"kysely-adapter","vendor":{"name":"better-auth"}},"product_version":"1.6.17 \u003c1.7.0"},{"id":"a664cadd-dbcb-3a93-a77d-50c472beff3d","product":{"name":"drizzle-adapter","vendor":{"name":"better-auth"}},"product_version":"1.6.17 \u003c1.7.7"},{"id":"aa3ba4be-17b4-381e-b92a-1bde5ff9d3b5","product":{"name":"better-auth","vendor":{"name":"better-auth"}},"product_version":"1.6.17 \u003c1.7.7"}],"enisaIdVendor":[{"id":"34c8756d-1bea-37f5-aa9f-cc68bf5f0cb7","vendor":{"name":"better-auth"}}],"enisaIdVulnerability":[{"id":"45c0db05-5ffd-38f5-91fd-f9d5583d214b","vulnerability":{"id":"GHSA-wrjq-vqr4-qw7r","description":"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.","datePublished":"Oct 15, 2026, 12:31:18 AM","dateUpdated":"Oct 15, 2026, 12:31:18 AM","baseScore":0.0,"references":"https://github.com/better-auth/better-auth/security/advisories/GHSA-44jh-23m7-hpcf\nhttps://nvd.nist.gov/vuln/detail/CVE-2026-110861\nhttps://www.vulncheck.com/advisories/better-auth-drizzle-adapter-1.6.17-before-1.7.7-rate-limit-bypass-via-race-condition\n","enisa_id":"EUVD-2026-101744\n","aliases":"GHSA-wrjq-vqr4-qw7r\nCVE-2026-110861\n","epss":0.0,"dataProcessed":"Oct 25, 2026, 2:03:05 AM","vulnerabilityProduct":[],"vulnerabilityVendor":[]}},{"id":"d531899d-864b-351a-a26a-2d39de25b325","vulnerability":{"id":"CVE-2026-110861","description":"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.","datePublished":"Oct 14, 2026, 10:52:45 PM","dateUpdated":"Oct 20, 2026, 2:26:30 AM","status":"PUBLISHED","baseScore":6.3,"baseScoreVersion":"4.0","baseScoreVector":"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","references":"https://github.com/better-auth/better-auth/security/advisories/GHSA-44jh-23m7-hpcf\nhttps://www.vulncheck.com/advisories/better-auth-drizzle-adapter-1.6.17-before-1.7.7-rate-limit-bypass-via-race-condition\n","enisa_id":"EUVD-2026-101744\n","assigner":"VulnCheck","epss":0.22,"dataProcessed":"Oct 29, 2026, 7:13:43 AM","vulnerabilityProduct":[{"id":"1312d51f-900e-3cf3-97dd-ce1d2484e597","product":{"name":"drizzle-adapter","vendor":{"name":"better-auth"}},"product_version":"1.6.17 \u003c1.7.7"},{"id":"5f1e08e6-a73e-3c55-a116-e801432885d4","product":{"name":"kysely-adapter","vendor":{"name":"better-auth"}},"product_version":"1.6.17 \u003c1.7.0"},{"id":"8b638256-0614-36cf-96bb-68d104850979","product":{"name":"better-auth","vendor":{"name":"better-auth"}},"product_version":"1.6.17 \u003c1.7.7"}],"vulnerabilityVendor":[{"id":"344bcc4b-36d4-32ab-8b73-13de82737b4e","vendor":{"name":"better-auth"}}]}}],"enisaIdAdvisory":[]}