MLflow FileStore trace IDs allow path traversal and arbitrary file writes
What fixes it
A fixed version on one release line is not the upgrade target for every line. Check your exact version and any vendor backports.
Description
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.
Text from CVE List
Affected versions 53
- mlflow, pip<= 3.17.1GitHub
- mlflowaffected: all versions through 3.17.1CVE List
- mlflow, PyPIfrom first release, fixed in 3.17.2OSV
- mlflow, PyPI0.0.1OSV
- mlflow, PyPI0.1.0OSV
- mlflow, PyPI0.2.0OSV
- mlflow, PyPI0.2.1OSV
- mlflow, PyPI0.3.0OSV
- mlflow, PyPI0.4.0OSV
- mlflow, PyPI0.4.1OSV
- mlflow, PyPI0.4.2OSV
- mlflow, PyPI0.5.0OSV
- mlflow, PyPI0.5.1OSV
- mlflow, PyPI0.5.2OSV
- mlflow, PyPI0.6.0OSV
- mlflow, PyPI0.7.0OSV
- mlflow, PyPI0.8.0OSV
- mlflow, PyPI0.8.1OSV
- mlflow, PyPI0.8.2OSV
- mlflow, PyPI0.9.0OSV
- mlflow, PyPI0.9.0.1OSV
- mlflow, PyPI0.9.1OSV
- mlflow, PyPI1.0.0OSV
- mlflow, PyPI1.1.0OSV
- mlflow, PyPI1.1.1.dev0OSV
- mlflow, PyPI1.10.0OSV
- mlflow, PyPI1.11.0OSV
- mlflow, PyPI1.12.0OSV
- mlflow, PyPI1.12.1OSV
- mlflow, PyPI1.13OSV
- mlflow, PyPI1.13.1OSV
- mlflow, PyPI1.14.0OSV
- mlflow, PyPI1.14.1OSV
- mlflow, PyPI1.15.0OSV
- mlflow, PyPI1.16.0OSV
- mlflow, PyPI1.17.0OSV
- mlflow, PyPI1.18.0OSV
- mlflow, PyPI1.19.0OSV
- mlflow, PyPI1.2.0OSV
- mlflow, PyPI1.20.0OSV
- mlflow, PyPI1.20.1OSV
- mlflow, PyPI1.20.2OSV
- mlflow, PyPI1.21.0OSV
- mlflow, PyPI1.22.0OSV
- mlflow, PyPI1.23.0OSV
- mlflow, PyPI1.23.1OSV
- mlflow, PyPI1.24.0OSV
- mlflow, PyPI1.25.0OSV
- mlflow, PyPI1.25.1OSV
- mlflow, PyPI1.26.0OSV
- mlflow, PyPI1.26.1OSV
- mlflow, PyPI1.27.0OSV
- mlflow, PyPI1.28.0OSV
References 8
- github.com/mlflow/mlflow/commit/31ff9e56f5038d61ec75344518912945f60dffecFixvia GitHub
- github.com/mlflow/mlflow/releases/tag/v3.17.2Fixvia GitHub
- vulncheck.com/advisories/mlflow-path-traversal-via-trace-id-apiAdvisoryvia CVE List
- github.com/advisories/GHSA-wqmh-qccw-pqwfAdvisoryvia GitHub
- github.com/SaiTeja-Erukude/CVE-2026-53995-mlflow-path-traversalExploitvia CVE List
- nvd.nist.gov/vuln/detail/CVE-2026-53995Referencevia GitHub
- github.com/mlflow/mlflow/pull/26842Referencevia CVE List
- github.com/mlflow/mlflow/issues/26979Referencevia GitHub