| Title | vLLM Project (vllm-project) vLLM v0.26.0 Denial of Service |
|---|
| Description | vLLM's experimental Rust frontend terminates the entire server process when it loads a tiktoken vocabulary file that assigns the same rank to two tokens.
TiktokenTokenizer::new() -- the constructor used on the production model-load path (rust/src/text/src/backend/hf/mod.rs:27) -- first attempts to load the vocabulary with the `riptoken` backend. A duplicate rank makes riptoken return Err, so new() falls back to `tiktoken-rs` (rust/src/tokenizer/src/tiktoken.rs:274). That backend asserts on the resulting encoder/decoder length mismatch rather than returning an error, panicking at tiktoken-rs-0.9.1/src/patched_tiktoken.rs:33.
Because the workspace sets `panic = "abort"` in its release profile, the panic is not recoverable by the caller: the process aborts instead of the load returning Err, which the fallible signature of new() leads callers to expect.
Impact is availability only. There is no memory unsafety -- the panic is a controlled abort -- and no disclosure. The trigger is loading a malformed or hostile tokenizer file, i.e. an operator action when loading an untrusted model, not a network request. |
|---|
| Source | ⚠️ https://github.com/vllm-project/vllm/issues/50954 |
|---|
| User | Zyz3366 (UID 97230) |
|---|
| Submission | 08/07/2026 18:05 (1 month ago) |
|---|
| Moderation | 09/13/2026 11:41 (1 month later) |
|---|
| Status | Accepted |
|---|
| VulDB entry | 403267 [vllm-project vLLM up to 0.29.0 tiktoken vocab File mod.rs TiktokenTokenizer::new denial of service] |
|---|
| Points | 20 |
|---|