CVE-2026-22807: Verified Repro With Script Download
CVE-2026-22807: vLLM RCE via auto map dynamic module loading
CVE-2026-22807 is verified against vllm · pip. Affected versions: >= 0.10.1, < 0.14.0. Vulnerability class: RCE. This high reproduction includes runnable sandbox proof, artifacts, and a plain-text agent view under REPRO-2026-00078.
What Is CVE-2026-22807?
CVE-2026-22807 is a high-severity remote code execution vulnerability in vLLM, caused by loading Hugging Face auto_map dynamic modules during model resolution without honoring the trust_remote_code setting. Pruva reproduced it (reproduction REPRO-2026-00078).
CVE-2026-22807 Severity & CVSS Score
CVE-2026-22807 is rated high severity, with a CVSS base score of 8.8 out of 10.
High — serious impact or readily exploitable. Prioritize remediation.
Affected vllm Versions
vllm · pip versions >= 0.10.1, < 0.14.0 are affected.
How to Reproduce CVE-2026-22807
pruva-verify REPRO-2026-00078 curl -O https://pruva.dev/api/v1/reproductions/REPRO-2026-00078/artifacts/reproduction_steps.sh && chmod +x reproduction_steps.sh && ./reproduction_steps.sh Proof of Reproduction for CVE-2026-22807
Reproduced by Pruva's autonomous agents — 298 tool calls over 21 min. Full root-cause analysis and the complete transcript are below.
How the agent worked
Root Cause and Exploit Chain for CVE-2026-22807
try_get_class_from_dynamic_module delegates to Transformers get_class_from_dynamic_module without calling resolve_trust_remote_code, and the registry passes no trust_remote_code value when iterating auto_map entries.
CVE-2026-22807 Reproduction Transcript
The agent's step-by-step process — every tool call, every handoff, the moment the exploit fired.
Full session Replay every step — scrub the timeline or play it back.
ls -latotal 28 drwxr-xr-x 6 root root 4096 Jan 22 08:23 . drwxr-xr-x 4 root root 4096 Jan 22 08:23 .. drwxr-xr-x 3 root root 4096 Jan 22 08:22 artifacts drwxr-xr-x 2 root root 4096 Jan 22 08:22 coding -rw-r--r-- 1 root root 687 Jan 22 08:23 handoffs.jsonl drwxr-xr-x 2 root root 4096 Jan 22 08:23 logs drwxr-xr-x 2 root root 4096 Jan 22 08:22 repro
{"output":"{\"returncode\": 0, \"stdout\": \"total 28\\ndrwxr-xr-x 6 root root 4096 Jan 22 08:23 .\\ndrwxr-xr-x 4 root root 4096 Jan 22 08:23 ..\\ndrwxr-xr-x 3 root root 4096 Jan 22 08:22 artifacts\\ndrwxr-xr-x 2 root ro"}cat ticket.md# GHSA-2pc9-4j83-qjmr: vLLM affected by RCE via auto_map dynamic module loading during model initialization ## Description # Summary vLLM loads Hugging Face `auto_map` dynamic modules during model resolution **without gating on `trust_remote_code`**, allowing attacker-controlled Python code in a model repo/path to execute at server startup. ---
{"output":"{\"returncode\": 0, \"stdout\": \"# GHSA-2pc9-4j83-qjmr: vLLM affected by RCE via auto_map dynamic module loading during model initialization\\n\\n## Description\\n# Summary\\n\\nvLLM loads Hugging Face `auto_m"}ls -la artifacts/runs/ghsa-2pc9-4j83-qjmr/20260122-082249/repols: cannot access 'artifacts/runs/ghsa-2pc9-4j83-qjmr/20260122-082249/repo': No such file or directory
{"output":"{\"returncode\": 2, \"stdout\": \"\", \"stderr\": \"ls: cannot access 'artifacts/runs/ghsa-2pc9-4j83-qjmr/20260122-082249/repo': No such file or directory\\n\", \"cwd\": \"/home/user/pruva/artifacts/runs/ghsa-2pc9-"}ls -la artifacts/runs/ghsa-2pc9-4j83-qjmr/20260122-082249ls: cannot access 'artifacts/runs/ghsa-2pc9-4j83-qjmr/20260122-082249': No such file or directory
{"output":"{\"returncode\": 2, \"stdout\": \"\", \"stderr\": \"ls: cannot access 'artifacts/runs/ghsa-2pc9-4j83-qjmr/20260122-082249': No such file or directory\\n\", \"cwd\": \"/home/user/pruva/artifacts/runs/ghsa-2pc9-4j83-"}ls -la artifactstotal 12 drwxr-xr-x 3 root root 4096 Jan 22 08:22 . drwxr-xr-x 6 root root 4096 Jan 22 08:23 .. drwxr-xr-x 2 root root 4096 Jan 22 08:22 prepped
{"output":"{\"returncode\": 0, \"stdout\": \"total 12\\ndrwxr-xr-x 3 root root 4096 Jan 22 08:22 .\\ndrwxr-xr-x 6 root root 4096 Jan 22 08:23 ..\\ndrwxr-xr-x 2 root root 4096 Jan 22 08:22 prepped\\n\", \"stderr\": \"\", \"cwd\""}ls -la artifacts/preppedtotal 8 drwxr-xr-x 2 root root 4096 Jan 22 08:22 . drwxr-xr-x 3 root root 4096 Jan 22 08:22 ..
{"output":"{\"returncode\": 0, \"stdout\": \"total 8\\ndrwxr-xr-x 2 root root 4096 Jan 22 08:22 .\\ndrwxr-xr-x 3 root root 4096 Jan 22 08:22 ..\\n\", \"stderr\": \"\", \"cwd\": \"/home/user/pruva/artifacts/runs/ghsa-2pc9-4j83-q"}find /home/user/pruva -maxdepth 4 -type d -name repo{"output":"{\"returncode\": 0, \"stdout\": \"\", \"stderr\": \"\", \"cwd\": \"/home/user/pruva/artifacts/runs/ghsa-2pc9-4j83-qjmr/20260122-082249/ghsa-2pc9-4j83-qjmr\"}"}git --versiongit version 2.43.0
python3 --versionPython 3.11.14
mkdir -p /home/user/pruva/work{"output":"{\"returncode\": 0, \"stdout\": \"\", \"stderr\": \"\", \"cwd\": \"/home/user/pruva/artifacts/runs/ghsa-2pc9-4j83-qjmr/20260122-082249/ghsa-2pc9-4j83-qjmr\"}"}git clone https://github.com/vllm-project/vllm.git /home/user/pruva/work/vllmCloning into '/home/user/pruva/work/vllm'...
{"output":"{\"returncode\": null, \"stdout\": \"\", \"stderr\": \"Cloning into '/home/user/pruva/work/vllm'...\\n\", \"error\": \"Command timed out after 60.0 seconds\", \"cwd\": \"/home/user/pruva/artifacts/runs/ghsa-2pc9-4j83-q"}Artifacts and Evidence for CVE-2026-22807
Scripts, logs, diffs, and output captured during the reproduction.
No artifacts available
How to Fix CVE-2026-22807
FAQ: CVE-2026-22807
How does the CVE-2026-22807 attack lead to code execution?
Which vLLM versions are affected by CVE-2026-22807?
How can I reproduce CVE-2026-22807?
References for CVE-2026-22807
Authoritative sources for CVE-2026-22807 — official vulnerability databases and the upstream advisory. Pruva's reproduction verifies the issue firsthand; these are the primary records to corroborate it.