Pocket ID reauthentication bypass via JWT freshness check fallback

Severity: medium · CVSS 6.8 · Published 2026-07-28

Pocket ID, a self-hosted identity provider, contains a flaw that allows attackers to bypass required security checks for sensitive services. When a service is configured to require a 'passkey' (a secure physical or biometric key) for extra protection, an attacker with a temporary access token can trick the system into skipping this requirement. This allows the attacker to gain long-term, persistent access to protected corporate applications and data by impersonating a legitimate user.

Technologies: github.com/pocket-id/pocket-id/backend (Go), Pocket-Id Pocket Id. Vendors: Go, Pocket-Id.

Quick answers

Is This vulnerability exploited in the wild?
No. Junglewise Threat Intelligence has no report of This vulnerability being exploited in the wild.
How severe is This vulnerability?
Medium severity, with a CVSS score of 6.8, published 28 July 2026.
Which products and versions are affected?
github.com/pocket-id/pocket-id/backend (Go) < 0.0.0-20260419162744-978ac87deffe; Pocket-Id Pocket Id < 0.0.0-20260419162744-978ac87deffe.
Is there a fix for This vulnerability?
A patch was published on 2026-04-19: Fixed in commit 978ac87deffe Junglewise finds every place you run it, drafts the upgrade and applies it once you approve.
How is This vulnerability attacked?
It is attacked over the network, in a hosted service.
Am I affected?
Check whether you run github.com/pocket-id/pocket-id/backend (Go) or Pocket-Id Pocket Id at an affected version. Junglewise does that check for you around the clock: connect your code, cloud and domains, and it matches new vulnerabilities like this one against what you actually run and tells you when one reaches you.

Technical details

The vulnerability exists in the `POST /api/webauthn/reauthenticate` endpoint, specifically within the `CreateReauthenticationTokenWithAccessToken` function. The application implements a fallback mechanism that validates reauthentication by checking if a JWT's `IssuedAt` claim is less than 60 seconds old, but it fails to verify the `auth_method`. Consequently, tokens generated via weaker methods like One-Time Access (OTA) tokens or initial signups are accepted as valid proof of a WebAuthn ceremony. Additionally, the session cookie check only verifies the presence of a cookie named 'session' without validating its value against a server-side store. An attacker with a fresh OTA token can obtain a reauthentication token to authorize OIDC clients configured with `RequiresReauthentication: true`, granting them renewable 30-day refresh tokens.

Affected products

  • pocket-id Pocket ID < 0.0.0-20260419162744-978ac87deffe

Timeline

  • 2026-04-19: patched: Fixed in commit 978ac87deffe
  • 2026-04-26: advisory

References

This page as Markdown. Free to reuse under CC BY 4.0 with a link back.