Description
Pocket ID is an OIDC provider that allows users to authenticate with their passkeys to your services. Prior to 2.4.0, the OIDC token endpoint rejects an authorization code only when both the client ID is wrong and the code is expired. This allows cross-client code exchange and expired code reuse. This vulnerability is fixed in 2.4.0.
Published: 2026-03-09
Score: 8.5 High
EPSS: < 1% Very Low
KEV: No
Impact: Unauthorized Token Acquisition via Cross‑Client Code Replay
Action: Patch
AI Analysis

Impact

Pocket ID, an OIDC provider, incorrectly validates the authorization code during token exchange. The check requires both the client ID to match and the code to be unexpired before rejecting the request. This logical flaw means that if a client uses a valid code issued to another client, the token endpoint will still accept it, allowing the attacker to obtain tokens for unauthorized clients. Additionally, the same flaw permits re‑use of expired codes, further expanding the potential for abuse. The consequences include unauthorized access to services, data exposure, and potential escalation if the compromised client has elevated privileges.

Affected Systems

The affected product is Pocket ID (pocket-id:pocket-id). Versions prior to 2.4.0 have the vulnerability. Users running any earlier release should upgrade to 2.4.0 or later to eliminate the issue.

Risk and Exploitability

The CVSS score of 8.5 places this problem in the High severity range. The EPSS score of less than 1% indicates a very low likelihood of exploitation in the wild, and the vulnerability is not included in CISA’s KEV catalog. Attackers could exploit it by crafting a token‑exchange request to the /token endpoint, supplying an authorization code from another client and the corresponding client ID. The flaw allows the code to be accepted without proper validation, leading to token issuance for an unauthorized client. Because the flaw exists server‑side and does not require client‑side manipulation, no special client behavior is necessary for exploitation.

Generated by OpenCVE AI on April 17, 2026 at 11:48 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Upgrade Pocket ID to version 2.4.0 or later, which fixes the authorization code validation logic.
  • If an upgrade is not immediately possible, configure the token endpoint to reject any request where the client ID does not match the code issuer, effectively re‑implementing the correct OR logic on the server side.
  • Monitor token exchanges for anomalous client ID and code pairs and alert on repeated cross‑client attempts to detect exploitation in progress.

Generated by OpenCVE AI on April 17, 2026 at 11:48 UTC.

Tracking

Sign in to view the affected projects.

Advisories
Source ID Title
Github GHSA Github GHSA GHSA-qh6q-598w-w6m2 Pocket ID: OIDC authorization code validation uses AND instead of OR, allowing cross-client token exchange
History

Fri, 13 Mar 2026 16:00:00 +0000

Type Values Removed Values Added
First Time appeared Pocket-id pocket Id
CPEs cpe:2.3:a:pocket-id:pocket_id:*:*:*:*:*:*:*:*
Vendors & Products Pocket-id pocket Id

Tue, 10 Mar 2026 15:30:00 +0000

Type Values Removed Values Added
Metrics ssvc

{'options': {'Automatable': 'no', 'Exploitation': 'poc', 'Technical Impact': 'partial'}, 'version': '2.0.3'}


Tue, 10 Mar 2026 14:15:00 +0000

Type Values Removed Values Added
First Time appeared Pocket-id
Pocket-id pocket-id
Vendors & Products Pocket-id
Pocket-id pocket-id

Mon, 09 Mar 2026 22:30:00 +0000

Type Values Removed Values Added
Description Pocket ID is an OIDC provider that allows users to authenticate with their passkeys to your services. Prior to 2.4.0, the OIDC token endpoint rejects an authorization code only when both the client ID is wrong and the code is expired. This allows cross-client code exchange and expired code reuse. This vulnerability is fixed in 2.4.0.
Title Pocket ID: OIDC authorization code validation uses AND instead of OR, allowing cross-client token exchange
Weaknesses CWE-863
References
Metrics cvssV3_1

{'score': 8.5, 'vector': 'CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:L/A:N'}


Subscriptions

Pocket-id Pocket-id Pocket Id
cve-icon MITRE

Status: PUBLISHED

Assigner: GitHub_M

Published:

Updated: 2026-03-10T14:32:17.637Z

Reserved: 2026-02-27T20:57:47.710Z

Link: CVE-2026-28513

cve-icon Vulnrichment

Updated: 2026-03-10T14:32:09.047Z

cve-icon NVD

Status : Analyzed

Published: 2026-03-10T17:38:50.303

Modified: 2026-03-13T15:52:56.823

Link: CVE-2026-28513

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-04-17T12:00:11Z

Weaknesses