CVE-2026-11922: Rate-limit Bypass in zenml-io/zenml
A vulnerability in zenml-io/zenml versions 0.57.0 through 0.94.2 allows an attacker to bypass rate-limiting on the `POST /api/v1/login` and self password-change endpoints by rotating the `X-Forwarded-For` header. The rate limiter keys requests by `request.client.host`, which is derived from the `X-Forwarded-For` header when Uvicorn is launched with `--proxy-headers --forwarded-allow-ips *`. This configuration allows clients to control the value of `request.client.host`, effectively bypassing rate-limiting protections. This vulnerability leaves the affected endpoints open to unthrottled credential guessing attacks.
Security readout for executives and security teams
Plain-English summary
ZenML’s login and self-service password-change protections can be evaded in affected deployments by falsifying a client-address header. This may enable sustained credential guessing, increasing the risk of account compromise without disrupting service.
Executive priority
Prioritize remediation for externally reachable ZenML deployments using the vulnerable proxy configuration. Treat evidence of concentrated authentication failures or unusual forwarded-address rotation as grounds for accelerated credential review and incident investigation.
Technical view
ZenML versions 0.57.0 through 0.94.2 can derive the rate-limit key from attacker-controlled X-Forwarded-For data when Uvicorn trusts proxy headers from all sources. Rotating that header changes request.client.host and creates new rate-limit buckets for POST /api/v1/login and self password-change endpoints.
Likely exposure
Exposure requires an affected ZenML version and Uvicorn configured with proxy headers enabled while allowing forwarded headers from all IPs. Internet-accessible or otherwise untrusted-client-accessible authentication endpoints face the greatest risk.
Exploitation context
The bypass is remotely reachable, low complexity, requires no user interaction, and can support unthrottled credential guessing. The bundle does not establish active exploitation, and the CVE is not listed as KEV.
Researcher notes
The flaw is a trust-boundary failure classified as CWE-290. Rate limiting depends on request.client.host, but the described Uvicorn configuration permits clients to influence that value. CVSS 3.0 is 6.5; confidentiality and integrity impacts are rated low, with no availability impact. The bundle identifies a correcting commit but no explicit fixed release.
Mitigation direction
Upgrade to a vendor-confirmed fixed ZenML release incorporating the referenced correction.
Restrict which trusted proxies may supply forwarded headers; avoid trusting forwarded headers from every IP.
Add independent authentication throttling or edge protections while remediation is pending.
Review vendor guidance before changing production proxy behavior.
Validation and detection
Inventory ZenML installations and identify versions between 0.57.0 and 0.94.2 inclusive.
Review Uvicorn startup configuration for proxy headers and unrestricted forwarded-allow IPs.
Generated from the cited source records. This long-tail analysis has not been individually reviewed by a named human.
Potential ATT&CK relevance
Conservative CVE-to-ATT&CK context
These mappings and lookup hints may be relevant to the vulnerability behavior, CWE, affected product, or exposure path. Glexia-inferred context is not an official MITRE, ATT&CK, CWE, or CVE Program mapping.
ATT&CK lookup starting points
Use these exact CWE pages and searches to review the Glexia ATT&CK library from this CVE's weakness and description context.
cwe · low confidence lookup
CWE-290: Exact CWE lookup
Use the exact CWE identifier as the starting point before reviewing related ATT&CK behavior. Open the exact CWE lookup page first, then review the ATT&CK searches from that MITRE weakness context. This is a Glexia lookup hint, not an official ATT&CK mapping.
The CVE wording references authentication or credential exposure, so valid-account and credential-access review may help. This is a Glexia inferred lookup path, not an official MITRE, ATT&CK, or CVE Program mapping.
These fields come from the CVE record and ADP containers, not from Glexia's Take. They preserve time-varying source decisions such as CISA SSVC, KEV status, CVSS metrics, and provider references.
We collect every scored CVSS vector available in the official CNA and ADP containers. When more than one version is present, the table keeps the source vectors side by side instead of collapsing them into the highest score.
CWE links open Glexia weakness intelligence pages with official CWE context, developer remediation guidance, and related CVE mappings.
CWE-290 · source CWE mapping
Authentication Bypass by Spoofing
Authentication Bypass by Spoofing represents a recurring weakness pattern that can create exploitable paths when design, validation, or implementation controls are missing.