highCVSS 7.1Vulnerability

CVE-2026-69148

### Summary The `_validate_source_run` and `_validate_source_model` functions in `mlflow/server/handlers.py` verify that a model version source path is within the artifact directory of a specified run or logged model, but do not check whether the caller has READ permission on that run or model. An authenticated MLflow user can therefore reference another user's run_id in `CreateModelVersion`, creating a model version whose artifact URI points at the victim's artifact directory. If the calling user has MANAGE permission on the registered model (which they do after creation), they can then read arbitrary files from the victim's artifact directory via `GET /model-versions/get-artifact`, bypassing the experiment-level READ permission gate on `GET /get-artifact`. ### Details `POST /api/2.0/mlflow/model-versions/create` is protected: the caller must have UPDATE permission on the registered model. However, the source/run_id validation performed inside `_validate_source_run` only verifies path containment, not caller authorization: ```python # mlflow/server/handlers.py _validate_source_run() def _validate_source_run(source: str, run_id: str) -> None: if is_local_uri(source): if run_id: store = _get_tracking_store() run = store.get_run(run_id) # <-- no permission check on run_id source = pathlib.Path(local_file_uri_to_path(source)).resolve() if is_local_uri(run.info.artifact_uri): run_artifact_dir = pathlib.Path(...).resolve() if run_artifact_dir in [source, *source.parents]: return # validation passes raise MlflowException(...) ``` After creation, the model version's `source` and `run_id` point at the victim's artifact directory. The caller can read files from that directory via the model version artifact handler, which derives the artifact path from the stored `source`: ``` GET /model-versions/get-artifact?name=<model

Properties

ghsa_id
GHSA-gqch-g4w5-7qcw
severity
high
summary
MLflow: CreateModelVersion source validation does not check READ permission on referenced run_id
cvss_score
7.1
cve_id
CVE-2026-69148
cvss_vector
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:L/A:N
is_ghsa_only
false
ghsa_published
2026-08-17T21:59:09Z
source_url
https://github.com/advisories/GHSA-gqch-g4w5-7qcw
ghsa_updated
2026-08-17T21:59:12Z

Related Entities (4)

VULNERABLE_TO (1)

[Software]npm/mlflow

AFFECTS (1)

[Software]npm/mlflow

HAS_WEAKNESS (1)

[Weakness]Missing Authorization

REPORTED_BY (1)

[Source]GitHub Advisory Database

Explore deeper with Ninja Signal's threat intelligence graph

CVE-2026-69148 (CVSS 7.1) — Ninja Signal Threat Intelligence | Ninja Signal