high Vllm Serving · AI Security

vLLM 0.31.0 Fixes Remote Code Execution Through Request-Controlled code_revision, Plus Four Other Advisories

Data graphic: attack chain from an unauthenticated /tokenize request through mm_processor_kwargs.code_revision and an attacker-controlled repository revision to processor code running under --trust-remote-code
AK

Threat intelligence editor · Published Oct 14, 2026, 12:49 PM EDT

vLLM 0.31.0 closes five 6 October advisories, led by a code_revision flaw that can run attacker code with --trust-remote-code. No CVE ids yet; scores disagree.

vLLM published five security advisories on 6 October 2026, all fixed in release 0.31.0. The most serious, GHSA-h3rc-6mm3-gc2m, lets a request choose which revision of a model's Hugging Face processor code gets imported. On servers started with --trust-remote-code, that can mean remote code execution in the API process. None of the five advisories has a CVE id, so track them by GHSA id. For the rest of the release, including the breaking flag changes, see our vLLM 0.31.0 upgrade notes.

The code_revision flaw (GHSA-h3rc-6mm3-gc2m)

A multimodal request can set mm_processor_kwargs.code_revision. Request values are merged over the startup configuration, the request value wins, and the processor-kwarg filter keeps code_revision. The loader pins revision and trust_remote_code but not code_revision, so Transformers imports dynamic auto_map.AutoProcessor code from whichever revision the caller names. The operator's pinned model revision stays in place, but the executed Python can come from another revision of the same repository. The code runs in the API process.

The advisory rates it High, CVSS 8.1 (AV:N/AC:H/PR:N), CWE-94 and CWE-829. Its own text argues that the affected configuration deserves AC:L and 9.8, so the score on the page and the score in the text disagree. Affected: vllm >=0.7.3 and <0.31.0; the range was not bisected. Fix: 0.31.0 (PR #58830).

Data graphic: lollipop chart of the five 6 October 2026 vLLM advisories by CVSS score, from 8.1 for GHSA-h3rc-6mm3-gc2m down to 3.7 for GHSA-6cxc-2vcg-w5qc

The five vLLM advisories published 6 October 2026, by CVSS score as listed on each advisory page. None has a CVE id.

Exposure needs all of the following:

  • --trust-remote-code is on (default is off, and off is not affected).
  • The served model's processor uses dynamic auto_map code.
  • The attacker can make a revision of that repository exist, for example a Hub pull-request ref where those are allowed, and the server can fetch it or already has it cached.
  • A multimodal request reaches the processor.

The entry point is /tokenize, plus chat completions. vLLM's authentication middleware covers only the /v1, /v2, /inference and /cohere prefixes, so /tokenize is open even when --api-key is set, unless a proxy in front guards it.

EngineCore crash (GHSA-p92p-rxj5-7p2x)

Moderate, CVSS 6.5 (AV:N/AC:L/PR:L/A:H), CWE-345, affects versions below 0.31.0, fixed by PR #57833. The reporter reproduced it on the vllm/vllm-openai:v0.29.0 image with default settings. The advisory title says unauthenticated, but the vector carries PR:L, so the title and the score do not match either.

A client-supplied uuid on image_url, video_url or input_audio parts becomes the cache key (mm_hash) verbatim. Two LRU caches, P0 in the API process and P1 in EngineCore, evict independently. P0 is written before prompt-length validation, so rejected requests still alter it. A P1 hit returns cached data without checking modality, shape or token count, and the resulting placeholder mismatch in _merge_multimodal_embeddings is fatal to EngineCore. The engine stays down until someone restarts it. The endpoints named are /v1/chat/completions and /v1/responses. No user-side workaround is listed, and the project's "Multimodal Media UUID Security" guidance does not address it.

The other advisories from 6 October

AdvisoryIssueSeverityAffected
GHSA-4xqp-c3mv-qff7min_tokens of 2147483648 with null max_tokens on /inference/v1/generate kills the EngineCore input thread while /health stays 200Moderate, 6.5<0.31.0 (PR #57731)
GHSA-823j-m4cj-hmjfMOSS-Audio models: unbounded processor cache fed by /tokenize mm_processor_kwargs, memory exhaustionHigh, 7.5>0.24.0, <0.31.0
GHSA-6cxc-2vcg-w5qcStale allowed_token_ids mask in recycled batch slots constrains another client's requestLow, 3.7<0.31.0 per metadata, text says <=0.30.0 (PR #43931)

The hang is the operationally nasty one: health checks pass while the engine's input thread is dead. The route is mounted by default in v0.29.0 and is unauthenticated unless --api-key is set. For the MOSS-Audio bug, --api-key does not cover /tokenize; the advisory suggests an authenticating or rate-limiting reverse proxy as a stopgap.

What to check

  1. Upgrade to vllm 0.31.0 or later. For the crash advisory (p92p) no user-side workaround is listed.
  2. Find servers launched with --trust-remote-code and check whether the model's processor uses auto_map.AutoProcessor. If you do not need remote code, turn it off.
  3. Do not expose /tokenize or /inference/* directly. Put authentication or rate limiting at a proxy, since --api-key does not guard /tokenize. Setting --api-key does guard /inference/v1/generate for the 4xqp hang.
  4. Check that no external user can create revisions of your model repositories, and review which revisions are in your Hugging Face cache.
  5. Alert on generation latency or queue depth, not just /health, given the 4xqp hang.
  6. Five earlier advisories, published on 3, 12 and 23 September, appear on the same advisory list; check their affected ranges against your version.

Sources

Keep reading

All latest →
  1. elevatedAI SecurityPhishing Emails Now Carry Hidden Instructions for AI Assistants as Well as Lures for People4 min
  2. elevatedAI SecurityCyberXero Broker Ran 51 Claude Code Agents Against Ukrainian Utilities and WordPress Sites4 min
  3. elevatedAI SecurityFuzzing 273 MCP Servers Found 253 Verified Bugs, and Most Tools Trust Whatever the Model Sends3 min
  4. elevatedAI SecurityOllama Pull API SSRF (CVE-2026-108836): Medium-Severity Flaw in Versions Up to 0.34.1, With a Public Exploit5 min
  5. highAI SecurityGoogle ad that points to Bing leads to a fake Claude installer that swaps the command you copy6 min
  6. highAI SecurityOpen directories exposed an attacker's Claude Code sessions: how ARTEX was used against Korean financial firms7 min