CVE-2026-114055: vLLM : DoS via unvalidated mm_processor_kwargs in multimodal image processors (Isaac, InternVL, H2OVL, etc.)
vLLM versions 0.7.3 up to but not including 0.31.0 let any API client send `mm_processor_kwargs` with a request and pass it to the multimodal processors. One request with oversized image or patch settings can exhaust memory and kill the API server or worker. Upgrade to vLLM 0.31.0, which rejects per-request values by default.
Published Oct 23, 2026 · Analysis Oct 23, 2026
What an attacker can do
vLLM accepts a per-request mm_processor_kwargs field, for example on ChatCompletionRequest. The server forwards it through the multimodal rendering path into the constructors and calls of Hugging Face and custom image or video processors. Values such as image size, patch size, patch count, crop count and frame count are therefore chosen by the client.
Processors that upscale their input turn a small request into a very large allocation. The advisory names the Isaac image processor (IsaacImageProcessor, process_vision_for_patches()) as a high-amplification example. InternVL-derived processors, H2OVL, Step3VL and NemotronVL forward kwargs the same way, so the flaw sits at the shared request boundary and not in one model.
The attacker needs network access to the API and nothing else. vLLM's API key is optional, so a deployment without an authenticating proxy is open to anonymous requests. The result is an out-of-memory crash of CPU or GPU memory that ends the process. Every user of that instance loses service. The CVSS vector is availability-only (A:H), with no confidentiality or integrity loss.
Who is affected
Affected: vllm from 0.7.3, where the per-request field first shipped, up to but not including 0.31.0. Deployments that serve a multimodal model through the OpenAI-compatible API server and are reachable by untrusted clients carry the most risk. Check the installed version:
pip show vllmFor container deployments, check the version inside the image you run.
vllm
- Ecosystem
- PyPI
- Affected
- >= 0.7.3, < 0.31.0
- Fixed in
- 0.31.0
- Check
pip show vllm
How to fix it
Upgrade to vLLM 0.31.0.
pip install --upgrade "vllm>=0.31.0"The fix (pull request 58830) rejects non-empty per-request mm_processor_kwargs and media_io_kwargs by default and raises a VLLMValidationError. Operators who serve only trusted clients can opt back in with --trust-request-mm-kwargs. Server-level --mm-processor-kwargs and offline LLM overrides still work. Do not turn on the opt-in flag for an internet-facing server. The sources give no other workaround, so until you upgrade, keep the API behind an authenticated gateway.
How to tell if you were hit
Look for API server or worker processes that were killed by the out-of-memory killer, or restarted, right after a multimodal request. In the request logs, search for chat completion bodies that contain an mm_processor_kwargs field with large size, patch, crop or frame values. Legitimate clients rarely set it. After the upgrade, requests that include the field fail with a validation error unless --trust-request-mm-kwargs is set.
Original advisory
From the GitHub Advisory Database (CC BY 4.0).
Summary
API clients can supply arbitrary mm_processor_kwargs per request. vLLM forwards these values through the multimodal rendering and processing pipeline to Hugging Face and custom image/video processor constructors and calls. Resource-sensitive values such as image size, patch size, patch count, crop count, or frame count can therefore be controlled by a remote client.
For processors that upscale inputs, a single request can force an allocation large enough to terminate the API server or worker with an out-of-memory condition.
Affected Components
The per-request field was introduced in commit 041e29471671a3d43afedb6a749421d56ef4d3e7 and first shipped in v0.7.3. The generic forwarding path remains present in current main.
The Isaac path is a concrete high-amplification example:
ChatCompletionRequest.mm_processor_kwargsOnlineRendererrequest extrasMMProcessorInputs.hf_processor_mm_kwargsBaseMultiModalProcessor.info.get_hf_processor(**hf_processor_mm_kwargs)IsaacProcessingInfo.get_image_processor(**kwargs)IsaacImageProcessor(**kwargs)process_vision_for_patches()
Equivalent constructor forwarding exists in InternVL-derived processors, H2OVL, Step3VL, NemotronVL, and other multimodal processors. The issue is at the shared remote-input boundary and is not limited to a fixed model list.
Impact
- Availability: one request can exhaust CPU or GPU memory and terminate a shared service process.
- Scope: all users of the affected service instance lose availability.
- Authentication: vLLM's API key is optional, so deployments without an external authentication layer are remotely reachable without privileges.
Remediation
Reject non-empty per-request mm_processor_kwargs at every API-server request schema by default. Operators serving only trusted clients can explicitly opt in to the existing override behavior. Server-level --mm-processor-kwargs and offline LLM overrides remain available.
This shared boundary covers current and future multimodal processors instead of maintaining a model-specific list or a denylist that can miss custom processor arguments.
A patch for this was merged here: https://github.com/vllm-project/vllm/pull/58830
Credited to Chedrian07, jperezdealgaba, DarkLight1337.
Questions
- Does CVE-2026-114055 need authentication?
No privileges are needed. vLLM's API key is optional, so a server without an external authentication layer accepts the request from any network client. With an API key set, the attacker needs a valid key.
- Is it exploited in the wild?
No source reports exploitation and it is not in CISA's KEV catalog. The EPSS score is 0.0034.
- Does the flaw allow code execution or data theft?
No. The advisory describes only a denial of service through memory exhaustion (CWE-400). The CVSS vector rates confidentiality and integrity as none.
- Is serving only text models safe?
The advisory describes the multimodal processor path. The vulnerable field is still accepted on affected versions, so upgrading to 0.31.0 is the safe course for any internet-facing instance.
References
Read for this analysis:
- https://github.com/vllm-project/vllm/security/advisories/GHSA-gx7p-2j49-hfq4
- https://github.com/vllm-project/vllm/pull/58830
- https://nvd.nist.gov/vuln/detail/CVE-2026-114055
- https://github.com/vllm-project/vllm/commit/31f2e70cd3e403aaa471fb7fe3d33a7207aaf3cc
- https://github.com/vllm-project/vllm/releases/tag/v0.31.0
- https://www.vulncheck.com/advisories/vllm-0.7.3-before-0.31.0-dos-via-unvalidated-mm-processor-kwargs
- https://github.com/advisories/GHSA-gx7p-2j49-hfq4
How this page is made: the data panel comes from the GitHub Advisory Database, CISA’s KEV catalog, the NVD and FIRST EPSS, and updates twice a day. The analysis is written by an AI model from the sources listed above and checked by automated rules before it is published. Check versions against the vendor's advisory before you act. Methodology
Coverage on the Beam blog
More vLLM vulnerabilities
All vLLM entriesCVE-2026-114050
vLLM: Forged multimodal UUID + P0/P1 processor-cache eviction drift: unauthenticated remote crash of the whole vLLM engine
medium6.5Oct 23, 2026CVE-2026-105752
vLLM: Harmony tool continuations drop `cache_salt` — restoring a cross-tenant prefix-cache membership oracle
low3.1Oct 6, 2026CVE-2026-105753
vLLM: Mirrored multimodal IPC caches desync after a rejected request — a later request reusing the same media hash trips a receiver assertion in the engine core
medium6.5Oct 6, 2026CVE-2026-105754
vLLM: Scale-out disaggregated multimodal transport trusts caller-supplied features
medium6.5Oct 5, 2026CVE-2026-105755
vLLM: Flash late-interaction scoring caches query embeddings under a caller-controlled request id — cross-request integrity break and induced errors on `/score` and `/rerank`
medium4.2Oct 5, 2026CVE-2026-105756
vLLM: Loose `cache_salt` validation lets a single request kill EngineCore on LMCache-MP deployments — uncaught downstream `ValueError` denial of service
medium6.5Oct 5, 2026
