Ir al contenido principal
Cerrar
Seguridad

SGLang: 4 RCEs sin patch en el servidor de inferencia IA

Gabriel Ferraresi· CEO | Tech86May 27, 20265 min
sglangrceseguridadinferencia iavulnerabilidad

Infraestructura de inferencia IA es critical infrastructure. Cuando 400.000 GPUs corren software con tres RCEs sin patch y el mantenedor ignora el CERT/CC, la responsabilidad recae sobre quien opera. En Tech86, vimos esa dinámica repetidas veces: el proveedor no corrige, el atacante no espera, y la cuenta llega para el dueño del workload.

Cuatro RCEs, tres sin corrección

SGLang es el servidor de inferencia detrás de workloads de xAI, NVIDIA, AMD, LinkedIn, Cursor, Oracle, Google Cloud, Azure y AWS. En enero de 2026, el proyecto spinó como RadixArk con backing de Accel y valuation de aproximadamente 400 millones de dólares. El software que corre en esas 400.000 GPUs tiene cuatro vulnerabilidades de ejecución remota de código. El mantenedor corrigió apenas una.

La CVE-2026-5760 (CVSS 9.8) explora archivos GGUF con payload Jinja2 en el chat_template. La víctima carga el modelo, hace un request para /v1/rerank, y el payload ejecuta. Sin autenticación. Esa es la única corregida, patch en la versión 0.5.11.

La CVE-2026-7301 (CVSS 9.8) ataca el scheduler ZeroMQ. El runtime multimodal binda un socket ROUTER. El código default usa 127.0.0.1, pero la documentación oficial recomienda --host 0.0.0.0 en todos los ejemplos. El Docker Compose oficial usa network_mode: host. En todo deployment que siguió la guía, el socket está expuesto. El scheduler llama pickle.loads() en cada mensaje. Un pickle craftado equivale a RCE. El mismo patrón fue corregido en marzo en el CVE-2026-3059, pero en otro code path. Este es diferente. Sin patch.

La CVE-2026-7302 (CVSS 9.1) permite escritura arbitraria de archivos. Los endpoints /v1/images/edits y /v1/videos aceptan upload sin sanitizar ../ en el filename. Un atacante consigue escribir en cualquier path del proceso. Sin patch.

La CVE-2026-7304 (CVSS 9.8) usa el campo custom_logit_processor que acepta JSON con callable conteniendo payload dill hex-encoded. El servidor deserializa con dill.loads() sin validación. Dill es superset de pickle, misma propiedad de ejecución arbitraria. Requiere --enable-custom-logit-processor activo. Sin patch.

La cronología que debería preocupar a todo el mundo

Antiproof reportó las vulnerabilidades al mantenedor el 10 de marzo. El día 25 de marzo, un PR parcial fue abierto, cubre apenas el CVE-2026-5760. Los otros tres quedaron de fuera. El 15 de mayo, el CERT/CC publicó el VU#777338 porque el mantenedor no respondió. El 26 de mayo, JPCERT/CC emitió advisory independiente.

Más de dos meses desde el disclosure. Tres CVEs con CVSS 9.8. Cero patch. Una empresa evaluada en 400 millones de dólares que no responde al CERT/CC. Eso no es un olvido, es un patrón.

En Tech86, aprendimos que el tiempo entre disclosure y exploit efectivo se acortó drásticamente. Cuando el CERT/CC publica, el adversario ya sabe. Cada día sin mitigación es un día de ventana abierta.

Deserialización es el hueco que no se cierra

El patrón es recurrente y bien documentado: pickle.loads() en datos no confiables es RCE por definición. No es una vulnerabilidad zero-day, es una propiedad del formato. Python documenta eso explícitamente. La corrección de marzo (CVE-2026-3059) debería haber tenido triggers de auditoría en todos los code paths con deserialización. No tuvo.

SGLang usa pickle.loads() en el scheduler ZeroMQ y dill.loads() en el custom logit processor. Dos code paths distintos, misma clase de vulnerabilidad, misma raíz: deserialización de datos no confiables sin validación. Un inference server sin autenticación está a un pickle craftado de distancia de tener el host comprometido.

Y el host de inferencia no es un host cualquiera. Tiene acceso a modelos propietarios, datos de entrenamiento, credenciales cloud y GPU compute. El compromiso de un inference server no es un incidente de seguridad, es un incidente de infraestructura crítica.

La documentación que expone a todo el mundo

El problema no es solo el código. Es la guía. La documentación oficial de SGLang recomienda --host 0.0.0.0 en todos los ejemplos de deployment. El Docker Compose oficial configura network_mode: host. Eso significa que todo equipo que siguió la guía, y la mayoría sigue, expuso el socket ZeroMQ del scheduler en la red.

El código default es 127.0.0.1. Seguro. Pero la guía dice para cambiar. Y cuando la guía oficial dice para abrir, el equipo abre. No es negligencia, es confianza en la documentación del proyecto. Confiar en la documentación de un proyecto de código abierto no es imprudencia. Es el flujo normal de operación. El problema es cuando la documentación enseña a configurar inseguramente y el proyecto no corrige las consecuencias.

Mitigaciones que necesitas aplicar hoy

El patch no viene. Las mitigaciones son workarounds, no correcciones de raíz. Pero son lo que existe. Para el CVE-2026-7301, restringe --host a 127.0.0.1 y añade firewall en los ports ZeroMQ. Para el CVE-2026-7302, bloquea /v1/images/edits y /v1/videos en el proxy reverso. Para el CVE-2026-7304, deshabilita --enable-custom-logit-processor. Si no necesitas multimodal, deshabilita. Si no usas rerank, bloquea el endpoint.

Reduce la superficie. Cada endpoint activo es un vector. Cada flag habilitado es una puerta. El principio es el mismo que aplicamos en cualquier infraestructura crítica: si no es necesario, no queda expuesto.

La responsabilidad es tuya

AI inference infrastructure es critical infrastructure. No es un servidor de teste, no es un prototipo, no es un side project. Es el software que procesa datos sensibles en hardware que cuesta cientos de miles de dólares por cluster. Y cuando el mantenedor no responde al CERT/CC por dos meses, la responsabilidad de proteger no desaparece, se transfiere.

En Tech86, operamos infraestructura cloud con la premisa de que la seguridad no depende del proveedor upstream. Si el patch no existe, la mitigación necesita existir. Si la documentación enseña mal, la configuración necesita corregir. Es por eso que nuestros Cloud Servers son provisionados con aislamiento de red por defecto, firewall configurado antes del primer deploy, y superficie de ataque reducida al mínimo funcional. Cuando el proveedor falla, la infraestructura necesita aguantar.

¿Interesado en esta solución?

Conoce nuestros servicios gestionados e infraestructura.

Conoce Cloud Servers

Preguntas Frecuentes

SGLang es un servidor de inferencia IA usado por xAI, NVIDIA, AMD, LinkedIn, Cursor, Oracle, Google Cloud, Azure y AWS. Corre en aproximadamente 400.000 GPUs. Las cuatro vulnerabilidades permiten ejecución remota de código sin autenticación, tres de ellas sin patch disponible. Cualquier deployment que siguió la documentación oficial está expuesto.

Sí. La documentación oficial recomienda --host 0.0.0.0 en todos los ejemplos y el Docker Compose oficial usa network_mode: host. Eso expone el socket ZeroMQ del scheduler en la red. El mismo patrón ya había sido corregido en marzo en el CVE-2026-3059, pero en otro code path. Si seguiste la guía, estás expuesto.

No hay señal. Antiproof reportó las vulnerabilidades el 10 de marzo. El PR parcial del 25 de marzo no cubre tres de los cuatro CVEs. El CERT/CC publicó VU#777338 el 15 de mayo después de que el mantenedor no respondió. JPCERT/CC emitió advisory el 26 de mayo. Son más de dos meses sin corrección para tres CVEs con CVSS 9.8.

Pickle es el formato de serialización de Python. Deserializar datos pickle no confiables permite ejecución arbitraria de código, es una propiedad documentada del formato. SGLang llama pickle.loads() en cada mensaje del scheduler ZeroMQ y dill.loads() en el custom logit processor. Cualquier atacante con acceso al socket puede enviar un payload craftado y obtener RCE.

No necesariamente, pero necesitas mitigar ahora. Aplica las restricciones de red, bloquea endpoints innecesarios y deshabilita el custom logit processor. Si tu infraestructura no permite esas mitigaciones, evalúa alternativas como vLLM con patches aplicados. El patch no viene, la responsabilidad de proteger es tuya.

Blog, Contáctanos

¿Tienes alguna pregunta sobre nuestros artículos o servicios? Nuestro equipo está listo para ayudarte.

Agendar Reunión

Reserva un horario.

Agendar Ahora

Correo Electrónico

Envía un mensaje.

[email protected]

WhatsApp

Conversación rápida.

Dirección

Avenida Paulista, 1636 - São Paulo - SP - 01310-200

Especialista Tech86

En línea ahora

¡Hola! ¿Cómo podemos ayudar a escalar tu negocio hoy?

Tech86 Engineering

Valoramos tu privacidad

Utilizamos cookies y tecnologías similares para optimizar tu experiencia, analizar el tráfico del sitio web y personalizar contenido. Al hacer clic en "Aceptar Todos", aceptas el uso de todas las cookies. Lee nuestra Política de Privacidad.