CVE-2026-27840
Opaque Token Validation Flaw in ZITADEL Identity Platform
Publication date: 2026-02-26
Last updated on: 2026-03-05
Assigner: GitHub, Inc.
Description
Description
CVSS Scores
EPSS Scores
| Probability: | |
| Percentile: |
Meta Information
Affected Vendors & Products
| Vendor | Product | Version / Range |
|---|---|---|
| zitadel | zitadel | From 2.31.0 (inc) to 2.71.19 (inc) |
| zitadel | zitadel | From 3.0.0 (inc) to 3.4.7 (exc) |
| zitadel | zitadel | From 4.0.0 (inc) to 4.11.0 (exc) |
Helpful Resources
Exploitability
| CWE ID | Description |
|---|---|
| CWE-302 | The authentication scheme or implementation uses key data elements that are assumed to be immutable, but can be controlled or modified by the attacker. |
Attack-Flow Graph
AI Powered Q&A
Can you explain this vulnerability to me?
[{'type': 'paragraph', 'content': "CVE-2026-27840 is a vulnerability in ZITADEL's handling of opaque OpenID Connect (OIDC) access tokens in the version 2 (v2) format. Specifically, when these tokens are truncated to 80 characters, the user ID portion of the token's cleartext payload is omitted, but the backend still accepts the truncated token as valid."}, {'type': 'paragraph', 'content': 'ZITADEL uses symmetric AES encryption for opaque tokens, where the cleartext payload concatenates identifiers such as token ID and user ID. There are two token payload versions: v1 tokens (no longer created but still verified) and v2 tokens. For v2 tokens, the token ID includes an OIDC session ID and an access token ID, and the user ID is appended after a colon.'}, {'type': 'paragraph', 'content': 'The vulnerability arises because truncated v2 tokens missing the user ID are still accepted by the backend. This happens because v2 token authorization retrieves session data using only the OIDC session ID and access token ID, ignoring the user ID from the token. Although this behavior may look awkward, it is not considered exploitable.'}, {'type': 'paragraph', 'content': 'The issue is fixed in patched versions by verifying the user ID from the token against the session data in the database, preventing acceptance of truncated tokens.'}] [2]
How can this vulnerability impact me? :
This vulnerability allows truncated v2 opaque tokens missing the user ID to be accepted as valid by the backend. However, it is not considered exploitable and does not allow unauthorized data access or significant integrity compromise.
The impact is limited to potentially awkward or unexpected token acceptance behavior, which might cause confusion or minor integrity concerns but does not lead to a breach of confidentiality or availability.
The CVSS v3.1 base score is 4.3, indicating a moderate severity with low attack complexity and no privileges required, but user interaction is needed.
How does this vulnerability affect compliance with common standards and regulations (like GDPR, HIPAA)?:
I don't know
How can this vulnerability be detected on my network or system? Can you suggest some commands?
This vulnerability involves acceptance of truncated opaque OIDC v2 tokens limited to 80 characters, which still validate despite missing the user ID portion. Detection would involve identifying such truncated tokens in use or logs.
Since the tokens are opaque and encrypted, direct inspection on the network may be difficult. However, monitoring authentication logs or token validation logs for tokens exactly 80 characters long or truncated tokens missing the user ID portion could help detect this issue.
No specific commands or detection tools are provided in the available information.
What immediate steps should I take to mitigate this vulnerability?
The recommended immediate mitigation is to upgrade Zitadel to a patched version where this vulnerability is fixed.
- Upgrade to Zitadel version 4.11.0 or later if using the 4.x series.
- Upgrade to Zitadel version 3.4.7 or later if using the 3.x or 2.x series.
The patch enforces verification of the user ID from the token against session data in the database, preventing acceptance of truncated tokens.
No known workarounds are available.