MLflow FileStore trace IDs allow path traversal and arbitrary file writes
MLflow 3.17.1 and earlier contains a path traversal vulnerability in the FileStore tracking backend that allows unauthenticated attackers to control filesystem paths by submitting a crafted trace ID containing traversal sequences to the POST /api/3.0/mlflow/traces endpoint. Attackers can exploit FileStore.start_trace() to write trace_info.yaml, request_metadata, and tag files with attacker-controlled metadata outside the intended experiment trace directory, subject to the server process's filesystem permissions. FileStore is the default tracking backend before MLflow 3.7.0 and opt-in thereafter (the default changed to a SQLite database), so deployments in the earlier part of the affected range are vulnerable without special configuration while later ones are affected only when FileStore is explicitly selected.
Affected versions
| Package | Affected | Fixed in |
|---|---|---|
| mlflow PyPI | < 3.17.2 | 3.17.2 |
Details and references
- CVSS 3.1
- CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:L
- Severity from
- GitHub (reviewed advisory)
- Weakness
- CWE-22
- Also known as
- CVE-2026-53995
- nvd.nist.gov/vuln/detail/CVE-2026-53995
- github.com/mlflow/mlflow/issues/26979
- github.com/mlflow/mlflow/pull/26842
- github.com/mlflow/mlflow/commit/31ff9e56f5038d61ec75344518912945f60dffec
- github.com/SaiTeja-Erukude/CVE-2026-53995-mlflow-path-traversal
- github.com/mlflow/mlflow/releases/tag/v3.17.2
- www.vulncheck.com/advisories/mlflow-path-traversal-via-trace-id-api