CVE-2024-27133

7.5 HIGH

📋 TL;DR

CVE-2024-27133 is a cross-site scripting (XSS) vulnerability in MLflow that occurs when running recipes with untrusted datasets. Insufficient sanitization of dataset table fields allows attackers to inject malicious scripts, which can lead to client-side remote code execution when recipes are executed in Jupyter Notebook. This affects MLflow users who process untrusted datasets through recipes.

💻 Affected Systems

Products:
  • MLflow
Versions: Versions prior to 2.12.1
Operating Systems: All
Default Config Vulnerable: ⚠️ Yes
Notes: Vulnerability requires running recipes with untrusted datasets. Jupyter Notebook integration increases severity to RCE.

📦 What is this software?

⚠️ Risk & Real-World Impact

🔴

Worst Case

Full client-side remote code execution in Jupyter Notebook environment, potentially compromising the user's system and allowing lateral movement within the network.

🟠

Likely Case

Cross-site scripting attacks leading to session hijacking, credential theft, or unauthorized actions within the MLflow interface.

🟢

If Mitigated

Limited impact with proper input validation and output encoding, potentially only affecting UI elements without code execution.

🌐 Internet-Facing: MEDIUM - Exploitation requires user interaction with malicious datasets in MLflow recipes, but internet-facing instances increase attack surface.
🏢 Internal Only: MEDIUM - Internal users could still be targeted through social engineering or compromised internal datasets.

🎯 Exploit Status

Public PoC: ⚠️ Yes
Weaponized: LIKELY
Unauthenticated Exploit: ✅ No
Complexity: LOW

Exploitation requires user interaction with malicious datasets. Public proof-of-concept exists in research publications.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: 2.12.1

Vendor Advisory: https://github.com/mlflow/mlflow/pull/10893

Restart Required: No

Instructions:

1. Upgrade MLflow to version 2.12.1 or later using pip: pip install --upgrade mlflow>=2.12.1
2. Verify the upgrade completed successfully
3. No service restart required for MLflow itself, but restart any dependent services

🔧 Temporary Workarounds

Input Validation for Datasets

all

Implement strict input validation and sanitization for all dataset fields before processing in MLflow recipes

# Implement custom dataset validation logic
# Example Python snippet:
import html
def sanitize_dataset_field(field):
    return html.escape(str(field))

Disable Jupyter Notebook Integration

linux

Temporarily disable Jupyter Notebook execution for MLflow recipes to prevent RCE escalation

# Set environment variable to disable notebook execution
export MLFLOW_DISABLE_NOTEBOOK_EXECUTION=true

🧯 If You Can't Patch

  • Implement strict dataset source validation - only use trusted, verified datasets in MLflow recipes
  • Enable Content Security Policy (CSP) headers to mitigate XSS impact and prevent script execution

🔍 How to Verify

Check if Vulnerable:

Check MLflow version: python -c "import mlflow; print(mlflow.__version__)" - if version is less than 2.12.1, system is vulnerable

Check Version:

python -c "import mlflow; print('MLflow version:', mlflow.__version__)"

Verify Fix Applied:

After upgrade, verify version is 2.12.1 or higher and test dataset processing with known safe payloads

📡 Detection & Monitoring

Log Indicators:

  • Unusual dataset processing patterns
  • Multiple failed dataset validations
  • Suspicious script tags in dataset fields

Network Indicators:

  • Unexpected outbound connections from MLflow servers
  • Unusual data transfers to/from dataset sources

SIEM Query:

source="mlflow" AND (dataset_processing_error OR suspicious_dataset_content)

🔗 References

📤 Share & Export