CVE-2024-37052: MLflow: RCE via malicious scikit-learn model upload

HIGH PoC AVAILABLE
Published June 4, 2024
CISO Take

Any shared MLflow instance where users can upload models is exposed to remote code execution — an attacker needs only publish a crafted scikit-learn model and wait for a colleague or pipeline to load it. Patch MLflow immediately; until patched, restrict model upload permissions to trusted CI/CD service accounts only and audit recent model artifacts for suspicious submissions. This is a direct, practical threat to your ML platform supply chain with low exploitation complexity.

What is the risk?

High severity (CVSS 8.8). MLflow is ubiquitous in enterprise ML environments, and shared model registries with multi-user write access are the norm in data science teams. Exploitation requires no elevated privileges on the MLflow instance — only the ability to upload a model file, which is routinely granted to developers, data scientists, and CI/CD systems. Low complexity and broad organizational exposure make this a practical, high-likelihood threat. The payload executes with the victim's OS user privileges, enabling lateral movement, credential theft, or data exfiltration from the ML environment.

What systems are affected?

Package Ecosystem Vulnerable Range Patched
MLflow pip No patch
26.6K OpenSSF 5.6 655 dependents Pushed 4d ago 31% patched ~51d to patch Full package profile →

Do you use MLflow? You're affected.

How severe is it?

CVSS 3.1
8.8 / 10
EPSS
0.6%
chance of exploitation in 30 days
Higher than 45% of all CVEs
Exploitation Status
Exploit Available
Exploitation: MEDIUM
Sophistication
Moderate
Exploitation Confidence
medium
Public PoC indexed (trickest/cve)
Composite signal derived from CISA KEV, VulnCheck KEV, CISA SSVC, EPSS, Metasploit, Exploit-DB, trickest/cve, Nuclei templates, and inthewild.io exploitation reports.

What is the attack surface?

AV AC PR UI S C I A
AV Network
AC Low
PR None
UI Required
S Unchanged
C High
I High
A High

What should I do?

6 steps
  1. Patch: Upgrade MLflow to the latest patched release immediately — treat as emergency change for production ML platforms.

  2. Access control: Restrict model upload to authenticated CI/CD service accounts; remove interactive write access for human users where feasible.

  3. Model scanning: Integrate pre-load artifact scanning using tools designed to detect malicious pickle payloads (e.g., ProtectAI ModelScan, picklescan) into your ML pipeline gates.

  4. Network segmentation: Ensure MLflow servers are not internet-accessible; enforce VPN or bastion access for all registry interactions.

  5. Detection: Monitor for unexpected process spawning from Python interpreter processes and anomalous outbound connections originating from ML workstations or pipeline workers.

  6. Audit: Review the model upload history for all artifacts uploaded by external contributors or during the exposure window — consider re-validating or purging unverified models.

What does CISA's SSVC say?

Decision Track
Exploitation none
Automatable No
Technical Impact total

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:

EU AI Act
Article 9 - Risk management system
ISO 42001
A.6.2 - AI risk assessment A.9.3 - AI supply chain management
NIST AI RMF
GOVERN 1.1 - Policies and processes for AI risk management MANAGE 2.2 - Risk treatment and response mechanisms for AI systems
OWASP LLM Top 10
LLM05:2023 - Supply Chain Vulnerabilities

Frequently Asked Questions

What is CVE-2024-37052?

Any shared MLflow instance where users can upload models is exposed to remote code execution — an attacker needs only publish a crafted scikit-learn model and wait for a colleague or pipeline to load it. Patch MLflow immediately; until patched, restrict model upload permissions to trusted CI/CD service accounts only and audit recent model artifacts for suspicious submissions. This is a direct, practical threat to your ML platform supply chain with low exploitation complexity.

Is CVE-2024-37052 actively exploited?

Proof-of-concept exploit code is publicly available for CVE-2024-37052, increasing the risk of exploitation.

How to fix CVE-2024-37052?

1. Patch: Upgrade MLflow to the latest patched release immediately — treat as emergency change for production ML platforms. 2. Access control: Restrict model upload to authenticated CI/CD service accounts; remove interactive write access for human users where feasible. 3. Model scanning: Integrate pre-load artifact scanning using tools designed to detect malicious pickle payloads (e.g., ProtectAI ModelScan, picklescan) into your ML pipeline gates. 4. Network segmentation: Ensure MLflow servers are not internet-accessible; enforce VPN or bastion access for all registry interactions. 5. Detection: Monitor for unexpected process spawning from Python interpreter processes and anomalous outbound connections originating from ML workstations or pipeline workers. 6. Audit: Review the model upload history for all artifacts uploaded by external contributors or during the exposure window — consider re-validating or purging unverified models.

What systems are affected by CVE-2024-37052?

This vulnerability affects the following AI/ML architecture patterns: model registries, training pipelines, MLOps platforms, model serving, CI/CD model evaluation.

What is the CVSS score for CVE-2024-37052?

CVE-2024-37052 has a CVSS v3.1 base score of 8.8 (HIGH). The EPSS exploitation probability is 0.62%.

What is the AI security impact?

Affected AI Architectures

model registriestraining pipelinesMLOps platformsmodel servingCI/CD model evaluation

MITRE ATLAS Techniques

AML.T0010.001 AI Software
AML.T0010.003 Model
AML.T0011.000 Unsafe AI Artifacts
AML.T0018.002 Embed Malware
AML.T0058 Publish Poisoned Models

Compliance Controls Affected

EU AI Act: Article 9
ISO 42001: A.6.2, A.9.3
NIST AI RMF: GOVERN 1.1, MANAGE 2.2
OWASP LLM Top 10: LLM05:2023

What are the technical details?

Original Advisory

Deserialization of untrusted data can occur in versions of the MLflow platform running version 1.1.0 or newer, enabling a maliciously uploaded scikit-learn model to run arbitrary code on an end user’s system when interacted with.

Exploitation Scenario

An adversary with model-upload access to a shared MLflow registry — via a compromised developer account, malicious insider, or external collaborator with granted access — crafts a scikit-learn model file embedding a malicious pickle payload using standard Python tooling (trivial, publicly documented technique). The attacker registers the model under a plausible, trusted-looking name in the MLflow UI. When a data scientist calls mlflow.sklearn.load_model() during experimentation, or an automated CI/CD pipeline loads the model for evaluation, the payload executes in the victim's process context. From here the attacker can establish a reverse shell, exfiltrate AWS/GCP credentials from environment variables or ~/.aws, access training datasets, or pivot into internal infrastructure. In pipeline contexts this can propagate to production systems before detection.

Weaknesses (CWE)

CWE-502 — Deserialization of Untrusted Data: The product deserializes untrusted data without sufficiently ensuring that the resulting data will be valid.

  • [Architecture and Design, Implementation] If available, use the signing/sealing features of the programming language to assure that deserialized data has not been tainted. For example, a hash-based message authentication code (HMAC) could be used to ensure that data has not been modified.
  • [Implementation] When deserializing data, populate a new object rather than just deserializing. The result is that the data flows through safe input validation and that the functions are safe.

Source: MITRE CWE corpus.

CVSS Vector

CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H

Timeline

Published
June 4, 2024
Last Modified
February 3, 2025
First Seen
June 4, 2024

Related Vulnerabilities