7.4
High
github.com/zitadel/zitadel

CVE-2026-55672

CVE-2026-55672 is a high-severity improper authentication vulnerability in github.com/zitadel/zitadel (go), affecting versions < 1.80.0-v2.20.0.20260616131956-0973b074b488. It is fixed in 1.80.0-v2.20.0.20260616131956-0973b074b488.

Key facts
CVSS score
7.4
High
Attack vector
Network
Issuing authority
GitHub Advisory Database
Affected package
github.com/zitadel/zitadel
Fixed in
1.80.0-v2.20.0.20260616131956-0973b074b488
Disclosed
2026

Summary

Summary Zitadel's OAuth2 / OIDC CodeExchange and RefreshToken implementations omit a critical validation step to ensure that the requesting client matches the client that originally initiated the authorization flow. This violates RFC 6749 Section 4.1.3, which mandates that the authorization server must ensure the authorization code was issued to the authenticated confidential client. Impact This flaw creates potential vulnerabilities in two main authentication phases, provided specific external preconditions are met: Authorization Code Injection: An attacker who intercepts an authorization code (via an independent application vulnerability such as XSS, referrer leakage, log access, or network interception) can exchange it using credentials from a completely different client (ClientB) registered on the same Zitadel instance. Zitadel will authenticate ClientB and issue tokens for the victim user without verifying the client binding. Refresh Token Cross-Use: An attacker who successfully steals a valid refresh token (via an external application exploit or data leak) can present it under a different client identity. Zitadel validates the token's format and expiration but fails to enforce client binding, allowing the attacker to maintain persistent access from an unauthorized client. Device Authorization Cross-Use: An attacker who intercepts or manipulates a device authorization flow grant can finalize the exchange using a different client context than the one that initiated the device session, bypassing intended client boundaries. Scope and Mitigation Factors: External Preconditions: It is critical to note that exploiting either vector requires a pre-existing vulnerability or data leak within the target application environment to intercept the code or token in the first place. Securing the application layer against token theft remains outside the scope of Zitadel. Multi-tenant risk: On shared or multi-tenant instances, a client belonging to one tenant could theoretically exploit codes/tokens belonging to another tenant's clients if they are successfully intercepted. PKCE protection: Clients strictly using PKCE (Proof Key for Code Exchange) are partially mitigated against the authorization code injection vector, as the attacker would still require the code_verifier. However, PKCE does not protect against refresh token cross-use. Affected Versions Systems running one of the following versions are affected: 4.x: 4.0.0 through 4.15.1 (including RC versions) 3.x: 3.0.0 through 3.4.11 (including RC versions) Patches The vulnerability has been addressed in the latest releases by re-introducing strict client identity validation on the CodeExchange and RefreshToken grants. Please upgrade to one of the following secure versions: 4.x: Upgrade to $\ge$4.15.2 3.x: Update to $\ge$3.4.12 Workarounds The recommended solution is to upgrade to a patched version. To reduce exposure in the interim, ensure absolute adherence to application security best practices to prevent credential/token theft, enforce the use of PKCE for all clients to mitigate the Authorization Code Injection risk, and minimize refresh token lifespans. Questions If you have any questions or comments about this advisory, please email us at [email protected] Credits Thanks to kodareef5, Shubham Raj / Causal Security, and Gaurav Popalghat for identifying and responsibly reporting this or a part of this vulnerability.

Impact

What is improper authentication?

The application does not adequately verify the identity of a user, device, or process before granting access. Typical impact: unauthorized access to functions or data reserved for authenticated parties.

Severity and exposure

CVE-2026-55672 has a CVSS score of 7.4 (High). The vector is network-reachable, no privileges required, and no user interaction. A CVSS score reflects the worst-case severity of the vulnerability, not your specific exposure. Whether this affects your application depends on whether the vulnerable code is present and reachable in your environment.

A fixed version is available (1.80.0-v2.20.0.20260616131956-0973b074b488). Upgrading removes the vulnerable code path.

Affected versions

go

  • github.com/zitadel/zitadel (< 1.80.0-v2.20.0.20260616131956-0973b074b488)

Security releases

  • github.com/zitadel/zitadel → 1.80.0-v2.20.0.20260616131956-0973b074b488 (go)
Kodem intelligence

Severity tells you how bad this could be in the worst case. It does not tell you whether you are exposed. Exploitability and impact are functions of runtime truth: whether the vulnerable code is present, reachable, and actually executes in your application. A vulnerable package can sit in your dependency tree and never run.

Kodem, an Intelligent Application Security platform, uses runtime intelligence to reveal which vulnerabilities actually execute in production, so teams prioritize the ones that genuinely matter instead of chasing every advisory.

Kodem's runtime-powered SCA identifies whether CVE-2026-55672 is reachable in your applications. Explore open-source security for your team.

See if CVE-2026-55672 is reachable in your applications. Get a demo

Remediation advice

Upgrade github.com/zitadel/zitadel to 1.80.0-v2.20.0.20260616131956-0973b074b488 or later to resolve this vulnerability.

Kodem Kai can prioritize this vulnerability in your dependency tree and generate a fix recommendation.

Frequently asked questions about CVE-2026-55672

What is CVE-2026-55672?

CVE-2026-55672 is a high-severity improper authentication vulnerability in github.com/zitadel/zitadel (go), affecting versions < 1.80.0-v2.20.0.20260616131956-0973b074b488. It is fixed in 1.80.0-v2.20.0.20260616131956-0973b074b488. The application does not adequately verify the identity of a user, device, or process before granting access.

How severe is CVE-2026-55672?

CVE-2026-55672 has a CVSS score of 7.4 (High). This score reflects the worst-case severity of the vulnerability, not your specific exposure. Whether it represents real risk in your environment depends on whether the vulnerable code is present and reachable.

Which versions of github.com/zitadel/zitadel are affected by CVE-2026-55672?

github.com/zitadel/zitadel (go) versions < 1.80.0-v2.20.0.20260616131956-0973b074b488 is affected.

Is there a fix for CVE-2026-55672?

Yes. CVE-2026-55672 is fixed in 1.80.0-v2.20.0.20260616131956-0973b074b488. Upgrade to this version or later.

Is CVE-2026-55672 exploitable, and should I be worried?

Whether CVE-2026-55672 is exploitable in your environment depends on whether the vulnerable code is present and reachable. A CVSS score is a worst-case rating; it does not account for your specific deployment, configuration, or usage patterns. Kodem, an Intelligent Application Security platform, uses runtime intelligence to show which vulnerabilities actually execute in production, so you can focus on the ones that represent real risk. Get a demo

What actually determines whether CVE-2026-55672 is exploitable, and how bad it is?

Exploitability and impact are not fixed properties of a CVE. They depend on runtime truth: whether the vulnerable code is present, reachable, and actually executes in your application. A high CVSS score on a dependency that never runs is not the same as real risk. Kodem, an Intelligent Application Security platform, uses runtime intelligence to reveal which vulnerabilities actually execute in production, so teams prioritize the ones that genuinely matter.

How do I fix CVE-2026-55672?

Upgrade github.com/zitadel/zitadel to 1.80.0-v2.20.0.20260616131956-0973b074b488 or later.

Stop the waste.
Protect your environment with Kodem.