Advisory details:
pypa / vllm/PYSEC-2026-3998
| Advisory ID | pypa/vllm/PYSEC-2026-3998 |
| Aliases |
CVE-2026-93840
PYSEC-2026-3998 |
| 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, causing LogitBiasState to corrupt GPU logits state and allow concurrent requests to sample tokens outside their allowlists. |
| Status | Published |
| Exploitability | 0.5 |
| Weighted Severity | 4.8 |
| Risk | 2.4 |
| Affected and Fixed Packages | Package Details |
| Introduced and Fixed Package Commit Patches | Package Commit Patches Details |
| There are no known CWE. |
| System | Score | Found at |
|---|---|---|
| cvssv3.1 | 5.3 | https://github.com/pypa/advisory-database/blob/main/vulns/vllm/PYSEC-2026-3998.yaml |
| Reference id | Reference type | URL |
|---|---|---|
| https://github.com/vllm-project/vllm | ||
| 49080 | Bug | https://github.com/vllm-project/vllm/pull/49080 |
| 5b0e5b69ac1a3884a6479c9537789c95263cc804 | Other | https://github.com/vllm-project/vllm/commit/5b0e5b69ac1a3884a6479c9537789c95263cc804 |
| logit_bias.py#L179-L191 | Other | https://github.com/vllm-project/vllm/blob/v0.28.0/vllm/v1/worker/gpu/sample/logit_bias.py#L179-L191 |
| sampling_params.py#L881-L903 | Other | https://github.com/vllm-project/vllm/blob/v0.28.0/vllm/sampling_params.py#L881-L903 |
| vllm-before-0.29.0-cross-request-logits-corruption-via-allowed-token-ids | Advisory | https://www.vulncheck.com/advisories/vllm-before-0.29.0-cross-request-logits-corruption-via-allowed-token-ids |
No EPSS data available for this advisory.
| Patch URL | |
|---|---|
| There are no known patches. | |
| Attack Vector (AV) | Attack Complexity (AC) | Privileges Required (PR) | User Interaction (UI) | Scope (S) | Confidentiality Impact (C) | Integrity Impact (I) | Availability Impact (A) |
|---|---|---|---|---|---|---|---|
network adjacent_network local physical |
low high |
none low high |
none required |
unchanged changed |
high low none |
high low none |
high low none |
There are no SSVC decisions available.