Critical severityNVD Advisory· Published Mar 19, 2025· Updated Mar 22, 2025
vLLM Allows Remote Code Execution via Mooncake Integration
CVE-2025-29783
Description
vLLM is a high-throughput and memory-efficient inference and serving engine for LLMs. When vLLM is configured to use Mooncake, unsafe deserialization exposed directly over ZMQ/TCP on all network interfaces will allow attackers to execute remote code on distributed hosts. This is a remote code execution vulnerability impacting any deployments using Mooncake to distribute KV across distributed hosts. This vulnerability is fixed in 0.8.0.
Affected packages
Versions sourced from the GitHub Security Advisory.
| Package | Affected versions | Patched versions |
|---|---|---|
vllmPyPI | >= 0.6.5, < 0.8.0 | 0.8.0 |
Affected products
1Patches
1288ca110f68d[Security] Serialize using safetensors instead of pickle in Mooncake Pipe (#14228)
1 file changed · +6 −6
vllm/distributed/kv_transfer/kv_pipe/mooncake_pipe.py+6 −6 modified@@ -2,13 +2,14 @@ import json import os -import pickle from concurrent.futures import ThreadPoolExecutor from dataclasses import dataclass from typing import Optional, Union import torch import zmq +from safetensors.torch import load as safetensors_load +from safetensors.torch import save as safetensors_save from vllm.config import KVTransferConfig from vllm.distributed.kv_transfer.kv_pipe.base import KVPipeBase @@ -237,14 +238,13 @@ def tensor_hash(self, tensor: torch.Tensor) -> int: return hash(tensor.data_ptr()) def _send_impl(self, tensor: torch.Tensor) -> None: - """Implement the tensor sending logic.""" - value_bytes = pickle.dumps(tensor) - self.transfer_engine.send_bytes(value_bytes) + """Implement the tensor sending logic using safetensors.""" + self.transfer_engine.send_bytes(safetensors_save({"tensor": tensor})) def _recv_impl(self) -> torch.Tensor: - """Implement the tensor receiving logic.""" + """Implement the tensor receiving logic using safetensors.""" data = self.transfer_engine.recv_bytes() - return pickle.loads(data) + return safetensors_load(data)["tensor"].to(self.device) def send_tensor(self, tensor: Optional[torch.Tensor]) -> None: """Send tensor to the target process."""
Vulnerability mechanics
Generated by null/stub on May 9, 2026. Inputs: CWE entries + fix-commit diffs from this CVE's patches. Citations validated against bundle.
References
6- github.com/advisories/GHSA-x3m8-f7g5-qhm7ghsaADVISORY
- nvd.nist.gov/vuln/detail/CVE-2025-29783ghsaADVISORY
- github.com/pypa/advisory-database/tree/main/vulns/vllm/PYSEC-2025-63.yamlghsaWEB
- github.com/vllm-project/vllm/commit/288ca110f68d23909728627d3100e5a8db820aa2ghsax_refsource_MISCWEB
- github.com/vllm-project/vllm/pull/14228ghsax_refsource_MISCWEB
- github.com/vllm-project/vllm/security/advisories/GHSA-x3m8-f7g5-qhm7ghsax_refsource_CONFIRMWEB
News mentions
0No linked articles in our index yet.