Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate with valid Zitadel account
-
DeliveryCall self-management API to change own email/phone
-
ExploitRequest verification code returned in response
-
ExecutionServer discloses plaintext code to caller
-
PersistSubmit code to mark contact verified
-
ImpactClaim ownership and bypass email-based policy
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V8 - Authorization Authorization logic validation
MITRE ATT&CK
1 technique across 1 tactic: Privilege Escalation The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Requires an authenticated Zitadel account and use of the self-management API path that returns the verification code to the caller (the returnCode/return-code option on the email or phone change or send-code flow). The specific condition is self-managing your OWN email or phone while requesting the code be returned in-band instead of delivered via email/SMS - that returned code is what enables 'verifying' an address you do not control. Limiting factors: the attacker must already hold valid credentials (this is not fully unauthenticated despite the vendor's PR:N rating), and operations against ANOTHER user's email/phone remain correctly permission-checked, confining abuse to the attacker's own account. Affected only on Zitadel 2.43.0-2.71.19, 3.0.0-3.4.10, and 4.0.0-4.15.0. |
| Impact | The vendor scores this 8.2 (High) on CVSS 4.0 (AV:N/AC:L/AT:N/PR:N/UI:A/VC:N/VI:H/VA:N/SI:H), reflecting network reach, low complexity, and high integrity impact on both the vulnerable system and email-trust-dependent subsequent systems. However, the description clearly frames the flaw as self-management by an authenticated user, which conflicts with the vendor's PR:N - an attacker must already hold a valid Zitadel account, so a privilege requirement of at least PR:L is more defensible; verify the PR rating against your deployment. There is no CISA KEV listing and no public proof-of-concept in the provided data, so this is not confirmed actively exploited and no EPSS-driven mass-exploitation signal is present. Real-world priority is moderate-to-high for identity-critical deployments: the impact (forging verified contact ownership to bypass email-based trust, account recovery, or policy gates) is serious, but exploitation is gated by needing an authenticated account and by the fact that changing another user's data remains correctly permission-checked. EPSS and SSVC/automatable data were not supplied. |
| Exploit ScenarioDerived | An authenticated Zitadel user calls the self-management API to change their email (or phone) to an address they do not own, requesting the verification code be returned in the API response (returnCode) rather than emailed to the real owner. The API returns the plaintext code, the attacker submits it to complete 'verification,' and their account now shows a verified email they never controlled - satisfying email-based security policies or asserting ownership of that identifier. No public PoC is available, but the attack is low-complexity for anyone with a valid account. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv2 – Jul 29, 2026
Improper authorization in Zitadel's user self-management API lets any authenticated user obtain the plaintext email/phone verification code for their own account and mark those contact details as verified without ever proving control of them. This is an incomplete-fix follow-up to CVE-2026-27946 (GHSA-282g-fhmx-xf54): that advisory blocked setting email.is_verified:true via UpdateHumanUser, but additional code paths still returned the verification code to the self-managing user. It affects Zitadel 2.43.0-2.71.19, 3.0.0-3.4.10, and 4.0.0-4.15.0, letting attackers claim ownership of emails/phones they do not control and bypass email-based security policies. No public exploit identified at time of analysis.
Earlier versions of this analysis (1)
Improper authorization in Zitadel's user self-management API lets any authenticated user obtain the email/phone verification code for their own account and thereby mark an address or number they do not actually control as verified. This is a follow-on bypass to CVE-2026-27946 (GHSA-282g-fhmx-xf54): after the direct email.is_verified: true path on UpdateHumanUser was closed, additional code paths still returned the plaintext verification code (returnCode) to the requesting user without an adequate permission check, enabling users to claim ownership of arbitrary identifiers and bypass email-based security policies. No public exploit identified at time of analysis; not listed in CISA KEV. Fixed in 4.15.1, 3.4.11 (and the corresponding 2.x-lineage build).
RemediationAI
Vendor-released patch: upgrade 4.x to >=4.15.1 (https://github.com/zitadel/zitadel/releases/tag/v4.15.1) and both the 3.x and 2.x lines to >=3.4.11 (https://github.com/zitadel/zitadel/releases/tag/v3.4.11) - the advisory directs 2.x users to the 3.4.11 release. The underlying fix ships in commits 90f310212d3a5075084a603bf61fed549c92956d, a1748b2f0326ddf7be0de44b4f980ae2c07c0151, and ed09b3df7f43e870423e4d8f2757e6894481604f. If you cannot upgrade immediately, the vendor-recommended workaround is to deploy a Zitadel Action (v2) that intercepts and prevents returning the verification code to the requesting/own user, closing the disclosure path at the cost of added action-engine configuration and maintenance and disrupting any self-service flow that legitimately relies on returned codes for that account. Refer to advisory GHSA-jq8w-8q2f-ffm9 and contact security@zitadel.com with questions.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 4 packages in go, euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
Zitadel is an open-source, cloud-native identity and access management (IAM) platform written in Go (module github.com/zitadel/zitadel), providing user-management APIs including self-service updates to a user's own email and phone. The root cause is CWE-863 (Improper Authorization): in internal/command/user_v2_email.go, changeUserEmailWithGeneratorEvents and sendUserEmailCodeWithGeneratorEvents called checkPermissionUpdateUser with allowSelfManagement hard-coded to true. That is correct for a user changing their own email address, but unsafe when the request also asks the server to return the verification code (returnCode=true) instead of delivering it out-of-band via email/SMS. Because the code was handed back to the caller, a user could 'verify' a contact they never actually received a message at. The fix sets allowSelfManagement := !returnCode, so requesting the returned code now requires explicit write permission on the user rather than mere self-management; equivalent logic applies to the phone path.
Know when the next one hits your stack
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:A/VC:N/VI:H/VA:N/SC:N/SI:H/SA:N
Network API, low complexity; requires an authenticated account so PR:L not PR:N; no UI since the attacker drives the flow; high integrity from forging verified ownership, no confidentiality/availability impact.
Primary rating from Vendor (https://github.com/zitadel/zitadel).
CVSS VectorVendor: https://github.com/zitadel/zitadel
Lifecycle Timeline
2DescriptionCVE.org
Summary
A vulnerability in Zitadel's self-management capability allowed users to mark their email and phone as verified without going through an actual verification process.
While GHSA-282g-fhmx-xf54 (CVE-2026-27946, "Users Can Self-Verify Email/Phone via UpdateHumanUser API") closed the path that let any authenticated user mark an arbitrary email or phone as verified on their own account by calling UpdateHumanUser with email.is_verified: true, additional paths were discovered.
Impact
Zitadel provides an API for managing users. The API also allows users to self-manage their own data including updating the email and phone.
Due to an improper permission check, the API allowed returning the verification code for the email and phone to the own user. This allows users to claim ownership of an email or phone they do not control and potentially bypass email-based security policies.
Note that when changing another user's email or phone, regardless of the verification flag, the permissions were correctly checked.
Affected Versions
Systems running one of the following versions are affected:
- 4.x:
4.0.0through4.15.0(including RC versions) - 3.x:
3.0.0through3.4.10(including RC versions) - 2.x:
2.43.0through2.71.19
Patches
The vulnerability has been addressed in the latest releases. The patch resolves the issue by requiring the correct permission in case the verification flag is provided and only allows self-management of the email address, resp. phone number itself.
4.x: Upgrade to >=4.15.1 3.x: Update to >=3.4.11 2.x: Update to >=3.4.11
Workarounds
The recommended solution is to upgrade to a patched version. If an upgrade is not possible, an action (v2) could be used to prevent returning the verification code to the own user.
Questions
If you have any questions or comments about this advisory, please email us at [security@zitadel.com](mailto:security@zitadel.com)
Credits
Thanks to eddieran for reporting this vulnerability.
Latest POC
1 public PoC link from github
Sign in to open the public PoC links collected for this CVE.
Executive ViewAI
A vulnerability in Zitadel's identity verification system allows authenticated users to claim ownership of email addresses and phone numbers without proving control, potentially bypassing email-based security controls and enabling account takeover. Organizations using Zitadel for authentication risk attackers gaining unauthorized access to accounts and circumventing multi-factor authentication and password recovery processes. Immediate assessment of Zitadel deployment scope is required to determine exposure.
Apply vendor patch.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.
Same weakness CWE-863 – Incorrect Authorization
View allSame technique Authentication Bypass
View allVendor StatusVendor
SUSE
Severity: Important| Product | Status |
|---|---|
| SUSE Linux Enterprise Server 16.1 | Affected |
| SUSE Linux Enterprise Server for SAP applications 16.1 | Affected |
EUVD-2026-50418
GHSA-jq8w-8q2f-ffm9
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB