How the CVE Works:
The vulnerability in ZITADEL’s Admin API stems from Insecure Direct Object Reference (IDOR) issues, where authenticated users without specific IAM roles can access and modify sensitive settings. The most critical flaw lies in the `/idps/ldap` and `/idps/ldap/{id}` endpoints, which allow unauthorized users to manipulate LDAP configurations. By exploiting these endpoints, attackers can redirect LDAP login attempts to a malicious server, leading to account takeover and exposure of the LDAP server’s password. Other vulnerable endpoints, such as `/policies/label/_activate` and /text/login/{language}
, allow unauthorized modifications to instance settings like languages, labels, and templates. This vulnerability is particularly severe for organizations using LDAP for authentication, as it can result in complete account compromise.
DailyCVE Form:
Platform: ZITADEL
Version: <2.71.0
Vulnerability: IDOR
Severity: Critical
Date: 2023-XX-XX
What Undercode Say:
Exploitation:
- Endpoint Access: Attackers authenticate and access `/idps/ldap` or `/idps/ldap/{id}` to modify LDAP settings.
- Malicious LDAP Server: Redirect LDAP traffic to a malicious server to capture credentials.
- Password Exposure: Extract LDAP server passwords via API responses.
- Template Manipulation: Use `/text/login/{language}` to inject malicious content into login pages.
Protection:
- Upgrade: Update to ZITADEL >=2.71.0 or apply relevant patches for older versions.
- IAM Roles: Enforce strict IAM role checks for Admin API access.
- Input Validation: Validate and sanitize all API inputs to prevent unauthorized modifications.
- Logging: Monitor and log access to sensitive endpoints like
/idps/ldap
.
Commands:
- Check Version:
zitadel version
- Update ZITADEL:
docker pull zitadel/zitadel:2.71.0
- Audit Logs:
grep "/idps/ldap" /var/log/zitadel/access.log
Code Snippets:
- IAM Role Check:
if not user.has_role("ZITADEL_MANAGER"): raise PermissionDenied("Access restricted to managers.")
- Input Validation:
def validate_ldap_config(config): if not config.server.startswith("ldaps://"): raise ValueError("Invalid LDAP server URL.")
References:
Analytics:
- Affected Users: Organizations using ZITADEL <2.71.0 with LDAP authentication.
- Risk Level: Critical for LDAP users, Medium for non-LDAP users.
- Patch Adoption: Monitor patch adoption rates via ZITADEL’s update logs.
References:
Reported By: https://github.com/advisories/GHSA-f3gh-529w-v32x
Extra Source Hub:
UndercodeImage Source:
Undercode AI DI v2