25 octubre 2026 EN ES
The Serving Desk

La infraestructura detrás de tu producto de IA — modelos, servicio y su costo real

Despliegue

RCE en SGLang: demuestra que los endpoints requieren autenticación antes de parchear

Checklist previo al parche para serving autoalojado: inventariar endpoints, aplicar autenticación, vincular redes privadas, deshabilitar actualizaciones de pesos y medir la exposición.

Illustration: SGLang RCE: prove endpoints need auth before patching

La ventana de exposición comienza antes del aviso

Si tu stack de serving SGLang o similar responde a solicitudes no autenticadas en un endpoint no de inferencia, la ventana de exposición comienza cuando ese estado se vuelve alcanzable, no cuando aparece el aviso. El compromiso es simple: mantener abierto el endpoint de actualización de pesos por conveniencia, o cerrarlo y aceptar el costo operativo. La aritmética es tiempo de exposición multiplicado por alcanzabilidad. El tiempo de exposición es el intervalo entre el primer estado no autenticado alcanzable y el cierre. La alcanzabilidad es el conjunto de redes y endpoints que pueden acceder a él. Un endpoint alcanzable durante un intervalo más largo es peor que un endpoint cerrado.

El endpoint /update_weights_from_tensor de SGLang está marcado como AuthLevel.ADMIN_OPTIONAL, por lo que acepta solicitudes no autenticadas cuando no se ha configurado ninguna API key ni admin API key. CVE-2026-86793 permite a un llamador no autenticado desencadenar la deserialización de pickle en ese endpoint cuando no hay claves de autenticación. El aviso de GitHub para CVE-2026-86793 se publicó el 11 de sep de 2026 y se actualizó por última vez el 14 de sep de 2026. Tiene una puntuación CVSS crítica de 9.8. VicOne informó que, a fecha de su publicación, los mantenedores de SGLang reconocieron el informe pero no habían proporcionado un parche ni un plazo de remediación.

El parche no es el control

Una corrección de código cambia la ruta. No borra el tiempo que el endpoint fue alcanzable. La fecha del aviso es una fecha de reporte, no una fecha de control. Para la seguridad de LLM autoalojados, el control es la configuración del endpoint: autenticación, vinculación de red y funciones deshabilitadas. Un bypass de denylist es un defecto de código, pero un puerto abierto es un defecto operativo.

SGLang añadió SafeUnpickler para abordar un problema anterior de carga insegura de pickle registrado como CVE-2025-10164. SafeUnpickler bloquea eval, exec, compile y open, pero deja __import__ y getattr disponibles. Una denylist puede reducir la superficie, pero no elimina la ruta de solicitud. Los pesos del modelo son datos. El endpoint es la ruta de acceso. Cierra la ruta antes de confiar en la corrección de código.

Demuestra que el endpoint está bloqueado antes de parchear

Ejecuta esto antes de parchear, porque el parche no eliminará retroactivamente el intervalo alcanzable. Cada elemento es testeable rápidamente. Úsalo para demostrar que el endpoint no es alcanzable sin autenticación, no para esperar a un release.

  • Inventaria los endpoints no de inferencia. Prueba cada uno con una solicitud no autenticada y anota la respuesta.
  • Aplica autenticación en cada endpoint. Confirma que una clave ausente devuelve un error de autenticación, no éxito.
  • Vincula el puerto de serving a una red privada. Verifica que los escáneres externos no puedan alcanzarlo.
  • Deshabilita los endpoints dumper, LoRA y de actualización de pesos. Confirma que devuelvan not found o forbidden.
  • Calcula la exposición: resta la fecha en que tu endpoint comenzó a aceptar solicitudes no autenticadas de la fecha de divulgación pública.

Comienza desde fuera de la red privada. Usa un cliente que no tenga credenciales. Solicita el endpoint y registra la respuesta. Una respuesta exitosa significa que el endpoint es alcanzable sin autenticación. Un error de autenticación significa que el control está en su lugar. Una respuesta not-found significa que la ruta está oculta, pero oculto no es lo mismo que cerrado.

Comprueba el puerto de serving desde un host que no debería tener acceso. Si el puerto responde, el límite de red no está haciendo su trabajo. Vincula el puerto a la interfaz privada y vuelve a probar. Repite la prueba hasta que el endpoint falle antes de que pueda usarse.

Comprueba la ruta de administración por separado. Algunos stacks de serving exponen una superficie de gestión para pesos, LoRA o estado del modelo. Si esa superficie acepta una solicitud sin clave, es alcanzable. Si requiere una clave, registra qué tipo de clave acepta. La distinción importa cuando rotas claves o deshabilitas funciones. Repite la prueba tras cada cambio de configuración.

Trata la exposición alcanzable como real

Registra la fecha en que comenzó, la fecha en que lo cerraste y la ruta que un atacante podría haber usado. Parchear detiene la ejecución futura de código, pero no acorta la ventana. Mantén el estado deshabilitado hasta que la ruta de código se cierre.

Rota cualquier clave que estuviera en uso durante la ventana. Si no había ninguna clave en uso, la ausencia de clave es el hallazgo. Registra el estado de la clave en el mismo registro.

Publicidad