{"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","product":"vllm","affected":["vllm < 0.29.0"],"patched":["vllm 0.29.0"],"published":"2026-09-18","updated":"2026-09-28","sourceUpdated":"2026-09-28T18:36:00.710","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","osv","pip"],"ssvc":{"exploitation":"none","automatable":"no","technicalImpact":"partial","timestamp":"2026-09-21T18:29:51.620755Z"},"scores":{"nvd":3.7,"vendor":4.8,"cna":3.7,"osv":5.3},"ingestedAt":"2026-09-18T19:49:30.602Z","epss":0.00246,"epssPercentile":0.15742,"aliases":["PYSEC-2026-3998"],"ecosystem":"pip","slug":"CVE-2026-93840","body":"## Overview\n\nvLLM 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.\n\n## Affected\n\n- `vllm < 0.29.0`\n\n## Remediation\n\nUpgrade past the affected range:\n\n- `vllm 0.29.0`\n\n## Vendor advisories\n\n- **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-28 · [vex](https://security.access.redhat.com/data/csaf/v2/vex/2026/cve-2026-93840.json)\n\n## Package advisory (CVE-2026-93840)\n\nAffected packages:\n\n- `vllm < 0.29.0`\n\nPatched in:\n\n- `vllm 0.29.0`\n\nSource: https://osv.dev/vulnerability/PYSEC-2026-3998","depth":"sunlit","depthScore":20,"depthScoreParts":{"impact":20.4,"likelihood":0,"exploitation":0,"ransomware":0},"changes":[]}