CVE-2026-116690
### Summary On MLflow tracking servers running without authentication, which is the default for mlflow server, a remote attacker can read arbitrary files from the server’s filesystem by creating a model version tagged as a prompt whose source is a schemeless local path. The fix for CVE-2026-2614 in 3.10.0 added a prompt-specific branch to the `CreateModelVersion` handler that rejects `file://` URIs and absolute paths but runs path validation only when the source carries a URL scheme. A schemeless value such as `../../etc`, a plain relative name, `.`, a percent-encoded path, or a Windows drive-letter path is therefore stored unchanged as the model version’s artifact location, and the `model-versions/get-artifact endpoint` later serves files from it with the privileges of the server process. The tag check also keyed on the presence of the `mlflow.prompt.is_prompt` tag rather than its value, so a false value still selected the weaker branch. Servers using `--app-name basic-auth` are also affected: any authenticated user can create a registered model, so a low-privilege account can use this to read the authentication database, including the admin password hash. Affected: MLflow 3.10.0 through 3.16.1. Fixed in 3.17.0 by [mlflow/mlflow#25870](https://github.com/mlflow/mlflow/pull/25870), which accepts only MLflow’s own placeholder sources for prompt versions and requires the prompt tag to be `true`. ### Details When creating a model version with the `mlflow.prompt.is_prompt` tag set to true, the request is handled by the prompt branch in `_create_model_version()`. `mlflow/server/handlers.py:2674-2690`: ```python is_prompt = _is_prompt_request(request_message) if is_prompt: source = request_message.source parsed = urllib.parse.urlparse(source) if parsed.scheme == "file" or (parsed.scheme == "" and source.startswith("/")): raise MlflowException(...) if parsed.scheme: _validate_non_local_source_contains_relative_paths(source) else: if
Properties
- Severity
- high
- Summary
- MLflow vulnerable to arbitrary file read on unauthenticated servers via prompt model version source
- Nvd fetched at
- 2026-10-27T23:33:07.137019+00:00
- Cvss severity
- HIGH
- Cvss score
- 7.5
- Retrieved at
- 2026-10-27T23:34:58+00:00
- Ghsa published
- 2026-10-27T21:26:56Z
- Source url
- https://github.com/advisories/GHSA-m65p-9j7q-6w33
- Ghsa updated
- 2026-10-27T21:26:56Z
- Ghsa id
- GHSA-m65p-9j7q-6w33
- Last source
- GitHub Advisory Database
- Score
- 7.5
- Cvss version
- 3.1
- Cve id
- CVE-2026-116690
- Cvss vector
- CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N
- First seen by Signal
- 2026-10-27T23:33:57+00:00
- Is ghsa only
- false
- Vector
- CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N
- Published at
- 2026-10-27T20:17:14.340
- Last modified
- 2026-10-27T20:17:14.340
Related Entities (3)
AFFECTS (1)
HAS_WEAKNESS (1)
VULNERABLE_TO (1)
Explore deeper with Ninja Signal's threat intelligence graph