CVE-2025-71400: Better Auth passkey plugin insecure direct object reference (IDOR) in passkey deletion

CVE-2025-71400 · Severity: high · CVSS 7.1 · Published 2026-08-02

The Better Auth passkey authentication plugin contains a critical authorization flaw that allows any authenticated user to delete passkeys belonging to other users. By simply guessing or enumerating passkey IDs, an attacker can disable all authentication credentials for other accounts, causing account lockout and service disruption. This is particularly severe for applications using auto-incrementing passkey IDs, which are trivial to enumerate. The flaw is fixed in version 1.4.0.

Vendors: Better-Auth, npm.

Quick answers

Is CVE-2025-71400 exploited in the wild?
No. Junglewise Threat Intelligence has no report of CVE-2025-71400 being exploited in the wild.
How severe is CVE-2025-71400?
High severity, with a CVSS score of 7.1, published 2 August 2026.
Which products and versions are affected?
Better-Auth Passkey < 1.4.0; @better-auth/passkey (npm) SEMVER:introduced=0,fixed=1.4.0.
Is there a fix for CVE-2025-71400?
Yes. @better-auth/passkey (npm): upgrade to 1.4.0 or later. Junglewise finds every place you run it, drafts the upgrade and applies it once you approve.
How is CVE-2025-71400 attacked?
It is attacked over the network, in a software library.
Am I affected by CVE-2025-71400?
Check whether you run Better-Auth Passkey or @better-auth/passkey (npm) at an affected version. Junglewise does that check for you around the clock: connect your code, cloud and domains, and it matches new vulnerabilities like this one against what you actually run and tells you when one reaches you.

How to fix

  • @better-auth/passkey (npm): upgrade to 1.4.0 or later
    npm install @better-auth/passkey@1.4.0

Technical details

The vulnerability is an insecure direct object reference (IDOR) in the passkey deletion handler. The POST /passkey/delete-passkey endpoint accepts a passkey ID from ctx.body.id without validating that the requesting user owns that passkey. The deletion query uses only the ID parameter, failing to filter results by the current user's ID. For applications configured with useNumberId (auto-incrementing IDs), attackers can trivially enumerate passkeys and delete all credentials. The fix (commit 06d6823) adds a userId filter to the deletion query, ensuring users can only delete their own passkeys. Attack requires a valid session but no additional user interaction. Patched in version 1.4.0.

Affected products

  • Better Auth @better-auth/passkey < 1.4.0

Identifiers

  • CVE-2025-71400
  • GHSA-4vcf-q4xf-f48m

Timeline

  • 2025-11-25: disclosed: Advisory published on GitHub
  • 2025-11-25: patched: Fix released in version 1.4.0

References

This page as Markdown. Free to reuse under CC BY 4.0 with a link back.