MLflow validates a webhook URL in mlflow/utils/validation.py by resolving the hostname and rejecting non-public IP addresses, but it does not pin the validated address to the actual connection. In mlflow/webhooks/delivery.py, the outbound HTTP request independently resolves the hostname and follows redirects by default, so the redirect target is not revalidated. An attacker can use a public HTTPS endpoint that passes the initial check and then redirects MLflow to a loopback address, private network service, or cloud metadata endpoint; DNS rebinding can also exploit the time-of-check to time-of-use gap between validation and connection. The POST /api/2.0/mlflow/webhooks/{id}/test endpoint returns the upstream response_status and response_body, making this path a full-read SSRF. The event-driven delivery path uses the same outbound mechanism and can provide blind SSRF; 307 or 308 redirects can preserve the POST method and body, creating a possible blind write to an internal service. The exact deployment exposure depends on Tracking Server reachability, availability of a SQL store for webhooks, and the authentication or reverse-proxy controls in use.