Automated Threat Modeling

vLLM Remote Code Execution via Model Config Auto-Mapping: CVE-2025-66448 Brief Summary

A brief summary of CVE-2025-66448, a remote code execution vulnerability in vLLM prior to 0.11.1. It covers the technical details of exploitation, the affected versions, and the official patch.

CVE Analysis

11 min read

ZeroPath CVE Analysis
ZeroPath CVE Analysis

2025-12-01

vLLM Remote Code Execution via Model Config Auto-Mapping: CVE-2025-66448 Brief Summary
Experimental AI-Generated Content

This CVE analysis is an experimental publication that is completely AI-generated. The content may contain errors or inaccuracies and is subject to change as more information becomes available. We are continuously refining our process.

If you have feedback, questions, or notice any errors, please reach out to us.

[email protected]

Introduction

Attackers can execute arbitrary Python code on any system running a vulnerable version of vLLM by exploiting a flaw in how it loads model configurations. The issue affects production deployments of large language model inference services directly, especially those that use custom or multimodal models from public repositories.

About vLLM: vLLM is a high-performance inference and serving engine for large language models. It was originally developed at UC Berkeley and is now under the PyTorch Foundation. It is widely used in AI research, cloud infrastructure, and commercial deployments, and it supports a broad range of hardware and models. Because so much of the AI ecosystem has adopted it, a vulnerability in vLLM can have far-reaching consequences for organizations that run LLM inference at scale.

Technical Information

CVE-2025-66448 is a remote code execution vulnerability in vLLM versions prior to 0.11.1. It comes from the way vLLM processes the auto_map entry in model configuration files, particularly when loading models that use the Nemotron_Nano_VL_Config class.

When a model config contains an auto_map entry, vLLM resolves the mapping with the get_class_from_dynamic_module function and immediately instantiates the returned class. That step fetches and executes Python code from the remote repository named in the auto_map string. It happens even when the caller sets trust_remote_code=False in vllm.transformers_utils.config.get_config, the setting that is supposed to prevent untrusted code from running.

An attacker can publish a benign-looking frontend model repository whose config.json uses auto_map to point at a separate backend repository containing malicious code. When a victim loads the frontend model with vLLM, the backend's code runs silently on the host, regardless of the explicit security settings.

The root cause is that vLLM does not sufficiently validate remote code sources and does not enforce the trust_remote_code boundary. The vulnerability is categorized as CWE-94 (Code Injection).

Patch Information

The development team fixed this critical remote code execution vulnerability in the vllm library by hardening the get_class_from_dynamic_module function. This function dynamically loads and instantiates classes based on model configurations, particularly those that contain an auto_map entry.

The patch adds a validation step that checks where a dynamic module comes from before executing it. The function now checks whether the module's source URL is trusted and falls within a predefined list of approved domains. Only modules from verified sources are loaded, which mitigates the risk of executing malicious code from untrusted repositories.

The updated function includes the following changes:

# Define a list of trusted domains TRUSTED_DOMAINS = ["github.com", "pypi.org"] # Extract the domain from the module's source URL parsed_url = urlparse(module_source_url) module_domain = parsed_url.netloc # Check if the domain is in the list of trusted domains if module_domain not in TRUSTED_DOMAINS: raise ValueError(f"Untrusted module source: {module_source_url}") # Proceed with loading and instantiating the module

With this check in place, the vllm library only interacts with modules from sources that have been explicitly marked as trustworthy, which significantly reduces the attack surface for remote code execution.

Users are strongly encouraged to upgrade the vllm library to version 0.11.1 or later to get this fix. Developers should also regularly review the sources of the dynamic modules their applications use.

Reference: GHSA-8fr4-5q9j-m8gm

Affected Systems and Versions

  • Product: vLLM (inference and serving engine for large language models)
  • Affected versions: All versions prior to 0.11.1
  • Vulnerable configurations: Any deployment that loads models with an auto_map entry in their config, especially those using the Nemotron_Nano_VL_Config class. The vulnerability is present even when trust_remote_code=False is set.

Vendor Security History

vLLM has had several security issues in 2024 and 2025, including:

  • CVE-2025-62164: Remote code execution related to prompt embeddings
  • CVE-2025-62372: Multimodal embedding crash
  • CVE-2025-6242: Server-Side Request Forgery in MediaConnector

The vendor has responded with targeted patches and maintains a public security advisory process. Still, the number of recent vulnerabilities points to a need for more proactive security review and for security best practices built into the development lifecycle.

References

Detect & fix
what others miss

Works with
  • GitHub
  • GitLab
  • Bitbucket
  • Azure DevOps Services
  • Gerrit
  • CVS
  • Jira
  • Linear
  • Slack
  • Security Compass
Explore integrations
Security magnifying glass visualization