CVE-2023-6015: MLflow: unauthenticated arbitrary file write via PUT
HIGH PoC AVAILABLEAny internet-exposed MLflow instance is at critical risk. An unauthenticated attacker can write arbitrary files to the server without credentials, potentially overwriting model artifacts, injecting malicious payloads, or poisoning training pipelines. Restrict MLflow network access to internal networks immediately and apply available patches — this should never be internet-facing.
What is the risk?
Effectively critical in real-world deployments despite CVSS 7.5. Zero-auth requirement combined with network accessibility and trivial exploitation creates maximum blast radius in ML environments, which historically lack network segmentation. MLflow instances are commonly deployed with default configurations and direct artifact store access, making lateral movement into the broader ML pipeline straightforward post-exploitation.
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?
7 steps-
Apply MLflow patch (versions released after 2023-11-16 address this).
-
If unpatched, immediately firewall MLflow port (default 5000/5001) to trusted CIDR ranges only.
-
Deploy MLflow behind an authenticating reverse proxy (OAuth2/OIDC or mTLS).
-
Audit artifact store for unexpected files — compare checksums against known-good baseline.
-
Enable file integrity monitoring on MLflow artifact directories and alert on unexpected writes.
-
If previously internet-exposed, treat as compromised: rotate all credentials, audit model artifacts for tampering, re-train from verified data snapshots.
-
Scan artifact store for deserialization risks (.pkl, .joblib files) that may have been replaced.
How is it classified?
Which compliance frameworks are affected?
This CVE is relevant to:
Frequently Asked Questions
What is CVE-2023-6015?
Any internet-exposed MLflow instance is at critical risk. An unauthenticated attacker can write arbitrary files to the server without credentials, potentially overwriting model artifacts, injecting malicious payloads, or poisoning training pipelines. Restrict MLflow network access to internal networks immediately and apply available patches — this should never be internet-facing.
Is CVE-2023-6015 actively exploited?
Proof-of-concept exploit code is publicly available for CVE-2023-6015, increasing the risk of exploitation.
How to fix CVE-2023-6015?
1. Apply MLflow patch (versions released after 2023-11-16 address this). 2. If unpatched, immediately firewall MLflow port (default 5000/5001) to trusted CIDR ranges only. 3. Deploy MLflow behind an authenticating reverse proxy (OAuth2/OIDC or mTLS). 4. Audit artifact store for unexpected files — compare checksums against known-good baseline. 5. Enable file integrity monitoring on MLflow artifact directories and alert on unexpected writes. 6. If previously internet-exposed, treat as compromised: rotate all credentials, audit model artifacts for tampering, re-train from verified data snapshots. 7. Scan artifact store for deserialization risks (.pkl, .joblib files) that may have been replaced.
What systems are affected by CVE-2023-6015?
This vulnerability affects the following AI/ML architecture patterns: MLOps platforms, model registry, training pipelines, experiment tracking systems, model serving, ML CI/CD pipelines.
What is the CVSS score for CVE-2023-6015?
CVE-2023-6015 has a CVSS v3.1 base score of 7.5 (HIGH). The EPSS exploitation probability is 4.41%.
What is the AI security impact?
Affected AI Architectures
MITRE ATLAS Techniques
AML.T0010.001 AI Software AML.T0018 Manipulate AI Model AML.T0018.000 Poison AI Model AML.T0020 Poison Training Data AML.T0025 Exfiltration via Cyber Means AML.T0049 Exploit Public-Facing Application Compliance Controls Affected
What are the technical details?
Original Advisory
MLflow allowed arbitrary files to be PUT onto the server.
Exploitation Scenario
Attacker discovers an exposed MLflow instance via Shodan or a public IP scan on port 5000. With a single unauthenticated HTTP PUT request using a path traversal payload in the artifact URI (e.g., ../../app/model.py), they write a malicious Python file to the server filesystem. When the next scheduled training job or CI/CD pipeline loads a 'model' from the artifact store, the malicious file executes with the ML worker's privileges — granting persistent foothold in the ML infrastructure. Alternatively, attacker replaces a legitimate serialized model (.pkl) with a maliciously pickled object that executes arbitrary code upon model.load() calls in any downstream inference service.
Weaknesses (CWE)
CWE-22 — Improper Limitation of a Pathname to a Restricted Directory ('Path Traversal'): The product uses external input to construct a pathname that is intended to identify a file or directory that is located underneath a restricted parent directory, but the product does not properly neutralize special elements within the pathname that can cause the pathname to resolve to a location that is outside of the restricted 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
- [Architecture and Design] For any security checks that are performed on the client side, ensure that these checks are duplicated on the server side, in order to avoid CWE-602. Attackers can bypass the client-side checks by modifying values after the checks have been performed, or by changing the client to remove the client-side checks entirely. Then, these modified values would be submitted to the server.
Source: MITRE CWE corpus.
CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/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-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 CVE-2023-2780 9.8 MLflow: path traversal allows arbitrary file read/write
Same package: mlflow