CVE-2025-1473

7.1 HIGH

📋 TL;DR

A Cross-Site Request Forgery vulnerability in MLflow's signup feature allows attackers to create unauthorized accounts by tricking authenticated users into submitting malicious requests. This affects MLflow deployments running versions 2.17.0 through 2.20.1 with the signup feature enabled. The created accounts could then be used to perform actions within the MLflow platform.

💻 Affected Systems

Products:
  • mlflow/mlflow
Versions: 2.17.0 to 2.20.1
Operating Systems: All
Default Config Vulnerable: ⚠️ Yes
Notes: Only affects deployments with signup feature enabled; installations with authentication disabled or using external auth providers may not be vulnerable.

📦 What is this software?

⚠️ Risk & Real-World Impact

🔴

Worst Case

Attackers create administrative accounts, gain full control of the MLflow instance, exfiltrate sensitive ML models and data, or disrupt ML operations.

🟠

Likely Case

Attackers create regular user accounts to access MLflow features, view model artifacts, or submit malicious ML jobs.

🟢

If Mitigated

With proper CSRF protections, attackers cannot create accounts without explicit user consent, limiting impact to authorized account creation only.

🌐 Internet-Facing: HIGH
🏢 Internal Only: MEDIUM

🎯 Exploit Status

Public PoC: ✅ No
Weaponized: UNKNOWN
Unauthenticated Exploit: ✅ No
Complexity: MEDIUM

Requires tricking authenticated user into visiting malicious page; exploit requires understanding of MLflow's signup endpoint structure.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: 2.20.2 and later

Vendor Advisory: https://github.com/mlflow/mlflow/commit/ecfa61cb43d3303589f3b5834fd95991c9706628

Restart Required: No

Instructions:

1. Update MLflow to version 2.20.2 or later using pip: 'pip install --upgrade mlflow>=2.20.2' 2. Verify the update completed successfully 3. No restart required as fix is in application code

🔧 Temporary Workarounds

Disable Signup Feature

all

Temporarily disable user signup functionality to prevent account creation via CSRF

Set environment variable: export MLFLOW_AUTH_ENABLE_SIGNUP=false
Or modify mlflow configuration to disable signup

Implement CSRF Tokens Manually

all

Add CSRF protection to signup endpoints if unable to patch immediately

Implement CSRF token validation in MLflow authentication middleware

🧯 If You Can't Patch

  • Disable the signup feature entirely and use manual account provisioning
  • Implement network-level protections like WAF rules to block suspicious signup requests
  • Enable multi-factor authentication for all administrative accounts

🔍 How to Verify

Check if Vulnerable:

Check MLflow version: if between 2.17.0 and 2.20.1 and signup is enabled, system is vulnerable

Check Version:

python -c "import mlflow; print(mlflow.__version__)"

Verify Fix Applied:

Verify MLflow version is 2.20.2 or later and test signup functionality with CSRF attempts

📡 Detection & Monitoring

Log Indicators:

  • Multiple account creation attempts from same IP
  • Account creations without corresponding login events
  • Unusual user agent strings in signup requests

Network Indicators:

  • POST requests to /signup endpoint without Referer headers
  • Signup requests originating from unexpected domains

SIEM Query:

source="mlflow.log" AND (event="user_signup" OR endpoint="/signup") | stats count by src_ip, user_agent

🔗 References

📤 Share & Export