Skip to content

GHSA-g5h5-m4hm-xjrr CVE-2026-55669 GO-2026-5391

ZITADEL: Missing Token Audience Validation (`aud`) in JWT IdP Provider

Medium Go
Severity
4.2 / 10
Medium · CVSS 3.1
Exploit chance (EPSS)
0.15%
Chance of exploitation in the next 30 days. Higher than 4.61% of scored vulnerabilities.
Known exploited
No
Not in CISA's catalog
Weakness
CWE-346 Origin Validation Error
Fix
1.80.0-v2.20.0.20260615132747-d184e976fc79
Upgrade github.com/zitadel/zitadel to this version or later

Description

Summary

An authentication bypass vulnerability was discovered in ZITADEL's external JWT Identity Provider (IdP) implementation.

When validating JSON Web Tokens (JWTs) from an external provider, ZITADEL properly checks the token's cryptographic signature and issuer (iss), but it fails to validate the audience (aud) claim.

As a result, any validly signed token from the trusted issuer will be accepted. An attacker who is a legitimate user of a completely separate service sharing the same enterprise Identity Provider can intercept or present their token for that service to ZITADEL, successfully authenticating as that user without authorization.

Impact

In a controlled enterprise environment where Identity Providers are explicitly managed, the operational risk is localized. Exploitation requires that an attacker already possesses a valid standard user session token from a shared, trusted issuer intended for an entirely different relying party, limiting the vector to specific, rare cross-service setups where trust boundaries overlap.

Affected Versions

Systems running one of the following versions are affected:

  • 4.x: 4.0.0 through 4.11.0 (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, where a required audience can be set in the IdP configuration. Once provided, audience validation will be enforced.

Workarounds

The recommended solution is to update ZITADEL to a patched version.

If an immediate upgrade is not possible, you can mitigate the risk at the infrastructure layer:

  1. At the IdP: Ensure the external Identity Provider issues scoped tokens with highly unique, non-overlapping audience values that cannot be misconstrued by separate service deployments.
  2. At the Perimeter: Deploy a reverse proxy, API gateway, or Web Application Firewall (WAF) layer in front of ZITADEL to inspect incoming identity tokens and explicitly drop requests where the aud field does not strictly match ZITADEL's deployment target.

Questions

If you have any questions or comments about this advisory, please email us at security@zitadel.com

Credits

Thanks to Android-Login-Analysis, Jason Zhou and Pedro Giglioti for reporting this vulnerability.

Affected versions

Go

PackageVulnerableFixed in
github.com/zitadel/zitadel
< 1.80.0-v2.20.0.20260615132747-d184e976fc79
1.80.0-v2.20.0.20260615132747-d184e976fc79

How to fix

Move to the fixed version or later with your package manager, update the lockfile, and run your tests. If the package only arrives through another dependency, upgrade that dependency first. If none of its releases pulls a fixed version yet, force the version with your package manager's override.

github.com/zitadel/zitadel Go → 1.80.0-v2.20.0.20260615132747-d184e976fc79

go
go get github.com/zitadel/zitadel@v1.80.0-v2.20.0.20260615132747-d184e976fc79 && go mod tidy

Severity breakdown

CVSS 3.1 4.2

CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:L/I:L/A:N

Attack vector
Network
Attack complexity
High
Privileges required
Low
User interaction
None
Scope
Unchanged
Confidentiality
Low
Integrity
Low
Availability
None

Weakness

CWE-346: Origin Validation Error

The product does not properly verify that the source of data or communication is valid.

References

Timeline

  1. Published
  2. Last updated by the source
  3. Latest EPSS score
AdvisorySeverityWhy it's related
GHSA-fgmf-7rf8-m6vf
ZITADEL: Actions V1 sandbox escape: host file read via require()
High Also affects github.com/zitadel/zitadel
GHSA-9993-rfwp-rhwf
ZITADEL: MFA bypass via session reuse in Login V2
High Also affects github.com/zitadel/zitadel
GHSA-v859-c572-qh5p
ZITADEL: Improper Role Revocation on Granted Projects during Multiple Role Deletions
Medium Also affects github.com/zitadel/zitadel
GHSA-jq8w-8q2f-ffm9
ZITADEL Users Can Self-Verify Email/Phone via API
High Also affects github.com/zitadel/zitadel
GHSA-vrh8-c9cm-wh8v
ZITADEL: Unauthorized Token Privilege Escalation in OAuth2 Token Exchange
High Also affects github.com/zitadel/zitadel
GHSA-992q-9gwp-7r79
ZITADEL: Auto-linking by email: IdP-side email verification is not checked
Medium Also affects github.com/zitadel/zitadel
GHSA-v77h-2w3m-94hx
ZITADEL: Missing Token Expiration (`exp`) Validation in JWT IdP Provider
Medium Also affects github.com/zitadel/zitadel
GHSA-wxg7-w2v3-w38g
ZITADEL: Missing Token Lifecyle Validation (`exp` and `iat`) in JWT IdP Provider
Medium Also affects github.com/zitadel/zitadel
Is this in your code?

MergeHarbor checks every repository's dependencies against this database, ranks what matters by exploitability and reachability, routes it to the owning team and opens the fix pull request.

Check your repos with MergeHarbor