The vulnerability, CVE-2025-14279, is a DNS rebinding attack in the MLflow tracking server, caused by a lack of 'Host' header validation. This allowed malicious websites to make unauthorized API calls to the server, bypassing same-origin policy.
The patch addresses this by introducing a security middleware layer for both the Flask and FastAPI server implementations. This middleware intercepts all incoming requests and validates the Host header against a configurable allowlist.
The analysis identified the key functions and methods that were added to implement this security control. The vulnerability lies in the absence of these functions in versions prior to the patch. The identified functions are:
mlflow.server.fastapi_app.create_fastapi_app: In vulnerable versions, this function was responsible for creating the FastAPI server without the necessary security middleware. The patch modifies it to include the middleware initialization.
mlflow.server.security.validate_host: This function, added for the Flask server, contains the logic to validate the Host header. It is registered to run before each request. Its absence in vulnerable versions is a direct cause of the vulnerability.
mlflow.server.fastapi_security.HostValidationMiddleware.__call__: This is the equivalent of validate_host for the FastAPI server. Its absence meant no Host header validation was performed.
By identifying these functions, we can understand that the vulnerability was not a flaw in a specific existing function, but a missing security control at the application level. Any REST API endpoint that modifies state (e.g., creating, updating, or deleting experiments) was effectively vulnerable because the server framework did not reject requests from unauthorized hosts.