CVE-2023-6018: MLflow: unauth file overwrite enables model poisoning
CRITICAL PoC AVAILABLE NUCLEI TEMPLATEAny network-reachable MLflow instance is fully compromised — no credentials required. An attacker can silently overwrite production model artifacts, training data, or deploy backdoors into your ML pipeline. Patch immediately or isolate MLflow behind a VPN/firewall; treat any exposed instance as already compromised.
Risk Assessment
CVSS 9.8 with zero prerequisites (no auth, no interaction, low complexity) makes this trivially weaponizable by any attacker with network reach — including a compromised internal host. MLflow is commonly deployed on internal networks with permissive east-west controls, giving broad lateral movement potential. The blast radius extends beyond the MLflow server itself: poisoned artifacts cascade silently into downstream production AI systems.
Affected Systems
| Package | Ecosystem | Vulnerable Range | Patched |
|---|---|---|---|
| mlflow | pip | — | No patch |
Do you use mlflow? You're affected.
Severity & Risk
Attack Surface
Recommended Action
1 step-
1) Patch MLflow to the latest release immediately — this is the only full remediation. 2) If patching is blocked, restrict network access to MLflow via firewall or VPN with strict allowlisting; treat default port 5000 as high-risk. 3) Enable MLflow's built-in authentication (--app-name basic-auth) if running post-2.4.x. 4) Audit MLflow server access logs for unexpected artifact upload requests, especially those containing path traversal patterns (../, %2F). 5) Verify integrity of all stored model artifacts via checksums or cryptographic signatures before next deployment. 6) Place MLflow behind an authenticated API gateway or reverse proxy as a defense-in-depth measure.
Classification
Compliance Impact
This CVE is relevant to:
Frequently Asked Questions
What is CVE-2023-6018?
Any network-reachable MLflow instance is fully compromised — no credentials required. An attacker can silently overwrite production model artifacts, training data, or deploy backdoors into your ML pipeline. Patch immediately or isolate MLflow behind a VPN/firewall; treat any exposed instance as already compromised.
Is CVE-2023-6018 actively exploited?
Proof-of-concept exploit code is publicly available for CVE-2023-6018, increasing the risk of exploitation.
How to fix CVE-2023-6018?
1) Patch MLflow to the latest release immediately — this is the only full remediation. 2) If patching is blocked, restrict network access to MLflow via firewall or VPN with strict allowlisting; treat default port 5000 as high-risk. 3) Enable MLflow's built-in authentication (--app-name basic-auth) if running post-2.4.x. 4) Audit MLflow server access logs for unexpected artifact upload requests, especially those containing path traversal patterns (../, %2F). 5) Verify integrity of all stored model artifacts via checksums or cryptographic signatures before next deployment. 6) Place MLflow behind an authenticated API gateway or reverse proxy as a defense-in-depth measure.
What systems are affected by CVE-2023-6018?
This vulnerability affects the following AI/ML architecture patterns: training pipelines, model serving, MLOps platforms, model registries, experiment tracking systems.
What is the CVSS score for CVE-2023-6018?
CVE-2023-6018 has a CVSS v3.1 base score of 9.8 (CRITICAL). The EPSS exploitation probability is 91.27%.
Technical Details
NVD Description
An attacker can overwrite any file on the server hosting MLflow without any authentication.
Exploitation Scenario
Attacker scans for MLflow instances on port 5000 (or common alternatives) using Shodan or internal network enumeration. Finding an exposed instance, they craft an HTTP POST to the MLflow artifacts endpoint with a path traversal payload in the artifact path parameter, causing MLflow to write attacker-controlled content to an arbitrary server location — for example, overwriting a registered production model binary (e.g., model.pkl) with a malicious serialized object. On next model load by the serving infrastructure, the poisoned model executes attacker code in the context of the inference server. Alternatively, attacker overwrites a Python script in the MLflow project directory; it executes during the next scheduled training run, achieving persistent foothold in the ML pipeline.
Weaknesses (CWE)
CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H References
- huntr.com/bounties/7cf918b5-43f4-48c0-a371-4d963ce69b30 Exploit Technical 3rd Party
- github.com/google/tsunami-security-scanner-plugins Exploit
- github.com/jmdunne28/offsec Exploit
Timeline
Scanner Template Available
A Nuclei vulnerability scanner template exists for this CVE. You can scan your infrastructure for this vulnerability immediately.
View template on GitHubnuclei -t http/cves/2023/CVE-2023-6018.yaml -u https://target.example.com 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-2780 9.8 MLflow: path traversal allows arbitrary file read/write
Same package: mlflow CVE-2023-1177 9.8 MLflow: path traversal allows arbitrary file read/write
Same package: mlflow
AI Threat Alert