GHSA-g5h5-m4hm-xjrr CVE-2026-55669 GO-2026-5391
ZITADEL: Missing Token Audience Validation (`aud`) in JWT IdP Provider
- 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.0through4.11.0(including RC versions) - 3.x:
3.0.0through3.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:
- 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.
- 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
audfield 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
| Package | Vulnerable | Fixed 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
Packages
Other links
Timeline
- Published
- Last updated by the source
- Latest EPSS score
Related advisories
| Advisory | Severity | Why 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 |
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