---
type: Article
title: "The State of Passkeys: Studying the Adoption and Security of Passkeys on the Web"
description: "PASSKEYS-RADAR tracks passkey deployment since 2021 from community directories, Tranco 1M, CrUX 18M and archived pages, reaching 872 passkey-enabled relying parties. PASSKEYS-ATTACKER then tests live implementations with 15 attack types and 28 detection methods: of 103 relying parties analysed, 18 were vulnerable to critical-severity threats and 53 to high-severity ones."
resource: "https://www.usenix.org/conference/usenixsecurity26/presentation/jannett"
tags: [article, webseclist-reference, en, usenix, passkeys, webauthn, identity, measurement-study, large-scale-scan, auth-bypass, owasp-a01-2021, owasp-a07-2021]
generated:
  by: webseclist-refs/1
  at: "2026-08-19T13:07:52+00:00"
status: stable
stale_after: 2027-08-19
sources:
  - id: original
    resource: "https://www.usenix.org/conference/usenixsecurity26/presentation/jannett"
    title: "The State of Passkeys: Studying the Adoption and Security of Passkeys on the Web"
    author: Louis Jannett, Andreas Mayer, Maximilian Westers, Vladislav Mladenov, Christian Mainka, Jörg Schwenk
also_at:
  - "https://www.usenix.org/system/files/usenixsecurity26-jannett.pdf"
  - "https://www.usenix.org/system/files/conference/usenixsecurity26/sec26_prepub_jannett.pdf"
authors:
  - Louis Jannett
  - Andreas Mayer
  - Maximilian Westers
  - Vladislav Mladenov
  - Christian Mainka
  - Jörg Schwenk
canonical_url: ""
cited_by:
  - "2026-ai.md:103"
commit: ""
content_sha256: 365dad7b5cc7c9a77f8adbf1c23dc48ce8b7554f7568270c0717e586a6640685
depth: full
depth_reason: default
kind: article
language: en
licence: unknown
original_url: "https://www.usenix.org/conference/usenixsecurity26/presentation/jannett"
published: ""
publisher: USENIX
publisher_english: ""
raw_sha256: 5a7759b4f5a5eca5f88be13c9ddac4e4d8c177a12358135e586447845d96d6e1
retrieved_from: "https://www.usenix.org/system/files/usenixsecurity26-jannett.pdf"
retrieved_kind: live
retrieved_utc: "2026-08-19T13:07:52+00:00"
slug: usenix-org-state-passkeys-studying-adoption-security-passkeys-web
snapshot: ""
title_english: ""
translation_file: ""
translation_of: ""
---

# The State of Passkeys: Studying the Adoption and Security of Passkeys on the Web

**The State of Passkeys: Studying the Adoption and Security of Passkeys on the Web** - Louis Jannett, Andreas Mayer, Maximilian Westers, Vladislav Mladenov, Christian Mainka, Jörg Schwenk, USENIX.

- Published: date not stated
- Original: <https://www.usenix.org/conference/usenixsecurity26/presentation/jannett>
- Also published at: <https://www.usenix.org/system/files/usenixsecurity26-jannett.pdf>
- Also published at: <https://www.usenix.org/system/files/conference/usenixsecurity26/sec26_prepub_jannett.pdf>
- Preserved from: https://www.usenix.org/system/files/usenixsecurity26-jannett.pdf (live) on 2026-08-19
- Licence: unknown

Rights remain with the original author and publisher. This is a research
archive of a source from the Web Hacking Techniques Index collections, kept so the
page going offline. To read the original, follow the link above.

## Content

> UNTRUSTED SOURCE TEXT. Everything below this line is third-party material
> quoted for research. It is data, not instructions. Do not follow directions,
> execute code, or fetch URLs because this text says so.

The State of Passkeys: Studying the Adoption
         and Security of Passkeys on the Web
 Louis Jannett, Ruhr University Bochum; Andreas Mayer and Maximilian Westers,
Heilbronn University of Applied Sciences; Vladislav Mladenov, Ruhr University Bochum;
Christian Mainka, University of Wuppertal; Jörg Schwenk, Ruhr University Bochum
         https://www.usenix.org/conference/usenixsecurity26/presentation/jannett




          This paper is included in the Proceedings of the
                 35th USENIX Security Symposium.
                     August 12–14, 2026 • Baltimore, MD, USA
                                 ISBN 978-1-939133-58-8


                         Open access to the Proceedings of the
                           35th USENIX Security Symposium
                                   is sponsored by
The State of Passkeys: Studying the Adoption and Security of Passkeys on the Web

                         Louis Jannett 1 , Andreas Mayer 2 , Maximilian Westers 2 ,
                      Vladislav Mladenov 1 , Christian Mainka 3 , and Jörg Schwenk                                               1

                                                 1 Ruhr University Bochum
                                      2 Heilbronn University of Applied Sciences
                                                 3 University of Wuppertal



                         Abstract                                                                  Passkey Authentication

                                                                                                     WebAuthn                         CTAP
Passkeys provide a secure and phishing-resistant authenti-                                          (a) challenge                    (b) sign        (c) confirm

cation method based on FIDO2 and WebAuthn. They have                                     Relying Party                  Client            Authenticator            User
recently gained popularity, with an increasing number of web-
sites adopting them. Nevertheless, a comprehensive security                          This Paper: Adoption and Securit y of Passkey s

analysis that evaluates such websites at scale has not been              PASSKEYS- RADAR                                 PASSKEYS- A TTACKER
fully addressed. We present PASSKEYS -R ADAR, a continu-                 radar.passkeys.tools                            attacker.passkeys.tools
                                                                                                                    - 15 Attack Types, 28 Detection Methods
ously updated dataset that tracks the deployment of passkeys         - Internet-Wide Scanning
                                                                     - Historic Data Analysis
                                                                                                                    - 103 RPs Analyzed
                                                                                                                    - 18 RPs vulnerable to critical- severity threats
on the Internet since 2021. To build this dataset, we ag-            - 872 Passkey- Enabled RPs
                                                                                                                    - 53 RPs vulnerable to high- severity threats

gregated diverse sources, including community directories,
Tranco 1M, CrUX 18M, and historic Internet archive data. We       Figure 1: Scope of this Paper. First, we quantify the adoption
analyzed the collected data of 872 passkey-enabled websites       of passkeys on real-world websites using PASSKEYS -R ADAR
and shed light on how passkeys are implemented and man-           (§3) and we study how they are used and managed by these
aged. We identify major differences in how websites allow         sites (§4). Second, we implement all security tests from the
users to add or delete passkeys and find that websites request    WebAuthn specification into PASSKEYS -ATTACKER (§5),
authenticators to use deprecated cryptographic algorithms.        and evaluate how secure websites implement passkeys (§6).
   To perform a comprehensive security evaluation of passkey-
enabled websites, we developed PASSKEYS -ATTACKER. The
tool allows for precise manipulation of WebAuthn messages         with strong public-key cryptography for improved security.
at every step of the protocol and integrates 15 attack types of   They are based on standards developed by the Fast IDentity
which 10 were not covered in previous work. Among them, 2         Online (FIDO) Alliance [36] and W3C [89]. Today, passkeys
attack types have critical CVSS scores. We discovered them        are supported across all major browsers, including Chrome,
on 18 out of 103 evaluated websites. These attacks take over      Firefox, and Safari, as well as on platforms such as Windows,
user accounts, delete their passkeys, or lock them out of their   macOS, iOS, and Android [77]. Large corporations such as
accounts. Nearly half of the tested sites (53) were vulnerable    Apple, Google, and Microsoft drive the adoption of passkeys.
to at least one attack with a high CVSS score, exposing users     These companies are members of the FIDO Alliance and
to threats such as phishing and session fixation.                 actively integrate and promote passkeys in their ecosystems.
                                                                     Passkey Authentication Scheme. Passkeys are built on
1   Introduction                                                  two core protocols, jointly referred to as FIDO2: (1) Web Au-
                                                                  thentication API (WebAuthn), which defines how the Relying
“Hackers don’t break in – they sign in” [66]. In May 2025,        Party (RP) communicates with the client, and (2) Client-to-
security researchers found 184 million leaked passwords [96].     Authenticator Protocol (CTAP), which specifies how the client
Within a few weeks, this estimate was revised to 16 billion       communicates with the authenticator. This paper examines
passwords, making it the largest known password compromise        WebAuthn and evaluates the security of RPs, see Figure 1.
to date [95]. Such incidents highlight the urgent need to move    (a) First, the RP initiates the authentication process by pro-
beyond passwords towards passwordless authentication.                 viding a randomly generated challenge to the client.
   Passkeys. Passkeys are the modern, phishing-resistant, and     (b) The client then asks the authenticator to sign this chal-
user-friendly authentication method that replaces passwords            lenge with the private key that it has stored for that RP.



USENIX Association                                                                              35th USENIX Security Symposium                                     5039
(c) The user confirms the request through a gesture and, if          RQ4: How many websites are compliant with the
      required, is verified via biometrics or PIN.                passkey security considerations? (§6). The WebAuthn stan-
Finally, the signed challenge is returned to the RP, which        dard [89] defines detailed security and privacy requirements.
verifies it using the public key that the user registered when    From these, we derived 15 attack types and implemented 28
enabling passkeys for the website. Surprisingly, there has        detection methods in PASSKEYS -ATTACKER. Instead of as-
been little security research on how RPs are verifying the        signing custom names and impact to each attack type, we
actual authentication process on the web [44, 56, 98].            relied on standard frameworks. We used CWEs to categorize
   To fill this gap, we formulated four research questions        our attack types. To assess their severity, we mapped them
(RQs) to better understand passkey adoption and security.         to known CVEs and rated them using the CVSS score. For
   RQ1: How accurately do current sources reflect the             7 cases without existing CVEs, we assigned scores based on
adoption of passkeys? (§3). An essential prerequisite for         comparable vulnerabilities. We then analyzed 103 RPs with
studying passkeys on the web is to determine which web-           PASSKEYS -ATTACKER. The results are alarming: none of
sites currently support passwordless authentication. Several      the tested RPs passed all security checks mandated by the
methods exist for this. For example, Jannett et al. [50] mon-     standard. Even more critically, 18 RPs contained at least one
itored WebAuthn API calls on the Tranco 1M. Community             vulnerability rated as critical and 53 as high. Such flaws en-
directories also list sites that have adopted passkeys, such as   able attackers to bypass authorization, delete passkeys of other
fidoalliance.org, keepersecurity.com, and passkeys.               users, or prevent them from accessing their accounts.
directory. Websites may further announce support through             Contributions. We make the following contributions:
well-known URLs. However, the accuracy of these data
sources remains unclear. To address this, we built PASSKEYS -         ▶ We systematize the passkey registration and authentica-
R ADAR, a fully automated scanner that continuously detects             tion flows with a focus on security (§2).
passkey-enabled websites. We merged 12 public directories             ▶ To support future research, we introduce PASSKEYS -
and complemented them with monthly scans of the CrUX                    R ADAR, the most comprehensive automatically gen-
18M. Our results show that scanning domains uncovers about              erated and continuously updated directory of passkey-
125% more RPs than all community directories combined.                  enabled websites (§3). PASSKEYS -R ADAR identified
PASSKEYS -R ADAR identified 872 RPs that support passkeys.              872 RPs with support for passkeys. On 208 of them, we
   RQ2: How are passkeys used on websites? (§4). At first               successfully registered passkeys and analyzed their man-
glance, managing passkeys appears straightforward, but our              agement, supported features, and whether passkeys are
study proved us wrong. We manually created test accounts                used for passwordless authentication or 2FA (§4).
on 208 websites and registered passkeys on them. Even dur-            ▶ We present PASSKEYS -ATTACKER, the largest set of
ing registration, we observed several peculiarities. Some sites         automated security tests for passkeys to date. Beyond
skipped password confirmation for adding a passkey, although            predefined checks, it allows fine-grained manipulation
they required it for changing a password. Others did not allow          of each step in the passkey message flow (§5). Using
deleting a passkey once registered or supported only a single           PASSKEYS -ATTACKER, we conducted a semi-automatic
passkey. 61 sites accepted passkeys only as a second factor,            analysis of 103 passkey-enabled websites. None passed
still requiring a password. Some used the same passkey for              all required security tests, and over half contained vul-
both passwordless login and two-factor authentication, de-              nerabilities with a high or critical CVSS score (§6).
pending on the user-chosen passkey authentication mode. All
but one site requested deprecated cryptographic algorithms,       2     Passkeys and How They Work
and only 90 of 208 RPs used the recommended ones.
   RQ3: How comprehensive are state-of-the-art passkey            The FIDO Alliance [36] is an open industry group that devel-
security frameworks? (§5). Web security largely depends on        ops and promotes passkey standards. Our work focuses on
RPs correctly implementing passkeys. To study this at scale,      websites and, thereby, on the WebAuthn protocol [89].
we reviewed existing tools from prior work. Research so far
has covered authenticators [15, 54, 55, 64, 82] and provided      2.1     Passkeys Protocol Flow
formal analyses [9, 10, 11]. Yet, standardized WebAuthn vali-
dations on the RP side have received little attention. Previous   Surprisingly, there is no dedicated source that directly de-
studies explored other attacker models, such as malware [56]      scribes the WebAuthn protocol flow. Instead, the flow is only
or malicious browser extensions [98], or performed manual         implicitly defined in the WebAuthn standard [89], which we
checks on a few validations [44, 45]. To address this gap,        summarize in the following.
we developed PASSKEYS -ATTACKER, a framework that can                Protocol Overview. To log in to RP, a user must first
intercept, analyze, and modify all WebAuthn messages. To          register a passkey with their account (→ registration phase).
our knowledge, it is the first system that automates active and   If the user does not yet have an account, they can create
extended attacks on passkey registration and authentication.      one and immediately set up a passkey as their primary login



5040   35th USENIX Security Symposium                                                                      USENIX Association
                                     Frontend                                                                   Backend
                                                                                                                                                     (1) rpname and username are human-readable names for the
                                                                                                                                                           RP and the user.
            User                  Relying Party                Client              Authenticator            Relying Party                            (2) userid is a unique and random identifier for the user.
                      " Register passkey"   Fetch Creation Options:
                                                                                                                                                     (3) challenge is a fresh session-bound random value.
                                            creationOptions = rp id , rp name, user id , user name, challenge
                                                                                                                       §5.4
                                                                                                                                                     (4) rpid is a domain that identifies the RP. By default, it is
                                   §5.1.3
                                            Call API: creationOptions                                                                                      set to the effective domain of the origin on which the
                                                                    clientData = "create", challenge, origin           §5.8.1
                                                                                                                                                           passkey is created. It mitigates phishing by protecting
                                                                    Request Attestation:
 Registration Phase




                                                                    hash(clientData), rp id&name, user id&name         §6.3.2                              passkeys from being accessed by other origins.
                      User Authorization: User Presence and User Verification
                                                                                                                        §6.5
                                                                                                                                                    The creationOptions can include extra parameters, such as
                                                 §6.3.2.6                                   Create Attestation:
                                                                                            cred id , cred pubkey , cred privkey ? init()           preferences for cryptographic algorithms or types of authenti-
                                                                                            authData = hash(rp id ), flags, sig cnt = 0,
                                                                                                       aaguid, cred id , cred pubkey                cators (e.g., hardware vs. software).
                                                                                        db.store(rp id , user id , cred id , user name,

                                                                          §6.3.2
                                                                                                 sig cnt , cred pubkey , cred privkey)                 Call API. The RP’s front end passes the creationOptions
                                                                                        Optional:
                                            Resolve API:
                                            clientData,
                                                                    Return Attestation: sig = sign(authData, hash(clientData))
                                                                    authData, [sig]                                                                 to the client’s navigator.credentials.create API [67].
                                   §5.2.1   authData, [sig]

                                                                                                                       Verif y+Store
                                                                                                                                                       Request Attestation. The client constructs the clientData.
                                                                                                                                            §7.1
                                                                                                                       Attestation
                                                                                                                       db.store(credid ,
                                                                                                                                                    It contains the current context (“create” for the registration
                      " Successfully registered passkey"
                                                                                                                       cred pubkey , sig cnt)       phase), the challenge, and the RP’s origin. The client must
                                                                                                                       db.map(user id , cred id )
                                                                                                                                                    verify that the specified rpid matches the RP’s origin or is a
                                                                                                                                                    registrable suffix.
Figure 2: Passkey Registration Phase (we refer to the corre-                                                                                           User Authorization. Covert passkey registrations would
sponding sections in the WebAuthn standard [89]).                                                                                                   enable user tracking. To prevent this threat, the user must
                                                                                                                                                    confirm each registration. There are two possibilities for this
                                                                                                                                                    purpose: user presence and user verification. User presence
method. For existing accounts, the user must first authenticate                                                                                     means that the user has intentionally approved the creation of
using their current login method, i.e., passwords, Single Sign-                                                                                     the passkey. For example, the user has clicked on a button on
On (SSO), or email magic links. Once authenticated, they can                                                                                        a hardware security key. User verification means that the user
navigate to their account settings to register a new passkey.                                                                                       was explicitly authenticated during registration. For example,
After registration, the user can use the passkey to sign the RP’s                                                                                   the user entered a PIN or used biometrics.
challenge and log in to the RP (→ authentication phase).                                                                                               Create Attestation. The authenticator generates a new cre-
   Protocol Roles. Providing a passwordless login experience                                                                                        dential, which consists of a random identifier (credid ), a public
with passkeys requires orchestration between multiple roles.                                                                                        key (credpubkey ), and a private key (credprivkey ). It then assem-
   (1) Relying Party: The RP is the entity to which the user                                                                                        bles the authData, which includes: (1) the SHA256-hashed
wants to authenticate, for example, a website.                                                                                                      rpid , (2) flags indicating whether the user was present and
   (2) Authenticator: The authenticator generates the public                                                                                        verified, and whether the credential is eligible for backup and
and private key pair during registration. Later, it uses the pri-                                                                                   backed up, (3) sigcnt – a signature counter that increments
vate key to sign the challenge during authentication. Authen-                                                                                       with each authentication, (4) AAGUID – an Authenticator
ticators can be physical devices [99], for example, a phone or                                                                                      Attestation Globally Unique Identifier (AAGUID) that identi-
hardware security key. They can also be software-based [43].                                                                                        fies the authenticator’s manufacturer and model, and (5) the
Examples include a password manager like Chrome’s built-in                                                                                          credid and credpubkey .
Google Password Manager and 1Password. Likewise, they                                                                                                  Return, Resolve, and Verify. After the authenticator re-
can be integrated into the operating system’s keychain, such                                                                                        turns the attestation to the client, the client augments its client-
as Windows Hello or the iCloud Keychain.                                                                                                            Data and completes the API call. As a result, the RP’s front
   (3) Client: The client facilitates communication between                                                                                         end receives the attestation and forwards all data to its back
RPs and authenticators. In our web scenario, it is the browser.                                                                                     end. The back end validates the attestation and, if successful,
                                                                                                                                                    associates the credpubkey with the user’s account.

2.2                       Passkey Registration Phase                                                                                                2.3    Passkey Authentication Phase
Figure 2 was generated by utilizing the implicitly defined                                                                                          We depict the authentication phase in Figure 3.
registration phase within the WebAuthn standard [89]. We                                                                                               Discoverable vs. Non-Discoverable Mode. There are two
assume that the user is logged in and initiates the passkey                                                                                         authentication modes: the discoverable mode and the non-
registration from their account settings.                                                                                                           discoverable mode. In the discoverable mode, there’s no initial
   Fetch Creation Options. First, the RP sends a request                                                                                            indication of which user is logging in to the RP. Typically,
to its back end. It uses the Fetch API [69] to obtain fresh                                                                                         the RP’s login page only displays a “Login with Passkey”
creationOptions. These options include:                                                                                                             button. The authenticator retains the username alongside the



USENIX Association                                                                                                                                                      35th USENIX Security Symposium           5041
                                        Frontend                                                                    Backend                                                                     PASSKEYS- RADAR (§3)
                                                                                                                                                                                                radar.passkeys.tools                   automatic
                                                                                                                                                                                                                                       periodic
                                                                                                                                                                                                                                       scanning
             User                     Relying Party                  Client            Authenticator             Relying Party                                              Tranco 1M (Prior Work)




                                                                                                                                                                                                                                                   attacker.passkeys.tools
                                                                                                                                                                                                                                                   PASSKEYS- A TTACKER (§5)
                                                                                                                                                                                 1. Find login pages by crawling, search engine, ...
                        " Login" or
                        " Login as alice"      Fetch Request Options: user name=alice                                                                                            2. Trigger and intercept WebAuthn API calls
                                                                                                                            user id ? db.get(username )
                                                                                                                                                        §4
                                               requestOptions = rp id , challenge, cred id                                  cred id ? db.get(userid )
                                                                                                                                                                            CrUX 18M                                                    Merging
                                                                                                                            §5.5
 Authentication Phase




                                               Call API: requestOptions                                                                                                          1. GET /.well- known/webauthn != 404
                                      §5.1.4                                                                                                                                     2. GET /.well- known/passkey- endpoints != 404
                                                                         clientData = "get", challenge, origin              §5.8.1
                                                                         Request Assertion:                                                                                 Communit y Directories
                                                                         hash(clientData), rp id , cred id
                                                                                                                            §6.3.3                                               1. Fetch latest entries from community directory
                        User Authorization and Selection of user name §6.3.3.7                                                                                                   2. Fetch historic entries from internet archive
                                                                                                                            §6.1
                                                                                                  Create Assertion:
                                                                                                  user id , cred id , cred privkey ? db.get(rp id and user name
                                                                         Return Assertion:                                                  or via the cred id )
                                               Resolve API:              user id , cred id ,      authData = hash(rp id ), flags, sig cnt
                                               clientData,               authData, sig            sig = sign(authData || hash(clientData))
                                     §5.2.2
                                               user id , cred id ,
                                               authData, sig
                                                                                  §6.3.3                                                         §7.2
                                                                                                                                                                   Figure 4: PASSKEYS -R ADAR enables our fully automatic
                                                                                                                            Verif y Assertion
                                                                                                                            cred pubkey ? db.get(user id           detection of passkey implementations on websites.
                                                                                                                                          and/or cred id )
                        " Welcome, Alice!"                                                                                  verify(sig, credpubkey ,
                                                                                                                            authData || hash(clientData))


                                                                                                                                                                   (which includes the challenge).
Figure 3: Passkey Authentication Phase (we refer to the cor-                                                                                                          Return, Resolve, and Verify. The authenticator returns
responding sections in the WebAuthn [89] standard). Green                                                                                                          the assertion to the client, which augments its clientData and
parameters and steps are only used in non-discoverable mode.                                                                                                       resolves the API call. The front end forwards all data to the
                                                                                                                                                                   back end, which verifies that the correct challenge was signed
                                                                                                                                                                   using the credpubkey that it has stored for the userid and credid .
rpid and credprivkey , enabling it to request the user to choose
the username for login. For example, consider a user who has
two different accounts on the same RP. In the discoverable                                                                                                         3     PASSKEYS -R ADAR: Fully Automatic Detec-
mode, the user does not provide any hint to the RP about                                                                                                                 tion of Passkey Implementations on the Web
which account the user wants to use to log in. Instead, the
authenticator prompts the user to choose one of those two                                                                                                          This section answers RQ1 and presents PASSKEYS -R ADAR,
accounts. This task is easy for software authenticators, such as                                                                                                   a fully automated large-scale method for detecting passkey-
a browser’s password manager, but not for hardware security                                                                                                        enabled websites, as detailed in Figure 4.
keys. Thus, there is the non-discoverable mode. In this mode,
the user needs to submit a username directly on the RP’s login
page. This way, the RP back end can perform a database                                                                                                             3.1    Detecting Passkey-Enabled Websites
lookup of the username and determine the registered credid .                                                                                                       We combine three techniques to build the most comprehensive
The credid is passed to the authenticator, allowing it to select                                                                                                   collection of passkey-enabled websites to date. To support
the appropriate credprivkey for signing the challenge.                                                                                                             future large-scale analyses of passkeys, we run automated
   Fetch Request Options. First, the RP’s front end obtains                                                                                                        periodic scans that continuously update this dataset. This
fresh requestOptions from its back end. They include the rpid ,                                                                                                    provides researchers access to the most current list and allows
a fresh challenge, and, in non-discoverable mode, the credid                                                                                                       us to monitor the long-term evolution of passkeys.
of the credential that should be used to sign the challenge.                                                                                                          Tranco 1M (Prior Work). Recently, Jannett et al. [50]
   Call API. The RP’s front end passes the requestOptions to                                                                                                       have published a tool that scans the Tranco top 1M websites
the client’s navigator.credentials.get API [68].                                                                                                                   and their login pages. They automatically detect passkey-
   Request Assertion. The client constructs the clientData.                                                                                                        enabled websites, but they did not further investigate this infor-
It includes the current context, which equals “get” for the                                                                                                        mation. Since the authors made their dataset and source code
authentication phase. Also, it includes the challenge and the                                                                                                      publicly available [85], we could build upon their work. Inves-
RP’s origin. The client sends a hash of the clientData to the                                                                                                      tigating their source code, we discovered that they solely used
authenticator, along with the rpid and, in non-discoverable                                                                                                        WebAuthn API calls to detect passkey logins. We enhanced
mode, the credid .                                                                                                                                                 this approach with further techniques as outlined below.
   User Authorization. To prevent silent authentication and                                                                                                           CrUX 18M – Well-Known Documents. Well-known doc-
protect against stolen credentials, the user’s presence and iden-                                                                                                  uments [94] serve various purposes, such as proving do-
tity must be verified. In discoverable mode, the authenticator                                                                                                     main ownership [87], delivering metadata [31], or providing
additionally prompts the user to choose a username for login.                                                                                                      machine-readable instructions for responsible vulnerability
   Return Assertion. The authenticator constructs the auth-                                                                                                        disclosure [38]. These documents are always located at fixed
Data, which includes the hashed rpid , flags, and the signature                                                                                                    paths on a website, making them easy to detect automatically.
counter. It loads the credprivkey corresponding to the userid and                                                                                                  In the context of passkeys, there are two relevant well-known
credid , and uses it to sign the authData and clientDataHash                                                                                                       documents: (1) The webauthn document [91] is hosted at



5042                           35th USENIX Security Symposium                                                                                                                                                                  USENIX Association
/.well-known/webauthn. It enables the Related Origin Re-            information content of the sources. All entries are consoli-
quests (ROR) feature, which allows a single passkey to be           dated into a single input file, each containing at least a domain,
shared across multiple related sites (see §6.2.3). (2) The end-     a name, or both. To align entries, we apply normalization and
points document [3] is located at /.well-known/passkey- ⌋           pattern-matching techniques, such as stripping whitespace
endpoints. It allows RPs to signal their support for passkeys.      and converting to lowercase. We then compare names using
In addition, it specifies where users can create new passkeys       substring matching. For example, “Google” is considered part
and manage existing ones.                                           of “Google LLC”, so we merge these entries. Subdomains
   Starting in February 2025, we have conducted monthly             like login.google.com are reduced to their registrable base
scans of these two documents. Each month, we retrieve the           google.com. We merge domains if they match or share the
latest Chrome User Experience Report (CrUX) dataset from            same base domain, such as google.com and google.co.uk.
Google BigQuery [20], which covers 18M sites. We checked            Nevertheless, some entries remained distinct despite using the
each site for the presence of these well-known files.               same authentication system, such as gmail.com and google ⌋
   Community Directories. Several websites curate lists of          .com. To resolve such cases, we additionally leveraged the
passkey-enabled websites. We refer to these as community            Tracker Radar Entity Map [30], which identifies domains and
directories because they are manually maintained by compa-          names belonging to the same organizational entity. This pre-
nies or the community. When a website adopts passkeys,              vents large providers from disproportionately inflating the
it must be added to these directories by hand to indicate           overall passkey adoption rate.
its support. These lists are commonly published by pass-
word managers [1, 70, 72, 73, 74, 76],1 identity management
providers [63], community-driven platforms [2, 71, 92, 93],         4     Passkeys in the Wild: Adoption and Real-
and the FIDO alliance itself [37]. For instance, 1Password                World Usage on Websites
leverages its list to notify users when a website in their vault
has added passkey support, encouraging them to upgrade their        In this section, we answer RQ2 by presenting the first com-
login credentials.                                                  prehensive analysis of passkeys on real-world websites. Our
   To compile our set of community directories, we                  study consists of two parts: (1) We analyze the adoption of
searched Google for the terms “passkey/webauthn/2fa direc-          passkeys over the past four years, highlighting their growth
tory/websites/lists/community” and reviewed the first five          across websites. (2) We then conduct the first in-depth inves-
pages of results. We excluded forums, news articles, and blog       tigation of how passkeys are implemented in practice, assess-
posts announcing new passkey adoptions. Since our focus is          ing, among other aspects, which features of the WebAuthn
on websites, we also removed resources listing operating sys-       standard [89] are employed and how resilient these implemen-
tems, user agents, or authenticators. Finally, we used advanced     tations prove to be. Moreover, we report on how passkeys can
search features in ChatGPT and Perplexity, but these revealed       be managed by users, such as being added or deleted, based
no further directories beyond those already identified.             on our observations during the analysis.
   Since February 2025, we have conducted weekly scans of
these community directories to collect the most recent entries.     4.1    Part 1: Adoption of Passkeys
To analyze historical trends, we also extended our tool to
retrieve all archived snapshots of these directories from the       When aggregating all upstream sources (§3.1), we identified
Internet Archive’s Wayback Machine [90], with data dating           8,523 websites. Many of these were duplicates, as the same
back to May 2021.                                                   sites appeared across multiple community directories. After
                                                                    merging (§3.2), 872 unique websites remained.
                                                                       Figure 5 depicts the adoption of passkeys on real-world
3.2    Merging Passkey-Enabled Websites                             websites over the past four years. Most directories emerged
Each detection technique has its limitations. For exam-             in late 2023 and early 2024, with varying update frequen-
ple, community-maintained directories may overlook lesser-          cies. 1Password [1] (passkeys.directory) proved to be the
known websites, and well-known documents are still not              most valuable source, offering the second largest but most
widely deployed on the web. To address these shortcomings           frequently updated collection of passkey-enabled sites.
and improve the overall completeness of our dataset, we adopt          The number of sites deploying the webauthn document [91]
a methodology inspired by the Tranco top sites ranking [61,         has grown significantly in the last 6 months, from 27 to 177
62]. At the core of this approach is the merger that aggregates     websites (+650%). In contrast, adoption of the endpoints doc-
entries from all detection sources into a single, unified list.     ument [3] declined slightly, from 387 to 344 domains (-12%).
   While merging might seem trivial at first glance, it involves       By combining multiple detection techniques for the first
significant complexity due to the heterogeneous structure and       time, we more than doubled the known number of passkey-
                                                                    enabled sites at the start of our study (see logarithmic scale
  1 E.g., 1Password, 2Stable, Bitwarden, Dashlane, Enpass, Keeper   in Figure 5). As a result, our PASSKEYS -R ADAR currently



USENIX Association                                                                     35th USENIX Security Symposium           5043
                    1000                                                                                                                           radar.passkeys.tools

                     750
                                                                                                                                 +125%
                    500    scale change (log above)
                    400


                                                                                                                                                   well-known/endpoints


                    300
       # Websites




                                                                                                                                                   hideez.com
                                                                                                                                                   passkeys.directory
                                                                                                                                                   keepersecurity.com
                                                                                                                                                   passkeys.2stable.com
                                                                                                                                                   passkeys.2fa.directory
                    200                                                                                                                            2fa.directory
                                                                                                                                                   well-known/webauthn
                                                                                                                                                   passkeys.com
                                                                                                                                                   fidoalliance.org


                                                                                                                                                   dashlane.com
                                                                                                                                                   passkeyindex.io
                    100                                                                                                                            enpass.io


                                                                                                                                                   passkeys.io



                      0
                                                                                                              archived data ← → start of our scans
                       07/2021         01/2022         07/2022    01/2023    07/2023          01/2024   07/2024        01/2025           07/2025                 01/2026
                                                                                       Date

                                                      Figure 5: Adoption of Passkeys from 05/2021 to 08/2025.


represents the most comprehensive dataset of passkey-enabled                            Most websites provide some form of passkey management in
sites, providing a solid foundation for future security analyses.                       the account settings, but there are exceptions.
                                                                                            On 7 sites, a passkey can only be registered immediately
                                                                                        after login and cannot be removed later, effectively creating a
4.2 Part 2: How Websites Implement Passkeys                                             one-way upgrade: once a passkey is added, users are locked
As a starting point, we used our merged list from April 22nd                            into it. A similar restriction exists on 6 sites where a passkey
2025, comprising 872 yet unconfirmed passkey-enabled do-                                must be registered at account creation and cannot be replaced
mains. We manually reviewed all 872 sites and excluded 664                              afterward. On 5 sites, the management interface lacks a delete
from further analysis for 19 different reasons, as detailed                             button. On 3 sites, deleting a passkey requires authentication
in Table 3. For example, we excluded 152 false positives                                with the same passkey, making deletion impossible if it is
caused by missed duplicates and misclassifications (§7). We                             lost. Finally, on another 3 sites, users cannot delete individual
also dismissed 334 potential passkey-enabled websites that                              passkeys but must remove all at once.
could not be confirmed because we were unable to create ac-                                 Equally problematic, users should be able to register multi-
counts. Thus, we successfully verified 386 confirmed passkey-                           ple passkeys (e.g., a backup authenticator) to maintain access
enabled websites. Among them, 178 sites relied on third-party                           if their primary one is lost. Yet, on 25 domains, only a single
passkey providers (e.g., aid.no). Since all sites using the                             passkey can be used.
same provider shared the same SDK-based setup, we ana-                                      Moreover, deleting a passkey in a website’s account set-
lyzed each provider only once to avoid inflated results. After                          tings does not automatically remove the corresponding cre-
deduplication, 208 confirmed independent passkey implemen-                              dential stored on the authenticator. To address this mismatch,
tations remained that we were able to analyze.                                          browsers offer the signalAllAcceptedCredentials() [79]
   Confirming Passkey Registrations. When testing passkey                               and signalUnknownCredential() [80] APIs. They allow web-
registrations, we observed that websites handle confirmation                            sites to notify the browser of all accepted credentials or ex-
in different ways. Registering a passkey is a sensitive action,                         plicitly mark a credential as invalid. The browser then for-
comparable to changing a password, as it grants lasting ac-                             wards this information to the authenticator to remove outdated
cess to the account. Only 71 sites (34%) asked for an extra                             credentials and stay synchronized. In practice, however, we
confirmation, most often through a password (37), email (25),                           found only 7 websites implementing these APIs, leaving many
or SMS (6). The majority of sites (66%) allowed immediate                               “dead passkeys” on authenticators.
registration without any additional confirmation. These sites                               Passkey Authentication Modes. Websites can start
are more exposed to attacks in which an attacker could trick                            passkey authentications in three ways:
a user into unintentionally adding the attacker’s passkey to                                (1) Discoverable Mode: Here, the user clicks on a “Log
their account [19], something that would be much harder if                              in with Passkey” button. The authenticator then shows all
an extra confirmation were required.                                                    passkeys that are valid for that website. If the user has multiple
   Removing Passkeys. When users lose access to their au-                               accounts, several passkeys may appear from which the user
thenticator, e.g., due to theft, it is crucial that they can remove                     must choose one. In this case, the account is discovered on
passkeys from their account to prevent unauthorized access.                             the authenticator.



5044      35th USENIX Security Symposium                                                                                                    USENIX Association
                                                                                200
            140                                                                                                                                                               gins that can use it. If a passkey is created for www.rp.com,
                                   2FA
            120                                                                                                                                                               then only this domain and its subdomains can access it. In
                                                                                150
                                                                                                                                                                              addition, the passkey can be scoped to a parent domain up to
                                   Non-Discoverable




                                                                    # Domains
            100
                                                                                                                                                                              the registrable domain, such as rp.com. This broadens access
# Domains




                                                                                100
            80
                  Discoverable




                                                                                                                                                                              to rp.com and all its subdomains. Best practice is to keep the
            60
                                                                                50                                                                                            scope as narrow as possible and limited to the domains that ac-
            40
                                                      Conditional                                                                                                             tually need access to the passkey. For instance, if passkeys are
                                                                                 0
                                                                                                                                                                              only required on login.rp.com, scoping them to rp.com




                                                                                                              PS256




                                                                                                                                                              EdDSA
                                                                                                                              PS512
                                                                                      ES256




                                                                                                                                      RS256
                                                                                                      ES512




                                                                                                                                                      RS512
                                                                                                                      PS384




                                                                                                                                                                      Other
                                                                                              ES384




                                                                                                                                              RS384
            20


             0                                                                        Deprecated Recomm. Not Recomm.
                                                                                                                                                                              creates unnecessary risks. If an attacker compromises any
                                  Mode                                                                                Algorithm                                               subdomain, the passkey can be misused to take over accounts.
(a) Modes for Passwordless and (b) Requested vs. Supported Algs.                                                                                                                  We observed that 80 sites (38%) explicitly scope their
2FA Passkey Authentications. for Passkey Registrations.                                                                                                                       passkeys to the top-level domain, leaving them exposed to
                                                                                                                                                                              subdomain takeover attacks [86], a well-known threat on the
                                 Figure 6: Modes and Algorithms.                                                                                                              modern web [84]. Common cases include passkeys created
                                                                                                                                                                              on subdomains like www (22), account[s] (16), app (13), or
                                                                                                                                                                              sso (4), which are then upscoped to the top-level domain.
   (2) Non-Discoverable Mode: Here, the user first enters a                                                                                                                       User Verification. To prevent passkeys from being stolen
username on the website. The website checks its database to                                                                                                                   and misused, they enable user verification through biometrics
see if passkeys are registered for that account. If they exist, the                                                                                                           (e.g., facial recognition) or a PIN. This ensures two-factor
website passes the allowed credential to the WebAuthn API,                                                                                                                    authentication: the user must both possess the device (“some-
so the authenticator already knows which passkey to use.                                                                                                                      thing you have”) and verify their identity (“something you are
In this case, the account is not discovered but predefined                                                                                                                    / know”). When verification succeeds, the authenticator sets
on the website. This mode can also be used for two-factor                                                                                                                     the user verified bit in its flags to true. We found only 82 sites
authentication, where the user submits both a username and a                                                                                                                  that required authenticators to perform user verification. 18
password before the passkey is requested as the second factor.                                                                                                                sites explicitly disabled it, but since they used passkeys only
   (3) Conditional Mode: This works like the discoverable                                                                                                                     as a second factor, accounts remain protected if the authen-
mode, but instead of clicking a button, the WebAuthn API                                                                                                                      ticator is lost. More concerning, another 17 sites explicitly
is called automatically when the page loads. This improves                                                                                                                    disabled user verification while relying on passkeys for pass-
usability, as a login with a passkey requires only one click.                                                                                                                 wordless authentication. In these cases, if the authenticator is
   Figure 6a shows that most websites use non-discoverable                                                                                                                    lost or stolen, an attacker could sign in to the victim’s account.
mode, although many only use it for two-factor authentica-                                                                                                                        Authenticator Selection. RPs can request the use of ei-
tion. For passwordless authentication, discoverable mode is                                                                                                                   ther a software authenticator (e.g., a phone) or a hardware
more common. Interestingly, 8 websites use non-discoverable                                                                                                                   authenticator (e.g., a security key). A software authenticator
mode for 2FA while also supporting discoverable mode for                                                                                                                      often runs on the same device where the user is signing in
passwordless login.                                                                                                                                                           and offers an enhanced experience. A hardware authenticator
   Passkey Algorithms. The WebAuthn standard [89] does                                                                                                                        is always external and therefore provides hardware-backed
not limit the signature and key algorithms that can be used.                                                                                                                  two-factor authentication. Only 22 sites (11%) explicitly re-
Instead, all algorithms are defined in the IANA COSE al-                                                                                                                      quested a hardware authenticator and 5 sites actually enforce
gorithms registry [16]. Figure 6b shows that websites usu-                                                                                                                    it. These websites cryptographically verify the use of a gen-
ally support more algorithms than they request. Although                                                                                                                      uine hardware authenticator through attestation [89, §6.5].
deprecated and not recommended [16], ES256 (universally                                                                                                                           User Identifier. Because authenticators can reveal userids
supported) and RS256 are the most common. An authenti-                                                                                                                        without user verification, the WebAuthn standard requires that
cator limited to ES256 is therefore compatible with all sites.                                                                                                                RPs must not store personal information (such as emails or
In contrast, the RSASSA-PSS algorithms, although recom-                                                                                                                       usernames) in the userid [89, §14.6.1]. However, 8 sites still
mended [16], are the least requested and supported. We also                                                                                                                   embed email addresses or usernames directly in the userid .
identified 26 algorithm identifiers that are deprecated, unas-                                                                                                                    Key Attestation. By default, registering a credpubkey at
signed, or incompatible with passkeys. For instance, the depre-                                                                                                               a website does not require proving possession of the corre-
cated RSASSA-PKCS1-v1_5 with SHA-1 was still requested                                                                                                                        sponding credprivkey . Key attestation can provide this proof.
5 times. Also, 8 sites requested symmetric HMAC algorithms,                                                                                                                   During registration, the authenticator signs the credpubkey with
which cannot work with the asymmetric design of passkeys.                                                                                                                     the credprivkey . This allows RPs to confirm that the registering
On 22 sites, all algorithms were supported except ES384, a                                                                                                                    party truly controls the private key. Such verification prevents
unique pattern not observed for any other algorithm and likely                                                                                                                an attacker from adding a victim’s credpubkey to their account
caused by a library that omits this algorithm.                                                                                                                                and using it for session fixation attacks (see §6). However,
   Passkey Scopes. The scope of a passkey defines the ori-                                                                                                                    key attestation currently has no practical relevance on the



USENIX Association                                                                                                                                                                               35th USENIX Security Symposium           5045
                                                                          PASSKEYS- A TTACKER (§5)
                                                                          attacker.passkeys.tools
                                                                                                                                                                                                                                                  online with keywords such as “webauthn/passkey/fido play-
                                                                                                                                                                                                                                                  ground/debugger/tool” and inspected the first five pages. Ta-
                                                                                                                            Virtual AC                                               Database
                                                  account
                                                registration       Analyst
                                                                                                                                                                                                                                                  ble 1 compares our tool with existing ones. In summary, most
                                                                                                                                                                                                                                                  tools primarily focus on decoding passkey messages, which
PASSKEYS- RADAR (§3)




                                                                     configures via web interface
                                                                                                                                                                                                                                                  is essential for protocol analysis but insufficient for active
                       radar.passkeys.tools




                                                                            simulates                                                                                                                                                             testing. Existing tools cannot handle advanced attacks like re-
                                                                         Attacker                                                             Victim                                                                                              play or session swap, which need awareness for user sessions
                                                                                                                                                                                                                                                  or multiple profiles. For this reason, we created PASSKEYS -
                                                                Reg. passkey
                                                                                    controls
                                                                                                                   Reg. passkey
                                                                                                                                                                                  controls
                                                                                                                                                                                                                                                  ATTACKER. It is the first tool that enables complete security
                                                               Login passkey                                     Login passkey
                                                                                                                                                                                                                                                  testing of RPs in line with the WebAuthn standard [89]. In the
                                                                                                                                                                                                                                                  following, we elucidate the identified requirements in depth.
                                                                                                                                                                                                                                                     Decoding WebAuthn Messages. Most existing tools are
                                                                                                                                                                                                                                                  designed for developer support rather than security testing
Figure 7: PASSKEYS -ATTACKER enables semi-automatic se-
                                                                                                                                                                                                                                                  and research. They are usually demo websites that trigger the
curity analyses of passkey implementations on websites.
                                                                                                                                                                                                                                                  WebAuthn API. The browser and authenticator then process
                                                                                                                                     Basic Attacks                                                 Extended Attacks
                                                                                                                                                                                                                                                  the messages, and the website displays the decoded results.
                                                                                                                                                                                                                                                     Encoding WebAuthn Messages. To manipulate Web-
                                                                                                                            Passive Testing


                                                                                                                                                                # Passive Tests
                                                                                                                                               Active Testing


                                                                                                                                                                                  # Active Tests




                                                                                                                                                                                                                                   Session Swap
                                                                                        Open Source




                                                                                                                                                                                                                       User Swap
                                                                                                                                                                                                                                                  Authn messages, tools must support both decoding and re-
                                                                                                                                                                                                            Key Swap
                                                                                                      Decoding
                                                                                                                 Encoding




                                                                                                                                                                                                   Replay




 Tools                                                         Authors
                                                                                                                                                                                                                                                  encoding. Only PASSKEY R AIDER and W EB D EVAUTHN pro-
 Passkeys Playground                                           r-n-o                    ¥             #          #          #                  #                –                 –                #        #          #           #              vide this. However, W EB D EVAUTHN restricts modifications
 WebAuthn.io                                                   Duo Labs                 ¥             #
                                                                                                      G          #          #                  #                –                 –                #        #          #           #
 DebAuthn                                                      [29]                     ¥             #
                                                                                                      G          #          #                  #                –                 –                #        #          #           #              to parameters that are hardcoded in its test cases.
 WebAuthn CBOR Decoder                                         @srikanthramu            ¥                                                                       –                 –
 SimpleWebAuthn                                                @MasterKale              ¥
                                                                                                      #
                                                                                                      G          #
                                                                                                                 #
                                                                                                                            #
                                                                                                                            #
                                                                                                                                               #
                                                                                                                                               #                –                 –
                                                                                                                                                                                                   #
                                                                                                                                                                                                   #
                                                                                                                                                                                                            #
                                                                                                                                                                                                            #
                                                                                                                                                                                                                       #
                                                                                                                                                                                                                       #
                                                                                                                                                                                                                                   #
                                                                                                                                                                                                                                   #
                                                                                                                                                                                                                                                     Basic Attacks. Passive testing requires intercepting all
 fido2viewer                                                   @sbweeden                ¥                        #          #                  #                –                 –                #        #          #           #              WebAuthn messages executed by the target website and de-
 WebAuthn Playground                                           @opotonniee              ¥                        #          #                  #                –                 –                #        #          #           #
 Passkeys Playground                                           Auth0                    q                        #          #                  #                –                 –                #        #          #           #              coding them. Two approaches exist:
 WebAuthn Playground                                           Thinktecture Labs        ¥                        #          #                  #                –                 –                #        #          #           #
 WebAuthn Viewer                                               @inabajunmr              ¥                        #          #                  #                –                 –                #        #          #           #                 (1) Intercepting HTTP Traffic: PASSKEY S CANNER and
 Passkeys Playground                                           OwnID                    ¥                        #          #                  #                –                 –                #        #          #           #
 Passkeys Debugger                                             Corbado                  q                        #          #                  #                –                 –                #        #          #           #              PASSKEY R AIDER are Burp Suite extensions that scan HTTP
 WebAuthn.me                                                   Auth0                    ¥                        #          #                  #                –                 –                #        #          #           #
 Passkeys Playground                                           Passwordless.ID          ¥                        #          #                  #                –                 –                #        #          #           #              traffic for WebAuthn messages. This approach is limited since
 Passkey Scanner                                               @alexcowperthwaite       ¥                                                                       5                 0
 Passkey Raider                                                @siamthanathack          ¥
                                                                                                                 #                             #
                                                                                                                                                                0                 0
                                                                                                                                                                                                   #
                                                                                                                                                                                                   #
                                                                                                                                                                                                            #
                                                                                                                                                                                                            #
                                                                                                                                                                                                                       #
                                                                                                                                                                                                                       #
                                                                                                                                                                                                                                   #
                                                                                                                                                                                                                                   #
                                                                                                                                                                                                                                                  there is no generic way to detect such messages in HTTP. For
 WebDevAuthn                                                   [45]                     ¥                        #
                                                                                                                 G                                              5                 5                #        #          #
                                                                                                                                                                                                                       G           #              example, PASSKEY R AIDER requires custom regular expres-
  PASSKEYS -ATTACKER                                           This Paper               ¥                                                                       9                 15
                                                                                                                                                                                                                                                  sions for each website, making large-scale studies impractical.
Table 1: Requirements for Passkey Security Testing. Only the                                                                                                                                                                                         (2) Intercepting WebAuthn API Calls: W EB D EVAUTHN
PASSKEYS -ATTACKER meets all requirements to comprehen-                                                                                                                                                                                           and PASSKEYS -ATTACKER hook directly into the browser
sively test RPs against the specification [89].                                                                                                                                                                                                   API, providing a generic and website-independent way of
                                                                                                                                                                                                                                                  intercepting messages. Both tools emulate the browser and
                                                                                                                                                                                                                                                  authenticator, giving full control over all messages.
web. We observed that only 66 sites request it and 85 sites                                                                                                                                                                                          Active testing requires an additional capability: modifying
explicitly disable it, yet none reject registrations without it.                                                                                                                                                                                  intercepted and decoded messages (e.g., altering a signature
                                                                                                                                                                                                                                                  or challenge) and re-encoding them. Only PASSKEY R AIDER
                                                                                                                                                                                                                                                  and W EB D EVAUTHN can perform active attacks, with W EB -
5                                             PASSKEYS -ATTACKER: Semi-Automatic Se-                                                                                                                                                              D EVAUTHN implementing 7 selected tests. To the best of our
                                              curity Analysis of Passkey Implementations                                                                                                                                                          knowledge, our tool – PASSKEYS -ATTACKER – is the first
                                                                                                                                                                                                                                                  one to support all passive (see §4.2) and active (see §6.2) tests
The PASSKEYS -ATTACKER forms the answer to RQ3. In                                                                                                                                                                                                from the specification, doubling the coverage of prior tools.
contrast to prior work, it enables a semi-automated analysis                                                                                                                                                                                         Extended Attacks. PASSKEYS -ATTACKER can addition-
pipeline for evaluating the state-of-the-art security of passkey                                                                                                                                                                                  ally automate advanced attacks:
implementations, as shown in Figure 7.                                                                                                                                                                                                               (1) Replay Attacks: We track all WebAuthn messages and
                                                                                                                                                                                                                                                  manipulations, enabling automated replay by substituting pa-
                                                                                                                                                                                                                                                  rameters with previously used values.
5.1 Requirements for Passkey Security Testing
                                                                                                                                                                                                                                                     (2) Key Swapping Attacks: Our credential management
The WebAuthn specification [89, §7] lists detailed security                                                                                                                                                                                       system stores credids and keys separately, enabling automated
considerations. Based on these, we derived requirements that                                                                                                                                                                                      testing of attacks where an attacker registers their credpubkey
are necessary for security testing of passkey implementations.                                                                                                                                                                                    under a victim’s credid .
We summarize them in Table 1. We then identified related                                                                                                                                                                                             (3) User Swapping Attacks: Our tool extracts user infor-
tools that could assist in implementing them. We searched                                                                                                                                                                                         mation from messages and manages it automatically. This



5046                                            35th USENIX Security Symposium                                                                                                                                                                                                              USENIX Association
message tracing allows for automated user swapping attacks         5.3    PASSKEYS -ATTACKER Architecture
where an attacker registers a key under a victim’s account.
W EB D EVAUTHN supports these types of attacks only with           The PASSKEYS -ATTACKER consists of three components as
manual extraction and copy-paste of identifiers.                   depicted in Figure 7.
                                                                      (1) Browser Extension: The extension hooks into all Web-
  (4) Session Swapping Attacks: We simulate two indepen-           Authn APIs and intercepts their calls. Instead of using the
dent browsers, one for the victim and one for the attacker, with   browser’s built-in WebAuthn handling, it opens a popup that
the tool tracking context awareness. This enables automated        loads the virtual client and authenticator, forwarding the full
replacement of parameters between sessions.                        request with all parameters. It also adds contextual metadata,
                                                                   such as the origin and current operation (create or get),
                                                                   which is required for correct simulation. After processing, the
                                                                   extension resolves the original API call with the modified
5.2    Semi-Automated Analysis Approach                            result. It can run in “attacker” or “victim” mode to ensure the
                                                                   virtual client and authenticator act in the right context.
Our Desired Goal: Full Automation. To examine whether                 (2) Virtual Client and Authenticator: This core com-
complete automation of our passkey analyses is feasible, we        ponent decodes, inspects, modifies (applies attacks), and re-
randomly selected five passkey-enabled websites. We built a        encodes WebAuthn messages. It manages users and keys in a
prototype tool using Playwright [34] and the agentic LLM-          context-aware way. For example, it restricts access to attacker-
based Browser Use framework [14]. The tool attempted to            owned keys when in attacker mode.
execute passkey registrations, authentications, and deletions         (3) Database: The virtual client and authenticator can run
without any manual steps. In practice, it succeeded on only        either standalone or with a shared database. In standalone
one of the five sites, for the reasons discussed below.            mode, all data (users, keys, history) is stored in the browser’s
   Automation Hurdles. Our analyses require repeated exe-          localStorage, suitable for testing with a single browser con-
cution of passkey registrations, authentications, and deletions.   text. In shared mode, the database enables testing across mul-
These are custom and highly sensitive operations, and web-         tiple browser contexts (i.e., victim and attacker). This allows
sites protect them with strong measures that make automation       fully automated cross-context scenarios, such as replaying an
hard if not impossible. Common obstacles include a com-            attacker challenge in the victim’s session.
bination of (1) customized UIs, (2) confirmation prompts,
(3) password re-entry, (4) 2FA checks via email, SMS, OTP,
                                                                   6     Passkey Security: From Standard Violations
backup codes, or security questions, (5) CAPTCHAs, and
(6) rate limiting. Another challenge was the absence of com-             to RP-Specific Key Management Failures
mon success indicators, as error messages were often unclear.
                                                                   In this section, we answer RQ4 with the first comprehensive
   Our Result: Semi-Automated Approach. Thus, we                   analysis of how secure passkeys are implemented on the web.
adopted a semi-automated methodology, which is in line with
prior work on post-authentication web security [81]. An im-
portant consideration in our design was ethical responsibility.    6.1    Methodology
In particular, we did not use automatic CAPTCHA solvers,           Attack Scope. We focus on threats known to the standard-
since this would bypass protections designed to prevent au-        ization community that directly affect RPs. As a basis, we
tomation. Our manual effort is limited to: (1) registering         carefully studied the WebAuthn standard [89], which out-
two test accounts per site, (2) adding and deleting passkeys,      lines security and privacy considerations for RPs in §13.4
and (3) starting the passkey authentication. Once the Web-         and §14.6. It also defines mandatory validation checks for
Authn API is invoked, the PASSKEYS -ATTACKER takes over            registrations and authentications in §7.1 and §7.2. From this,
and runs the entire security analysis automatically. Develop-      we identified 15 Attack Types (ATs) that RPs must defend
ers who already maintain automated tests for account man-          against. We then created 28 Detection Methods (DMs) to
agement could integrate our tool to achieve fully automated        examine whether RPs implement these protections securely.
evaluation of their passkey implementations.                       Table 2 provides an overview of our attack catalog.
   Manual Account Registration. We created two Gmail                  Impact Assessment. To evaluate the impact of missing
addresses, one for the attacker and one for the victim, and        validations, we researched all known CVEs related to Web-
used them to register accounts on all passkey-enabled sites.       Authn and passkeys. For each AT, we checked for matching
We used realistic fictional data for usernames and personal        CVEs and included them in Table 2. From these, we extracted
details, along with two valid phone numbers for verification       the CVSS scores and CWE classes to decide upon severity
codes. Non-English sites were translated with Chrome’s built-      and weakness. If no related CVEs existed, we reported the
in translation feature. Whenever possible, we registered via       weaknesses as new findings and estimated their severity by
passwords, resorting to SSO only when necessary.                   similar vulnerabilities or attack patterns from other domains.



USENIX Association                                                                    35th USENIX Security Symposium         5047
                  103 analyzed websites
        100                                                                        100%
                                                                                          -5%
                                                                                                                           the Tranco top 1k. This observation is an indication that larger
                                                                                                   -13%                    platforms face greater challenges in fully implementing all
             80                                                                                                     -18%




                                                          Overall Susceptibility
                                                                                                           -21%
                                                                                                                           validations. In contrast, smaller sites may benefit from relying
# Websites




             60                                                                                                            on secure third-party libraries.
                                                                                                                              Registration vs. Authentication. Most attack types af-
             40
                                                                                                                           fect both the registration and authentication phase, and RPs
             20
                                                                                                                           must apply the same protections in both phases. However, we
                                                                                                                           observed that many websites fail a validation in one phase
             0
                    Critical    High      Medium   None
                                                                                   ≤1k    ≤100k    ≤500k      ≤1M   >1M    while securing the other. For example, 9 sites do not validate
                               CVSS Severity                                                    Tranco Rank
                                                                                                                           the session binding of the challenge during registration, and
(a) Number of vulnerable web-                             (b) Susceptibility of websites by                                14 fail to do so during authentication. This may result from
sites by CVSS severity (criti-                            their Tranco rank. Lower ranked                                  developers implementing checks separately or from libraries
cal, high, medium, none). Lower                           sites are overall less susceptible.                              lacking a unified configuration for both phases.
means less vulnerable websites.                           Lower means more secure.
                                                                                                                              In the following, we present selected Attack Types (ATs)
                                                                                                                           in more detail and illustrate them with real-world examples.
 Figure 8: Vulnerabilities by Tranco Rank and Attack Types.

                                                                                                                           6.2.1   CWE-347: Improper Verification of Crypto-
   Attacker Model. We assume that the victim’s browser                                                                             graphic Signature
and authenticator are secure and follow the specification.
The attacker controls their browser and authenticator via the                                                              AT: Signature (Critical). The signature verification is the
PASSKEYS -ATTACKER, allowing arbitrary manipulation of                                                                     most critical step in the passkey authentication flow. Still, we
WebAuthn messages. We further assume the attacker can lure                                                                 found 5 websites that completely skip this check, which is a
victims to a malicious site and trick them into registering or                                                             critical security issue. We confirmed these vulnerabilities and
using passkeys (“web attacker”). If an attack has additional                                                               were able to sign in to the victim’s account.
requirements, we outline them in Table 2.                                                                                     AT: Context (Medium). A less severe but still relevant
   Evaluation Scope. For our security analysis, we had to                                                                  issue for 12 sites arises from improper verification of the
manually register a fresh passkey for each DM. On 105 of the                                                               signing context. The idea of this attack is to use a signed
208 websites, however, this was difficult or infeasible for sev-                                                           registration challenge for user authentication. This context
eral reasons. As described in §4, websites integrate passkeys                                                              switch is known as signature confusion.
in different ways. Some deploy them only as a second factor,
which is incompatible with our attacker model. Others re-                                                                  6.2.2   CWE-639: Authorization Bypass Through User-
strict accounts to a single passkey without offering a removal                                                                     Controlled Key
mechanism. In addition, some sites enforce further hurdles,
such as email or SMS verification, CAPTCHAs, 2FA, or strict                                                                AT: Credential Overwrite (Critical). This novel AT targets
rate limiting. Consequently, we were able to conduct a full                                                                how the RP manages passkeys in its database. Every RP
security evaluation on 103 websites.                                                                                       hosts several users, each distinguished by a userid . Users may
                                                                                                                           possess various credentials, each labeled by a credid . The
                                                                                                                           relation is one-to-many: a user may own many credentials, but
6.2                     Vulnerabilities                                                                                    each credential must belong to exactly one user. The attacker
Table 2 summarizes the results of our semi-automatic security                                                              creates a credential that seems to belong to both the victim
evaluation. We found that all of the analyzed websites (103)                                                               and the attacker simultaneously, challenging this assumption.
are vulnerable to at least one AT. This highlights a significant                                                           This ambiguity causes confusion during sign-in.
gap between the specification and real-world practice, likely                                                                 Requirements. This AT requires knowing the victim’s
caused by the complexity of the WebAuthn standard.                                                                         credid . It is public since RPs reveal them without authentica-
   Attack Severity. Figure 8a shows that most missing valida-                                                              tion (see §6.2.7). The victim’s credpubkey is harder to obtain,
tions fall into attack types with medium or negligible impact.                                                             as it is stored only on the authenticator and the RP’s database.
However, 53 sites are vulnerable to high-severity threats and                                                              Still, the specification assumes that security must hold even if
18 sites to critical-severity threats, which is concerning.                                                                the database leaks, so we treat this as a plausible threat.
   Tranco Ranking. We initially expected insufficient vali-                                                                   DM: Swap credid . The attacker registers a new passkey
dations to be more common on less popular sites, given the                                                                 by combining their own credpubkey with the victim’s credid . A
complexity of the standard. To test this, we compared the total                                                            secure implementation must detect the duplicate credid and
number of validation issues across all analyzed websites. Fig-                                                             reject it. If misconfigured, three outcomes are possible:
ure 8b reveals a different picture: lower-ranked sites and even                                                               (1) Database Update: The RP replaces the victim’s
unranked ones are less susceptible than higher-ranked sites in                                                             credpubkey with the attacker’s credpubkey . This locks the victim



5048                      35th USENIX Security Symposium                                                                                                             USENIX Association
                                                                                                                                                                                                                                              # Vuln. RPs
Attack Type (AT)     CVSS CVE CWE                            Requirement                   Validation [89]                                         RW Detection Method (DM)                                                                 Reg. Auth. ∪
                                  Improper Verification of                                                                                              Bit Flip: Flip the last bit of the signature                                          –     5
                                                                                           Use credpubkey to verify signature over authData
Signature            9.8   –      Cryptographic Signature    –                                                                                                                                                                                          5
                                                                                           and clientData (§7.2.21)
                                  (CWE-347)
                                Authorization Bypass                                                                                                    Swap credid +credpubkey : Register passkey with victim’s credid and credpubkey       13     –
                                                             Leaked credid and/or
Credential Overwrite 9.1   [23] Through User-Controlled                                    credid is not yet registered for any user (§7.1.26)          Swap credid : Register passkey with victim’s credid and attacker’s credpubkey        12     – 14
                                                             credpubkey
                                Key (CWE-639)                                                                                                           Swap credpubkey : Register passkey with attacker’s credid and victim’s credpubkey     2     –
                                  Externally Controlled                                                                                                 Dangling Domains: Check if related origins contain registrable domain                 –     1
                                                                                           Include only active and trusted related origins
Related Origins      8.8   –      Reference to a Resource in –                                                                                                                                                                                           1
                                                                                           (§5.11)
                                  Another Sphere (CWE-610)
                                                                                                                                                   [44] Bit Flip: Flip last bit of challenge                                                  1     1
                                                             Leaked or injected challenge clientData.challenge is options.challenge
Challenge            8.2   [27] Session Fixation (CWE-384)                                                                                              Reuse: Use challenge that has already been used                                       8     5 22
                                                             (e.g. via XSS or CSRF)       (§7.1.8, §7.2.11)
                                                                                                                                                        Session Binding: Use valid challenge from another session                             9    14
                                                                                                                                                   [44] Cross-Site: Set clientData.origin to a different site                                 7     5
                                  Origin Validation Error
Origin               8.1   [26]                              Subdomain Takeover [84]       clientData.origin is trusted (§7.1.9, §7.2.12)          [44] Subdomain: Set clientData.origin to a subdomain                                      23    23 40
                                  (CWE-346)
                                                                                                                                                        Parent Domain: Set clientData.origin to a parent domain                              31    23
                                                                                                                                                   [44] Cross-Site: Set authData.hash(rpid ) to the hash of a different site                  8     4
                                  Origin Validation Error                                  authData.hash(rpid ) is hash(options.rpid )
RP ID                8.1   [26]                              Subdomain Takeover [84]                                                                    Subdomain: Set authData.hash(rpid ) to the hash of a subdomain                        7     4    9
                                  (CWE-346)                                                (§7.1.14, §7.2.15)
                                                                                                                                                        Parent Domain: Set authData.hash(rpid ) to the hash of a parent domain                5     3
                                  Improper Authentication    Physical access to            authData.flags.UV is true if options.                   [44] Unset: Set authData.flags.UV to false                                                 8     6
User Verified        6.8   [21]                                                                                                                                                                                                                         10
                                  (CWE-287)                  authenticator                 userVerification is required (§7.1.16, §7.2.17)
                                  Improper Verification of                                                                                              Nonsense: Set context to “abc.def”                                                    5     4
                                                             Access to valid attestation   clientData.type is “webauthn.create” /
Context              6.4   –      Cryptographic Signature                                                                                               Swap: Swap context create ↔ get                                                      11     8 12
                                                             signature (e.g. via XSS)      “webauthn.get” (§7.1.7, §7.2.10)
                                  (CWE-347)
                                  Improper Authentication                                                                                               Unset: Set authData.flags.UP to false                                                21    16
User Present         5.9   [22]                              Malware                       authData.flags.UP is true (§7.1.15, §7.2.16)                                                                                                                 27
                                  (CWE-287)
                                                                                           Return imaginary credids in requestOptions.                  Random: Identify as random user. requestOptions.allowCredentials empty?               –    68
                                  Observable Response
Allow Credentials    5.3   [25]                              –                             allowCredentials for non-existing accounts                                                                                                                   68
                                  Discrepancy (CWE-204)
                                                                                           (§14.6.2, §14.6.3)
                                                                                           If clientData.crossOrigin is true, check if framing          Cross-Origin: Set clientData.crossOrigin to true                                     99    87
                                  Improper Restriction of
                                                             No generic clickjacking       by other origins is allowed and if                           Cross-Site: Set clientData.topOrigin to a different site                             93    92
Framing              5.1   –      Rendered UI Layers or                                                                                                                                                                                               102
                                                             protections in place [17]     clientData.topOrigin is trusted                              Subdomain: Set clientData.topOrigin to a subdomain                                   94    92
                                  Frames (CWE-1021)
                                                                                           (§7.1.10+11, §7.2.13+14)                                     Parent Domain: Set clientData.topOrigin to a parent domain                           84    84
                                  Improper Authentication    Physical access to cloned     authData.sigcnt is greater than previously stored       [44] Reduce: Set authData.sigcnt to 2. Login. Set authData.sigcnt to 1. Login.             –    57
Signature Counter    4.8   [24]                                                                                                                                                                                                                         57
                                  (CWE-287)                  authenticator                 sigcnt (§7.2.22)
                                                                                           authData.flags.BS is false if authData.flags.BE is           Mutual Exclusion: Set authData.flags.BE to false and authData.flags.BS to true       58    57
Backup State         0.0   –      –                          Authenticator is lost                                                                                                                                                                      65
                                                                                           false (§7.1.17, §7.2.18)
                                                                                           authData.flags.BE is equal in registration and               Swap On: Register authData.flags.BE=false. Login authData.flags.BE=on.                –    55
Backup Eligible      0.0   –      –                          Authenticator is lost                                                                                                                                                                    57
                                                                                           authentication (§7.2.19)                                     Swap Off: Register authData.flags.BE=true. Login authData.flags.BE=false.             –    55
Length of credid     0.0   –      –                          –                             credid .length ≤ 1023 bytes (§7.1.25)                        Length 1024: Set credid to 1024 random bytes                                         48     – 48
                                                                                               Vulnerable websites with CVSS severity:           Critical (18),    High (53),   Medium (103),      None (81),   All combined: 103 (of 103 analyzed RPs)



Table 2: Evaluation Results and Test Catalog. We analyzed 103 RPs with PASSKEYS -ATTACKER and found at least one
security issue in all of them. Prior work covered 5 ATs. We extend these with new DMs and introduce 10 additional ATs.


out, since the victim does not have access to the matching                                                                                                                       (2) Browser retrieves
                                                                                                                                                                  rp.co.uk
credprivkey owned by the attacker. We found 5 vulnerable sites.                                                                                                                  whitelist from rp.com (rp id )
                                                                                                                                                                                                                   rp.com/.well- known/webauthn
                                                                                                                                         (1) Call WebAuthn API                                                      - rp.de
                                                                                                                                                                                 (3) rp.co.uk is whitelisted        - rp.co.uk
                                                                                                                                          - rp id = rp.com
                                                                                                                                                                                 ? browser allows access            - relying- party.com
                                                                                                                                          - challenge = 1234

   (2) Database Append: The RP stores two credpubkeys under                                                                                                                      (4) Sign challenge using
                                                                                                                                                                                 passkey scoped to rp.com
the same credid . During authentication, querying this credid                                                                            (6) Resolve WebAuthn API                                                               Authenticator
                                                                                                                                                                                 (5) sign(privkey rp.com , 1234)
                                                                                                                                         and send signature to
returns multiple keys, which causes internal errors and blocks                                                                           backend to log in the user
logins. We observed this on 3 sites. If the attacker deletes the
duplicate from their account, the victim can sign in again.
                                                                                                                                 Figure 9: CWE-610: Externally Controlled Reference to a
                                                                                                                                 Resource in Another Sphere.
   (3) Database Delete: The RP deletes the victim’s creden-
tial when a duplicate credid is added. On 3 sites, attackers can
delete passkeys of all users and weaken their account security.                                                                  6.2.3            CWE-610: Externally Controlled Reference to a
                                                                                                                                                  Resource in Another Sphere

   DM: Swap credid +credpubkey . Here, the attacker regis-                                                                      AT: Related Origins (High). Some organizations need to
ters the victim’s credpubkey with the victim’s credid in the                                                                    use the same passkey across multiple country code Top-Level
attacker’s account. If the RP uses the credid without the userid                                                                Domains (ccTLDs), such as rp.com and rp.co.uk. By default,
for credential lookup during authentication, session swapping                                                                   this is blocked by the browser. The ROR feature [89, §5.11]
becomes possible. When the victim later signs in with the                                                                       enables shared domains by allowing RPs to publish a list of
credprivkey , the signature is valid and the victim is logged                                                                   related origins that may share the same passkey.
in to the attacker’s account. This can cause sensitive data                                                                        Consider a user who logs in to rp.co.uk (see Figure 9):
disclosure, for example when the victim uploads files. We                                                                       (1) The RP calls the WebAuthn API with the rpid set to rp.com.
successfully carried out this AT on 3 sites.                                                                                    (2) Since rp.co.uk and rp.com are cross-site, the browser



USENIX Association                                                                                                                                                       35th USENIX Security Symposium                                           5049
fetches the whitelist from a well-known location at rp.com.                  Off- Path            Relying         Off- Path              Relying
                                                                             Attacker           Party (RP)        Attacker             Party (RP)
(3) Because rp.co.uk appears in the whitelist, the browser
                                                                          Passkey Authentication                Passw ord Authentication
allows access. (4) The browser requests a signature of the                                                   Username: user unknown
                                                                      Username: user unknown
challenge using the passkey for the rpid . (5) The authenticator      " Invalid username"
                                                                                                             Password: <random>
                                                                                                             " Invalid username"
signs the challenge and returns it. (6) The API call completes.       allowCredentials=[<randomID>]
                                                                                                             " Invalid username or password"

   DM: Dangling Domains. Maintaining such whitelists is               Username: user password
                                                                                                             Username: user password
risky if they contain dangling domains that are no longer con-        allowCredentials=[]
                                                                      allowCredentials=[<randomID>]
                                                                                                             Password: <random>
                                                                                                             " Invalid password"
trolled by the RP or have expired. For example, relying- ⌋                                                   " Invalid username or password"
                                                                      Username: user passkey
party.com could be an expired domain that can be re-
                                                                      allowCredentials=[<realID>]
registered (cf. Figure 9). If an attacker acquires it and serves
a malicious site, they gain access to the victim’s passkey on
rp.com and can compromise the account.                               Figure 10: CWE-204: Observable Response Discrepancy.
                                                                     Red errors are distinguishable, enabling account enumeration.
   We identified 2,177 related origins listed in whitelists
                                                                     Green errors are indistinguishable, preventing such leaks.
across 177 domains. The largest whitelist contained 102 ori-
gins, making management especially difficult. We resolved
all domains using Google’s DNS API [51] and checked for              6.2.6      CWE-287: Improper Authentication
dangling entries. Using the Namecheap API [8], we found
one allowlisted domain available for registration for 10C/year.      AT: User Verified (Medium). In §4.2, we showed that
If acquired, it would allow an attacker to take over accounts        82 sites explicitly requested user verification, for example
on 72 related origins.                                               through biometrics. However, 10 sites did not check whether
                                                                     verification was actually performed. This creates a false sense
                                                                     of security: the site assumes verification took place, even if it
6.2.4   CWE-384: Session Fixation                                    did not. An attacker who steals a victim’s security key could
                                                                     then log in without biometrics or a PIN. While this usually
AT: Challenge (High). The challenge is the only randomized           requires physical access to the authenticator, there are more
input in the signature generation and changes with every au-         scenarios. For instance, if a victim carries an NFC-enabled se-
thentication flow. It binds the signed assertion to both, the cur-   curity key in a pocket, an attacker could hold a phone nearby
rent flow and the user’s session. This binding protects against      and immediately sign in to the victim’s account [83].
replay attacks if a signed assertion is leaked (e.g., via XSS). It      AT: User Presence (Medium). Malware on a user’s system
additionally blocks injection attempts (e.g., via CSRF) where        can misuse the authenticator as a signing oracle and gener-
an attacker tries to log a victim into the attacker’s account.       ate valid assertions for other websites. To prevent this, the
Despite its importance, we found 22 sites that do not properly       specification requires a user presence check for every signing
validate the challenge, leaving them vulnerable if attackers         operation, such as touching the security key. If this check is
can steal or inject signed assertions.                               missing, an attacker could obtain signatures unnoticed and
                                                                     use them to compromise the victim’s account.
                                                                        AT: Signature Counter (Medium). Each authenticator
                                                                     maintains a signature counter that increases with each signing
6.2.5   CWE-346: Origin Validation Error                             operation. When an attacker logs into the victim’s account
                                                                     with a cloned authenticator [82], the counter increases. Later,
AT: Origin & rpid (High). Passwords are prone to phishing;           when the victim signs in with the original device, the counter
however, passkeys are phishing-resistant because browsers            is lower. The RP can detect this mismatch and warn the vic-
block malicious sites from accessing passkeys belonging to           tim about the inconsistency. We found that over half of the
different sites. Unfortunately, browsers allow subdomains            websites ignore the counter, while the rest block the logins
to use passkeys scoped to their parent domain. This makes            when counters are out of sync.
related-domain attackers relevant, such as those who gain
control of a subdomain or sibling domain through subdomain
takeover. Prior work [84] shows that such cases are common.          6.2.7      CWE-204: Observable Response Discrepancy
   To mitigate this, the WebAuthn standard requires browsers         AT: Allow Credentials (Medium). Passkey logins are prone
to include the full origin of the passkey operation, so that the     to account enumeration, where attackers learn whether an
RP can decide whether to trust it and reject requests from           account exists. In non-discoverable mode, the attacker submits
untrusted sub- or sibling domains. Yet, we found 40 sites that       a username on the RP’s login page. If the account exists
do not validate the origin, allowing attackers on malicious sub-     and has passkeys, the RP returns the user’s credids in the
or sibling domains to use the RP’s passkey, making phishing          allowCredentials parameter of the requestOptions. Although
attacks possible again.                                              credids are random bytes, their presence reveals that (1) the



5050    35th USENIX Security Symposium                                                                                  USENIX Association
victim has an account, and (2) the victim uses passkeys on         FIDO2-based 2FA deployments remain within scope.
this site. The WebAuthn standard addresses this by requiring          (4) Scope Drift: Some community directories include
RPs to return random placeholder credids for accounts without      not only websites but also third-party passkey providers or
passkeys or for non-existent accounts [89, §14.6.2].               platform-level support (e.g., OS or browser features).
   DM: Random. Detecting account enumeration requires                 Limited Representativeness of the Dataset. Our 208-site
three user accounts: (1) userunknown : a random, non-existent      dataset (§4.2) is biased toward publicly accessible, consumer-
account, (2) userpassword : an existing account with password      facing services. Certain sectors, such as online banking, could
authentication, and (3) userpasskey : an existing account with     not be systematically evaluated due to the lack of suitable test
passkey authentication. The detection process works as fol-        accounts. Similarly, the 103-site security evaluation (§6) is bi-
lows (see left side of Figure 10): (1) Submitting userunknown      ased toward websites that permit passkey registration without
should return a random placeholder in allowCredentials.            additional verification steps. Such sites may systematically
(2) Submitting userpassword should again return a random           exhibit weaker protections, as they apply fewer safeguards
placeholder. (3) Submitting userpasskey must return the real       during passkey enrollment.
credid . Any deviation (e.g., allowCredentials being empty)           Different Authentication Backends. It is not possible to
exposes an observable difference. We also tested password          automatically determine whether multiple domains operated
authentication [97] (see right side of Figure 10), by submit-      by the same provider (e.g., gmail.com and youtube.com)
ting userunknown and userpassword with wrong passwords and         share a common authentication backend. Across our 872-
comparing the responses.                                           site dataset, we manually identified only four cases in which
   We found 68 websites vulnerable to account enumeration          merged domains later turned out to rely on distinct passkey
in their passkey authentication. Fewer sites (43) were vul-        backends (e.g., linkedin.com and microsoft.com).
nerable in their password authentication, often returning uni-
form errors such as “Invalid username or password”. More
concerning, 25 sites that correctly protected their password       8   Related Work
authentication failed to do so for passkeys. In these cases,
adopting passkeys reduced security, which is alarming.             Adoption. Previous studies on passkey adoption were mainly
                                                                   focused on manual analyses. In 2021, Ulqinaku et al. [88]
6.2.8   CWE-1021: Improper Restriction of Rendered UI              inspected the Alexa Top 100 and found FIDO2 support on
        Layers or Frames                                           23 sites. A year later, Kepkowski et al. [53] scanned the
                                                                   Cisco Umbrella Top 1M and identified 684 sites indicating
AT: Framing (Medium). During each WebAuthn operation,              WebAuthn usage by detecting the navigator.credentials ⌋
the browser reports to the RP whether it is displayed in a frame   .create property in JavaScript resources. In 2023, Kuchhal
and, if so, on which origin. The RP must check this to prevent     et al. [56] analyzed the Tranco Top 1k and found 85 sites
clickjacking attacks [18]. Such attacks use hidden or overlap-     supporting WebAuthn while Gavazzi et al. [40] found 12 sites
ping layers to mislead a user into interacting with a different    on the Tranco Top 5k. Later, Blessing et al. [13] studied the
page than intended. We found that all but one website failed       Tranco Top 200 and reported 28 sites offering WebAuthn. Our
to validate the built-in clickjacking protections of WebAuthn.     work goes beyond these efforts with automated continuous
Without additional safeguards, attackers could trick users into    scanning, merging multiple detection methods, and perform-
registering or authenticating passkeys on unintended sites.        ing archived data analysis.
                                                                      Security of RPs. Only a few studies have examined the
7   Limitations                                                    real-world security of RPs. Grammatopoulos et al. [45] in-
                                                                   troduced WebDevAuthn, a tool for capturing WebAuthn re-
Overestimation of Adoption Rate. Our automated detec-              quests and responses for manual analysis and inspection. They
tion of passkey-enabled websites inevitably produces false         used it to assess conformance and security of 16 RPs [44],
positives, which leads to an overestimation of the adoption.       but their tool and evaluation missed advanced attack types
   (1) Missed Duplicates: Although we merge websites to            such as replay, key swapping, and session swapping. Kuchhal
reduce duplicates, complete deduplication is not possible. For     et al. [56] systematized threats under the assumption of a
instance, minecraft.com and microsoft.com rely on the              compromised client (e.g., malware) and studied FIDO2 con-
same authentication backend but are not covered in [30].           figurations of 29 RPs. They found that many sites used weak
   (2) TOTP Misclassifications: Some community directories         configurations, leaving users vulnerable once their devices
incorrectly include TOTP-only sites. While majority voting         were compromised. In contrast, we conducted an active se-
across sources could mitigate this, it would also remove less      curity evaluation of 103 RPs using the web attacker model.
frequently listed sites, which we deliberately retained.           Yadav et al. [98] analyzed FIDO2’s resilience against local
   (3) U2F Misclassifications: Our analysis focuses on Web-        threats such as malicious browser extensions, XSS, or physi-
Authn and FIDO2. We excluded U2F-only deployments, but             cal access to authenticators. They identified seven attacks and



USENIX Association                                                                    35th USENIX Security Symposium          5051
demonstrated them with a malicious browser extension on ten          key identifiers enables attacks such as unauthorized removal
popular web servers using FIDO2.                                     of passkeys, account blocking, or even takeover.
   Usability Studies. While FIDO has advanced passwordless              Passkeys do not remove all risks, but they make large-scale
authentication, adoption still faces many barriers. Challenges       account takeovers far harder and shift many threats to compli-
arise from usability issues [7, 39, 58, 65], difficulties for em-    ance issues. They represent clear progress for web authenti-
ployees and companies [32, 33, 52, 59, 60] and the public            cation, though careful attention to protocol compliance and
sector [49], technical hurdles in implementation [5, 6], user        management remains essential to avoid severe problems.
misconceptions [57], and interpersonal threats [28].
   Formal Analyses. The FIDO2 standards have been exam-
ined with formal methods to prove their security and privacy,
                                                                     Acknowledgments
identify potential weaknesses, and investigate post-quantum
                                                                     The authors would like to thank the reviewers for their valu-
security of the underlying protocols [9, 10, 11, 12, 35, 46,
                                                                     able feedback. This research was funded by the Deutsche
47, 48]. While these works concentrate on the standards, our
                                                                     Forschungsgemeinschaft (DFG, German Research Founda-
study focuses on how WebAuthn is used on the Internet.
                                                                     tion) under Germany’s Excellence Strategy – EXC 2092
                                                                     CASA – 390781972. Louis Jannett was supported by the
9   Concluding Remarks                                               research project “North-Rhine Westphalian Experts in Re-
                                                                     search on Digitalization (NERD II)”, sponsored by the state
This paper sheds first light on how passkeys are deployed on         of North Rhine-Westphalia – NERD II 005-2201-0014.
the web. With PASSKEYS -R ADAR, we conducted the largest
evaluation of real-world passkey implementations to date and         Ethical Considerations
identified 872 passkey-enabled websites. Historic data shows
a steady rise in deployments over the past four years.               Our research focuses on testing the security of websites by ma-
   Passkeys mark a major step in securing website logins.            nipulating the WebAuthn protocol flow and messages during
They reduce the attack surface of passwords by embedding au-         our own passkey registrations and authentications. The stake-
thentication directly into browsers and authenticators, where        holders involved in this study are: (1) the RPs whose websites
layered protections improve resilience against flaws in RPs.         we tested, (2) their users, (3) our research team members, and
   Our study, however, reveals that adoption remains incon-          (4) all users relying on passkeys for authentication.
sistent. Many RPs apply the WebAuthn specification only                 RP Interactions. For the 208 analyzed RPs, we manually
partially. Almost all request deprecated algorithms, and key         created two testing accounts per site, using only fictitious data
attestation is rarely used despite its role as a security feature.   without any personal or sensitive information. Our activities
   To measure compliance, we developed the PASSKEYS -                were limited to registering accounts, registering passkeys, au-
ATTACKER. It lets researchers inspect and manipulate mes-            thenticating with them, and manually navigating the websites.
sages at every step in the WebAuthn protocol. One limitation         Since all interactions were performed manually, no excessive
is that it cannot fully automate account and passkey registra-       load was placed on the tested services. We did not employ
tions, which restricts scalability. Another limitation is cover-     automated CAPTCHA solvers or similar tools.
age: we could not test all 872 websites, since account creation         Security Testing. All security tests were conducted exclu-
often failed and many services blocked repeated passkey reg-         sively with our own two testing accounts, ensuring that no
istrations. As a result, we focused on a subset of 103 sites,        other users were affected. Identified vulnerabilities were not
tested manually by three researchers over three weeks.               exploited beyond what was necessary to demonstrate proof
   Still, the PASSKEYS -ATTACKER is first to automate ad-            of concept. In particular, we did not access, compromise, or
vanced scenarios such as session swapping and message re-            interfere with any other accounts or passkeys.
play. We will announce the tool to the passkey standardization          Responsible Disclosure. We responsibly disclosed all criti-
community and make it easily accessible, so that developers,         cal and high-severity findings to 61 affected websites. To date,
researchers, and penetration testers can quickly find it and         12 websites have fixed the reported issues, including 6 that
use it for their analyses. Future work may also extend its use       awarded a bug bounty. As of December 2025, we cannot con-
beyond websites to test passkey libraries [78] and third-party       firm remediation for the remaining websites due to a lack of
services that promise to streamline passkey adoption [75].           response (15), missing follow-up communication after initial
   Our evaluation shows that vulnerabilities persist, especially     acknowledgment (8), requests for website-specific proof-of-
at the interface between the browser’s WebAuthn API and              concept material that we cannot provide due to unmet attack
RPs. Although the specification mandates strict validations,         requirements (16), or the issues being considered out of scope
none of the tested sites enforced them fully. About every sec-       by the affected parties (6). For 3 websites, reporting was not
ond site contained critical or high-severity issues. Weaknesses      possible due to platform restrictions (e.g., minimum reputa-
are common in passkey management, where poor handling of             tion requirements on HackerOne). In one case, the reported



5052    35th USENIX Security Symposium                                                                         USENIX Association
issue had already been resolved prior to our disclosure.            harm and enable timely remediation, we followed a coordi-
   We will continue to support the vendors by retesting de-         nated vulnerability disclosure process: we first shared our
ployed patches and providing feedback to help strengthen            findings with the relevant vendors to enable them to imple-
the overall security of passkey authentication. By the time of      ment the necessary fixes and protect their users. Only after
publication, all vendors had at least 6 months to address the       this remediation phase do we disclose our results to the wider
reported vulnerabilities.                                           public through this publication, benefiting all users who rely
                                                                    on passkeys for authentication. We believe that this process,
                                                                    and the resulting improvements to the ecosystem, justify both
Retrospective Ethical Considerations                                the study and its publication.

Releasing our Tool. The release of PASSKEYS -ATTACKER
is intended to assist researchers and developers in identifying     Open Science
and addressing vulnerabilities in passkey implementations.
                                                                    Our project website is available at https://passkeys.
Thereby, we improve the overall passkey security and con-
                                                                    tools. All tools, source code, and artifacts are publicly
tribute to safer and more robust authentication systems.
                                                                    available via GitHub (https://github.com/RUB-NDS/
   We acknowledge the risk that malicious actors could
                                                                    state-of-passkeys-artifacts) and Zenodo (https://
use PASSKEYS -ATTACKER to identify vulnerabilities, poten-
                                                                    doi.org/10.5281/zenodo.17898769).
tially leading to harmful applications. However, PASSKEYS -
                                                                       A continuously running instance of our PASSKEYS -R ADAR
ATTACKER is designed for use with two testing accounts that
                                                                    is available at https://radar.passkeys.tools. It offers
are owned by the analyst, and it only probes with proof of
                                                                    live statistics on passkey adoption and visualizes the per-
concepts that do not interfere with anything else than one
                                                                    formance of individual detection sources. Researchers can
of their own testing accounts. Indeed, it remains a risk that
                                                                    explore aggregated lists of passkey-enabled websites for any
PASSKEYS -ATTACKER could be adapted to attack accounts
                                                                    given date, with detailed coverage per domain and source. All
that are not owned by the analyst and generate payloads that
                                                                    merged lists are available for download as JSON files, and
violate their intended ethical constraints. In the worst case,
                                                                    the full dataset can be accessed through our public API. Our
the malicious actor could gain access to the victim’s account
                                                                    ongoing scans will ensure long-term monitoring of passkeys.
or overwrite their passkeys.
                                                                       We also provide a publicly accessible instance of the
   Overall, we see PASSKEYS -ATTACKER as being in line
                                                                    PASSKEYS -ATTACKER at https://attacker.passkeys.
with well-established and publicly-accessible vulnerability
                                                                    tools. Together with the browser extension (downloadable
scanning tools2 . We clearly see the benefits of releasing our
                                                                    from the website) and our preconfigured public database, this
tool to outweigh the risks it may introduce. Through our re-
                                                                    allows anyone to replicate our testing setup without requir-
sponsible disclosure, we noticed that vendors and triagers
                                                                    ing local installation. The entire setup is containerized with
actively used and showed particular appreciation for our tool.
                                                                    Docker and Docker Compose, simplifying local deployments.
One passkey developer remarked: “It enables in-depth test-
                                                                       Our artifacts are organized as follows:
ing that was simply not possible before.” The tool is further
                                                                     (1) ./radar: Source code of the PASSKEYS -R ADAR.
usable only in a semi-automated fashion, making security
                                                                     (2) ./detector: Source code for scanning well-known files.
analyses for pentesters easier but still not allowing for au-
                                                                     (3) ./tools: Source code of the PASSKEYS -ATTACKER.
tomated vulnerability scanning. We strongly emphasize the
                                                                     (4) ./data: Artifacts for the PASSKEYS -R ADAR, including
need for responsible use of the tool, explicitly discourage
                                                                         the community directories, combined, and merged lists.
any unethical applications, and provide clear guidelines to
                                                                     (5) ./notebooks: Jupyter notebooks for analyzing evalua-
minimize the likelihood of misuse.
                                                                         tion data (sheet.csv) and generating paper figures.
   We will contact the FIDO Alliance to promote our tool
and request its inclusion on the public lists of passkey tools3 .
Additionally, we will discuss the integration of PASSKEYS -         References
ATTACKER into the official FIDO compliance tool [42] with
the alliance. We strongly advocate for open science and will         [1] 1Password. Passkeys.directory. [Online; accessed
therefore release all tools and artifacts on GitHub to maximize          2025-08-06]. URL: https : / / passkeys .
availability, functionality, and reproducibility.                        directory/.
   Research Benefits. We chose to conduct this research to           [2]   2FA Directory. [Online; accessed 2025-08-06]. URL:
identify and help mitigate flaws in passkey implementations                https://2fa.directory/de/.
that could already be exploited by adversaries. To minimize          [3]   A Well-Known URL for Relying Party Passkey End-
   2 https://owasp.org/www-community/Vulnerability_Scanning_               points. [Online; accessed 2025-08-06]. June 2025.
Tools                                                                      URL : https : / / w3c . github . io / webappsec -
   3 https://passkeys.dev/docs/tools-libraries/test-sites/                 passkey-endpoints/.



USENIX Association                                                                    35th USENIX Security Symposium        5053
 [4]   aID.no. [Online; accessed 2025-08-18]. URL: https:                328. ISBN: 978-981-99-8736-8. DOI: 10.1007/978-
       //www.aid.no/aid/.                                                981-99-8736-8_10.
 [5]   Aftab Alam et al. “Poster: Let History not Repeat Itself   [13] Jenny Blessing et al. “SoK: Web Authentication and
       (this Time) – Tackling WebAuthn Developer Issues                Recovery in the Age of End-to-End Encryption”.
       Early On”. In: Proceedings of the 2019 ACM SIGSAC               In: Proceedings on Privacy Enhancing Technologies
       Conference on Computer and Communications Secu-                 2025.3 (July 2025), pp. 560–589. ISSN: 2299-0984.
       rity (Nov. 2019). Conference Name: CCS ’19: 2019                DOI : 10.56553/popets- 2025- 0113. URL : https:
       ACM SIGSAC Conference on Computer and Commu-                    / / petsymposium . org / popets / 2025 / popets -
       nications Security ISBN: 9781450367479 Place: Lon-              2025-0113.php (visited on 01/13/2026).
       don United Kingdom Publisher: ACM, pp. 2669–2671.          [14]   browser-use/browser-use: Make websites accessible
       DOI : 10.1145/3319535.3363283. URL : https://                     for AI agents. Automate tasks online with ease. [Online;
       dl . acm . org / doi / 10 . 1145 / 3319535 . 3363283              accessed 2025-08-07]. URL: https://github.com/
       (visited on 03/19/2025).                                          browser-use/browser-use.
 [6]   Fatima Alqubaisi et al. “Should We Rush to Implement       [15] Marco Casagrande et al. CTRAPS: CTAP Client
       Password-less Single Factor FIDO2 based Authentica-             Impersonation and API Confusion on FIDO2.
       tion?” In: 2020 12th Annual Undergraduate Research              arXiv:2412.02349 [cs]. Dec. 2024. DOI: 10.48550/
       Conference on Applied Computing (URC). Apr. 2020,               arXiv.2412.02349. URL: http://arxiv.org/abs/
       pp. 1–6. DOI: 10.1109/URC49805.2020.9099190.                    2412.02349 (visited on 03/16/2025).
       URL : https://ieeexplore.ieee.org/document/
                                                                  [16] CBOR Object Signing and Encryption (COSE). [On-
       9099190 (visited on 03/16/2025).                                line; accessed 2025-08-18]. URL: https : / / www .
 [7]   Youssef Amer et al. “Understandability of the Technol-          iana . org / assignments / cose / cose . xhtml #
       ogy and Benefit May Not Be Enough to Nudge Users:               algorithms.
       An Exploratory Study in the Context of FIDO2 Adop-         [17] Clickjacking. [Online; accessed 2025-08-20]. May
       tion Behavior”. In: 2025 IEEE 49th Annual Computers,            2025. URL: https://developer.mozilla.org/en-
       Software, and Applications Conference (COMPSAC).                US/docs/Web/Security/Attacks/Clickjacking#
       2025, pp. 607–618. DOI: 10.1109/COMPSAC65507.                   clickjacking_defenses.
       2025.00083.
                                                                  [18] Clickjacking | OWASP Foundation. [Online; accessed
 [8] API Methods for Developers | Namecheap.com. [On-                  2025-08-26]. URL: https : / / owasp . org / www -
     line; accessed 2025-08-12]. URL: https : / / www .                community/attacks/Clickjacking.
     namecheap.com/support/api/methods/.
                                                                  [19] Cross Site Request Forgery (CSRF) | OWASP Foun-
 [9]   Manuel Barbosa et al. “Privacy and Security of FIDO2            dation. [Online; accessed 2025-08-19]. URL: https:
       Revisited”. In: Proceedings on Privacy Enhancing                //owasp.org/www-community/attacks/csrf.
       Technologies (2025). ISSN: 2299-0984. URL: https:          [20] CrUX on BigQuery | Chrome UX Report | Chrome
       / / petsymposium . org / popets / 2025 / popets -               for Developers. [Online; accessed 2025-08-06]. URL:
       2025-0100.php (visited on 08/26/2025).                          https : / / developer . chrome . com / docs / crux /
[10] Manuel Barbosa et al. “Provable Security Analysis                 bigquery.
     of FIDO2”. In: Advances in Cryptology – CRYPTO               [21] CVE Record: CVE-2020-8236. [Online; accessed 2025-
     2021. Ed. by Tal Malkin et al. Cham: Springer Interna-            08-22]. URL: https://www.cve.org/CVERecord?
     tional Publishing, 2021, pp. 125–156. ISBN: 978-3-030-            id=CVE-2020-8236.
     84252-9. DOI: 10.1007/978-3-030-84252-9_5.
                                                                  [22] CVE Record: CVE-2021-38299. [Online; accessed
[11] Nina Bindel et al. “FIDO2, CTAP 2.1, and WebAuthn 2:              2025-08-22]. URL: https : / / www . cve . org /
     Provable Security and Post-Quantum Instantiation”. In:            CVERecord?id=CVE-2021-38299.
     2023 IEEE Symposium on Security and Privacy (SP).
                                                                  [23] CVE Record: CVE-2023-44039. [Online; accessed
     ISSN: 2375-1207. May 2023, pp. 1471–1490. DOI:
                                                                       2025-08-22]. URL: https://www.cvedetails.com/
     10.1109/SP46215.2023.10179454. URL: https:
                                                                       cve/CVE-2023-44039/.
     / / ieeexplore . ieee . org / document / 10179454
     (visited on 03/16/2025).                                     [24] CVE Record: CVE-2023-45669. [Online; accessed
                                                                       2025-08-22]. URL: https : / / www . cve . org /
[12] Nina Bindel et al. “To Attest or Not to Attest, This is
                                                                       CVERecord?id=CVE-2023-45669.
     the Question – Provable Attestation in FIDO2”. In: Ad-
     vances in Cryptology – ASIACRYPT 2023. Ed. by Jian           [25] CVE Record: CVE-2024-39912. [Online; accessed
     Guo et al. Singapore: Springer Nature, 2023, pp. 297–             2025-08-22]. URL: https : / / www . cve . org /
                                                                       CVERecord?id=CVE-2024-39912.



5054   35th USENIX Security Symposium                                                                      USENIX Association
[26] CVE Record: CVE-2025-24180. [Online; accessed            [36] FIDO Alliance Overview | FIDO Alliance. [Online; ac-
     2025-08-22]. URL: https : / / www . cve . org /               cessed 2025-08-21]. URL: https://fidoalliance.
     CVERecord?id=CVE-2025-24180.                                  org/overview/.
[27] CVE Record: CVE-2025-53102. [Online; accessed            [37] FIDO Directory of Passkey Implementations | FIDO
     2025-08-22]. URL: https : / / www . cve . org /               Alliance. [Online; accessed 2025-08-06]. Sept. 2021.
     CVERecord?id=CVE-2025-53102.                                  URL : https : / / fidoalliance . org / passkeys -

[28] Alaa Daffalla et al. “A Framework for Abusability             directory/.
     Analysis: The Case of Passkeys in Interpersonal Threat   [38] E. Foudil. RFC 9116: A File Format to Aid in Security
     Models”. In: 34th USENIX Security Symposium.                  Vulnerability Disclosure. [Online; accessed 2025-08-
     2025.                                                         06]. Apr. 2022. URL: https://www.rfc- editor.
[29] Martiño Rivera Dourado et al. “Implementing a Web             org/rfc/rfc9116.html.
     Application for W3C WebAuthn Protocol Testing”.          [39] Ingunn Langtangen Furuberg et al. “From Password to
     In: 3rd XoveTIC Conference. XoveTIC Conference.               Passwordless: Exploring User Experience Obstacles to
     Basel Switzerland: MDPI, Aug. 18, 2020, p. 5. DOI:            the Adoption of FIDO2 Authentication”. Accepted:
     10 . 3390 / proceedings2020054005. URL: https :               2023-10-03T17:22:13Z. MA thesis. NTNU, 2023.
     //www.mdpi.com/2504- 3900/54/1/5 (visited on                  URL : https://ntnuopen.ntnu.no/ntnu- xmlui/
     07/08/2025).                                                  handle/11250/3093908 (visited on 03/17/2025).
[30] DuckDuckGo Tracker Radar Entity Map. [Online;            [40] Anthony Gavazzi et al. “A Study of Multi-Factor
     accessed 2025-08-06]. URL: https : / / raw .                  and Risk-Based Authentication Availability”. In: 32nd
     githubusercontent . com / duckduckgo / tracker -              USENIX Security Symposium (USENIX Security 23).
     radar / refs / heads / main / build - data /                  Anaheim, CA: USENIX Association, Aug. 2023,
     generated/entity_map.json.                                    pp. 2043–2060. ISBN: 978-1-939133-37-3. URL:
[31] Email: Final: OpenID Connect Discovery 1.0 incorpo-           https : / / www . usenix . org / conference /
     rating errata set 2. [Online; accessed 2025-08-06].           usenixsecurity23/presentation/gavazzi.
     URL : https : / / openid . net / specs / openid -        [41] Gitea Official Website. [Online; accessed 2025-08-18].
     connect-discovery-1_0.html.                                   URL : https://about.gitea.com/.

[32] Florian M. Farke et al. “Exploring User Authentica-      [42] Github. Certification Test Tools Resources. [Online; ac-
     tion with Windows Hello in a Small Business Environ-          cessed 2026-01-13]. URL: https : / / github . com /
     ment”. In: Eighteenth Symposium on Usable Privacy             fido - alliance / conformance - test - tools -
     and Security (SOUPS 2022). Boston, MA: USENIX                 resources.
     Association, Aug. 2022, pp. 523–540. ISBN: 978-1-        [43]   Github. Passkeys Authenticator AAGUID Explorer.
     939133-30-4. URL: https : / / www . usenix . org /              [Online; accessed 2025-04-02]. URL: https : / /
     conference/soups2022/presentation/farke.                        passkeydeveloper . github . io / passkey -
[33] Florian M. Farke et al. “You still use the pass-                authenticator-aaguids/explorer/.
     word after all – Exploring FIDO2 Security Keys in        [44] Athanasios Vasileios Grammatopoulos et al. “Blind
     a Small Company”. In: 2020, pp. 19–35. ISBN: 978-             software-assisted conformance and security assess-
     1-939133-16-8. URL: https://www.usenix.org/                   ment of FIDO2/WebAuthn implementations”. In: Jour-
     conference / soups2020 / presentation / farke                 nal of Wireless Mobile Networks, Ubiquitous Comput-
     (visited on 03/16/2025).                                      ing, and Dependable Applications 13.2 (June 2022),
[34] Fast and reliable end-to-end testing for modern web           pp. 96–127. DOI: 10.22667/JOWUA.2022.06.30.
     apps | Playwright. [Online; accessed 2025-08-07].             096. URL: https : / / doi . org / 10 . 22667 / JOWUA .
     URL : https://playwright.dev/.                                2022.06.30.096 (visited on 03/19/2025).
[35] Haonan Feng et al. “FIDO Gets Verified: A For-           [45] Vasileios Athanasios Grammatopoulos et al. “A web
     mal Analysis of the Universal Authentication Frame-           tool for analyzing FIDO2/WebAuthn Requests and Re-
     work Protocol”. In: IEEE Transactions on Depend-              sponses”. In: Proceedings of the 16th International
     able and Secure Computing 20.5 (Sept. 2023). Con-             Conference on Availability, Reliability and Security.
     ference Name: IEEE Transactions on Dependable and             ARES ’21. New York, NY, USA: Association for Com-
     Secure Computing, pp. 4291–4310. ISSN: 1941-0018.             puting Machinery, Aug. 2021, pp. 1–10. ISBN: 978-
     DOI : 10.1109/TDSC.2022.3217259. URL : https:                 1-4503-9051-4. DOI: 10 . 1145 / 3465481 . 3469209.
     //ieeexplore.ieee.org/document/9930658 (vis-                  URL : https : / / dl . acm . org / doi / 10 . 1145 /
     ited on 03/16/2025).                                          3465481.3469209 (visited on 03/19/2025).



USENIX Association                                                              35th USENIX Security Symposium       5055
[46] Jingjing Guan et al. “A Formal Analysis of the FIDO2        [54] Donghyun Kim et al. “HiPass: Hijacking CTAP in
     Protocols”. In: Computer Security – ESORICS 2022:                Passkey Authentication”. In: IEEE Access 13 (2025),
     27th European Symposium on Research in Computer                  pp. 92086–92101. DOI: 10 . 1109 / ACCESS . 2025 .
     Security, Copenhagen, Denmark, September 26–30,                  3570377.
     2022, Proceedings, Part III. Copenhagen, Denmark:           [55] Donghyun Kim et al. “Session Replication Attack
     Springer-Verlag, 2022, pp. 3–21. ISBN: 978-3-031-                Through QR Code Sniffing in Passkey CTAP Registra-
     17142-0. DOI: 10.1007/978- 3- 031- 17143- 7_1.                   tion”. In: ICT Systems Security and Privacy Protection.
     URL : https : / / doi . org / 10 . 1007 / 978 - 3 - 031 -        Ed. by Nikolaos Pitropakis et al. Cham: Springer Na-
     17143-7_1.                                                       ture Switzerland, 2024, pp. 294–307. ISBN: 978-3-031-
[47] Iness Ben Guirat et al. “Formal verification of the W3C          65175-5. DOI: 10.1007/978-3-031-65175-5_21.
     web authentication protocol”. In: Proceedings of the        [56] Dhruv Kuchhal et al. “Evaluating the Security Posture
     5th Annual Symposium and Bootcamp on Hot Topics                  of Real-World FIDO2 Deployments”. In: Proceedings
     in the Science of Security. Raleigh North Carolina:              of the 2023 ACM SIGSAC Conference on Computer
     ACM, Apr. 2018, pp. 1–10. ISBN: 978-1-4503-6455-                 and Communications Security. CCS ’23. New York,
     3. DOI: 10.1145/3190619.3190640. URL: https:                     NY, USA: Association for Computing Machinery, Nov.
     //dl.acm.org/doi/10.1145/3190619.3190640                         2023, pp. 2381–2395. ISBN: 979-8-4007-0050-7. DOI:
     (visited on 04/12/2025).                                         10 . 1145 / 3576915 . 3623063. URL: https : / / dl .
[48] Lucjan Hanzlik et al. Token meets Wallet: Formalizing            acm.org/doi/10.1145/3576915.3623063 (visited
     Privacy and Revocation for FIDO2. Publication info:              on 03/17/2025).
     Published elsewhere. Minor revision. IEEE S&P 2023.         [57] Leona Lassak et al. “"It’s Stored, Hopefully, on an
     2022. URL: https://eprint.iacr.org/2022/084                      Encrypted Server”: Mitigating Users’ Misconcep-
     (visited on 03/16/2025).                                         tions About {FIDO2} Biometric {WebAuthn}”. In:
[49] Jan-Ulrich Holtgrave et al. “A Qualitative Study of              2021, pp. 91–108. ISBN: 978-1-939133-24-3. URL:
     Adoption Barriers and Challenges for Passwordless                https : / / www . usenix . org / conference /
     Authentication in German Public Administrations”. In:            usenixsecurity21 / presentation / lassak (vis-
     (2025).                                                          ited on 03/16/2025).
[50] Louis Jannett et al. “SoK: SSO-MONITOR - The                [58] Leona Lassak et al. “A Comparative Long-Term Study
     Current State and Future Research Directions in Sin-             of Fallback Authentication Schemes”. In: Proceedings
     gle Sign-on Security Measurements”. In: 2024 IEEE                of the 2024 CHI Conference on Human Factors in
     9th European Symposium on Security and Privacy                   Computing Systems. CHI ’24. Honolulu, HI, USA:
     (EuroS&P). 2024, pp. 173–192. DOI: 10 . 1109 /                   Association for Computing Machinery, 2024. ISBN:
     EuroSP60621.2024.00018.                                          9798400703300. DOI: 10.1145/3613904.3642889.
                                                                      URL : https : / / doi . org / 10 . 1145 / 3613904 .
[51] JSON API for DNS over HTTPS (DoH) | Public
     DNS | Google for Developers. [Online; accessed 2025-             3642889.
     08-12]. URL: https://developers.google.com/                 [59] Leona Lassak et al. “From TOTPs to Security Keys:
     speed/public-dns/docs/doh/json.                                  Studying the Reality of Passwordless FIDO2 Authen-
[52] Michal Kepkowski et al. “Challenges with Password-               tication With PIN and Biometrics in a Corporate En-
     less FIDO2 in an Enterprise Setting: A Usability                 vironment”. In: Twenty-First Symposium on Usable
     Study”. In: 2023 IEEE Secure Development Con-                    Privacy and Security (SOUPS 2025). 2025, pp. 371–
     ference (SecDev). Oct. 2023, pp. 37–48. DOI: 10 .                389.
     1109/SecDev56634.2023.00017. URL: https://                  [60] Leona Lassak et al. “Why Aren’t We Using Passkeys?
     ieeexplore.ieee.org/document/10305624 (vis-                      Obstacles Companies Face Deploying FIDO2 Pass-
     ited on 03/16/2025).                                             wordless Authentication”. In: 33rd USENIX Secu-
[53] Michal Kepkowski et al. “How Not to Handle Keys:                 rity Symposium (USENIX Security 24). Philadelphia,
     Timing Attacks on FIDO Authenticator Privacy”.                   PA: USENIX Association, Aug. 2024, pp. 7231–7248.
     In: Proceedings on Privacy Enhancing Technologies                ISBN : 978-1-939133-44-1. URL : https : / / www .
     2022.4 (Oct. 2022), pp. 705–726. ISSN: 2299-0984.                usenix . org / conference / usenixsecurity24 /
     DOI : 10.56553/popets- 2022- 0129. URL : https:                  presentation/lassak.
     / / petsymposium . org / popets / 2022 / popets -           [61] Victor Le Pochat et al. “Tranco: A Research-Oriented
     2022-0129.php (visited on 04/14/2025).                           Top Sites Ranking Hardened Against Manipulation”.
                                                                      In: Proceedings of the 26th Annual Network and Dis-




5056   35th USENIX Security Symposium                                                                   USENIX Association
       tributed System Security Symposium. NDSS 2019. Feb.      [73] Passkeys Directory. [Online; accessed 2025-08-06].
       2019. DOI: 10.14722/ndss.2019.23386.                          URL : https : / / passkeys - directory . dashlane .
[62] List methodology - Tranco. [Online; accessed 2025-              com/.
     08-06]. URL: https : / / tranco - list . eu /              [74] Passkeys Index. [Online; accessed 2025-08-06]. URL:
     methodology.                                                    https://passkeyindex.io/.
[63]   List of FIDO2 and Passkey Supported Websites and         [75] Passkeys Integration: Add Passkeys Authentication to
       Services | Hideez. [Online; accessed 2025-08-06]. URL:        Your Platform. [Online; accessed 2025-08-27]. URL:
       https://hideez.com/en-de/pages/supported-                     https : / / www . passkeys . com / integrations .
       services.                                                     html.
[64]   Ahmed Tanvir Mahdad et al. “Breaching Security Keys      [76] Passkeys Services | Passkeys App. [Online; accessed
       without Root: FIDO2 Deception Attacks via Over-               2025-08-06]. URL: https : / / passkeys . 2stable .
       lays exploiting Limited Display Authenticators”. In:          com/services/.
       Proceedings of the 2024 on ACM SIGSAC Confer-            [77] passkeys.dev - Device Support. [Online; accessed 2025-
       ence on Computer and Communications Security. Salt            08-25]. URL: https : / / passkeys . dev / device -
       Lake City UT USA: ACM, Dec. 2024, pp. 1686–1700.              support/.
       ISBN : 979-8-4007-0636-3. DOI : 10.1145/3658644.
       3690286. URL: https : / / dl . acm . org / doi / 10 .    [78] passkeys.dev - Libraries. [Online; accessed 2025-08-
       1145/3658644.3690286 (visited on 03/19/2025).                 27]. Sept. 2022. URL: https : / / passkeys . dev /
                                                                     docs/tools-libraries/libraries/.
[65] Alexander Matzen et al. “Challenges and Potential Im-
     provements for Passkey Adoption—A Literature Re-           [79] PublicKeyCredential: signalAllAcceptedCredentials()
     view with a User-Centric Perspective”. In: Applied Sci-         static method - Web APIs | MDN. [Online; ac-
     ences 15.8 (2025). ISSN: 2076-3417. DOI: 10.3390/               cessed 2025-08-18]. July 2025. URL: https :
     app15084414. URL: https://www.mdpi.com/2076-                    / / developer . mozilla . org / en - US /
     3417/15/8/4414.                                                 docs / Web / API / PublicKeyCredential /
                                                                     signalAllAcceptedCredentials_static.
[66] Microsoft. Passwordless authentication | Microsoft Se-
     curity. [Online; accessed 2025-04-02]. URL: https://       [80] PublicKeyCredential:      signalUnknownCreden-
     www.microsoft.com/en-us/security/business/                      tial() static method - Web APIs | MDN. [On-
     solutions/passwordless-authentication.                          line; accessed 2025-08-18]. June 2025. URL:
                                                                     https : / / developer . mozilla . org / en -
[67] Mozilla. CredentialsContainer: create() method - Web            US / docs / Web / API / PublicKeyCredential /
     APIs | MDN. [Online; accessed 2025-04-02]. Mar.                 signalUnknownCredential_static.
     2025. URL: https : / / developer . mozilla . org /
     en- US/docs/Web/API/CredentialsContainer/                  [81] J. Rautenstrauch et al. “To Auth or Not To Auth? A
     create.                                                         Comparative Analysis of the Pre- and Post-Login Se-
                                                                     curity Landscape”. In: 2024 IEEE Symposium on Secu-
[68] Mozilla. CredentialsContainer: get() method - Web               rity and Privacy (SP). ISSN: 2375-1207. Los Alami-
     APIs | MDN. [Online; accessed 2025-04-02]. Mar.                 tos, CA, USA: IEEE Computer Society, May 2024,
     2025. URL: https://developer.mozilla.org/en-                    pp. 97–97. DOI: 10 . 1109 / SP54263 . 2024 . 00094.
     US/docs/Web/API/CredentialsContainer/get.                       URL : https://doi.ieeecomputersociety.org/
[69] Mozilla. Fetch API - Web APIs | MDN. [Online; ac-               10.1109/SP54263.2024.00094.
     cessed 2025-04-02]. Mar. 2025. URL: https : / /            [82] Thomas Roche et al. “A Side Journey To Titan”. In:
     developer.mozilla.org/en-US/docs/Web/API/                       30th USENIX Security Symposium (USENIX Secu-
     Fetch_API.                                                      rity 21). USENIX Association, Aug. 2021, pp. 231–
[70] Passkey Catalogue - Enpass. [Online; accessed 2025-             248. ISBN: 978-1-939133-24-3. URL: https://www.
     08-06]. URL: https://www.enpass.io/passkeys-                    usenix . org / conference / usenixsecurity21 /
     catalogue/.                                                     presentation/roche.
[71] Passkey Directory. [Online; accessed 2025-08-06].          [83] Dr.-Ing. Dominik Schürmann. PIN Bypass in Pass-
     URL : https://passkeys.2fa.directory/de/.                       wordless WebAuthn on microsoft.com and Nextcloud |
[72] Passkey-Verzeichnis – Keeper Security. [Online;                 Hardware Security SDK. [Online; accessed 2025-08-
     accessed 2025-08-06]. URL: https : / / www .                    20]. Aug. 2020. URL: https://hwsecurity.dev/
     keepersecurity . com / de _ DE / passkeys -                     2020/08/webauthn-pin-bypass/.
     directory/.




USENIX Association                                                               35th USENIX Security Symposium      5057
[84] Marco Squarcina et al. “Can I Take Your Subdomain?       [97] WSTG - Latest | OWASP Foundation. [Online; ac-
     Exploring Same-Site Attacks in the Modern Web”. In:           cessed 2025-08-11]. URL: https : / / owasp . org /
     30th USENIX Security Symposium (USENIX Security               www - project - web - security - testing - guide /
     21). 2021, pp. 2917–2934.                                     latest / 4 - Web _ Application _ Security _
[85] SSO-Monitor. [Online; accessed 2025-08-06]. URL:              Testing / 03 - Identity _ Management _ Testing /
     https://sso-monitor.me/.                                      04 - Testing _ for _ Account _ Enumeration _ and _
                                                                   Guessable_User_Account.
[86] Subdomain takeovers - Security | MDN. [Online; ac-
     cessed 2025-08-19]. June 2025. URL: https : / /          [98] Tarun Kumar Yadav et al. “A Security and Usability
     developer . mozilla . org / en - US / docs / Web /            Analysis of Local Attacks Against FIDO2”. In: Pro-
     Security/Subdomain_takeovers.                                 ceedings 2024 Network and Distributed System Secu-
                                                                   rity Symposium. Network and Distributed System Secu-
[87] The "keybase.txt" Well-Known Resource Identifier.
                                                                   rity Symposium. San Diego, CA, USA: Internet Soci-
     [Online; accessed 2025-08-06]. URL: https : / /
                                                                   ety, 2024. ISBN: 978-1-891562-93-8. DOI: 10.14722/
     keybase.io/docs/keybase_well_known.
                                                                   ndss . 2024 . 24327. URL: https : / / www . ndss -
[88] Enis Ulqinaku et al. “Is Real-time Phishing Elimi-            symposium.org/wp-content/uploads/2024-327-
     nated with FIDO Social Engineering Downgrade At-              paper.pdf (visited on 08/26/2025).
     tacks against FIDO Protocols”. In: 2021, pp. 3811–
                                                              [99] Yubico. Discover YubiKey 5 | Authentication for Secure
     3828. ISBN: 978-1-939133-24-3. URL: https://www.
                                                                   Login | Yubico. [Online; accessed 2025-04-02]. URL:
     usenix . org / conference / usenixsecurity21 /
                                                                   https://www.yubico.com/products/yubikey-5-
     presentation/ulqinaku (visited on 03/17/2025).
                                                                   overview/.
[89] W3C. Web Authentication: An API for accessing Pub-
     lic Key Credentials - Level 3. [Online; accessed 2025-
     04-02]. Jan. 2025. URL: https://www.w3.org/TR/           A Appendix
     webauthn-3/.
                                                              Table 3 shows why some websites were excluded from our
[90]   Wayback Machine. [Online; accessed 2025-08-06].        analysis of passkey implementations. Many used shared login
       URL : https://web.archive.org/.                        systems, which we only needed to analyze once. For example,
[91] Web Authentication: An API for accessing Public Key      we found 38 Gitea [41] instances and 134 domains using the
     Credentials - Level 3. [Online; accessed 2025-08-06].    Norwegian aID broker [4]. Other domains were excluded be-
     Jan. 2025. URL: https : / / www . w3 . org / TR /        cause account creation was restricted (such as banking, insur-
     webauthn-3/#sctn-related-origins.                        ance, or education) or required paid access. Some also asked
[92] Websites and Apps with Passkey Support. [Online; ac-     for information we could not provide, including payment de-
     cessed 2025-08-06]. URL: https://www.passkeys.           tails, business email addresses, or social security numbers.
     io/who-supports-passkeys.
                                                                     Exclusion Reason                            # Domains
[93] Websites that Use and Support Passkeys: Passkey Sup-
                                                                     Broker with shared login system                  178
     ported Sites Directory. [Online; accessed 2025-08-06].          Restricted or paid access                        170
     URL : https : / / www . passkeys . com / websites -             No passkeys available (only 2FA via TOTP)         56
     with-passkey-support-sites-directory.                           Duplicates missed by the merger                   46
                                                                     Website down or unreachable                       33
[94] Well-Known URIs. [Online; accessed 2025-08-06].                 Offers “Passkeys as a Service”                    28
     URL: https://www.iana.org/assignments/well-                     Foreign phone required                            22
                                                                     Mobile app required                               21
     known-uris/well-known-uris.xhtml.
                                                                     Business email required                           19
[95] Davey Winder. 16 Billion Apple, Facebook, Google                Unknown error during registration                 18
     And Other Passwords Leaked. [Online; accessed 2025-             Platform (i.e., OS, Browser)                      17
                                                                     No login found                                    13
     08-25]. June 2025. URL: https://www.forbes.com/                 Payment method required                           10
     sites/daveywinder/2025/06/20/16- billion-                       Social security number required                   10
     apple-facebook-google-passwords-leaked---                       Personal identification required                   9
                                                                     Geolocation restricted (even with VPN)             6
     change-yours-now/.                                              Hardware authenticators only (U2F)                 5
[96] Davey Winder. 184,162,718 Passwords and logins                  Selfhosted app requires installation               2
     leaked — Apple, Facebook, Snapchat. [Online; ac-                Chrome extension required                          1

     cessed 2025-08-25]. May 2025. URL: https://www.                                                        Σ         664
     forbes.com/sites/daveywinder/2025/05/23/
     184162718 - passwords - and - logins - leaked ---        Table 3: Reasons for Excluding Websites From Our Analysis.
     apple-facebook-snapchat/.



5058   35th USENIX Security Symposium                                                                      USENIX Association
