CVE-2026-4137·Python vulnerability
In mlflow/mlflow versions prior to 3.11.0, the `get_or_create_nfs_tmp_dir()` function in `mlflow/utils/file_utils.py` creates temporary directories with world-writable permissions (0o777), and the `_create_model_downloading_tmp_dir()` function in `mlflow/pyfunc/__init__.py` creates directories with group-writable permissions (0o770). These insecure permissions allow local attackers to tamper with model artifacts, such as cloudpickle-serialized Python objects, and achieve arbitrary code execution when the tampered artifacts are deserialized via `cloudpickle.load()`. This vulnerability is particularly critical in environments with shared NFS mounts, such as Databricks, where NFS is enabled by default. The issue is a continuation of the vulnerability class addressed in CVE-2025-10279, which was only partially fixed.
- Severity
- high
- Software
- Python
- Fixed in
- 3.11.0
- Published
- 2026-05-18
Affected versions
Until: 3.11.0
Fixed in: 3.11.0
How to fix this CVE
Upgrade MLflow to version 3.11.0 or later to remediate insecure temporary directory permissions that could allow local privilege escalation. The vulnerability affects MLflow's temporary directory creation functions which previously used overly permissive file modes, enabling unauthorized modification of model artifacts. Immediately patch all systems running MLflow, especially those with shared NFS mounts or multi-user environments.
sudo dnf update python3-mlflow || sudo pip3 install --upgrade mlflow>=3.11.0Defensia detects this vulnerability
How to check if you are affected
- Check installed MLflow version: python3 -c "import mlflow; print(mlflow.__version__)"
- Verify vulnerable functions are in use: grep -r "get_or_create_nfs_tmp_dir\|_create_model_downloading_tmp_dir" /path/to/mlflow/installation/
- Check for world-writable or group-writable temp directories: find /tmp -type d -perm /077 -name "*mlflow*" -o -name "*model*" 2>/dev/null
- Confirm patch applied: python3 -c "import mlflow; assert mlflow.__version__ >= '3.11.0', 'MLflow not patched'" && echo 'Patched'
FAQ
What is CVE-2026-4137?
CVE-2026-4137 is a privilege escalation vulnerability in MLflow where temporary directories for model artifacts are created with overly permissive file permissions (world-writable or group-writable), allowing local attackers to inject malicious code into serialized Python objects that execute upon deserialization.
Is CVE-2026-4137 being actively exploited?
No, this vulnerability is not currently being actively exploited in the wild according to CISA records, and no public exploits are available at this time.
What versions of MLflow are affected by CVE-2026-4137?
All MLflow versions prior to 3.11.0 are affected by this vulnerability. MLflow 3.11.0 and later versions contain the necessary permission hardening fixes.
How do I check if my server is vulnerable to CVE-2026-4137?
Run `python3 -c "import mlflow; print(mlflow.__version__)"` and compare against 3.11.0. If your version is lower, you are vulnerable. Additionally, inspect temporary directory permissions with `find /tmp -type d -perm /077 -name "*mlflow*"` to identify world-writable directories.
Does Defensia detect CVE-2026-4137?
Yes — Defensia's CVE advisory scanner compares installed MLflow package versions against the NVD database. If MLflow is installed on a monitored server, CVE-2026-4137 will appear in your dashboard with remediation steps and severity assessment.
Related Python CVEs
References
Track CVEs across your fleet automatically
Defensia scans your Linux servers and tells you exactly which ones are running vulnerable versions — including CVE-2026-4137. Free for 1 server.
Get started free