Miggo Logo

CVE-2025-6242: vLLM is vulnerable to Server-Side Request Forgery (SSRF) through `MediaConnector` class

7.1

CVSS Score
3.1

Basic Information

EPSS Score
-
Published
10/7/2025
Updated
10/7/2025
KEV Status
No
Technology
TechnologyPython

Technical Details

CVSS Vector
CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:H/I:L/A:H
Package NameEcosystemVulnerable VersionsFirst Patched Version
vllmpip>= 0.5.0, < 0.11.00.11.0

Vulnerability Intelligence
Miggo AIMiggo AI

Miggo AIRoot Cause Analysis

The vulnerability is a Server-Side Request Forgery (SSRF) within the vLLM project's multimodal features. The root cause lies in the MediaConnector class, specifically in the load_from_url and load_from_url_async methods located in vllm/multimodal/utils.py. These methods are designed to fetch media (like images) from a URL provided by the user.

The vulnerability description and the provided patch (9d9a2b77f19f68262d5e469c4e82c0f6365ad72d) make it clear that the core issue is the lack of sufficient restrictions on the URLs being fetched. An attacker can supply a URL pointing to an internal service, and the vLLM server will make a request to it.

The patch specifically addresses a vector of this attack: bypassing domain-based allowlists via HTTP redirects. It does this by introducing an allow_redirects parameter, controlled by the VLLM_MEDIA_URL_ALLOW_REDIRECTS environment variable. This parameter is threaded through the call chain from the MediaConnector methods down to the underlying HTTP request functions in vllm/connections.py (get_response and get_async_response).

The primary vulnerable functions are MediaConnector.load_from_url and MediaConnector.load_from_url_async as they are the entry points for the user-provided malicious URL. The functions HTTP.get_bytes and HTTP.async_get_bytes are also included as they are the direct downstream consumers of the URL that perform the unsafe network request without the redirect mitigation that the patch introduces.

Vulnerable functions

MediaConnector.load_from_url
vllm/multimodal/utils.py
This function is vulnerable to Server-Side Request Forgery (SSRF) because it fetches content from a user-provided URL without adequate validation of the target host. The patch adds a control to prevent HTTP redirects, which could be used to bypass domain-based security checks. The original code unconditionally fetched the URL's content, allowing an attacker to make the server access internal network resources.
MediaConnector.load_from_url_async
vllm/multimodal/utils.py
This function is the asynchronous counterpart to `load_from_url` and shares the same SSRF vulnerability. It asynchronously fetches content from a user-provided URL without proper validation, making the server susceptible to requests to internal or restricted resources. The patch mitigates this by adding a control for HTTP redirects.
HTTP.get_bytes
vllm/connections.py
This function is called by `MediaConnector.load_from_url` to fetch the raw bytes from a URL. The original implementation did not have a mechanism to disallow redirects, which is a key part of the SSRF vulnerability, as it allows bypassing domain restrictions. The patch adds the `allow_redirects` parameter to `get_response` to mitigate this.
HTTP.async_get_bytes
vllm/connections.py
This is the asynchronous version of `get_bytes` and is used by `MediaConnector.load_from_url_async`. It was vulnerable for the same reason: lack of control over HTTP redirects. The patch adds the `allow_redirects` parameter to `get_async_response` to address the vulnerability.

WAF Protection Rules

WAF Rule

### Summ*ry * S*rv*r-Si** R*qu*st *or**ry (SSR*) vuln*r**ility *xists in t** `M**i**onn**tor` *l*ss wit*in t** vLLM proj**t's multimo**l ***tur* s*t. T** `lo**_*rom_url` *n* `lo**_*rom_url_*syn*` m*t*o*s **t** *n* pro**ss m**i* *rom us*r-provi*** UR

Reasoning

T** vuln*r**ility is * S*rv*r-Si** R*qu*st *or**ry (SSR*) wit*in t** `vLLM` proj**t's multimo**l ***tur*s. T** root **us* li*s in t** `M**i**onn**tor` *l*ss, sp**i*i**lly in t** `lo**_*rom_url` *n* `lo**_*rom_url_*syn*` m*t*o*s lo**t** in `vllm/multi