Pass-ta-Key: Novel Attacks on Synced Passkey Authentication
Security teams have promoted passkeys as the safer replacement for passwords, but new research from Unit 42 shows how attackers can turn that trust against users. The research describes a family of attacks against synced passkeys, the digital keys that let people sign in without typing a password. When malware sits on a victim's computer, it can quietly copy or steal these keys and sign in as the victim.
Think of a synced passkey system as a hotel that trusts a guest's own key to open every door. Once an intruder reaches a single room, they can convince the front desk they are the guest, cut their own keys, or walk off with the master key that opens everything. Because each sign-in looks normal, the service on the other end sees no reason to suspect fraud.
The impact reaches beyond one device. Attackers can take over accounts at banks, code repositories, and cryptocurrency exchanges, and hold that access even after the original device is cleaned. In the worst case, stolen master keys cannot be reset, leaving every current and future passkey exposed. Organizations that rely on passkeys for authentication face account takeover, long-term unauthorized access, and identity fraud that routine login checks fail to catch.
Hunting Controls & Observations
The Pass-ta-Key attacks run from an already-compromised endpoint and abuse local storage, browser process memory, and the passkey onboarding workflow rather than dropping new malware families. Detection depends on watching how legitimate components are used, not on file signatures. Organizations can hunt this activity across the following telemetry sources:
- Endpoint Controls: EDR/XDR and Sysmon coverage for process creation (Event 1), sensitive process access (Event 10), file creation and deletion (Events 11, 23, 26), especially involving the browser profile and password manager storage.
- Identity & Access Controls: Sign-in and audit logs from identity providers and relying parties, including passkey and security-key authentication method, sign-in location, and the assertion signature counter.
- Network Controls: Outbound connections to authenticator sync endpoints originating from processes other than the browser.
- Cloud & SaaS / Application Controls: Password manager recovery and re-onboarding events, including recovery-PIN prompts and new user-verification key registrations.
Behavioral Indicators of Attack
The following observations distinguish this activity from routine passkey use:
- A process other than the browser reading the Chrome sync database directory (the local
Sync Data\LevelDBstore) that holds passkey credential records. - Non-browser processes calling Windows cryptography APIs such as
NCryptImportKeyandNCryptSignHashto import and sign with a stolen identity key, without any privilege escalation. - Deletion or renaming of the
passkey_enclave_statedevice-key file, which forces the account into a re-onboarding flow the attacker can hijack. - A passkey device entering the pending user-verification (
uv_key_pending) state outside of a genuine new-device setup, followed by adevice/add_uv_keyregistration. - A non-system process opening a handle to the browser process and reading its memory, particularly during a passkey recovery flow.
- Access to the browser debug surface that exposed the plaintext master key (
chrome://device-log/FIDO) or reads of its on-disk artifact. - Passkey assertions for the same credential appearing from multiple locations, or carrying a static (non-incrementing) signature counter, signaling use from an unexpected environment.
- Repeated or unexpected password manager recovery-PIN prompts during otherwise routine passkey sign-ins.
MITRE Enterprise ATT&CK Tactics and Techniques
The Unit 42 report does not publish a formal MITRE ATT&CK mapping; the techniques below are inferred from the documented behaviors and follow the attack flow:
- Credential Access (T1555.003 – Credentials from Password Stores: Credentials from Web Browsers): Malware reads the Chrome sync database and Google Password Manager storage to obtain encrypted passkey records and the wrapped identity key, without requiring elevated privileges.
- Credential Access (T1552.001 – Unsecured Credentials: Credentials In Files): The passkey master key (Security Domain Secret) was exposed in plaintext inside a browser debug-log surface readable by any local process before the vendor removed it.
- Defense Evasion (T1070.004 – Indicator Removal: File Deletion): The attacker deletes the local device key state file to invalidate the legitimate key and trigger a re-onboarding sequence they control.
- Persistence (T1556 – Modify Authentication Process): During forced re-onboarding the attacker registers their own user-verification key; because the cloud authenticator does not validate attestation of new keys, this grants reusable remote access.
- Credential Access (T1606 – Forge Web Credentials): Using the stolen identity and passkey keys, the attacker signs authentication assertions that relying parties accept as genuine.
- Credential Access (T1528 – Steal Application Access Token): The attacker obtains valid assertions from the cloud authenticator and forwards them to relying parties to authenticate as the victim.
Controls' Observables
The detection opportunities below are organized by control category and mapped back to the MITRE ATT&CK techniques above. Because this activity abuses trusted components, prioritize behavioral correlation over static matching.
Endpoint Controls
- Non-browser access to passkey storage: A process other than the browser opening the Chrome profile
Sync Data\LevelDBdirectory or password manager files.
Related MITRE Techniques: T1555.003, T1552.001
Detection Difficulty: MEDIUM - Tampering with device key state: Deletion or renaming of
passkey_enclave_state, especially followed by a passkey re-registration.
Related MITRE Techniques: T1070.004, T1556
Detection Difficulty: LOW - Browser process memory access: A non-system process opening a read handle into the browser process to recover the plaintext master key.
Related MITRE Techniques: T1555.003, T1552.001
Detection Difficulty: HIGH - Cryptographic key import and signing by non-browser processes: Use of Windows CNG APIs to import a stolen identity key and sign authentication material.
Related MITRE Techniques: T1606, T1528
Detection Difficulty: HIGH
Identity & Access Controls
- Anomalous passkey sign-ins: Passkey or security-key authentications for one account from multiple locations or with impossible travel between them.
Related MITRE Techniques: T1606, T1528
Detection Difficulty: MEDIUM - Static signature counter: Repeated assertions for the same credential that never increment the signature counter, indicating credential use from a copied environment.
Related MITRE Techniques: T1606
Detection Difficulty: HIGH
Cloud & SaaS / Application Controls
- Unexpected user-verification key registration: A
device/add_uv_keyregistration or a device enteringuv_key_pendingoutside of a legitimate new-device enrollment.
Related MITRE Techniques: T1556
Detection Difficulty: MEDIUM - Abnormal recovery flows: Repeated password manager recovery-PIN prompts during routine sign-ins, suggesting forced re-onboarding.
Related MITRE Techniques: T1070.004, T1556
Detection Difficulty: MEDIUM
Network Controls
- Non-browser authenticator connections: Outbound connections to authenticator sync endpoints from a process that is not the browser, indicating device impersonation.
Related MITRE Techniques: T1528
Detection Difficulty: HIGH
Insights and Recommendation
Organizations that fall victim to Pass-ta-Key attacks face full account takeover across every service where the victim uses synced passkeys, including financial, developer, and cryptocurrency platforms. The Silver variant lets an attacker authenticate remotely without the victim's device present, and the Golden variant recovers the master key that protects all synced passkeys. Because that master key cannot be rotated or revoked, a single successful theft grants persistent access that survives device cleanup and password resets.
Security teams should require strict user-verification flag validation and attestation checks for newly registered keys at every relying party, so that forged or unverified assertions are rejected. Restrict write and read access to browser passkey storage and device state files through platform controls, and alert on deletion of the passkey_enclave_state file. Deploy endpoint detection for browser process memory access and for cryptographic key import and signing by non-browser processes, and monitor identity logs for passkey assertions that arrive from multiple locations or fail to increment the signature counter. Treat any unexpected passkey re-onboarding or recovery-PIN prompt as a potential account-takeover attempt and investigate the originating endpoint.
Source and Credits
This summary is based on Unit 42 (Palo Alto Networks)'s research article "Pass the Passkey: A Novel Attack Surface in Passwordless Authentication" by Arie Olshtein, published on August 3, 2026.
Threat Hunting IOCs & Queries
This research describes attack techniques rather than a malware campaign, so the indicators below are local file paths, browser artifacts, and workflow identifiers rather than network infrastructure. Behavioral queries provide the most durable detection.
Known Indicators of Compromise
- File Paths:
%LocalAppData%\Google\Chrome\User Data\<Profile>\Sync Data\LevelDB: Chrome sync database holding passkey credential records
passkey_enclave_state: device key state file; deletion forces re-onboarding
wrapped_identity_private_key: exported identity key blob - Browser Artifacts:
chrome://device-log/FIDO: debug surface that exposed the plaintext master key (removed by Google following disclosure) - Data & Workflow Identifiers:
WebauthnCredentialSpecifics: proto-encoded credential records in the sync database
NCRYPT_OPAQUE_KEY_BLOB: Windows CNG key export format used to move the stolen key
device/add_uv_keycommand and theuv_key_pendingstate flag observed during forced re-onboarding - Windows API Surface:
NCryptOpenStorageProvider,NCryptImportKey,NCryptSignHash: CNG calls used to import and sign with the stolen identity key
Notes: IOCs reflect the source research as of August 3, 2026. These are technique artifacts, not command-and-control infrastructure, so no network reputation corroboration applies. Use the behavioral queries below for persistent detection.
Query 1: Non-Browser Access to Passkey and Sync Storage
- Behavior Targeted: A process other than the browser reading or touching the Chrome profile passkey/sync storage, indicating credential harvesting.
- MITRE ATT&CK: T1555.003 (Credentials from Web Browsers), T1552.001 (Credentials In Files)
- Expected Results: File events against
Sync Data\LevelDBor passkey state files where the initiating process is not a known browser binary. - False Positive Likelihood: MEDIUM. Backup agents, sync clients, and security tooling can touch profile directories; baseline and allowlist them.
- Tuning Guidance: Maintain an allowlist of legitimate browser and backup processes. Narrow the path filter to the LevelDB and passkey state files to reduce noise.
- Telemetry Requirements: EDR file-access telemetry or Sysmon file events; on Windows, file-read visibility can require object-access auditing or EDR sensor coverage.
- Detection Difficulty: MODERATE
Splunk (SPL)
// Query: Non-browser access to Chrome passkey/sync storage
// Purpose: Surface file activity on passkey storage initiated by non-browser processes.
// Tuning: Allowlist legitimate browser, backup, and sync agents in the NOT clause.
index=windows sourcetype="XmlWinEventLog:Microsoft-Windows-Sysmon/Operational" EventCode IN (11,23,26)
earliest=-7d
(TargetFilename="*\\Google\\Chrome\\User Data\\*\\Sync Data\\LevelDB*"
OR TargetFilename="*passkey_enclave_state*"
OR TargetFilename="*wrapped_identity_private_key*")
NOT (Image="*\\chrome.exe" OR Image="*\\msedge.exe" OR Image="*\\googledrivesync.exe")
| stats count min(_time) as firstSeen max(_time) as lastSeen values(TargetFilename) as files by Computer, User, Image
| sort - count
| table firstSeen, lastSeen, Computer, User, Image, files, count
Microsoft Defender/Sentinel (KQL)
// Query: Non-browser access to Chrome passkey/sync storage
// Table: DeviceFileEvents
// Tuning: Allowlist legitimate browser and backup processes in the InitiatingProcessFileName filter.
DeviceFileEvents
| where Timestamp > ago(7d)
| where FolderPath has @"\Google\Chrome\User Data\" and FolderPath has "Sync Data"
or FileName in~ ("passkey_enclave_state", "wrapped_identity_private_key")
| where InitiatingProcessFileName !in~ ("chrome.exe", "msedge.exe", "googledrivesync.exe")
| summarize Count = count(), FirstSeen = min(Timestamp), LastSeen = max(Timestamp)
by DeviceName, InitiatingProcessAccountName, InitiatingProcessFileName, FolderPath, ActionType
| order by Count desc
Note: These queries were generated with AI assistance. Test thoroughly in your environment before production use.
Query 2: Deletion or Tampering of the Passkey Device State File
- Behavior Targeted: Deletion or renaming of
passkey_enclave_stateto force a re-onboarding flow the attacker can hijack (Silver and Golden variants). - MITRE ATT&CK: T1070.004 (Indicator Removal: File Deletion), T1556 (Modify Authentication Process)
- Expected Results: File deletion or rename events on the device state file, followed shortly by passkey re-registration activity.
- False Positive Likelihood: LOW. Legitimate deletion of this file is rare outside of profile reset or uninstall.
- Tuning Guidance: Correlate with a subsequent re-onboarding or new key registration within a short window to raise confidence. Exclude known profile-reset tooling.
- Telemetry Requirements: Sysmon FileDelete events (23/26) or Defender
DeviceFileEventswith delete/rename action types. - Detection Difficulty: EASY
Splunk (SPL)
// Query: Deletion or rename of passkey_enclave_state
// Purpose: Detect invalidation of the local device key that precedes forced re-onboarding.
// Tuning: Exclude known profile-reset or uninstall processes.
index=windows sourcetype="XmlWinEventLog:Microsoft-Windows-Sysmon/Operational" EventCode IN (23,26)
earliest=-7d
TargetFilename="*passkey_enclave_state*"
| stats count min(_time) as firstSeen max(_time) as lastSeen by Computer, User, Image, TargetFilename
| sort - lastSeen
| table firstSeen, lastSeen, Computer, User, Image, TargetFilename, count
Microsoft Defender/Sentinel (KQL)
// Query: Deletion or rename of passkey_enclave_state
// Table: DeviceFileEvents
// Tuning: Exclude known profile-reset or uninstall tooling from InitiatingProcessFileName.
DeviceFileEvents
| where Timestamp > ago(7d)
| where FileName == "passkey_enclave_state"
| where ActionType in ("FileDeleted", "FileRenamed", "FileModified")
| project Timestamp, DeviceName, InitiatingProcessAccountName, InitiatingProcessFileName, ActionType, FolderPath
| order by Timestamp desc
Note: These queries were generated with AI assistance. Test thoroughly in your environment before production use.
Query 3: Suspicious Read Access to Browser Process Memory
- Behavior Targeted: A non-system process opening a handle into the browser process to recover the plaintext master key during a recovery flow (Golden variant).
- MITRE ATT&CK: T1555.003 (Credentials from Web Browsers), T1552.001 (Credentials In Files)
- Expected Results: Process-access events where the target image is the browser and the granted access includes memory-read rights, from an unusual source process.
- False Positive Likelihood: MEDIUM. Some security and crash-reporting tools legitimately read browser memory; allowlist them.
- Tuning Guidance: Filter on granted-access masks that include read rights (for example 0x1010 or 0x1410) and allowlist EDR, antivirus, and crash-handler processes.
- Telemetry Requirements: Sysmon ProcessAccess events (Event 10); Defender process-access telemetry via DeviceEvents where available.
- Detection Difficulty: HARD
Splunk (SPL)
// Query: Non-system process reading browser process memory
// Purpose: Detect handle opens into chrome.exe that request memory-read access.
// Tuning: Allowlist EDR/AV and crash-reporting SourceImages; adjust GrantedAccess masks per baseline.
index=windows sourcetype="XmlWinEventLog:Microsoft-Windows-Sysmon/Operational" EventCode=10
earliest=-7d
TargetImage="*\\chrome.exe"
(GrantedAccess="0x1010" OR GrantedAccess="0x1410" OR GrantedAccess="0x1438" OR GrantedAccess="0x143a")
NOT (SourceImage="*\\MsMpEng.exe" OR SourceImage="*\\SenseIR.exe" OR SourceImage="*\\WerFault.exe")
| stats count min(_time) as firstSeen max(_time) as lastSeen by Computer, SourceImage, TargetImage, GrantedAccess
| sort - count
| table firstSeen, lastSeen, Computer, SourceImage, TargetImage, GrantedAccess, count
Microsoft Defender/Sentinel (KQL)
// Query: Non-system process accessing browser process (proxy for memory read)
// Table: DeviceEvents
// Tuning: This relies on available process-access EventTypes; allowlist EDR/AV and crash handlers.
DeviceEvents
| where Timestamp > ago(7d)
| where ActionType has "ProcessAccess" or ActionType has "OpenProcess"
| where FileName =~ "chrome.exe"
| where InitiatingProcessFileName !in~ ("MsMpEng.exe", "SenseIR.exe", "WerFault.exe", "chrome.exe")
| summarize Count = count(), FirstSeen = min(Timestamp), LastSeen = max(Timestamp)
by DeviceName, InitiatingProcessFileName, FileName, ActionType
| order by Count desc
Note: These queries were generated with AI assistance. Test thoroughly in your environment before production use.
Query 4: Anomalous Passkey Sign-Ins and Static Signature Counter
- Behavior Targeted: Passkey authentications for one account from multiple locations, or forged assertions used remotely after key theft.
- MITRE ATT&CK: T1606 (Forge Web Credentials), T1528 (Steal Application Access Token)
- Expected Results: A single account authenticating with a passkey from two or more distinct locations within a short window, or from unexpected geographies.
- False Positive Likelihood: MEDIUM. VPNs, mobile roaming, and travel produce location changes; correlate with device and endpoint signals.
- Tuning Guidance: Adjust the distinct-location threshold and time window to your workforce. Where available, add the assertion signature counter to flag non-incrementing values.
- Telemetry Requirements: Identity provider sign-in logs capturing authentication method and location (for example Azure AD SigninLogs).
- Detection Difficulty: MODERATE
Splunk (SPL)
// Query: Same account passkey sign-ins from multiple locations
// Purpose: Detect passkey/FIDO authentications for one user from distinct locations in a short window.
// Tuning: Adjust the location threshold and time window; allowlist known VPN egress locations.
index=azure sourcetype="azure:aad:signin"
earliest=-1d
authenticationDetails="*passkey*" OR authenticationMethod="*FIDO*" OR authenticationMethod="*Passkey*"
| stats dc(location) as location_count values(location) as locations values(ipAddress) as ips count by userPrincipalName
| where location_count > 1
| sort - location_count
| table userPrincipalName, location_count, locations, ips, count
Microsoft Defender/Sentinel (KQL)
// Query: Same account passkey sign-ins from multiple locations
// Table: SigninLogs
// Tuning: Adjust the distinct-location threshold and lookback; allowlist known VPN egress.
SigninLogs
| where TimeGenerated > ago(1d)
| mv-expand AuthMethod = AuthenticationDetails
| where tostring(AuthMethod) has "Passkey" or tostring(AuthMethod) has "FIDO"
| extend City = tostring(LocationDetails.city), Country = tostring(LocationDetails.countryOrRegion)
| summarize LocationCount = dcount(strcat(City, Country)), Locations = make_set(strcat(City, ", ", Country)),
IPs = make_set(IPAddress), Count = count() by UserPrincipalName
| where LocationCount > 1
| order by LocationCount desc
Note: These queries were generated with AI assistance. Test thoroughly in your environment before production use.
