cbcvebase.
CVE-2026-22778
published 2026-02-02

CVE-2026-22778: vLLM is an inference and serving engine for large language models (LLMs). From 0.8.3 to before 0.14.1, when an invalid image is sent to vLLM's multimodal…

PriorityP273critical9.8CVSS 3.1
AVNACLPRNUINSUCHIHAH
EXPLOIT
EPSS
3.72%
89.0th percentile
vLLM is an inference and serving engine for large language models (LLMs). From 0.8.3 to before 0.14.1, when an invalid image is sent to vLLM's multimodal endpoint, PIL throws an error. vLLM returns this error to the client, leaking a heap address. With this leak, we reduce ASLR from 4 billion guesses to ~8 guesses. This vulnerability can be chained a heap overflow with JPEG2000 decoder in OpenCV/FFmpeg to achieve remote code execution. This vulnerability is fixed in 0.14.1.

Affected

18 ranges
VendorProductVersion rangeFixed in
rhaiivllm-cpu-rhel9
rhaiivllm-cuda-rhel9
rhaiivllm-gaudi-rhel9
rhaiivllm-rocm-rhel9
rhaiivllm-spyre-rhel9
rhelai3bootc-aws-cuda-rhel9
rhelai3bootc-azure-cuda-rhel9
rhelai3bootc-azure-rocm-rhel9
rhelai3bootc-cuda-rhel9
rhelai3bootc-gaudi-rhel9
rhelai3bootc-gcp-cuda-rhel9
rhelai3bootc-rocm-rhel9
rhoaiodh-vllm-gaudi-rhel9
vllm-projectvllm< 0.23.1rc00.23.1rc0
vllmvllm< 0.23.10.23.1
vllmvllm0 – 0.23.0
vllmvllm>= 0.8.3 < 0.14.10.14.1
vllmvllm>= 0.8.3 < 0.14.10.14.1

Detection & IOCsextracted from sources · hover to see the quote

pathvllm/entrypoints/anthropic/api_router.py
pathvllm/entrypoints/anthropic/serving.py
pathvllm/entrypoints/speech_to_text/realtime/connection.py
othershodan: http.html:"/v1/models" http.html:"vllm"
  • Detect exploit attempts against the OpenAI-compatible multimodal endpoint: look for POST /v1/chat/completions requests containing a base64-encoded image_url with invalid/non-image data (e.g. base64 payload 'bm90YW5pbWFnZQ==') and a 400 response body containing the string '_io.BytesIO object at 0x'
  • Detect exploit attempts against the Anthropic-compatible endpoint: look for POST /v1/messages requests with a base64 image source containing invalid image data, and a 500 response body containing both '_io.BytesIO object at 0x' and 'internal_error'
  • Monitor for heap address leakage in HTTP response bodies from vLLM endpoints: any response containing the pattern '_io.BytesIO object at 0x' followed by a hex address indicates successful exploitation of the ASLR-defeating information disclosure
  • Enumerate exposed vLLM instances via Shodan using the query: http.html:"/v1/models" http.html:"vllm" to identify attack surface
  • The exploit flow requires two steps: (1) GET /v1/models to enumerate a valid model ID, then (2) POST malformed image bytes to /v1/chat/completions or /v1/messages using that model ID — correlate these two requests from the same source IP
  • The CVE-2026-22778 primitive can be chained with a JPEG2000 heap overflow (CVE-2025-9951) in OpenCV/FFmpeg to achieve RCE; monitor for attacker-controlled media URLs submitted to vLLM video/multimodal endpoints following a heap-address leak response
  • The Anthropic router paths POST /v1/messages and POST /v1/messages/count_tokens bypass the sanitizing global FastAPI exception handler and echo str(exc) directly — alert on any 5xx responses from these paths containing memory address patterns
  • WebSocket connections to the realtime speech-to-text endpoint (vllm/entrypoints/speech_to_text/realtime/connection.py) do not traverse the FastAPI exception handler chain at all — monitor WebSocket frames for leaked heap address strings matching '_io.BytesIO object at 0x[0-9a-f]+'
  • ·The vulnerable code paths (Anthropic router, SSE streaming converter, WebSocket realtime endpoint) are only present in vLLM versions 0.8.3 through 0.14.0 for CVE-2026-22778, and up to 0.23.0 for the incomplete fix (CVE-2026-54236); patched in 0.14.1 and 0.23.1rc0 respectively
  • ·Red Hat AI Inference Server package rhaiis/vllm-spyre-rhel9 is listed as 'Will not fix' for CVE-2026-22778; rhaiis/vllm-tpu-rhel9 is listed as 'Affected' — detection should account for these unpatched production deployments
  • ·The original CVE-2026-22778 fix introduced sanitize_message only in the OpenAI router; the Anthropic-compatible router and WebSocket paths were not covered, meaning deployments that applied the 0.14.1 patch but have not yet upgraded to 0.23.1rc0 remain vulnerable to the Anthropic-path variant

CVSS provenance

nvdv3.19.8CRITICALCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
ghsa9.8CRITICAL
vendor_redhat9.8CRITICAL
CVEs like this are exactly what “Exploited This Week” covers.

Every Monday: what got weaponized or added to CISA KEV in the last seven days — each CVE cross-linked to its PoC, Nuclei template, and detection rule. Free, one email a week, unsubscribe in one click.