At the login itself, passkeys do their job. The private key is never shared with the server, the signature is bound to your domain and a look-alike site gets nothing out of it, which is why passkeys resist phishing where user training has always struggled.
That pushes attackers one step earlier in the flow. If they get into the account once, through an SMS OTP, a password or a support agent who wants to be helpful, they no longer need to steal a credential: they can register one of their own. From that point on they hold a login that is phishing-resistant, convenient and, from the server's point of view, entirely legitimate.
Enterprise Passkey Whitepaper. Practical guidance, rollout patterns and KPIs for passkey programs.
The question comes up in almost every banking project we run, and in August 2026 a Cornell study showed how much trouble users have once it has happened to them. The creation flow is usually built for adoption, which is the right goal, but few teams ask what that flow permits in the worst case.
A stolen password is a copy of your secret, and a reset makes that copy worthless. A passkey registered by an attacker is not a copy of anything. It is a second credential on the account, fully valid, with the private key sitting in the attacker's keychain.
Two consequences:
That changes the order in which you clean up. As long as the attacker holds a session that can manage credentials, deleting their passkey only means they register a new one a minute later. So lock the account and sign every device out in one move. Then remove the unknown authenticators, reset the password and the recovery factors and unlock the account at the end. Starting with the password reset is the common mistake, because the attacker's passkey is untouched by it.
In July 2026, security researchers described a campaign that did exactly this at scale. The attackers registered domains with "passkey" in the name, called employees claiming their account needed a passkey and walked them through a phishing panel that looked like the Microsoft enrollment. They took the password, relayed the MFA challenge in real time and had the user approve a passkey registration the attackers had started, which left an attacker-controlled credential inside a real Microsoft 365 tenant (The Hacker News). The victims went through the enrollment believing it made their account safer.
The Cornell study measured how far users get with the cleanup on their own. The researchers simulated a compromised Google, PayPal or LinkedIn account with an attacker's passkey on it and asked 31 participants to sort it out ("Maybe There's Only One Passkey?", USENIX Security 2026). Almost nobody recognized the login from the attacker's device without help, and most could not remove the foreign passkey, reset the password and sign the other devices out on their own. One participant saw two passkeys in the iCloud Keychain, their own and the attacker's, and read it as a single passkey covering two devices.
Users struggle to read the credential list, so the work sits with the notification you send at registration and with support running the cleanup, not with the account owner spotting the foreign key.
Four questions cover most of the design work:
Try passkeys in a live demo.
A new passkey is at least as powerful as the strongest factor on the account, so the check before creating it has to be at least as strong.
NIST SP 800-63B-4 says the same in normative language. Section 4.1.2.1 requires the binding to be authenticated at the highest assurance level the account already offers, capped at the level the new authenticator will be used at, and the provider has to notify the subscriber over a separate channel. Most consumer flows do neither. They append a passkey to a session that started with an SMS OTP weeks ago and stay quiet about it.
In practice:
The second case has nothing to do with attackers. A user signs in at a library terminal, an airport kiosk or a shared desktop in a branch, gets the friendly prompt, taps yes and leaves a working credential behind. Compliance teams in banking raise this before anything else.
The control is to classify the environment before you offer the prompt. Count how many distinct accounts have signed in from the same browser environment, and once more than two show up within 30 days, treat that environment as shared and either suppress the prompt or replace it with a warning. Where you have only seen a device a handful of times, it is better to wait: a few more weeks of observation cost less than a credential left behind on the wrong machine.
The rule only fires if people really do share devices, so check that before you build on it:
Three things distort that count in practice:
On public terminals in kiosk mode, do not offer passkey creation at all. Make that decision server-side rather than in the client.
Subscribe to our Passkeys Substack for the latest news.
WebAuthn gives you more control over the credential itself than most implementations use.
userVerification: "required"
at creation binds the credential to a biometric or PIN. It does not carry over to later
logins on its own: if the assertion request asks for preferred or discouraged, possession
of an unlocked device is enough again. Ask for required on both ceremonies and reject
assertions whose UV flag is false.authenticatorAttachment: "platform" keeps the credential on the device in front of the
user, which is what makes adoption work. "cross-platform" points them at a security key or
a second phone, slower but on something they carry with them. If you leave the field empty,
the user makes the choice, which is fine on a personal device and less so on a shared one.After creation, someone has to be able to see the credential and take it away again.
Every control above ends in one decision at runtime: is this session, on this device, allowed to create a passkey right now? Most teams cannot answer that today, because they have very little data on the enrollment flow.
Corbado Observe makes the enrollment side measurable on top of your existing login, without a passkey programme in place:
See Login Funnel in Corbado Observe →Corbado Connect is the other half, for teams that want the flow itself: it adds passkey creation and the step-up decision to an existing authentication stack, so the prompt appears when your risk rules allow it.
Igor Gjorgjioski
Head of Digital Channels & Platform Enablement, VicRoads
We hit 80% mobile passkey activation across 5M+ users without replacing our IDP.
See how VicRoads scaled passkeys to 5M+ users, alongside their existing IDP.
Read the case studyPasskeys moved the phishing problem rather than removing it. With the login closed, the pressure sits on enrollment and recovery, and both are usually built for conversion.
None of the controls are complicated: authenticate properly before you bind a credential, know whether the device is shared, be deliberate about the kind of credential you issue and tell the user afterwards. What takes effort is asking, at design time, what the creation flow permits when the person on the other side is not the account owner.
Corbado is the Passkey Intelligence Platform for large-scale CIAM teams running consumer authentication. We help you see what IDP logs and generic analytics tools can't: where passkeys, passwords, OTP, social login and fallback journeys succeed, stall or fail, which devices and browsers create friction, and when an OS update silently breaks login. Two products: Corbado Observe layers process mining and observability across authentication journeys. Corbado Connect adds managed passkeys with analytics built in alongside your IDP. VicRoads runs passkeys for 5M+ users with Corbado (+80% passkey activation). Talk to a Passkey Expert →
A passkey cannot be phished at login, so attackers move one step earlier. If they get into an account once through a phishable factor such as an SMS OTP, they register their own passkey and keep permanent access. Unlike a stolen password, that credential survives a password reset, because it is a legitimate credential on the account.
Classify the environment before you offer the prompt. If several different accounts have signed in from the same browser environment, treat it as shared and either suppress the passkey prompt or put an extra check in front of it. Where you have only seen a device a few times, it is better to wait: a few more weeks of observation cost less than a credential left behind on a library terminal, a call center desktop or a kiosk.
NIST SP 800-63B-4 section 4.1.2.1 requires the binding process to authenticate at the maximum assurance level currently available on the account or at the level the new authenticator will be used at, whichever is lower. The credential service provider also has to notify the subscriber over a channel independent of the binding transaction.
Lock the account and sign every device out first, otherwise an attacker with a live session simply registers a new credential while you clean up. Then remove the unknown authenticators, reset the password and the recovery factors and unlock the account last. Starting with the password reset leaves the attacker's passkey in place, and that credential is enough to sign back in.
Related Articles
Table of Contents