Skip to main content
Passkeys Breached Without Breaking CryptoIncident
4 min readFor Security Engineers

Passkeys Breached Without Breaking Crypto

What Happened

Security researchers at SpecterOps have identified 39 methods attackers use to compromise passkey authentication systems. These methods don't break FIDO2 cryptographic protocols. Instead, they exploit the infrastructure surrounding the authentication process, including enrollment workflows, device management, recovery mechanisms, and operating systems hosting passkey implementations.

In their "Pass the Passkey" research, SpecterOps showed that malware can manipulate the authentication process without extracting a private key. The cryptography works as intended; the failures occur in the layers your team controls.

Timeline of Vulnerability Development

This isn't a single incident but a pattern of attack vectors evolving with increased passkey adoption:

  • Initial Deployment Phase: Organizations implement passkeys, assuming FIDO2's cryptographic strength provides complete protection.
  • Discovery Phase: Attackers find that general-purpose devices (phones, laptops) running passkey implementations expose multiple attack surfaces.
  • Exploitation Phase: Malware targets enrollment processes, device sync mechanisms, and recovery workflows.
  • Documentation Phase: Security researchers catalog 39 distinct compromise methods, none requiring cryptographic breaks.

The critical insight: your passkey deployment was vulnerable from the start, not due to a zero-day, but because the ecosystem around the cryptography wasn't hardened.

Which Controls Failed or Were Missing

Enrollment Verification: Most implementations don't verify if the device requesting enrollment is controlled by the legitimate user. If an attacker compromises your endpoint before you enroll a passkey, they can register their own device alongside yours.

Recovery Process Authentication: Account recovery workflows often rely on weaker authentication methods (email, SMS, security questions). An attacker who compromises these fallback channels can add new passkeys without affecting your existing ones.

Device Attestation: Your system likely accepts passkeys from any FIDO2-compliant device without checking if that device meets minimum security requirements. A software-based passkey on a malware-infected laptop has the same trust level as a hardware security key.

Sync Security: If you're using platform passkeys that sync across devices (Apple's iCloud Keychain, Google Password Manager), you've extended your attack surface to include cloud account compromise, device backup security, and inter-device communication channels.

Malware Detection on Authenticator Devices: The device generating your passkey assertion might be running malware that manipulates the authentication ceremony in real-time. Your relying party sees a valid FIDO2 response but can't tell the user didn't authorize it.

What the Relevant Standards Require

FIDO2 specifies the cryptographic protocols but doesn't mandate how you secure the surrounding infrastructure. That's your responsibility, and it maps to existing requirements:

NIST 800-63B (Digital Identity Guidelines) requires that authenticator binding (enrollment) be performed at the same authenticator assurance level as authentication itself. If you're treating passkeys as AAL3 (highest assurance) for login but enrolling them with AAL1 email verification, you've created a downgrade path.

ISO/IEC 27001:2022 Annex A.9.4.3 requires that privileged access rights are "allocated on a need-to-use and event-by-event basis." Your passkey recovery process likely violates this by allowing permanent authenticator addition through a one-time email link.

SOC 2 Type II CC6.1 (logical access controls) requires that authentication mechanisms are protected from unauthorized modification. If malware on the user's device can manipulate the passkey ceremony, you're not meeting this control.

PCI DSS v4.0.1 Requirement 8.3.1 mandates multi-factor authentication for all access to the cardholder data environment. If your passkey implementation allows recovery through single-factor email verification, you've created a bypass.

The standards assume you're securing the full authentication lifecycle. Most passkey deployments secure only the cryptographic exchange.

Lessons and Action Items for Your Team

Map Your Actual Attack Surface: Document every point where a passkey touches your infrastructure: enrollment, authentication, recovery, device sync, credential management UI. Each is an attack vector.

Implement Attestation Verification: Configure your relying party to require and verify device attestation. Reject passkeys from devices that don't meet your security baseline. This is a FIDO2 feature most implementations ignore.

Harden Enrollment: Require existing strong authentication before allowing new passkey enrollment. If you're using passkeys as your strongest factor, enrollment should require in-person verification or hardware token approval.

Eliminate or Isolate Recovery Paths: Every recovery mechanism is a downgrade attack. If you must offer recovery, isolate it: require security team approval, enforce a waiting period, notify all existing authenticators, and log everything.

Consider Dedicated Biometric Hardware: General-purpose devices running passkeys also run email clients, browsers, and potentially malware. Dedicated biometric authenticators eliminate entire classes of attacks by removing the shared execution environment. You're trading convenience for a dramatically smaller attack surface.

Test Your Assumptions: Run your own "Pass the Passkey" exercise. Assume an attacker has malware on the user's device. Can they enroll a new passkey? Approve an authentication ceremony the user didn't initiate? Recover access through a fallback channel? If yes, you have work to do.

Monitor the Authentication Lifecycle, Not Just Attempts: Log enrollment events, recovery requests, and authenticator changes with the same rigor you apply to failed login attempts. Attackers who compromise the ecosystem won't trigger your failed-auth alarms.

The FIDO2 cryptography is solid. Your implementation of everything around it probably isn't. That's where the 39 methods live, and that's what you need to fix.

Topics:Incident

You Might Also Like