Advisories
Security vulnerabilities, privacy incidents, safety concerns, and policy updates affecting LLMs and AI agents.
Security vulnerabilities, privacy incidents, safety concerns, and policy updates affecting LLMs and AI agents.
3,134 items
vLLM versions before 0.32.0 pass attacker-controlled image bytes to Pillow through Image.open(BytesIO(data)) without restricting decoder selection, so the MIME label does not constrain the format. Image-capable request paths via parse_image() and fetch_image() can dispatch an EPS payload to host components. A host with Ghostscript affected by CVE-2024-29510 can run commands with the vLLM process's privileges, while Pillow 12.0.0 through 12.2.0 can trigger CVE-2026-59203 and exhaust media-loading workers.
Fix: Fixed in 0.32.0.
NVD/CVE DatabasevLLM versions 0.11.1 through 0.32.0 are affected in the image path for DeepSeek-OCR, DeepSeek-OCR-2 and Unlimited-OCR. A remote client that can reach the OpenAI-compatible API can submit a legal image whose normalized pixels sum to zero while it is alone in its per-step encoder batch. This makes _parse_and_validate_image_input return no embedding, which triggers a fatal assertion in sanity_check_mm_encoder_outputs that shuts down the engine for all users.
Fix: Fixed in version 0.32.0.
vLLM versions prior to 0.32.0 use eager attention by default in the Phi-4 multimodal audio encoder (phi4mm_audio.py and phi4mm_utils.py). A remote client can submit a single legal long audio clip, causing MultiHeadedAttention.forward_attention to materialize and retain full attention matrices in self.attn. The resulting quadratic GPU memory use can trigger an out-of-memory condition that terminates EngineCore for all users.
Fix: Fixed in version 0.32.0.
vLLM versions before 0.32.0 are affected. An authenticated caller can place forged shared-memory address and monotonic_id values in public multimodal features.kwargs_data. In scale-out deployments with shared-memory multimodal caching enabled, workers pass attacker-selected bytes to pickle.loads(), allowing arbitrary Python execution even when insecure serialization is disabled.
Fix: Fixed in version 0.32.0.
NVD/CVE DatabaseFrom vLLM 0.19.0 through 0.32.0, authenticated callers can supply a request chat template when no server-side --chat-template is configured, and a malicious model repository can provide one as well. The template is rendered by tokenizer.apply_chat_template() with no wall-clock timeout, output-size limit, or iteration bound. A nonterminating render can block /v1/responses and other chat-template users, while an output-expanding render can exhaust server memory; Harmony models are not affected.
This issue is fixed in version 0.32.0.
CVE-2026-110474 affects the CreditNirvana Agentic AI Call Centre application. A static API key is hardcoded in its client-side JavaScript bundle, so an unauthenticated remote attacker can download those files and extract the key. The attacker could then make arbitrary API calls to retrieve call transcripts and recordings.
CVE-2026-116104 is a flaw in Sony Neural Network Libraries up to 1.39.0, in the func_set_nnabla_version_decorate function of python/src/nnabla/utils/converter/utils.py within the NNP Converter component. Manipulating the function.type argument leads to code injection, and the attack can be started remotely. A public exploit exists, and the vendor did not respond to early disclosure contact; the flaw affects only products no longer supported by the maintainer.
A vulnerability in Sony Neural Network Libraries up to 1.39.0 affects the function load_param_in_txt in python/src/nnabla/utils/cli/encode_decode_param.py, within the Encode Param Command Handler component. Manipulating it leads to code injection, and the attack can be launched remotely. A public exploit is available and might be used.
vLLM from 0.20.1 before 0.29.0 contains an improper input validation flaw, tracked as CVE-2026-116181. Remote attackers can supply out-of-vocabulary stop_token_ids in OpenAI chat, completion, generate, or batch requests to crash the engine or write outside the V2 runner's logits buffer.
vLLM from 0.8.5 before 0.31.0 contains a denial of service flaw. LogprobsTensors.empty_cpu() in vllm/v1/outputs.py allocates an uninitialized int32 tensor, and the V1 model runner leaves prompt positions reported as computed by a KV connector unwritten. A client sharing the engine can send prompt_logprobs (or echo with logprobs) against a connector-cached prefix, causing tokenizer decode to raise OverflowError, which crashes EngineCore and drops all co-tenant requests.
vLLM from 0.18.0 before 0.31.0 lets API clients bypass the video/jpeg frame-count cap by overriding num_frames through media_io_kwargs. Setting num_frames to -1 with a large inline video makes VideoMediaIO.load_base64 decode every frame, which exhausts memory and crashes the API frontend.
vLLM from 0.20.0 before 0.30.0 contains a denial of service flaw that lets remote attackers crash the engine. Attackers send inconsistent multimodal metadata, such as repeated or overlapping mm_placeholders ranges or mismatched kwargs_data and mm_hashes lists, to the disaggregated /inference/v1/generate endpoint. This produces a negative text span in Qwen2.5-VL position construction that terminates the engine.
vLLM versions from 0.10.2 before 0.25.0 contain an uncontrolled resource consumption flaw (CVE-2026-116177). The Nemotron-VL processors globally set Image.MAX_IMAGE_PIXELS to None, so unauthenticated attackers can submit a decompression-bomb image to /v1/chat/completions, exhausting memory, OOM-killing the worker, and denying service to co-tenants.
vLLM versions from 0.9.2 before 0.24.0 contain a server-side request forgery flaw. API callers can embed a decode address in the X-Request-Id header to force outbound connections. An attacker can make a P2pNcclConnector prefill worker ZMQ-connect to an attacker-controlled host, leaking the NCCL unique_id and KV-cache tensors or blocking the worker.
vLLM versions from 0.19.0 before 0.24.0 contain a decompression bomb flaw in the AudioMediaIO multimodal path, which calls load_audio without the max_duration_s decoded-duration limit. Authenticated attackers can send small compressed audio through input_audio or audio_url in /v1/chat/completions requests, and the audio expands to huge decoded PCM that exhausts server memory.
vLLM from 0.22.0 before 0.24.0 has an improper input validation flaw in the Rust gRPC Generate and GenerateStream service, which forwards unchecked prompt token IDs to EngineCore. An attacker can submit requests with out-of-vocabulary prompt.token_ids values, triggering a fatal embedding lookup failure that terminates EngineCore and leaves the server unhealthy.
vLLM from 0.22.0 before 0.24.0 has a denial of service flaw in its Rust gRPC frontend, tracked as CVE-2026-116173. Remote attackers can bypass logprob_token_ids limits by sending Generate or GenerateStream requests with output_logprobs enabled and more than 128 output_candidates.token_ids, which triggers a fatal sampler exception that terminates EngineCore.
vLLM versions from 0.22.0 before 0.24.0 contain an improper input validation flaw in the Rust gRPC converter. Remote attackers can bypass max_logprobs limits through CandidateTokens.top_n, sending Generate or GenerateStream requests with oversized or integer-wrapping top_n values that cause torch.topk to fail and terminate EngineCore.
Fix: Fixed in 0.24.0 (upgrade from versions before 0.24.0).
NVD/CVE DatabaseMLflow's tracking server exposes POST /ajax-api/3.0/mlflow/scorer/invoke without authentication, and its handler reflectively instantiates an attacker-named class from attacker-supplied JSON with unconstrained constructor kwargs. With the optional trulens and trulens-providers-litellm packages installed, an unauthenticated attacker can make the server send an outbound HTTP request to an arbitrary host carrying attacker-controlled headers.
The Postgres and SQLite stores in LangGraph joined namespace labels with `.`, so a label containing a dot, such as `("tenant.bob",)`, mapped to the same stored namespace as `("tenant", "bob")`. Although `put` rejected such labels, `get`, `search`, `delete`, `list_namespaces`, their async versions, and ops passed to `batch`/`abatch` did not, letting a caller read, overwrite or delete items in another namespace. All releases of `langgraph-checkpoint-postgres` before 3.1.3 and `langgraph-checkpoint-sqlite` before 3.1.2 are affected, while `InMemoryStore` is not.
Fix: Upgrade to `langgraph-checkpoint-postgres` 3.1.3 or `langgraph-checkpoint-sqlite` 3.1.2, which require `langgraph-checkpoint` 4.3.0. Stores outside this repository that turn namespaces into delimited text can call `langgraph.store.base.validate_op_namespace` for each op they run.