Summary
When vLLM is configured to use Mooncake, unsafe deserialization exposed directly over ZMQ/TCP will allow attackers to execute remote code on distributed hosts.
Details
- Pickle deserialization vulnerabilities are well documented.
- The mooncake pipe is exposed over the network (by design to enable disaggregated prefilling across distributed environments) using ZMQ over TCP, greatly increasing exploitability. Only
sender_socket
and receiver_ack
are allowed to be accessed publicly, while the data actually decompressed by pickle.loads()
comes from recv_bytes. Its interface is defined as self.receiver_socket.connect(f\"tcp://{d_host}:{d_rank_offset + 1}\")
, where d_host
is decode_host
, a locally defined address 192.168.0.139,from mooncake.json (https://github.com/kvcache-ai/Mooncake/blob/main/doc/en/vllm-integration-v0.2.md?plain=1#L36).
- The root problem is
recv_tensor()
calls _recv_impl
which passes the raw network bytes to pickle.loads()
. Additionally, it does not appear that there are any controls (network, authentication, etc) to prevent arbitrary users from sending this payload to the affected service.
Impact
This is a remote code execution vulnerability impacting any deployments using Mooncake to distribute KV across distributed hosts.
Remediation
This issue is resolved by #14228
Summary
When vLLM is configured to use Mooncake, unsafe deserialization exposed directly over ZMQ/TCP will allow attackers to execute remote code on distributed hosts.
Details
sender_socket
andreceiver_ack
are allowed to be accessed publicly, while the data actually decompressed bypickle.loads()
comes from recv_bytes. Its interface is defined asself.receiver_socket.connect(f\"tcp://{d_host}:{d_rank_offset + 1}\")
, whered_host
isdecode_host
, a locally defined address 192.168.0.139,from mooncake.json (https://github.com/kvcache-ai/Mooncake/blob/main/doc/en/vllm-integration-v0.2.md?plain=1#L36).recv_tensor()
calls_recv_impl
which passes the raw network bytes topickle.loads()
. Additionally, it does not appear that there are any controls (network, authentication, etc) to prevent arbitrary users from sending this payload to the affected service.Impact
This is a remote code execution vulnerability impacting any deployments using Mooncake to distribute KV across distributed hosts.
Remediation
This issue is resolved by #14228