CVE-2025-48936

8.1 HIGH

📋 TL;DR

This vulnerability allows attackers to hijack password reset links in Zitadel identity management software by manipulating HTTP headers. Attackers can redirect users to malicious domains to capture reset codes and gain unauthorized account access. Users without Multi-Factor Authentication (MFA) or Passwordless authentication are primarily affected.

💻 Affected Systems

Products:
  • Zitadel
Versions: All versions prior to 2.70.12, 2.71.10, and 3.2.2
Operating Systems: All
Default Config Vulnerable: ⚠️ Yes
Notes: Vulnerability affects the password reset mechanism specifically. Systems behind reverse proxies or load balancers that forward headers are particularly susceptible.

📦 What is this software?

⚠️ Risk & Real-World Impact

🔴

Worst Case

Complete account takeover for users without MFA, leading to unauthorized access to sensitive systems and potential privilege escalation.

🟠

Likely Case

Targeted account compromise for specific users, potentially enabling lateral movement within the organization.

🟢

If Mitigated

Minimal impact for users with MFA or Passwordless authentication enabled, as these controls prevent successful exploitation.

🌐 Internet-Facing: HIGH
🏢 Internal Only: MEDIUM

🎯 Exploit Status

Public PoC: ✅ No
Weaponized: LIKELY
Unauthenticated Exploit: ⚠️ Yes
Complexity: LOW

Attack requires ability to manipulate HTTP headers (e.g., via host header injection) and user interaction (clicking malicious link).

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: 2.70.12, 2.71.10, or 3.2.2

Vendor Advisory: https://github.com/zitadel/zitadel/security/advisories/GHSA-93m4-mfpg-c3xf

Restart Required: Yes

Instructions:

1. Identify your Zitadel version. 2. Upgrade to patched version: 2.70.12, 2.71.10, or 3.2.2 depending on your branch. 3. Restart Zitadel services. 4. Verify the fix by testing password reset functionality.

🔧 Temporary Workarounds

Enable MFA/Passwordless

all

Require Multi-Factor Authentication or Passwordless authentication for all users to mitigate the vulnerability.

Filter HTTP Headers

all

Configure reverse proxies or web application firewalls to strip or validate Forwarded and X-Forwarded-Host headers.

🧯 If You Can't Patch

  • Enable MFA or Passwordless authentication for all user accounts immediately
  • Implement network controls to prevent manipulation of HTTP headers at perimeter devices

🔍 How to Verify

Check if Vulnerable:

Check Zitadel version via admin interface or configuration files. If version is below 2.70.12, 2.71.10, or 3.2.2, system is vulnerable.

Check Version:

Check Zitadel configuration or admin dashboard for version information

Verify Fix Applied:

After patching, test password reset functionality while attempting to manipulate Forwarded or X-Forwarded-Host headers to confirm they are no longer used in URL construction.

📡 Detection & Monitoring

Log Indicators:

  • Unusual patterns in password reset requests
  • Requests with manipulated Forwarded or X-Forwarded-Host headers

Network Indicators:

  • HTTP requests with suspicious host headers
  • Outbound connections to unexpected domains during password reset flows

SIEM Query:

source="zitadel" AND (event="password_reset" AND (header="Forwarded" OR header="X-Forwarded-Host") AND value NOT IN allowed_domains)

🔗 References

📤 Share & Export