CVE-2025-66455

LMDeploy is a toolkit for compressing, deploying, and serving large language models. Starting in version 0.9.2 and prior to version 0.16.0, LMDeploy's PyTorch DistServe/PD-disaggregation control plane used `recv_pyobj()` to deserialize messages received through a ZeroMQ PULL socket. PyZMQ implements `recv_pyobj()` using Python pickle deserialization, which can execute arbitrary code while reconstructing an object. The peer address used by the receiver was supplied through the `POST /distserve/p2p_connect` HTTP endpoint. An attacker who could reach an affected DistServe API server could cause the server to connect to an attacker-controlled ZeroMQ endpoint and deserialize a crafted pickle payload. API-key authentication is not enabled unless the operator explicitly configures it. As a result, affected DistServe deployments without API keys allowed unauthenticated remote code execution with the privileges of the LMDeploy serving process. This issue affects the PyTorch backend when PD-disaggregation/DistServe is enabled. Ordinary deployments that do not use the affected disaggregated-serving path do not expose this data flow. The fix was released in LMDeploy 0.16.0. Users who cannot upgrade immediately should prevent untrusted clients from reaching `/distserve/*` endpoints, restrict the DistServe HTTP and ZeroMQ control planes to trusted cluster networks, configure API-key authentication, and block arbitrary outbound ZeroMQ connections from serving nodes. These measures reduce exposure but do not make pickle deserialization safe.
Configurations

No configuration.

History

14 Oct 2026, 13:10

Type Values Removed Values Added
Summary
  • (es) LMDeploy es un kit de herramientas para comprimir, desplegar y servir modelos de lenguaje grandes. A partir de la versión 0.9.2 y versiones anteriores a la versión 0.16.0, el plano de control PyTorch DistServe/PD-disaggregation de LMDeploy utilizaba 'recv_pyobj()' para deserializar mensajes recibidos a través de un socket ZeroMQ PULL. PyZMQ implementa 'recv_pyobj()' utilizando la deserialización de Python pickle, que puede ejecutar código arbitrario al reconstruir un objeto. La dirección del par utilizada por el receptor se suministraba a través del endpoint HTTP 'POST /distserve/p2p_connect'. Un atacante que pudiera alcanzar un servidor API DistServe afectado podría hacer que el servidor se conectara a un endpoint ZeroMQ controlado por el atacante y deserializara una carga útil pickle manipulada. La autenticación con clave API no está habilitada a menos que el operador la configure explícitamente. Como resultado, las implementaciones de DistServe afectadas sin claves API permitían la ejecución remota de código no autenticada con los privilegios del proceso de servicio de LMDeploy. Este problema afecta al backend de PyTorch cuando PD-disaggregation/DistServe está habilitado. Las implementaciones ordinarias que no utilizan la ruta de servicio desagregado afectada no exponen este flujo de datos. La corrección se lanzó en LMDeploy 0.16.0. Los usuarios que no puedan actualizar de inmediato deben evitar que clientes no confiables accedan a los endpoints '/distserve/*', restringir los planos de control HTTP y ZeroMQ de DistServe a redes de clúster confiables, configurar la autenticación con clave API y bloquear las conexiones ZeroMQ salientes arbitrarias desde los nodos de servicio. Estas medidas reducen la exposición, pero no hacen que la deserialización de pickle sea segura.

18 Sep 2026, 18:17

Type Values Removed Values Added
New CVE

Information

Published : 2026-09-18 18:17

Updated : 2026-10-14 13:10


NVD link : CVE-2025-66455

Mitre link : CVE-2025-66455

CVE.ORG link : CVE-2025-66455


JSON object : View

Products Affected

No product.

CWE
CWE-502

Deserialization of Untrusted Data