Description
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.
Published: 2026-07-24
Score: 6.5 Medium
EPSS: < 1% Very Low
KEV: No
Impact: n/a
Action: n/a
AI Analysis

Impact

ZenML 0.57.0 through 0.94.2 relies on the X-Forwarded-For header to determine the client host when Uvicorn is started with the flags --proxy-headers --forwarded-allow-ips *. The rate limiter records requests by this client host; an attacker who can rotate the X-Forwarded-For header can alter the perceived client address and thereby evade the limiter. This flaw allows unthrottled attempts against the POST /api/v1/login and self password‑guessing password endpoints, making credential‑guessing attacks feasible at unlimited speed.

Affected Systems

The vulnerability affects the open‑source ZenML platform maintained by zenml-io, specifically release series 0.57.0 up to and including 0.94.2, when deployed with a Uvicorn configuration that accepts forwarded headers from all IP addresses ("--proxy-headers --forwarded-allow-ips *").

Risk and Exploitability

With a CVSS score of 6.5 the threat is considered medium severity, while an EPSS of less than 1% indicates a low likelihood of exploitation in the wild. The issue is not listed in the CISA KEV catalog. Attackers can exploit the flaw remotely by sending a large number of POST requests, each rotating the X-Forwarded-For header to bypass the rate limiter and perform rapid credential guessing.

Generated by OpenCVE AI on August 3, 2026 at 20:43 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Upgrade to a ZenML release newer than 0.94.2 where the rate‑limiting logic no longer relies on the X‑Forwarded‑For header.
  • Reconfigure the Uvicorn server to disallow proxy headers by removing the "--proxy-headers" flag or narrowing "--forwarded-allow-ips" to trusted IP ranges.
  • If upgrading is not immediately possible, implement a server‑side rate‑limiting mechanism that keys requests by a stable, trusted identifier rather than the client host.

Generated by OpenCVE AI on August 3, 2026 at 20:43 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Fri, 24 Jul 2026 18:30:00 +0000

Type Values Removed Values Added
Metrics ssvc

{'options': {'Automatable': 'yes', 'Exploitation': 'poc', 'Technical Impact': 'partial'}, 'version': '2.0.3'}


Fri, 24 Jul 2026 04:45:00 +0000

Type Values Removed Values Added
First Time appeared Zenml-io
Zenml-io zenml-io/zenml
Vendors & Products Zenml-io
Zenml-io zenml-io/zenml

Fri, 24 Jul 2026 03:45:00 +0000

Type Values Removed Values Added
Description 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.
Title Rate-limit Bypass in zenml-io/zenml
Weaknesses CWE-290
References
Metrics cvssV3_0

{'score': 6.5, 'vector': 'CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:N'}


Subscriptions

Zenml-io Zenml-io/zenml
cve-icon MITRE

Status: PUBLISHED

Assigner: @huntr_ai

Published:

Updated: 2026-07-24T12:24:23.509Z

Reserved: 2026-06-10T17:41:21.911Z

Link: CVE-2026-11922

cve-icon Vulnrichment

Updated: 2026-07-24T12:24:19.391Z

cve-icon NVD

Status : Received

Published: 2026-07-24T04:16:51.193

Modified: 2026-07-24T13:17:23.790

Link: CVE-2026-11922

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-08-03T20:45:03Z

Weaknesses
  • CWE-290

    Authentication Bypass by Spoofing