CVE-2025-48936 ZITADEL Allows Account Takeover via Malicious X-Forwarded-Proto Header Injection

High 8.1 Published Updated

Attackers can manipulate headers to redirect password reset links, capturing secret codes to take over user accounts without MFA.

Exploited in the wild
Not known
Login needed
Not needed
Attackable
Over the internet
Victim action needed
A user has to click or open something
Fix
Available

What is CVE-2025-48936?

CVE-2025-48936 is a high-severity vulnerability in zitadel, published on 30 May 2025. An attacker can exploit it over the internet without logging in, and only if a user opens a file or follows a link.

Official description

Zitadel is open-source identity infrastructure software. Prior to versions 2.70.12, 2.71.10, and 3.2.2, a potential vulnerability exists in the password reset mechanism. ZITADEL utilizes the Forwarded or X-Forwarded-Host header from incoming requests to construct the URL for the password reset confirmation link. This link, containing a secret code, is then emailed to the user. If an attacker can manipulate these headers (e.g., via host header injection), they could cause ZITADEL to generate a password reset link pointing to a malicious domain controlled by the attacker. If the user clicks this manipulated link in the email, the secret reset code embedded in the URL can be captured by the attacker. This captured code could then be used to reset the user's password and gain unauthorized access to their account. This specific attack vector is mitigated for accounts that have Multi-Factor Authentication (MFA) or Passwordless authentication enabled. This issue has been patched in versions 2.70.12, 2.71.10, and 3.2.2.

Weakness: CWE-77, CWE-601

Which versions are affected by CVE-2025-48936?

11 open source packages ship an affected version, including github.com/zitadel/zitadel/v2 and github.com/zitadel/zitadel. It affects 1 product.

PackageAffectedFixed in
github.com/zitadel/zitadel/v2 GoAll versionsNone
github.com/zitadel/zitadel/v2 GoAll versionsNone
github.com/zitadel/zitadel/v2 GoFrom 2.38.32.70.12
github.com/zitadel/zitadel/v2 GoFrom 2.38.32.70.12
github.com/zitadel/zitadel/v2 GoFrom 2.71.02.71.11
github.com/zitadel/zitadel/v2 GoFrom 2.71.02.71.11
5 more packages
github.com/zitadel/zitadel/v2 GoFrom 3.0.0-rc13.2.2
github.com/zitadel/zitadel/v2 GoFrom 3.0.0-rc13.2.2
github.com/zitadel/zitadel GoAll versions0.0.0-20250528081227-c097887bc5f6
github.com/zitadel/zitadel GoAll versions0.0.0-20250528081227-c097887bc5f6
github.com/zitadel/zitadel GoAll versions0.0.0-20250528081227-c097887bc5f6

Products include Zitadel Zitadel.

How do I fix CVE-2025-48936?

Upgrade github.com/zitadel/zitadel/v2 to a fixed version for your release line: 2.70.12, 2.71.11 or 3.2.2.

Is CVE-2025-48936 being exploited?

There is no known exploitation of CVE-2025-48936 in the wild and no public exploit code.

Sources

Also known as GHSA-93m4-mfpg-c3xf, GO-2025-3721.

Is CVE-2025-48936 in your software?

Upload an SBOM and sbomify checks it against every vulnerability here, every day.

Check your SBOMs for free