Read the docs
TI-2026-85259 Aliases CVE-2026-115770

Pocket ID email verification token survives address change

Priority MEDIUM 40CWE-345Published · Updated

Key facts

Attack vector
Network
Privileges required
Low
User interaction
None
Attack complexity
Low
Impact type
Security bypass
Confidentiality · integrity · availability
High · High · None
Fix status
Fixed

Attack profile from CVSS 3.1 · CNA. Fix status from CNA. Impact type from CWE-345.

Summary

Pocket ID from 2.2.0 before 2.12.0 binds email verification tokens only to the user identifier, so a token stays valid after the account email changes (CWE-345). A user with an ordinary account requests a token for an address they control, changes the account to an unused address, and redeems the old token to get the new address marked as verified. Applications that trust verified emails for account matching can link the attacker's identity to another user's account.

Written with Claude Haiku 5.5 from the sources below · 2026-11-04

Description from the CNA

Pocket ID is an OIDC provider that allows users to authenticate with their passkeys to services. From 2.2.0 until 2.12.0, SendEmailVerification uses the token model in backend/internal/model/email_verification_token.go to bind an email-verification token only to the user's identifier, while UpdateUser can change the account email without invalidating the outstanding token and VerifyEmail marks the current address as verified. An ordinary user can request a token for an address they control, change the account to an arbitrary unused address, and redeem the old token so Pocket ID publishes the new address with email_verified set to true. The default affected configuration uses emailsVerified=false and allowOwnAccountEdit=true; the target address must not already belong to another Pocket ID user. A relying application that trusts a verified email for automatic account matching or provisioning can link the attacker's identity to another user's account, while applications that rely exclusively on the stable OIDC sub claim are not affected by that downstream consequence. This issue is fixed in version 2.12.0.

Why it matters now

EPSS 0.00166 5th percentileScored 2026-11-07
Fix Fixed pocket-id (pocket-id): 2.12.0

SSVC decision points

Not available: CISA has not published SSVC decision points for this record.

Affected products

VendorProductAffected versionsFixed inStatusSource
pocket-idpocket-id2.2.0 to before 2.12.02.12.0Patch availableCNA
  • pocket-id Vendorpocket-id Affected 2.2.0 to before 2.12.0 Fixed in 2.12.0 Patch available CNA

CPE names Threatist (inferred) · 1

Inferred from how NVD named this product before; not given by a source.

CPEVersionsRoleVendor
cpe:2.3:a:pocket-id:pocket_id:*:*:*:*:*:*:*:*——pocket-id
  • cpe:2.3:a:pocket-id:pocket_id:*:*:*:*:*:*:*:* Versions — — ·pocket-id

Remediation

Upgrade Pocket ID to version 2.12.0, which fixes this issue.

Written with Claude Haiku 5.5 from the sources below · 2026-11-04

  • Fix · CNA pocket-id (pocket-id) Fixed in 2.12.0

Timeline

  1. 2026-11-04 Threatist record created from CVE-2026-115770

References

  • TI-2026-32027 Pocket ID: OIDC refresh token flow bypasses authorization revocation, account disabling, and group restrictions CVSS 4.0HIGH 8.5
  • TI-2026-22775 Pocket ID: OIDC authorization code validation uses AND instead of OR, allowing cross-client token exchange CVSS 3.1HIGH 8.5
  • TI-2026-40301 Pocket ID: Open Redirect on the OIDC /authorize page via unvalidated redirect_uri with prompt=none CVSS 3.1MEDIUM 4.3
  • TI-2026-85256 Missing audience validation in Pocket ID client credentials grant CVSS 3.0HIGH 7.7
  • TI-2026-22774 Pocket ID: OAuth redirect_uri validation bypass via userinfo/host confusion CVSS 3.1HIGH 7.1

Sources

This product uses the NVD API but is not endorsed or certified by the NVD. Sources and licences