CVE-2023-1176: MLflow: path traversal exposes arbitrary local files
LOW PoC AVAILABLE CISA: TRACK*MLflow installations prior to 2.2.2 allow any low-privilege local user to read arbitrary files on the host via absolute path traversal. While CVSS is low (local vector), MLflow servers frequently run in shared data science environments alongside sensitive artifacts—API keys, model weights, and training data secrets are realistic targets. Patch to 2.2.2+ immediately; if patching is blocked, restrict MLflow access to trusted principals only.
What is the risk?
CVSS 3.3 understates operational risk in typical ML environments. The local attack vector assumes shared infrastructure—common in data science teams where multiple users access the same MLflow tracking server. A compromised or malicious data scientist account could leverage this to pivot: reading SSH keys, cloud credentials, or environment files (.env) stored on the MLflow host. No network exposure required, no user interaction needed. Effective risk is MEDIUM in multi-tenant ML environments, LOW in single-user setups.
What systems are affected?
| Package | Ecosystem | Vulnerable Range | Patched |
|---|---|---|---|
| MLflow | pip | — | No patch |
Do you use MLflow? You're affected.
How severe is it?
What is the attack surface?
What should I do?
5 steps-
Patch: Upgrade MLflow to 2.2.2 or later (commit 63ef72aa). This is the only complete fix.
-
Workaround (if patching blocked): Restrict MLflow server access via OS-level permissions—run MLflow under a dedicated service account and limit which users can invoke it.
-
Secrets hygiene: Audit the MLflow host for credentials stored in plaintext (env files, config files, ~/.aws, ~/.ssh). Rotate any found.
-
Detection: Monitor MLflow server logs for artifact paths containing '../' sequences or absolute paths outside expected artifact root directories.
-
Network isolation: Ensure MLflow tracking server is not internet-exposed; bind to localhost or internal network only.
What does CISA's SSVC say?
Source: CISA Vulnrichment (SSVC v2.0). Decision based on the CISA Coordinator decision tree.
How is it classified?
Which compliance frameworks are affected?
This CVE is relevant to:
Frequently Asked Questions
What is CVE-2023-1176?
MLflow installations prior to 2.2.2 allow any low-privilege local user to read arbitrary files on the host via absolute path traversal. While CVSS is low (local vector), MLflow servers frequently run in shared data science environments alongside sensitive artifacts—API keys, model weights, and training data secrets are realistic targets. Patch to 2.2.2+ immediately; if patching is blocked, restrict MLflow access to trusted principals only.
Is CVE-2023-1176 actively exploited?
Proof-of-concept exploit code is publicly available for CVE-2023-1176, increasing the risk of exploitation.
How to fix CVE-2023-1176?
1. Patch: Upgrade MLflow to 2.2.2 or later (commit 63ef72aa). This is the only complete fix. 2. Workaround (if patching blocked): Restrict MLflow server access via OS-level permissions—run MLflow under a dedicated service account and limit which users can invoke it. 3. Secrets hygiene: Audit the MLflow host for credentials stored in plaintext (env files, config files, ~/.aws, ~/.ssh). Rotate any found. 4. Detection: Monitor MLflow server logs for artifact paths containing '../' sequences or absolute paths outside expected artifact root directories. 5. Network isolation: Ensure MLflow tracking server is not internet-exposed; bind to localhost or internal network only.
What systems are affected by CVE-2023-1176?
This vulnerability affects the following AI/ML architecture patterns: MLOps platforms, training pipelines, model registries, experiment tracking servers, shared data science infrastructure.
What is the CVSS score for CVE-2023-1176?
CVE-2023-1176 has a CVSS v3.1 base score of 3.3 (LOW). The EPSS exploitation probability is 0.58%.
What is the AI security impact?
Affected AI Architectures
MITRE ATLAS Techniques
AML.T0025 Exfiltration via Cyber Means AML.T0035 AI Artifact Collection AML.T0037 Data from Local System AML.T0049 Exploit Public-Facing Application Compliance Controls Affected
What are the technical details?
Original Advisory
Absolute Path Traversal in GitHub repository mlflow/mlflow prior to 2.2.2.
Exploitation Scenario
A data scientist with a standard user account on a shared ML training server submits an MLflow experiment referencing an artifact path of '/etc/shadow' or '/home/mlpipeline/.env'. The pre-2.2.2 server follows the absolute path without sanitization and serves the file contents. The attacker reads cloud provider credentials (AWS_SECRET_ACCESS_KEY, GCP service account JSON) stored in the pipeline environment file, then uses those credentials to exfiltrate the production model registry from S3/GCS—achieving full AI IP theft with no exploitation complexity.
Weaknesses (CWE)
CWE-36 — Absolute Path Traversal: The product uses external input to construct a pathname that should be within a restricted directory, but it does not properly neutralize absolute path sequences such as "/abs/path" that can resolve to a location that is outside of that directory.
- [Implementation] Assume all input is malicious. Use an "accept known good" input validation strategy, i.e., use a list of acceptable inputs that strictly conform to specifications. Reject any input that does not strictly conform to specifications, or transform it into something that does. When performing input validation, consider all potentially relevant properties, including length, type of input, the full range of acceptable values, missing or extra inputs, syntax, consistency across related fields, and conformance to business rules. As an example of business rule logic, "boat" may be syntactically valid because it only contains alphanumeric characters, but it is not valid if the input is only expected to contain colors such as "red" or "blue." Do not rely exclusively on looking for malicious or malformed inputs. This is likely to miss at least one undesirable input, especially if the code's environment changes. This can give attackers enough room to bypass the intended validation. However, denylis
- [Implementation] Inputs should be decoded and canonicalized to the application's current internal representation before being validated (CWE-180). Make sure that the application does not decode the same input twice (CWE-174). Such errors could be used to bypass allowlist validation schemes by introducing dangerous inputs after they have been checked.
Source: MITRE CWE corpus.
CVSS Vector
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N References
Timeline
Related Vulnerabilities
CVE-2025-15379 10.0 MLflow: RCE via unsanitized model dependency specs
Same package: mlflow CVE-2023-3765 10.0 MLflow: path traversal allows arbitrary file read
Same package: mlflow CVE-2023-2780 9.8 MLflow: path traversal allows arbitrary file read/write
Same package: mlflow CVE-2026-2635 9.8 mlflow: security flaw enables exploitation
Same package: mlflow CVE-2023-1177 9.8 MLflow: path traversal allows arbitrary file read/write
Same package: mlflow