Loading...
Skip to main content

CVE-2026-72780

CRITICAL

Craft CMS: Passkey login accepts replayed WebAuthn assertions

Published August 7, 2026Updated August 12, 2026Source: osv

Summary

Craft CMS passkey login accepts WebAuthn requestOptions from the unauthenticated login request body and does not persist the updated credential counter returned by the WebAuthn assertion validator. A captured passkey login request body can therefore be replayed because the old challenge is accepted again, and the stored credential counter remains stale. Craft CMS 5.10.3 and current `5.x` HEAD accept `PublicKeyCredentialRequestOptions` from the unauthenticated `users/login-with-passkey` request body and do not persist the updated `PublicKeyCredentialSource` returned/mutated by `web-auth/webauthn-lib` after assertion validation. As a result, a captured passkey login request body is not one-time-use. Reposting the same `requestOptions` and `response` can result in validation against the same stale credential counter and create another Craft session for that user. This weakens passkeys from a fresh, server-challenged authentication ceremony into a replayable bearer artifact if one successful assertion body is exposed. ## Attack Scenario 1. A victim successfully logs in with a passkey. 2. The `POST /actions/users/login-with-passkey` body containing `requestOptions` and `response` is captured from an application/request log, debugging proxy, browser extension, compromised analytics layer, or another request-body disclosure point. 3. The attacker reposts the same body to `users/login-with-passkey`. 4. Craft deserializes the attacker-supplied `requestOptions`, so the old challenge remains accepted for validation. 5. The WebAuthn validator compares the assertion's `signCount` against the stale stored credential counter. 6. Because Craft did not persist the updated credential source on the original login, the same stale stored counter is used again. 7. The same captured assertion validates and Craft creates another authenticated session for the victim account. This is exactly what WebAuthn's challenge and signature-counter lifecycle is meant to prevent: a successful assertion should be bound to a server-issued challenge and should update server-side credential state so it cannot be used again. ## Impact An attacker who obtains one successful passkey login request body can replay it to create additional authenticated Craft sessions for that user. This defeats WebAuthn’s intended one-time challenge and signature-counter replay protection, reducing a passkey assertion to a reusable bearer artifact if exposed through request logging, a debugging proxy, a compromised same-origin script layer, or another request-body disclosure path. The impact is an account/session takeover of the affected passkey account after a single assertion body is captured. The issue is in Craft’s native passkey login flow and affects fresh Craft installations with passkeys enabled.

Remediation

Upgrade to the fixed version using your package manager.

Composer
Update craftcms/cms to 5.10.5 or later
composer require "craftcms/cms:^5.10.5"

After upgrading, run your dependency scanner again to confirm the vulnerability is resolved.

Affected Packages (1)

PackageEcosystemAffectedFixed In
craftcms/cms
packagist
5.0.0, 5.0.0-RC1, 5.0.1, 5.0.2 (+173 more)5.10.5

Vulnerability Classification

Common Weakness Enumeration (CWE) identifiers for this vulnerability type.

CVSS Score Breakdown

What the CVSS (Common Vulnerability Scoring System) 8.6 score means for each attack dimension.

Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
User Interaction
None
Scope
Confidentiality
Integrity
Availability

CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N

Frequently Asked Questions

What is CVE-2026-72780?
Craft CMS: Passkey login accepts replayed WebAuthn assertions This vulnerability has been assigned a severity rating of CRITICAL (CVSS score: 8.6/10).
How do I check if my project is affected by CVE-2026-72780?
CVE-2026-72780 affects craftcms/cms. Use GeekWala's free vulnerability scanner to check your dependencies against CVE-2026-72780 and 200,000+ other known vulnerabilities.

Severity & Exploitability

CVSS Score
8.6

High exploitability or significant impact. Prioritize remediation within days.

Also Known As

GHSA-wg23-69c2-gjc8

Related CVEs

  • CVE-2026-55791
    CRITICAL

    Craft CMS: Blind SSRF and Arbitrary JavaScript Injection via Host Header Poisoning in actionResourceJs

  • CVE-2026-32267
    HIGH

    Craft CMS Vulnerable to Privilege Escalation/Bypass through UsersController->actionImpersonateWithToken()

  • CVE-2026-72781
    HIGH

    Craft CMS: Authenticated RCE through Twig sandbox escape

  • CVE-2026-55794
    HIGH

    Craft CMS: Potential authenticated Remote Code Execution via referrer redirect

  • CVE-2026-31857
    HIGH

    CraftCMS has an RCE vulnerability via relational conditionals in the control panel

  • CVE-2026-25497
    HIGH

    Craft CMS: GraphQL Asset Mutation Privilege Escalation

  • CVE-2026-31858
    HIGH

    CraftCMS's `ElementSearchController` Affected by Blind SQL Injection

  • CVE-2025-68454
    MEDIUM

    Craft CMS vulnerable to potential authenticated Remote Code Execution via Twig SSTI

Check if you're affected

Scan your dependencies to see if this vulnerability affects your projects.

Scan Your Dependencies