Parches de seguridad octubre 2026: qué actualizar hoy
El martes 21 de octubre, entre las 11:39 y las 13:23 UTC, cualquiera que hiciera pip install litellm sin fijar versión se llevó a casa un ladrón de credenciales. No hacía falta importar la librería. Bastaba con arrancar Python.
Ese día también salieron parches de PHP y Node.js, Railway avisó de un acceso a variables de entorno y GitLab publicó un CVSS 10.
El problema no es la cantidad. Es que llega todo junto, en inglés y mezclado con rumores. Este resumen de los parches de seguridad de octubre 2026 está ordenado para decidir qué tocas primero.
En corto: si instalaste LiteLLM 1.107.0 o usaste la imagen Docker latest el 21 de octubre, da la máquina por comprometida y rota todas las credenciales que tuviera a mano. Si tienes GitLab self-managed, actualiza hoy a 19.5.1 o al backport de tu rama, y si despliegas en Railway, rota hoy sus variables de entorno. Node.js, PHP y los certificados de eMudhra van esta semana.
¿Qué parches de seguridad de octubre 2026 tienes que aplicar hoy?
Hoy van tres cosas: limpiar LiteLLM si lo tocaste, actualizar GitLab si lo alojas tú y rotar las variables si despliegas en Railway (lo vemos más abajo).
LiteLLM 1.107.0: un ataque a la cadena de suministro con robo confirmado
Un ataque a la cadena de suministro (supply chain attack) es cuando el atacante compromete algo de lo que dependes, como un paquete de PyPI o una imagen Docker, y tú lo instalas creyéndolo legítimo.
Según el informe oficial de LiteLLM, la 1.107.0 estuvo en PyPI de 11:39 a 13:23 UTC, y las etiquetas latest, main-latest, main-stable y v1.107.0 de Docker apuntaron a una imagen maliciosa hasta las 14:20 (en Docker Hub; en GHCR, hasta las 13:51). La versión limpia es la 1.106.2.
El paquete instalaba un cook.pth en site-packages, y Python ejecuta los import de los .pth al arrancar. Como explica SafeDep, corre en cualquier proceso Python de la máquina, aunque ese proyecto no use LiteLLM.
Y no es teórico. Wiz documenta que unas 4,5 horas después el atacante ya validaba credenciales de AWS robadas de runners de CI y nodos de Kubernetes, con un patrón de LLMjacking: consumir modelos de Bedrock a tu costa.
Comprueba los indicadores sin ejecutar pip, porque arrancar Python vuelve a dispararlo:
# Indicadores de compromiso publicados por LiteLLM (solo lectura)
find / -type d -name "litellm-1.107.0.dist-info" 2>/dev/null
find / \( -name "cook.pth" -o -name "cook.py" -o -name "sitecustomize.py" \) -path "*-packages*" 2>/dev/null
ls -la /tmp/remote_code_loader.lock 2>/dev/null
# Imágenes Docker descargadas: busca el digest malicioso
docker images --digests | grep -i litellm
docker images --digests | grep 1bbcb1443bc962e45f5aad53fe3d2c30600e0379715fb6c664cdd3ac126c339e
Un sitecustomize.py puede ser legítimo en tu distro: ábrelo antes de sacar conclusiones.
Que no aparezca nada no demuestra que estés limpio. Si la versión corrió con salida a internet, el informe pide asumir exfiltración, reconstruir desde cero y rotar todo lo que la máquina podía leer: rol IAM, claves de proveedores del proxy, master y virtual keys, la contraseña de DATABASE_URL y los secretos en variables de entorno.
Si no tienes claro qué llaves tiene tu agente, empieza por cómo gestionar las API keys de un agente de IA. El ebook gratuito El Developer Agéntico dedica una parte a la seguridad de agentes: permisos, secretos y qué puede tocar cada herramienta.
GitLab self-managed: CVSS 10 sin autenticación
CVSS (Common Vulnerability Scoring System) es la escala de 0 a 10 con la que se puntúa la gravedad técnica de una vulnerabilidad; un 10 significa explotable por red, sin credenciales, sin interacción del usuario y con impacto total.
El parche 19.5.1 de GitLab corrige CVE-2026-110264: un desbordamiento de entero al compilar una expresión regular manipulada que permite ejecutar código sin autenticarse. Afecta a todo desde la 7.0. GitLab.com y Dedicated ya están parcheados.
Hay parche para cada rama soportada y backports para las antiguas, así que no necesitas saltar de versión mayor: 19.4.3, 19.3.6, 19.2.9, 19.1.9, 19.0.10 y 18.11.13.
Tabla de parches de seguridad de octubre 2026 para developers
Lo verificado contra la fuente oficial de cada proyecto, a 24 de octubre de 2026. Léela por tu stack, no por la gravedad.
| Componente | CVE / identificador | Gravedad | Versión corregida | A quién afecta | Qué hacer |
|---|---|---|---|---|---|
| LiteLLM | Sin CVE (paquete malicioso) | Robo de credenciales confirmado | Fijar 1.106.2 | Quien instaló 1.107.0 el 21 oct | Hoy: reconstruir y rotar todo |
| GitLab CE/EE | CVE-2026-110264 | CVSS 10.0 | 19.5.1, 19.4.3, 19.3.6, 19.2.9, 19.1.9, 19.0.10, 18.11.13 | Self-managed desde 7.0 | Hoy: actualizar |
| Railway | Sin CVE (brecha) | Variables expuestas, algunas descifradas | No aplica | Clientes de Railway | Hoy: rotar variables y credenciales de registry |
| Node.js | CVE-2026-111497 y 9 más | 4 altas | 26.12.1, 24.22.1, 22.23.4 | Node 22, 24 y 26 | Esta semana |
| PHP | CVE-2026-109618, CVE-2026-109619 | CVSS v4 9.2 | 8.2.35, 8.3.36, 8.4.27, 8.5.12 | PHP en producción | Esta semana |
| CAs intermedias de eMudhra | Distrust coordinado | 8 claves recuperables | Bundles de CA actualizados | Backends con almacén de CA propio | Esta semana: actualizar bundles |
Qué parchear esta semana: Node.js, PHP y certificados
Esta semana toca actualizar Node.js a 26.12.1, 24.22.1 o 22.23.4, PHP a 8.2.35, 8.3.36, 8.4.27 u 8.5.12, y los bundles de CA por el distrust de eMudhra. Son graves, pero sin explotación confirmada.
Node.js. El security release del 21 de octubre corrige 10 vulnerabilidades. La más seria es CVE-2026-111497: el decoder Brotli escribe fuera de un buffer de 8 bytes con entrada malformada, lo que puede provocar caída, fuga de memoria o ejecución remota vía node:zlib. Hay además tres bypass de hostname en TLS, dos de ellos altos. Actualiza a 26.12.1, 24.22.1 o 22.23.4; las líneas sin soporte no reciben parche.
PHP. CVE-2026-109618 y CVE-2026-109619, dos RCE con CVSS v4 9.2 según el aviso de php.net. Ya lo contamos a fondo en la vulnerabilidad de PHP en hosting compartido. Un detalle nuevo: el 23 de octubre php.net avisó de CVE-2026-115560, aún sin parche; hasta que salga recomiendan session.upload_progress.enabled=0.
eMudhra. Ocho certificados intermedios con claves privadas recuperables casi al instante; Mozilla y Google los bloquearon el 17 de octubre y Apple el 22 (BleepingComputer). Tu navegador ya está protegido; tu backend no, si usa un almacén de confianza propio. El release de Node.js actualiza su almacén de CA por este incidente. En Python y Go, actualiza certifi y el toolchain, y reconstruye imágenes con ca-certificates al día.
Brecha de Railway: qué variables de entorno rotar
Railway reconoce en su aviso del 21 de octubre un acceso a los sistemas que guardan las variables de entorno y que, para algunos clientes, el atacante pudo obtenerlas descifradas. No dicen cuántos, y lo enmarcan en ataques a plataformas para llegar a claves de proveedores de IA. Rota todas las variables, incluidas las API keys, y las credenciales de registries privados, y revisa los logs de esos servicios.
El patrón es el de LiteLLM: el atacante no busca tu código, busca tus claves de OpenAI, Anthropic o AWS. Si tu proyecto de IA arrastra dependencias sin fijar, auditar dependencias de npm y pip es el siguiente paso.
Ataque a LiteLLM: qué se discute en Hacker News
El hilo "Compromised LiteLLM 1.107.0 on PyPI Installs a Credential Stealer and Backdoor" superó los 590 puntos y los 190 comentarios. Un usuario explica que el .pth iba empaquetado de forma que «installers will treat it as a "data file"» (comentario): por eso no lo ves al revisar el código de la librería.
Lo útil es ver cómo cambió la explicación. En el hilo, una cuenta que respondía por el proyecto abría con «Pinning is a good idea.» y daba una primera hipótesis sobre el origen del token robado (comentario). Al día siguiente, el post canónico sobre la cadena de ataque lo aclaró: el primer token salió de la API de su Agent Platform, con una master key subida a un repo público el 27 de mayo y nunca revocada.
La primera hipótesis casi nunca es la buena, y una master key olvidada bastó para todo. En el curso Construye con IA trabajamos con Claude Code separando lo que el agente puede leer de lo que no.
Confirmado, sin confirmar y falso
Confirmado por fuente primaria: todo lo que está en la tabla (eMudhra, vía BleepingComputer y los avisos de los navegadores), incluido el uso posterior de credenciales de AWS robadas con LiteLLM.
Sin confirmar:
- Que la brecha de Railway acabara en wallets de criptomonedas vaciadas. Lo dice el roundup de daily.dev, no Railway.
- Una prueba de concepto pública del fallo de GitLab. GitLab no informa de explotación.
- Las versiones exactas de
certifiy Go con el fix de eMudhra que cita el roundup: compruébalas en sus changelogs. - Pillow, Plex, Tomcat, BIND, Unbound, PowerDNS, musl y el ataque a HTTP/3: están en el roundup, pero no los he contrastado con su aviso oficial.
Falso o corregido:
- Los dos RCE de PHP (el roundup los llama PHP2Shell) no son CVSS 10: php.net los puntúa con 9.2 en CVSS v4.
- Ninguna fuente primaria relaciona la brecha de Railway con LiteLLM.
- Que el primer token saliera de logs internos de despliegue: el post canónico de LiteLLM lo corrige; salió de la API de su Agent Platform.
Límites de este resumen
La fecha de corte es el 24 de octubre de 2026. LiteLLM ya corrigió su relato una vez y Railway sigue investigando: abre el aviso oficial antes de actuar.
No es un inventario completo. El roundup original de daily.dev dice "47 CVEs" en el título y "23" en el resumen sin reconciliarlo, así que aquí no damos cifra total. Queda fuera lo no verificado y lo ajeno al stack de aplicaciones, como NetScaler, explotado pero en el catálogo KEV de CISA desde finales de septiembre.
Y la gravedad no es tu prioridad: un CVSS 10 en GitLab te da igual si usas GitLab.com, y un incidente sin CVE como el de LiteLLM puede ser lo más urgente de tu semana.
Fijar versiones importa más que el CVSS
Abre los lockfiles y las etiquetas Docker de tus proyectos de IA y busca litellm. Una dependencia o imagen sin versión fija es tu riesgo real de esta semana, más que cualquier CVSS de la tabla. Fíjala y rota lo que estuvo cerca de 1.107.0.
Dejar por escrito qué versiones se aceptan y quién puede publicarlas es parte de lo que defiende el libro de Spec-Driven Development.
Preguntas frecuentes
¿Cómo sé si me afectó LiteLLM 1.107.0?
Busca el directorio litellm-1.107.0.dist-info, los ficheros cook.pth, cook.py y sitecustomize.py en site-packages (o dist-packages) y el fichero /tmp/remote_code_loader.lock, sin ejecutar pip en esa máquina. Revisa también si usaste las imágenes Docker latest, main-latest o main-stable el 21 de octubre.
¿Qué versión de LiteLLM es segura?
La versión de referencia que dan LiteLLM y Wiz es la 1.106.2. El 24 de octubre salió en PyPI la 1.106.3, ya posterior al incidente. Sea cual sea, fíjala en el lockfile y en el digest de la imagen.
¿Tengo que actualizar GitLab si uso GitLab.com?
No. GitLab.com y GitLab Dedicated ya ejecutan la versión parcheada. Solo actúas si alojas GitLab self-managed: 19.5.1 o el backport de tu rama.
¿Qué significa CVSS 9.2 frente a CVSS 10?
Ambos son críticos. El 10 de GitLab (CVSS v3.1) indica explotación por red, sin credenciales ni interacción y con impacto total. El 9.2 de PHP es CVSS v4, que no se compara uno a uno con la v3.1.
Por Bezael Pérez — Developer senior con más de 15 años de experiencia y fundador de Dominicode.
¿Te resultó útil este artículo?
Compártelo con tu comunidad y ayuda a otros desarrolladores.
