---
id: CVE-2026-93840
title: >-
  vLLM before 0.29.0 validates allowed_token_ids against tokenizer length
  instead of model output logits width in
  SamplingParams._validate_allowed_token_ids()
summary: >-
  vLLM before 0.29.0 validates allowed_token_ids against tokenizer length
  instead of model output logits width in
  SamplingParams._validate_allowed_token_ids(). Attackers can supply token IDs
  above the output vocabulary that pass validation…
severity: low
cvss: 3.7
cvssVector: 'CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:L/A:N'
cwe:
  - CWE-129
  - CWE-787
vendor: vllm-project
product: vllm
affected:
  - vllm < 0.29.0
published: '2026-09-18'
updated: '2026-09-22'
sourceUpdated: '2026-09-22T20:25:55.870'
source: NVD
sourceUrl: 'https://nvd.nist.gov/vuln/detail/CVE-2026-93840'
references:
  - url: 'https://github.com/vllm-project/vllm'
    label: disclosure@vulncheck.com
  - url: >-
      https://github.com/vllm-project/vllm/blob/v0.28.0/vllm/sampling_params.py#L881-L903
    label: disclosure@vulncheck.com
  - url: >-
      https://github.com/vllm-project/vllm/blob/v0.28.0/vllm/v1/worker/gpu/sample/logit_bias.py#L179-L191
    label: disclosure@vulncheck.com
  - url: >-
      https://github.com/vllm-project/vllm/commit/5b0e5b69ac1a3884a6479c9537789c95263cc804
    label: disclosure@vulncheck.com
  - url: 'https://github.com/vllm-project/vllm/pull/49080'
    label: disclosure@vulncheck.com
  - url: >-
      https://www.vulncheck.com/advisories/vllm-before-0.29.0-cross-request-logits-corruption-via-allowed-token-ids
    label: disclosure@vulncheck.com
  - url: >-
      https://security.access.redhat.com/data/csaf/v2/vex/2026/cve-2026-93840.json
  - url: 'https://access.redhat.com/security/cve/CVE-2026-93840'
  - url: 'https://bugzilla.redhat.com/show_bug.cgi?id=2538642'
  - url: 'https://www.cve.org/CVERecord?id=CVE-2026-93840'
  - url: 'https://nvd.nist.gov/vuln/detail/CVE-2026-93840'
tags:
  - nvd
  - cve.org
  - csaf
  - vex
  - red-hat
epss: 0.00412
epssPercentile: 0.32608
ssvc:
  exploitation: none
  automatable: 'no'
  technicalImpact: partial
  timestamp: '2026-09-21T18:29:51.620755Z'
ingestedAt: '2026-09-18T19:49:30.602Z'
scores:
  nvd: 3.7
  vendor: 4.8
  cna: 3.7
---

## Overview

vLLM before 0.29.0 validates allowed_token_ids against tokenizer length instead of model output logits width in SamplingParams._validate_allowed_token_ids(). Attackers can supply token IDs above the output vocabulary that pass validation, causing LogitBiasState to corrupt GPU logits state and allow concurrent requests to sample tokens outside their allowlists.

## Remediation

Refer to the linked advisories for vendor-supplied fixes and affected version ranges.

## Vendor advisories

- **Red Hat VEX** · Moderate · affected: Red Hat AI Inference Server, Red Hat Enterprise Linux AI (RHEL AI) 3, Red Hat OpenShift AI (RHOAI) · no fix planned: Red Hat AI Inference Server, Red Hat Enterprise Linux AI (RHEL AI) 3, Red Hat OpenShift AI (RHOAI) · updated 2026-09-22 · [vex](https://security.access.redhat.com/data/csaf/v2/vex/2026/cve-2026-93840.json)
