CVE-2026-118628 and five more: MLflow before 3.17.0 has an unauthenticated SSRF in get-artifacts, two unsafe-deserialization code execution bugs and three missing permission checks, upgrade to 3.17.0
Trend Micro's Zero Day Initiative published six MLflow advisories on 29 October 2026 (CVEs added to NVD on 4 November). The worst lets an unauthenticated attacker abuse the get-artifacts function, which does not validate a URI before accessing it, to disclose information from the server. Two more turn a malicious SHAP explainer or pickle evaluation artifact into code execution when someone loads it, and three let logged-in users reach Tracking Server functions they should not have access to. All are fixed by MLflow 3.17.0.
What it is
CVE-2026-118628 (ZDI-26-844, SSRF, CVSS 8.2, no authentication): the get-artifacts function does not properly validate a URI before accessing resources, so a remote attacker can make the server fetch resources and disclose sensitive information in the context of the server. Fixed in MLflow 3.17.0.
CVE-2026-118627 (ZDI-26-843, code execution, CVSS 7.8): loading SHAP explainer models deserializes untrusted data without validation, so opening a malicious file or page runs code as the current user. Fixed in MLflow 3.17.0.
CVE-2026-118623 (ZDI-26-839, code execution, CVSS 7.8): PickleEvaluationArtifact parses pickle files without validating them, so a malicious pickle runs code in the context of the current process. Fixed in MLflow 3.13.0.
CVE-2026-118625 (ZDI-26-841, CVSS 6.3) and CVE-2026-118626 (ZDI-26-842, CVSS 5.4): the Tracking Server's get_endpoints function and its BEFORE_REQUEST_HANDLERS configuration skip authorization, so an authenticated user can escalate privileges to resources normally protected from them. Fixed in MLflow 3.16.0.
CVE-2026-118624 (ZDI-26-840, CVSS 5.4): the Tracking Server jobs _find_validator function skips authorization, so an authenticated user can disclose information in the context of the service account. Fixed in MLflow 3.16.0.
How to check
- Check your MLflow version; the fixes landed in 3.13.0 (pickle artifacts), 3.16.0 (the three permission bugs) and 3.17.0 (SSRF and SHAP), so anything before 3.17.0 needs the upgrade.
- Check whether your tracking server is reachable by people you don't fully trust; the SSRF needs no login and the permission bugs need only an ordinary account.
- Check whether you or your pipelines load SHAP explainers or pickle evaluation artifacts that came from someone else.
How to fix
- Upgrade MLflow to 3.17.0 or later.
- Until you can upgrade, keep the tracking server off the public internet and behind your own authentication.
- Don't load models, explainers or evaluation artifacts from sources you don't trust.
pip show mlflow | grep -i version
pip install -U 'mlflow>=3.17.0' Sources
- ZDI-26-844: MLflow get-artifacts SSRF information disclosure (CVE-2026-118628) ↗
- ZDI-26-843: MLflow SHAP load_explainer deserialization RCE (CVE-2026-118627) ↗
- ZDI-26-839: MLflow PickleEvaluationArtifact deserialization RCE (CVE-2026-118623) ↗
- ZDI-26-840: MLflow Tracking Server jobs missing authorization (CVE-2026-118624) ↗
- ZDI-26-841: MLflow Tracking Server get_endpoints missing authorization (CVE-2026-118625) ↗
- ZDI-26-842: MLflow Tracking Server issues missing authorization (CVE-2026-118626) ↗
- NVD: CVE-2026-118628 ↗
- criticalCVE-2026-116692: MLflow 3.17.0 fixes unauthenticated code execution through third-party scorers, an arbitrary file read through prompt versions, and CrewAI API keys leaking into traces
- highCVE-2026-53995: MLflow 3.17.1 and earlier contains a path traversal vulnerability in the FileStore tracking backend that allows unauthenticated attackers to control filesystem
- mediumCVE-2026-127202: MLflow FileStore lets unauthenticated callers write outside the run directory via model_id in log_outputs, fixed in 3.18.0
- mediumCVE-2026-115886: MLflow scorer endpoints allow unauthenticated SSRF