Skip to content

GHSA-992q-9gwp-7r79 CVE-2026-56666 GO-2026-6470

ZITADEL: Auto-linking by email: IdP-side email verification is not checked

Medium Go
Severity
4.8 / 10
Medium · CVSS 3.1
Exploit chance (EPSS)
0.29%
Chance of exploitation in the next 30 days. Higher than 21.10% of scored vulnerabilities.
Known exploited
No
Not in CISA's catalog
Weakness
CWE-287 Improper Authentication
Fix
4.15.3
Upgrade github.com/zitadel/zitadel to this version or later

Description

Summary

A flaw in the external identity provider handler allows unauthorized account linking to occur under specific administrative configurations. When auto-linking by email is enabled, ZITADEL checks that the local user's email is verified, but does not explicitly cross-check whether the incoming external identity provider (IdP) also verified that email address upstream.

Impact

When a user logs in via an external identity provider, the system can automatically link them to an existing local account if their email addresses match. However, because the system fails to check if the external provider actually verified ownership of that email, a security risk is introduced if a loose or public provider is connected.

If an administrator enables email auto-linking for an external identity provider that allows anyone to sign up with an unverified email address, an attacker can exploit this behavior. By registering an account on that permissive provider using a victim's email address and logging in, the system will automatically link the attacker's federated identity to the victim's legitimate local account. This allows the attacker to log into the victim's account without requiring any interaction or confirmation from the victim.

This issue represents a configuration-dependent anomaly rather than an unconditioned attack vector. Because the scenario relies entirely on an explicit administrative choice to trust a permissive external directory and link accounts automatically based purely on email strings, the practical operational risk is classified as Medium.

Affected Versions

Systems running one of the following versions are affected:

  • 4.x: 4.0.0 through 4.15.2 (including RC versions)
  • 3.x: 3.0.0 through 3.4.12 (including RC versions)

Patches

The vulnerability has been addressed in the latest releases. The patch resolves the issue by requiring that the external identity provider's email verification status is explicitly validated before allowing any automatic linking logic to proceed.

Workarounds

If an immediate upgrade is not possible, implement one of the following mitigations:

  • Disable auto-linking by email entirely by setting the option to AUTO_LINKING_OPTION_UNSPECIFIED on corresponding identity providers.
  • Audit external IdP configurations and restrict email auto-linking strictly to trusted enterprise identity directories (e.g., corporate Okta or Azure AD) where email verification is strictly enforced and managed by corporate policy.

Questions

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

Credits

Thanks to Android-Login-Analysis and Alejandro Yadlin for reporting this vulnerability.

Affected versions

Go

PackageVulnerableFixed in
github.com/zitadel/zitadel
< 4.15.3
4.15.3
github.com/zitadel/zitadel
all versions
No fix yet

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 → 4.15.3

go
go get github.com/zitadel/zitadel@v4.15.3 && go mod tidy

Severity breakdown

CVSS 3.1 4.8

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

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

Weakness

CWE-287: Improper Authentication

When an actor claims to have a given identity, the product does not prove or insufficiently proves that the claim is correct.

How to prevent it
  • Architecture and Design: Use an authentication framework or library such as the OWASP ESAPI Authentication feature.

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-v77h-2w3m-94hx
ZITADEL: Missing Token Expiration (`exp`) Validation in JWT IdP Provider
Medium Also affects github.com/zitadel/zitadel
GHSA-g5h5-m4hm-xjrr
ZITADEL: Missing Token Audience Validation (`aud`) 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