Skip to content
RESEARCH INDEX BREACHROAD / INTELLIGENCE NOTE

vLLM CVE-2026-22778: a video could trigger remote code execution

Critical vLLM RCE combined an address leak with a JPEG2000 flaw in OpenCV/FFmpeg. Affected versions, exploit chain and safe mitigation.

PUBLIC RESEARCH
AUTHOR
/ CEO of Breachroad · OSCP · PNPT
PUBLISHED
2 February 2026
READING TIME
12 min read
TOPIC
Vulnerabilities and CVEs
vLLM CVE-2026-22778: a video could trigger remote code execution

CVE-2026-22778 is a critical CVSS 9.8 vLLM vulnerability demonstrating that model-server security depends on media libraries too. GitHub’s reviewed advisory marks versions 0.8.3 through 0.14.0 as affected and 0.14.1 as patched. The documented chain applies to deployments serving video models; instances that do not serve video are not affected by it.

An attacker could supply a remote video_url to an OpenAI-compatible endpoint. vLLM downloaded the object and passed its bytes to cv2.VideoCapture. OpenCV, FFmpeg and the JPEG2000 decoder then interpreted it. Incorrect handling of a cdef box allowed a full-resolution luma channel to be written into a smaller chroma buffer, overflowing the heap.

Why this was a chain

A memory corruption bug alone does not guarantee reliable RCE because ASLR randomises locations. A second flaw could expose a BytesIO object address in a PIL error. The advisory describes combining that leak with the overflow to overwrite a function pointer, producing code execution in the vLLM process context.

Not every vLLM server is practically exposed: the affected version, a video model and a reachable data path must align. Nevertheless, common vLLM deployments lack authentication, and the advisory also identifies the /v1/invocations surface, so an API key should not be treated as a complete mitigation.

Safe administrator response

  1. Inventory the installed package and image digest, not only a deployment tag.
  2. Upgrade to 0.14.1 or later and rebuild without inherited caches.
  3. If video is unnecessary, disable the modality and block the endpoints at the gateway.
  4. Allow remote media only from controlled sources and deny process egress by default.
  5. Run inference unprivileged, in a sandbox with a read-only filesystem and minimal secrets.

Hunt for requests containing video_url, decoder failures, abnormal outbound connections and child shells or network utilities spawned by the model server. Do not validate production with public exploit media. A safe check confirms version, configuration and blocked paths without attempting RCE.

The wider AI-stack lesson

The model need not be flawed for an AI platform to be compromised. Image, video, PDF and audio parsers process hostile input and often use memory-unsafe components. Every modality expands the trusted computing base. An LLM security audit therefore needs SBOMs, codecs, fetch brokers and sandboxing, not prompt-injection tests alone.

CVE-2026-22778 crosses application, supply-chain and runtime-isolation boundaries. Patching is mandatory, while denied egress, least privilege and observability reduce the next codec bug’s blast radius. We can validate that chain without running a dangerous proof of concept.

Inventory beyond pip freeze

The vLLM version is only the start. An image may contain a different OpenCV build, system FFmpeg or native libraries bundled in a Python wheel. Record container digest, lockfile hash, SBOM and artefact source. In a multi-stage build, inspect the final layer rather than the builder.

In Kubernetes, review every Deployment, Job and autoscaled GPU pool. A stale image can remain in node cache and return during rollback. Admission policy should reject mutable tags and known affected versions. After updating, ensure old ReplicaSets cannot restart.

A media-broker defence

The model server should not fetch arbitrary URLs. A separate broker can require HTTPS, size and time limits, block private and cloud-metadata addresses, inspect content type and quarantine the object. Inference receives an immutable local identifier rather than an internet URL.

This also constrains SSRF, redirect chains and DNS rebinding. Decode in a separate CPU and memory-bounded sandbox, then pass normalised frames onward. A parser crash should have no access to weights, API tokens or the control network.

Questions for a managed provider

Request explicit CVE status, patch date, tenant-isolation design and media retention. “vLLM is not public” is incomplete if an internal API still reaches the parser. Ask for version evidence and path validation.

Will a WAF detect a malicious video? Not reliably. The binary may be fetched server-side. A WAF can restrict the endpoint, but patching and sandboxing remain primary.


Primary sources: GitHub Advisory GHSA-4r2x-xpjr-7cvv, vLLM 0.14.1 release.

SHARE / COPY