BLOG · GUIDE ·

vLLM security advisories 2026: which version fixes them, by how your endpoint is exposed

Eurokommerz, Vienna, since 2006: Private AI/ML · IT Managed Services · Enterprise Training · AI Hardware & Software

IN BRIEF
  • Between 11 August and 6 October 2026 vLLM published at least 17 security advisories in its GitHub repository: three rated High, twelve Moderate and two Low (list read on 24 October 2026)
  • vLLM 0.31.0 of 5 October 2026 is the first release outside the affected range of every one of them whose page we could open; the last High one, GHSA-h3rc-6mm3-gc2m, affects servers started with --trust-remote-code
  • vLLM 0.32.0 of 18 October 2026 adds hardening, such as no CORS origins by default, and needs Python 3.11 or later
  • Most advisories are denial of service from a single request; one unauthenticated request to /v1/embeddings or /pooling could stop the engine before 0.28.0
  • --api-key protects only routes under /v1, /v2, /inference and /cohere, so a reverse proxy that admits only the routes users need remains necessary on any version

Supplied by Eurokommerz: AI servers, built to order  Request a configuration →

Which vLLM version to run in October 2026

As of 24 October 2026, run vLLM 0.32.0 of 18 October 2026, or at least 0.31.0 of 5 October 2026. Of the advisories vLLM published in its GitHub repository between August and early October 2026, 0.31.0 is the first release outside the affected range of every one whose page we could open, and 0.32.0 adds further hardening. An endpoint that only trusted internal applications reach is less exposed than one open to all staff, but most of these flaws need nothing more than an ordinary request, so the version matters in both cases.

This page lists the advisories by the way a vLLM server is reached, because that decides which ones apply to you. The list was read on 24 October 2026. vLLM aims at a release about every two weeks, and new advisories appear between releases, so check the list again before every upgrade and treat this page as a dated snapshot.

RELEASEADVISORIES CLOSED
0.22.0API key bypass (Critical), pinned revisions not applied
0.27.0DeepStream video backend DoS
0.28.0embeddings crash (High), LlavaOnevision2 model code (High)
0.29.0cache_salt length, audio size, stop_token_ids
0.30.0 of 22 September 2026structured outputs, scale-out, rerank, LMCache-MP
0.31.0 of 5 October 2026--trust-remote-code revision RCE (High)
0.32.0 of 18 October 2026hardening: CORS, chat templates, image formats

vLLM repository security advisories and GitHub advisory database entries, opened one by one on 24 October 2026; dates of 0.30.0 to 0.32.0 from vLLM's GitHub release pages. The tables below list each advisory with its condition.

For the last three months the repository list shows at least 17 advisories published between 11 August and 6 October, three of them High, twelve Moderate and two Low. The list on GitHub is not sorted by publication date, so we opened each entry. vLLM's security policy defines Critical as "CVSS ≥ 9.0" and High as "between 7.0 and 8.9", and handles the two differently: Critical and High fixes are prepared in a private fork coordinated in advance with parties on a prenotification list, while Moderate and Low fixes go out as public pull requests without embargo.

Exposure 1: anyone who can send API requests

These advisories need only network access to the API port, and several work without an API key. On a server whose port the whole company network reaches, every one of them applies.

ADVISORYSEVERITYEFFECTFIXED IN
GHSA-25q3-v2hm-8vpfHigh, 7.5negative token id kills the engine0.28.0
GHSA-wpww-v874-ph2pModerate, 5.3huge cache_salt stalls scheduler0.29.0
GHSA-85xf-c7hm-whqwModerate, 6.5structured-output error ends engine0.30.0
GHSA-v5gm-qgmv-gc6cHigh (CVE record)stop_token_ids out of range0.29.0
GHSA-5fj9-pfhr-6j48Moderate, 5.9Rust frontend metrics fill memory0.30.0
GHSA-2phq-3phc-84pxModerate, 4.2/score, /rerank cache mix-up0.30.0
GHSA-94f4-hr76-p5j6Critical, 9.1use the API without the key0.22.0

advisory pages on GitHub (GHSA-2phq via GitHub's advisory database), read 24 October 2026; GHSA-v5gm from CVE-2026-100654 as mirrored in GitHub's advisory database ("vLLM before 0.29.0"). Scores are CVSS 3.1 as shown on GitHub, except the CVE record (CVSS 4.0, 7.1).

The first row shows the pattern. GHSA-25q3-v2hm-8vpf, published on 3 September 2026, describes a request to /v1/embeddings or /pooling with a negative token id that kills the engine "via a CUDA device-side assertion"; no authentication is needed, the server stays down until restarted, and the advisory says process supervision is not a workaround because the request can be repeated at once. For servers that cannot be upgraded, it suggests rejecting negative integers in input at a gateway and restricting access to those routes. The cache_salt advisory, published on 12 September, works on the chat, completions, responses and pooling endpoints and on the Anthropic-style /v1/messages, without a key, because prefix caching is on by default and no request-body limit applies by default.

The API key itself is the subject of the oldest entry in the table. GHSA-94f4-hr76-p5j6 (CVE-2026-48746), published on 2 June 2026 and rated Critical, let an attacker use the OpenAI-compatible API without the configured key in versions from 0.3.0 to before 0.22.0; servers behind "an RFC-conforming web server such as nginx" were not affected. Even on a current release the key does not cover every route. vLLM's security guide, dated 19 October 2026, says the key applies "only for endpoints under the /v1, /v2, /inference, and /cohere path prefixes" and names /invocations, /pooling, /classify, /score, /rerank, /pause, /update_weights and /metrics among the routes outside them. Two of the 2026 advisories add /tokenize, which the authentication check does not cover either. Our guide to securing a GPU server describes the reverse proxy and firewall that close these routes.

Exposure 2: images, audio and video in requests

Multimodal models accept media in requests, and media decoding is where many of the 2026 advisories sit. They are denial of service through memory, CPU or GPU decoder use; none of those we read allows code execution.

ADVISORYSEVERITYINPUTFIXED IN
GHSA-cqm8-jxg6-fqfqModerate, 5.3video, DeepStream backend0.27.0
GHSA-ph3r-5jfg-f84fModerate, 6.5multimodal processor cache0.28.0
GHSA-jcq2-4gch-5qhfModerate, 4.3audio beyond size limit0.29.0
GHSA-j682-9xp5-rrf3Low, 3.7video, PyNvVideoCodec0.29.0
GHSA-58v5-2m8f-94prModerate, 5.3video, GLMGA sampler0.30.0
GHSA-x6mc-67gf-chw4Moderatevideo, Qwen2-VL and Qwen3-VLpage not readable

advisory pages on GitHub (GHSA-ph3r via GitHub's advisory database, published to the repository on 28 September 2026), read 24 October 2026. GHSA-x6mc appears in the repository list, published 23 September 2026; its page did not load, and vLLM 0.30.0's notes list "Request-controlled video sampling capped for GLMGA (#54935) and Qwen-VL (#56729) backends".

Version 0.31.0 changed the default behind several of these. Its release notes say "per-request mm_processor_kwargs and media_io_kwargs are rejected unless --trust-request-mm-kwargs is set", and vLLM's security guide adds that only deployments whose API clients are trusted should start the server with that flag. The guide also recommends --allowed-media-domains against server-side request forgery, VLLM_MEDIA_URL_ALLOW_REDIRECTS=0 so that redirects cannot get around the list, and size limits such as VLLM_MAX_MEDIA_DOWNLOAD_SIZE_MB, 256 by default. Release 0.32.0 opens untrusted images with "a raster-format allowlist", which denies EPS, PostScript and WMF. If your model takes only text, none of this applies; if it takes images or video from users, these settings belong in the deployment with any version.

We supply GPU servers for private LLMs with the operating system, driver and container runtime installed on request; tell us which vLLM release and models you run and how users reach them, and our team replies with the upgrade path and the configuration for the next server.

Exposure 3: model code and pinned revisions

The third set concerns what a server loads rather than what users send. Two of the three High-rated repository advisories of August to October are here.

ADVISORYSEVERITYCONDITIONFIXED IN
GHSA-h3rc-6mm3-gc2mHigh, 8.1--trust-remote-code on0.31.0
GHSA-3c86-2m5g-59q7High, 7.8malicious LlavaOnevision2 model0.28.0
GHSA-3ww4-5jv9-j5gmModerate, 6.5pinned revisions not applied0.22.0
GHSA-hhv2-872h-628qHigh (CVE record)pins, FunAudioChat, Tarsier20.28.0

advisory pages on GitHub, read 24 October 2026; GHSA-hhv2 from CVE-2026-100653 as mirrored in GitHub's advisory database ("Versions 0.22.1 through 0.28.0", fixed in 0.28.0, CVSS 4.0 8.3).

GHSA-h3rc-6mm3-gc2m, published on 6 October 2026, is the reason for the 0.31.0 minimum. With --trust-remote-code on, a model whose processor uses dynamic code and a multimodal request, a client could set mm_processor_kwargs.code_revision and make the server load processor code from a revision an attacker controls, such as a pull request on the model's repository, which the advisory calls arbitrary Python execution in the API process by "an unauthenticated network client". Versions from 0.7.3 to before 0.31.0 are affected; the default, with remote code off, is not. GHSA-3c86-2m5g-59q7, published on 28 August, is different: the LlavaOnevision2 processor loader ran the model's code even with trust_remote_code=False, so a crafted model could execute code without the flag; it needs someone to load that model, and 0.28.0 fixed it.

The pin advisories are about integrity. A deployment started with --revision or --code-revision expects every file to come from that revision; GHSA-3ww4-5jv9-j5gm, published on 10 June 2026, found loaders that fetched secondary files, such as processors, GGUF files or side weights, from the default branch instead, and a later CVE record found two more architectures. Keep remote code off unless a model needs it, pin revisions, and serve models from a local model store that you fill through one controlled path, as our guide on installing an LLM server without internet access describes.

Exposure 4: internal ports, scale-out and disaggregated serving

A server that splits a model across nodes, or separates prefill and decode, opens ports beyond the API. vLLM's security guide states that "All communications between nodes in a multi-node vLLM deployment are insecure by default", names PyTorch Distributed, KV cache transfer and parallel communication, gives 14579 as the default KV transfer port and 29500 for the data-parallel master, and advises blocking every incoming connection except the API port.

ADVISORY OR RECORDSEVERITYCONDITIONFIXED IN
GHSA-ph72-cqr5-qpp7Moderate, 6.5scale-out render and generate routes0.30.0
GHSA-2823-qmq8-rwvjModerate, 6.5LMCache-MP connector0.30.0
CVE-2026-94622High (CVE record)NIXL connector, P/D splitnot stated
CVE-2026-94627High (CVE record)Mooncake connector, P/D splitnot stated

advisory pages in GitHub's advisory database (published to the repository on 23 September 2026), read 24 October 2026; the two CVE records describe "vLLM through 0.29.0", published by NVD on 21 September 2026, and name no fixed release (they link pull requests 54807 and 49796).

Release 0.30.0 also moved the scale-out endpoints behind a switch: its notes say /render, /derender and /inference/v1/generate "are no longer registered on plain vllm serve" and are opt-in through --enable-scale-out. For the NIXL and Mooncake records, check the linked pull requests against your release before you run a disaggregated deployment for untrusted users. A single server that runs each model on one card or one tensor-parallel pair opens none of these ports to the network if the firewall admits only the API port. Our guide to disaggregated LLM serving with NVIDIA Dynamo describes when a prefill and decode split is worth the extra surface.

What 0.31.0 and 0.32.0 change besides fixes

An upgrade for security brings the other changes of the release with it. In 0.31.0, the breaking changes include the rejection of per-request multimodal kwargs described above, the removal of tokenizer_mode="slow" and a renamed Mamba prefix-cache flag. Release 0.32.0 lists "Default CORS settings no longer allow every origin in the Python and Rust frontends", so a browser front end that called vLLM directly needs its origin configured; it drops Python 3.10, with 3.11 as the minimum; it requires transformers from 5.16.1 to below 5.20.0; and it treats max_tokens "as an upper bound on output rather than reserved from the context window". It also bounds P2P ZMQ peer sessions through VLLM_P2P_MAX_PEERS, 128 by default, and returns 400 for structured-output JSON schemas nested more than 64 levels. The 0.32.0 notes name advisory identifiers next to some of these items, among them GHSA-q97c-p368-75c4 for an off-by-one in the tokenizer's max_token_id and GHSA-frvg-qw88-hww9 for ZMQ socket exhaustion through unique peer addresses. On 24 October 2026 neither page could be opened and neither appeared in GitHub's advisory database; if they are published with 0.31.0 in the affected range, 0.32.0 becomes the minimum, so check them before you settle on 0.31.0.

Model support pulls in the same direction on RTX PRO Blackwell cards. vLLM 0.32.0 runs the NVFP4 KV cache on SM12x, and 0.30.0 made native NVFP4 kernels the default on SM120, as our guide to SM120 software support explains. A server pinned to an older release for a model therefore gives up both. Our guide to operating a private LLM platform suggests an upgrade every second or third minor release and sooner for a security fix, with an evaluation run before each switch.

How to keep track after 24 October 2026

Advisories reach you through three channels, and they differ. The repository list on GitHub carries vLLM's own advisories with affected and patched ranges. GitHub's advisory database republishes them, adds CVE numbers and marks them reviewed, and the reviewed entries name the pip package vllm, so dependency scanners that read the database can flag an installed version. CVE records filed by other parties, through VulDB or VulnCheck, also appear there as unreviewed entries without a package: two published on 6 October 2026, CVE-2026-105922 in the penalty handler and CVE-2026-105775 in a Mamba layer, describe "vLLM up to 0.31.0", are rated Low at 2.1 and name no fix. Read those records against the linked issues rather than the version alone.

  1. Record the exposure. Write down which routes users reach, whether --trust-remote-code is on, whether the model takes media and whether any internal port leaves the host.
  2. Read new advisories against it. Most entries state their preconditions; an audio advisory does not concern a text-only server.
  3. Upgrade on a second instance first. Read the release notes of every skipped version for breaking changes, run your evaluation set and the load test, then switch.

Our Private AI/ML service, delivered with our engineering partner Vixen.UNO, builds and supports private LLM platforms on vLLM; write to us with your current release and how the endpoint is exposed, and we tell you which advisories apply and what the upgrade involves.

FAQ

Which vLLM version fixes the 2026 CVEs and security vulnerabilities?
As of 24 October 2026, vLLM 0.31.0 of 5 October 2026 is the first release outside the affected range of every 2026 repository advisory whose page we could open, including the High-rated GHSA-h3rc-6mm3-gc2m for servers with --trust-remote-code. Release 0.32.0 of 18 October 2026 adds hardening such as no CORS origins by default, names further advisory identifiers in its notes that were not yet published on 24 October 2026, and needs Python 3.11.
Is vLLM's --api-key enough to secure the API?
No. vLLM's security guide says the key covers only routes under /v1, /v2, /inference and /cohere; routes such as /invocations, /pooling, /score, /rerank, /metrics and /tokenize answer without it. Put a reverse proxy in front that admits only the routes users need, and let the firewall admit only the API port.
What is the vLLM trust-remote-code vulnerability?
GHSA-h3rc-6mm3-gc2m, published on 6 October 2026 and rated High (CVSS 8.1), let a client choose the processor code revision through mm_processor_kwargs.code_revision on servers started with --trust-remote-code, which could load attacker-controlled code. Versions 0.7.3 to before 0.31.0 are affected; servers with remote code off are not.
How many security advisories did vLLM publish in 2026?
Between 11 August and 6 October 2026 alone, vLLM published at least 17 advisories in its GitHub repository, three rated High, twelve Moderate and two Low, by our count of the list read on 24 October 2026. Earlier 2026 entries include a Critical API key bypass fixed in 0.22.0. Most are denial of service through a crafted request.
Does a vLLM server need internet access to stay secure?
No. A server that serves local model files needs no internet access, and keeping remote code off, revisions pinned and models in a local store narrows the paths of the model-code advisories. Updates then come through your own controlled path: download the new release and checkpoints once, test them, and install them on the servers.
How do I find out which vLLM version I am running?
Check the version of the installed vllm package or the tag of the container image the server runs, and compare it with the "patched versions" field of each advisory. Pin images by digest so that the version you checked is the one that runs.

We supply GPU servers for private LLMs and deploy vLLM on them, upgraded and configured for the way your users reach it. Describe your task in a few sentences and our team will help. We reply within one business day. The first call is free.

Talk to an expert
Talk to an expert

We reply within one business day

By sending this form you agree that we process your details to answer your enquiry; see our privacy policy.

request@eurokommerz.at
Jordangasse 7, 1010 Vienna