CVE-2025-64431

N/A Unknown

📋 TL;DR

Zitadel versions 4.0.0-rc.1 through 4.6.2 contain an insecure direct object reference (IDOR) vulnerability in the V2Beta API. Authenticated users with administrator roles in one organization can access and modify organization-level data (name, domains, metadata) belonging to other organizations. This affects multi-tenant Zitadel deployments where users have organization administrator privileges.

💻 Affected Systems

Products:
  • Zitadel
Versions: 4.0.0-rc.1 through 4.6.2
Operating Systems: All
Default Config Vulnerable: ⚠️ Yes
Notes: Only affects deployments using the V2Beta API with organization administrators. Does not affect user data, projects, or applications.

⚠️ 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

Malicious administrator from one organization could rename, modify domains, or alter metadata of other organizations, potentially disrupting their identity management operations or causing service degradation.

🟠

Likely Case

Accidental or intentional data leakage where administrators can view organization details they shouldn't have access to, violating multi-tenancy isolation.

🟢

If Mitigated

Limited to organization metadata exposure without access to sensitive user data, applications, or authentication systems.

🌐 Internet-Facing: MEDIUM
🏢 Internal Only: HIGH

🎯 Exploit Status

Public PoC: ✅ No
Weaponized: UNKNOWN
Unauthenticated Exploit: ✅ No
Complexity: LOW

Requires authenticated user with organization administrator role. Exploitation involves API calls to access/modify other organization IDs.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: 4.6.3

Vendor Advisory: https://github.com/zitadel/zitadel/security/advisories/GHSA-cpf4-pmr4-w6cx

Restart Required: Yes

Instructions:

1. Backup your Zitadel instance and database. 2. Update to version 4.6.3 using your deployment method (Docker, Kubernetes, binary). 3. Restart the Zitadel service. 4. Verify the update completed successfully.

🔧 Temporary Workarounds

Disable V2Beta API

all

Temporarily disable the vulnerable V2Beta API endpoint if not required for operations.

# Configure Zitadel to disable V2Beta API (method depends on deployment)

Restrict Administrator Access

all

Review and reduce organization administrator roles to only essential personnel.

# Review ZITADEL_IAM_ADMIN_ROLES configuration and reduce scope

🧯 If You Can't Patch

  • Implement API gateway or WAF rules to monitor and block suspicious organization ID access patterns in V2Beta API calls.
  • Enable detailed audit logging for all V2Beta API organization-related operations and monitor for cross-organization access attempts.

🔍 How to Verify

Check if Vulnerable:

Check Zitadel version via admin interface or API. If version is between 4.0.0-rc.1 and 4.6.2 inclusive, the system is vulnerable.

Check Version:

curl -s http://localhost:8080/admin/api/v1/version | grep version

Verify Fix Applied:

After updating to 4.6.3, test that organization administrators can only access their own organization data via V2Beta API.

📡 Detection & Monitoring

Log Indicators:

  • V2Beta API calls accessing organization IDs different from requester's organization
  • Unauthorized organization modification attempts in audit logs

Network Indicators:

  • HTTP requests to /v2beta/organizations/{id} endpoints with mismatched organization IDs

SIEM Query:

source="zitadel" AND (api_path="/v2beta/organizations/*" OR api_version="v2beta") AND org_id!=user_org_id

🔗 References

📤 Share & Export