CVE-2025-9141 json
vLLM has remote code execution vulnerability in the tool call parser for Qwen3-Coder
published last yr. modified last mo. also GHSA-79j6-g2m3-jgfw , PYSEC-2026-2014
- cvss
- 8.8
- version 3.1, GitHub
- cisa kev
- Not listed
- not in CISA's catalog
- epss
- —
- no EPSS score yet
- public exploits
- 0
- none known
Summary
### Summary An unsafe deserialization vulnerability allows any authenticated user to execute arbitrary code on the server if they are able to get the model to pass the code as an argument to a tool call.
### Details vLLM's [Qwen3 Coder tool parser](https://github.com/vllm-project/vllm/blob/main/vllm/entrypoints/openai/tool_parsers/qwen3coder_tool_parser.py) contains a code execution path that uses Python's `eval()` function to parse tool call parameters. This occurs during the parameter conversion process when the parser attempts to handle unknown data types.
This code path is reached when: 1. Tool calling is enabled (`--enable-auto-tool-choice`) 2. The qwen3_coder parser is specified (`--tool-call-parser qwen3_coder`) 3. The parameter type is not explicitly defined or recognized
### Impact Remote Code Execution via Python's `eval()` function.
Patch / fix
- pypi vllm 0.10.1.1
- github.com/vllm-project/vllm@4594fc3 commit
- github.com/vllm-project/vllm#21396 pull request
Is CVE-2025-9141 in your dependencies? Fencer shows which of your repositories are affected as soon as an advisory lands, and opens the fix as a pull request.
Check with FencerVendor advisories
What the vendors themselves say about their products: affected, fixed or not affected, and what to do.
red hat product security vex CVE-2025-9141 updated cvss 8.8
vllm: quen3: RCE in vllm tool call parser for qwen3coder
-
Red Hat Enterprise Linux AI (RHEL AI) rhelai1/smollm3-3b, rhelai1/gemma-3n-e4b-it, rhelai1/modelcar-smollm3-3b, rhelai1/modelcar-gemma-3n-e4b-it, rhelai1/qwen3-4b-quantized-w4a16, rhelai1/deepseek-r1-0528-quantized-w4a16, +4 morenot affected: vulnerable code not present
Red Hat CSAF VEX © Red Hat, Inc., from https://security.access.redhat.com/data/csaf/v2/vex/; changed: reduced to product statuses and remediations. CC BY 4.0 · csaf
CVSS scores
| assigned by | version | score | vector |
|---|---|---|---|
| GitHub | 3.1 | 8.8 | CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H |
| OSV | 3.1 | 8.8 | CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H |
Affected packages
| ecosystem | package | affected | fixed in |
|---|---|---|---|
| pypi | vllm | >=0.10.0, <0.10.1.1 |
0.10.1.1 |
Classification
- Weakness
-
- CWE-502 Deserialization of Untrusted Data
References
-
github.com
/vllm-project/vllm/pull/21396
web
-
github.com
/vllm-project/vllm/commit/4594fc3b281713bd3d7634405b4a1393af40d294
web
-
github.com
/vllm-project/vllm/security/advisories/GHSA-79j6-g2m3-jgfw
web
-
github.com
/vllm-project/vllm
package
-
pypi.org
/project/vllm
package
-
github.com
/advisories/GHSA-79j6-g2m3-jgfw
advisory
-
nvd.nist.gov
/vuln/detail/CVE-2025-9141
advisory
Sources
- GitHub Advisory GHSA-79j6-g2m3-jgfw
- OSV PYSEC-2026-2014
Fencer Intel keeps one entry per vulnerability: the CVE id wins, then GHSA, and records that alias each other are merged, except that two CVEs always keep separate entries. The same data is available as JSON.