Un solo mensaje, ejecutándose como root

El equipo de investigación de seguridad de JFrog reveló el CVE-2026-105192 el 7 de octubre y lo puntuó con 9,8 y severidad crítica. Lo encontró Yuval Moravchick, del mismo equipo. A fecha del aviso no existe versión corregida.

LMCache es la capa de caché clave-valor que usan los despliegues de vLLM para mantener vivas las cachés de atención entre peticiones y entre máquinas. En modo multiproceso abre un socket ROUTER de ZeroMQ sin cifrado CURVE, sin autenticación ZAP, sin contraseña y sin ninguna autenticación de mensajes. Los mensajes llegan en msgpack. El código de extensión 1 está registrado para un tipo llamado DeviceIPCWrapper, cuyo método Deserialize llama al pickle.loads de Python.

Esa llamada ocurre mientras el servidor decodifica los argumentos de una petición REGISTER_KV_CACHE, antes de que corra ninguna lógica de manejo. Así que un único mensaje sin autenticar ejecuta código con el usuario del proceso LMCache. Las imágenes de contenedor oficiales ejecutan ese proceso como root.

Estar expuesto depende de un solo parámetro

El 9,8 no es toda la historia, y JFrog lo dice. El transporte se liga a localhost salvo que el operador fije una dirección enrutable con --host, y la puntuación crítica corresponde a esa configuración enrutable. En palabras del aviso, “una instalación estándar de un solo host que deje el enlace por defecto no es alcanzable desde otras máquinas”.

LMCache usado solo dentro de un proceso vLLM ni siquiera abre el puerto. La forma expuesta es el despliegue multinodo, el que se adopta cuando una sola máquina deja de bastar, que es también el que con más probabilidad está sirviendo tráfico de producción.

Cables de red conectados a los puertos de un conmutador
El transporte vulnerable escucha en el puerto 5555 y no autentica nada. Imagen ilustrativa. Vladimir Srajber · pexels · Pexels License

Sin parche, las mitigaciones son tuyas

Las versiones 0.3.9 y posteriores están afectadas. JFrog pide al proyecto que sustituya el serializador que hay detrás del código de extensión 1 de msgpack por un formato seguro, que deje de llamar a pickle.loads sobre datos de pares no autenticados, que autentique el transporte con CURVE o un HMAC por mensaje, y que rechace un enlace enrutable si no hay autenticación configurada.

Hasta que exista una versión corregida, el consejo a los operadores es seco: no fijar --host a una dirección enrutable, mantener el puerto 5555 en localhost o en una red de clúster de confianza, y protegerlo con cortafuegos. JFrog añade la advertencia que importa: cualquiera que logre conectarse puede ejecutar código con el usuario de LMCache.

La misma clase de fallo, dos veces en una semana

Deserializar con pickle datos llegados por la red es un error de Python con veinte años de rastro documental, y ahora aparece en la fontanería del servicio de modelos. En el Pwn2Own de Irlanda, esa misma semana, LiteLLM cayó el primer día con una validación de entrada defectuosa encadenada a una inyección de código, por 40.000 dólares, y un segundo equipo lo tumbó con cuatro fallos más.

La parte específica de la IA no es la vulnerabilidad. Es que una capa de caché situada entre un servidor de modelos y sus GPU se construyó con un plano de control sin autenticar, porque se dio por supuesto que el despliegue viviría en una red de confianza.

Estanterías de almacén llenas de cajas de cartón etiquetadas
LMCache mantiene vivas las cachés de atención entre peticiones y máquinas. Imagen ilustrativa. Tima Miroshnichenko · pexels · Pexels License

Qué comprobar esta noche

Dos preguntas resuelven casi todo: ¿es alcanzable el puerto 5555 desde fuera del host, y corre el contenedor como root? Si la respuesta a ambas es sí, el aviso describe un camino que va de un solo paquete a una shell en una máquina que guarda tus pesos de modelo.

Lo que hay que vigilar es la versión corregida. Hasta entonces esto es un agujero conocido, puntuado y documentado públicamente, con una brecha de parcheo, en un componente que la mayoría de los equipos que corren vLLM a escala no eligieron tanto como heredaron.