CVE-2026-32130

7.5 HIGH

📋 TL;DR

This vulnerability allows unauthenticated attackers to bypass authentication and permission checks in ZITADEL's SCIM API by using URL-encoded path values. Attackers can retrieve sensitive user information including names, email addresses, phone numbers, addresses, external IDs, and roles. Organizations running ZITADEL versions 2.68.0 to before 3.4.8 or 4.12.2 are affected.

💻 Affected Systems

Products:
  • ZITADEL
Versions: 2.68.0 to before 3.4.8, and 4.12.2
Operating Systems: All
Default Config Vulnerable: ⚠️ Yes
Notes: Only affects systems with SCIM API enabled. The vulnerability is in URL path handling for SCIM endpoints.

⚠️ Manual Verification Required

This CVE does not have specific version information in our database, so automatic vulnerability detection cannot determine if your system is affected.

Why? The CVE database entry doesn't specify which versions are vulnerable (no version ranges provided by the vendor/NVD).

🔒 Custom verification scripts are available for registered users. Sign up free to download automated test scripts.

Recommended Actions:
  1. Review the CVE details at NVD
  2. Check vendor security advisories for your specific version
  3. Test if the vulnerability is exploitable in your environment
  4. Consider updating to the latest version as a precaution

⚠️ Risk & Real-World Impact

🔴

Worst Case

Complete exposure of all user PII and organizational data stored in ZITADEL to unauthenticated attackers, potentially leading to identity theft, targeted phishing campaigns, and compliance violations.

🟠

Likely Case

Unauthenticated attackers exfiltrate sensitive user information including email addresses, phone numbers, and roles, enabling reconnaissance for further attacks or social engineering.

🟢

If Mitigated

Limited exposure of non-sensitive metadata if proper network segmentation and API gateway controls are in place.

🌐 Internet-Facing: HIGH
🏢 Internal Only: MEDIUM

🎯 Exploit Status

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

Exploitation requires sending specially crafted URL-encoded requests to SCIM API endpoints. No authentication required.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: 3.4.8 or 4.12.2

Vendor Advisory: https://github.com/zitadel/zitadel/security/advisories/GHSA-83pv-4xxp-rm2x

Restart Required: Yes

Instructions:

1. Backup your ZITADEL configuration and data. 2. Upgrade to ZITADEL version 3.4.8 if on v3.x, or 4.12.2 if on v4.x. 3. Restart the ZITADEL service. 4. Verify the fix by testing SCIM API endpoints.

🔧 Temporary Workarounds

Disable SCIM API

all

Temporarily disable the SCIM API if not required for operations

Configure ZITADEL to disable SCIM API endpoints in your deployment configuration

API Gateway Authentication

all

Enforce authentication at API gateway level before requests reach ZITADEL

Configure your API gateway (nginx, Kong, etc.) to require authentication for /scim/v2/* endpoints

🧯 If You Can't Patch

  • Implement network-level controls to restrict access to SCIM API endpoints (port 8080 typically) to trusted IP addresses only
  • Deploy a Web Application Firewall (WAF) with rules to block URL-encoded path manipulation attempts

🔍 How to Verify

Check if Vulnerable:

Test by sending a URL-encoded request to SCIM API endpoints without authentication. If you receive user data, the system is vulnerable.

Check Version:

zitadel version or check ZITADEL admin interface for version information

Verify Fix Applied:

After patching, attempt the same URL-encoded request without authentication. Should receive 401 Unauthorized or proper error response.

📡 Detection & Monitoring

Log Indicators:

  • Unauthenticated requests to /scim/v2/* endpoints with URL-encoded characters
  • Successful SCIM GET requests from unauthenticated sources

Network Indicators:

  • Unusual traffic patterns to SCIM API endpoints
  • Requests with %2F or other URL encoding in paths

SIEM Query:

source="zitadel" AND (uri_path="/scim/v2/*" OR uri_path CONTAINS "%2F") AND http_status=200 AND auth_status="unauthenticated"

🔗 References

📤 Share & Export