Ivanti Connect Secure: cadena zero-day explotada con acceso root (CVE-2026-104935)
Una cadena de tres fallas da root sin autenticar en Ivanti Connect Secure; actualice a 22.8R2.6 o 25.1.1.3 y busque señales de explotación de octubre.
Resumen
- Una cadena de tres fallas da a un atacante sin autenticar ejecución de comandos como root en appliances VPN Ivanti Connect Secure. Volexity documentó la cadena y al actor que rastrea como UTA0576 el 13 de octubre de 2026.
- Los appliances Ivanti Connect Secure en las versiones afectadas quedan expuestos cuando un atacante puede alcanzar la interfaz web, porque el punto de entrada no exige credenciales ni interacción del usuario.
- Explotada en entornos reales desde octubre de 2026. CISA agregó las tres CVE de la cadena al catálogo KEV el 2026-10-13, el 2026-10-30 y el 2026-10-30; los plazos federales son 2026-11-02 y 2026-11-13 para las dos más recientes.
- Actualice a 22.8R2.6 en la línea 22.8R2 o a 25.1.1.3 en la línea 25.1.1, y luego busque señales de compromiso con las comprobaciones de «¿Cómo lo soluciono?» y «¿Cómo compruebo si estuve comprometido?».
¿Estoy afectado?
Todas estas condiciones deben cumplirse:
- Opera un appliance Ivanti Connect Secure, físico, virtual o en la nube, cuya interfaz web pueda alcanzar un atacante por la red.
- El appliance ejecuta una versión afectada: 22.8R2.5 y anteriores en la línea 22.8R2, o 25.1.1.2 y anteriores en la línea 25.1.1, para las correcciones del 29 de octubre. Solo la CVE-2026-104935 afecta también a 25.1.1.1 y anteriores y a 25.1.2.2 y anteriores.
- No se necesita ninguna credencial para iniciar la cadena y nadie de su lado interactúa con nada. El actor que observó Volexity explotó un appliance 22.8R2.4 totalmente parcheado, entonces la versión más reciente de esa línea.
| Línea | Versiones afectadas | Versión corregida |
|---|---|---|
| 22.8R2 (fin de vida 2027-01-31) | 22.8R2.5 y anteriores | 22.8R2.6 |
| 25.1.1 | 25.1.1.2 y anteriores | 25.1.1.3 |
| 25.1.2 | 25.1.2.2 y anteriores (solo CVE-2026-104935) | seguir la guía de actualización de Ivanti |
| 25.1.3 | ninguna listada para la cadena | 25.1.3.0 ya incluía la corrección interna |
Las filas de versiones corregidas provienen del aviso de Ivanti citado por The Hacker News el 31 de octubre de 2026 y de los registros CVE. En las fuentes disponibles, la fila 25.1.2 solo está afectada por la CVE-2026-104935. Quienes estén en esa línea y en la rama 25.1.3 deben seguir la guía de actualización y migración de Ivanti, que enlaza la alerta de CISA del 13 de octubre. El registro de la CVE-2026-104935 también indica que 22.7R2.14 y anteriores no se ven afectados por esa falla.
Ivanti Connect Secure es un appliance VPN empresarial en el perímetro de la red. Su exposición y las credenciales almacenadas lo convierten en un objetivo valioso.
Para comprobar la versión instalada, léala en el panel de la consola de administración de Connect Secure y compárela con la tabla. El panel informa la versión del appliance en el que ha iniciado sesión; repítalo por appliance o por miembro del clúster.
¿Cómo lo soluciono?
- Actualice cada appliance afectado a 22.8R2.6 o posterior en la línea 22.8R2, o a 25.1.1.3 o posterior en la línea 25.1.1. Los parches del 13 de octubre de 2026 corregían la CVE-2026-104935, y los del 29 de octubre de 2026 corrigen la CVE-2026-111357 y la CVE-2026-118527.
- Los appliances de la línea 22.8R2 llegan a su fin de vida el 31 de enero de 2027, según la alerta de CISA del 13 de octubre. Planifique ya la migración a una línea mantenida en lugar de parchear la antigua repetidamente.
- Trate la actualización como una respuesta a un compromiso, no solo como un parche. La alerta de CISA del 13 de octubre detalla los pasos para las organizaciones que detectan compromiso. Si sospecha una intrusión, preserve las pruebas de memoria, disco y red con su equipo de respuesta antes de restablecer o actualizar. Haga una copia de la configuración, restablezca de fábrica o reconstruya el appliance, actualícelo y recupere la configuración. Después restablezca cada contraseña, certificado almacenado, clave de API y credencial de licencia.
El aviso de Ivanti no lista ninguna solución temporal, porque el punto de entrada es la página pública de inicio de sesión que un VPN debe exponer. Volexity recomienda un control temporal de detección: vigilar los grandes volúmenes de peticiones a /dana-na/auth/url_default/welcome.cgi que lleven una cabecera X-DSCGI-PATH. Active también alertas ante discrepancias entre la ruta de la URL y esa cabecera. Ese control solo cubre las rutas de entrada conocidas, así que no sustituye a la actualización.
¿Cuál es la causa raíz?
La cadena funciona porque se alinean tres decisiones de confianza independientes. El appliance enruta una petición según una cabecera que controla el cliente. Un gestor de subida escribe un archivo antes de validarlo. Un servicio root confía en un almacén de configuración que un proceso comprometido puede editar. Volexity reconstruyó los tres a partir de memoria y de imágenes de core dumps, porque UTA0576 borraba los registros del appliance.
-
Omisión de la autenticación. Una petición a
/dana-na/auth/url_default/welcome.cgi, la página pública de inicio de sesión, se acepta sin autenticación. La petición lleva una cabeceraX-DSCGI-PATH: /home/webserver/htdocs/dana/fb/smb/wu.cgi, que nombra un script CGI interno que se ejecuta en un contexto de confianza. El appliance usa la URL para decidir si la petición se permite, pero la cabecera para decidir a dónde va. -
Ejecución remota de código. El gestor de subida de
wu.cgiacepta un script Perl con un nombre de extensión.zip. Calcula el hash MD5 del nombre de archivo suministrado por el cliente y escribe el contenido subido en/home/runtime/tmp/<MD5(filename)>. Solo después de escribir el archivo comprueba que es un ZIP válido y lo borra. En la breve ventana antes del borrado, el atacante envía peticiones paralelas cuya cabeceraX-DSCGI-PATHapunta a la ruta del archivo subido, y el script se ejecuta como el usuariocgi-server. -
Escalada de privilegios a root. El appliance ejecuta
dsinvoked, un servicio en segundo plano privilegiado que lanza tareas de mantenimiento como root. Busca el programa de cada tarea en DSCache, un almacén de configuración compartido. El código del atacante parchea su propia copia en memoria de la biblioteca de Ivanti/home/lib/libdsplibs.sopara poder modificar DSCache. Luego reconfigura una tarea de mantenimiento existente para lanzar el intérprete Perl en lugar de/home/bin/updateOpswatSDK.pl. Cuandodsinvokedejecuta la tarea, el script del atacante se ejecuta como root, y el exploit lo confirma leyendo/etc/shadow.
Después de cada comando, la carga restaura la entrada de DSCache y revierte el parche de la biblioteca a través de /proc/self/mem. También elimina las entradas correspondientes de /home/runtime/dlogs/debuglog y /var/log/audit/audit.log. Ivanti rastrea las dos primeras fallas bajo la CVE-2026-104935, y la escalada de privilegios es la CVE-2026-111357. La CVE-2026-118527 cubre la ubicación de archivo predecible que indica al atacante dónde cae la subida.
¿Cómo se explota?
- El atacante, sin credenciales, envía una petición al script público de inicio de sesión
/dana-na/auth/url_default/welcome.cgiconX-DSCGI-PATHapuntando awu.cgi. - Por esa ruta de confianza, sube un script Perl cuyo nombre termina en
.zip, de modo que el gestor lo escribe en la ruta predecible/home/runtime/tmp/<MD5(filename)>. - Antes de que la validación ZIP borre el archivo, peticiones paralelas alcanzan la ruta subida con el mismo truco de cabecera y lo ejecutan como
cgi-server. - La etapa Perl lanza un script Bash, que descodifica y ejecuta en memoria un script Python comprimido con zlib y codificado en Base64; el script bruto nunca se escribe en disco.
- La etapa Python parchea la biblioteca en memoria, redirige la tarea de mantenimiento en DSCache y pide a
dsinvokedque la ejecute, lo que ocurre como root. - Cada comando del atacante reejecuta toda la cadena, y su resultado vuelve dentro de la respuesta HTTP; Volexity no identificó un web shell persistente ni una puerta trasera en este incidente.
Volexity observó a UTA0576 utilizar esta cadena desde el 3 de octubre de 2026. Los pasos anteriores proceden de su análisis de las cargas recuperadas; no identificó un web shell persistente ni una puerta trasera en esa investigación.
¿Cómo fluye el ataque?
Una petición sin autenticar que abusa de la confianza de la página de inicio de sesión alcanza un gestor de subida interno, gana una carrera contra el borrado y escala mediante un servicio root hasta el control total del appliance.
a welcome.cgi"] --> B["La cabecera X-DSCGI-PATH
enruta a wu.cgi (falta de control)"] B --> C["Script Perl subido
con nombre .zip"] C --> D["Archivo escrito en una ruta predecible
antes de validarlo (carrera)"] D --> E["El script se ejecuta como
el usuario cgi-server"] E --> F["La tarea DSCache se redirige
al intérprete Perl"] F --> G["dsinvoked ejecuta la tarea
como root"] G --> H["Credenciales y datos de AD robados,
registros borrados"]
¿Qué puede hacer un atacante?
La cadena produce una ejecución de comandos root sin autenticar en el appliance, con impacto completo en confidencialidad, integridad y disponibilidad. El registro CVE de Ivanti valora la CVE-2026-104935 en CVSS v3.1 8.6, CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:L/A:L. La escalada de privilegios por sí sola vale CVSS v3.1 7.0, CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H según su registro, porque aislada ya exige un punto de apoyo en el appliance.
Con root, UTA0576 hizo lo siguiente, documentado por Volexity:
- Extrajo credenciales almacenadas en el appliance, incluidas las credenciales de dominio usadas para LDAP.
- Volcó y exfiltró metadatos limitados de Active Directory y consultó el directorio con la cuenta de servicio del propio appliance.
- Desplegó una herramienta Kerberos personalizada con capacidad de Kerberoast y una herramienta LDAP en Python que buscaba contraseñas de administrador local de LAPS, claves de recuperación de BitLocker y atributos que contienen contraseñas.
- Realizó password spraying, analizó los registros de autenticación locales para hallar nombres de usuario válidos y capturó el tráfico LDAP del appliance para cosechar credenciales en texto claro y hashes NTLM.
- Exfiltró la configuración del appliance, incluidos sus métodos de autenticación, y efectuó reconocimiento local de DNS y de host.
Las condiciones son estrechas y favorables para el atacante: el único requisito previo es que la interfaz web sea alcanzable por la red. Volexity evalúa con confianza media que UTA0576 usó grandes modelos de lenguaje para ayudar a desarrollar la cadena, y con confianza baja que sus motivos son delictivos y no de espionaje. La operación que observó Volexity fue interrumpida, así que su objetivo final sigue siendo desconocido.
¿Por qué funciona la corrección?
El parche del 13 de octubre de 2026 cierra el punto de entrada. Después de él, la falla de enrutado que dejaba a una URL pública alcanzar scripts CGI internos mediante la cabecera X-DSCGI-PATH ya no funciona, así que las etapas de subida y ejecución no pueden comenzar. Los cambios de código de Ivanti no son públicos: esto no puede verificarse contra un diff. El parche del 29 de octubre de 2026 corrige la CVE-2026-111357, que cierra la ruta de un proceso comprometido hacia root a través de DSCache. También corrige la CVE-2026-118527, la ubicación de subida predecible.
Ivanti declaró que descubrió parte de la falla internamente y la corrigió en la versión 25.1.3.0 de julio de 2026, y que estaba trasladando la corrección cuando ocurrió la explotación. La empresa explicó que publicó primero la corrección de la CVE-2026-104935 porque esa falla era la vía principal de explotación. La escalada de privilegios quedó entonces sin corregir en la línea 22.8R2 durante los 16 días entre el 13 y el 29 de octubre de 2026. Los appliances parcheados el 13 de octubre estaban protegidos contra el punto de entrada remoto, pero cualquier otro punto de apoyo de ejecución de código pudo escalar a root durante esa ventana.
¿Cómo compruebo si estuve comprometido?
Empiece por la telemetría HTTP que conserve las cabeceras, como capturas de red o registros de proxy existentes. Los registros de acceso del appliance pueden no guardar X-DSCGI-PATH; exportarlos no garantiza la detección. Estos ejemplos se aplican a registros de texto sin comprimir que contengan cabeceras y se basan en las recomendaciones de Volexity:
grep -ai "X-DSCGI-PATH" *.log* | grep -a "welcome.cgi"
grep -a "X-DSCGI-PATH: /home/webserver/htdocs/dana/fb/smb/wu.cgi" *.log*
grep -a "X-DSCGI-PATH: /home/runtime/tmp/" *.log*
Una coincidencia identifica una petición sospechosa, no demuestra que el enrutamiento o la ejecución hayan funcionado. Contrástela con otras pruebas. Las peticiones repetidas a /dana-na/auth/url_default/welcome.cgi desde una fuente son otro indicio.
Busque después los artefactos pos-explotación que recuperó Volexity, en cada appliance:
ls -la /tmp/ # ml.py, rq5.py, mk.py, rr.py, sp_run.py, sp_out.txt, spray_hits.json
ls -la /data/.icscap/ # h.py, dsstatmond, cap0–cap7
El host de operación del actor observado por Volexity era 108.165.147[.]64. Los honeypots de Previdian registraron 105 intentos desde 50 direcciones al 14 de octubre de 2026, entre ellas 216.73.160[.]59, 216.73.160[.]61, 216.73.160[.]210 y 45.8.19[.]111.
Dos límites importan en estas comprobaciones. La carga borra sus propias entradas de los registros de depuración y auditoría del appliance, así que unos registros limpios no prueban seguridad. El Integrity Checker Tool de Ivanti no permite descartar esta explotación: el parche de la biblioteca está en memoria y se restaura el cambio de DSCache. Las cargas temporales y las herramientas posteriores a la explotación sí pueden escribir en disco. Volexity y CISA afirman ambas que confirmar un compromiso exige análisis forense de red y de memoria. Los pasos completos de respuesta de CISA están en «¿Cómo lo soluciono?».
Cronología
- 2026-10-01: Defused Cyber registra intentos de explotación previos a la divulgación contra sus señuelos, que atribuye a la CVE-2026-104935.
- 2026-10-03: UTA0576 empieza a explotar la cadena repetidamente contra el appliance de un cliente de Volexity, en la versión 22.8R2.4 build 19097, entonces la más reciente.
- 2026-10-05: Volexity inicia la investigación que reconstruirá la cadena a partir de memoria y core dumps.
- 2026-10-13: Ivanti publica correcciones para la CVE-2026-104935, Volexity publica el análisis de la cadena y CISA la agrega al KEV con plazo 2026-10-16.
- 2026-10-14: Previdian reporta 105 intentos de explotación desde 50 direcciones IP contra sus sensores honeypot.
- 2026-10-15: MITRE publica el registro CVE de la CVE-2026-111357, que indica la falla explotada en entornos reales.
- 2026-10-29: Ivanti publica parches para la CVE-2026-111357 y la CVE-2026-118527 en 22.8R2.6 y 25.1.1.3.
- 2026-10-30: CISA agrega ambas CVE de la cadena al KEV, con plazos federales de 2026-11-02 y 2026-11-13.
Preguntas frecuentes
¿Un appliance solo interno necesita la corrección?
Sí, en cuanto un atacante de red pueda alcanzar su interfaz web, incluso a través de una red de bastión o una exposición mal configurada. La primera petición de la cadena va a la página pública de inicio de sesión: no exige cuenta VPN ni acceso previo. Si la interfaz es realmente inalcanzable, el riesgo se reduce a personal interno y atacantes en pivote, y la actualización sigue siendo la solución.
Apliqué el parche de la CVE-2026-104935 el 13 de octubre. ¿Ya terminé?
Solo si desde entonces alcanzó 22.8R2.6 o 25.1.1.3. El parche del 13 de octubre cerraba el punto de entrada remoto, pero la escalada de privilegios quedó sin corregir hasta el 29 de octubre. Verifique la versión, complete la actualización y recuerde que cualquier otro punto de apoyo de ejecución de código en el appliance pudo escalar durante esa ventana.
¿Puede el Integrity Checker Tool confirmar que el appliance está limpio?
No. El exploit parchea el código de la biblioteca solo en memoria y restaura el almacén de configuración, por lo que un control de integridad sin alertas no descarta una intrusión. Volexity señala que confirmar un compromiso exige investigación forense de memoria, disco y red, y que UTA0576 borraba sus entradas tanto del registro de depuración de Ivanti como del registro de auditoría de Linux.
¿Por qué veo una puntuación distinta para la CVE-2026-111357?
El registro CVE publicado por MITRE, actualizado el 31 de octubre de 2026, la valora en CVSS v3.1 7.0 con el vector anterior. Algunas coberturas del 31 de octubre reportan 8.8 para la misma falla. El artículo sigue el registro CVE como fuente primaria, y ese registro es también la base de los datos de enriquecimiento de CISA. La puntuación solo importa aislada, porque el punto de entrada de la cadena no exige ninguna credencial.
¿Fue un caso de ransomware o de espionaje?
Ninguno de los dos está confirmado. Volexity evalúa con confianza baja que UTA0576 actúa por motivos delictivos, y las acciones observadas preparaban un movimiento lateral: robo de credenciales, reconocimiento de Active Directory y password spraying. La operación que observó Volexity se interrumpió antes de su objetivo final, que sigue desconocido.
¿Cuál es la relación entre las tres CVE?
La CVE-2026-104935 cubre juntas la omisión de autenticación y la carrera de ejecución de código. La CVE-2026-111357 cubre la escalada a root y la CVE-2026-118527 la ubicación de archivo predecible que hace caer la subida en una ruta conocida. Las entradas KEV de CISA para las dos últimas indican que cada una se encadena con las otras dos. El registro CVE de la CVE-2026-118527 aún no estaba publicado al 31 de octubre de 2026.
¿Cuál es la magnitud de la explotación?
No se publica ningún recuento de víctimas. Defused Cyber registró intentos desde el 1 de octubre y Previdian contó 105 intentos contra sus sensores al 14 de octubre. La consultora watchTowr dijo a The Hacker News que esta falla se une a otras 14 entradas de Ivanti y Pulse Connect Secure en el catálogo KEV. Los intentos están confirmados; el número de compromisos exitosos, no.
Encuentre los appliances VPN expuestos de su entorno con Ostorlab
Un appliance alcanzable desde Internet es el único requisito previo que esta cadena necesita. El descubrimiento de superficie de ataque de Ostorlab construye el inventario de los hosts expuestos de su organización. Le dice qué appliances Ivanti Connect Secure existen y dónde verificar primero las versiones.
Referencias
- Volexity, A Series of Unauthenticated Events: Chained Exploitation of Ivanti Connect Secure Zero-Days: https://www.volexity.com/blog/2026/10/13/a-series-of-unauthenticated-events-chained-exploitation-of-ivanti-connect-secure-zero-days/ (comprobado el 31 de octubre de 2026)
- Indicadores de inteligencia de amenazas de Volexity para la campaña UTA0576: https://github.com/volexity/threat-intel/tree/main/2026/2026-10-13%20Ivanti (comprobado el 31 de octubre de 2026)
- Aviso de seguridad de Ivanti, CVE-2026-104935: https://hub.ivanti.com/s/article/Security-Advisory-Ivanti-Connect-Secure-CVE-2026-104935 (comprobado el 31 de octubre de 2026)
- Registro CVE-2026-104935: https://www.cve.org/CVERecord?id=CVE-2026-104935 (comprobado el 31 de octubre de 2026)
- Registro CVE-2026-111357: https://www.cve.org/CVERecord?id=CVE-2026-111357 (comprobado el 31 de octubre de 2026)
- Alerta de CISA, CISA Adds Two Known Exploited Vulnerabilities to Catalog, 30 de octubre de 2026: https://www.cisa.gov/news-events/alerts/2026/10/30/cisa-adds-two-known-exploited-vulnerabilities-catalog (comprobado el 31 de octubre de 2026)
- Fuente JSON del catálogo KEV de CISA: https://www.cisa.gov/sites/default/files/feeds/known_exploited_vulnerabilities.json (comprobado el 31 de octubre de 2026)
- The Hacker News, Attackers Chain Three Ivanti Connect Secure Flaws to Gain Unauthenticated Root Access, 31 de octubre de 2026: https://thehackernews.com/2026/10/attackers-chain-three-ivanti-connect.html (comprobado el 31 de octubre de 2026)
- The Hacker News, CISA Urges Immediate Ivanti Connect Secure Updates as Honeypots Log 105 Exploit Attempts, 14 de octubre de 2026: https://thehackernews.com/2026/10/cisa-urges-immediate-ivanti-connect.html (comprobado el 31 de octubre de 2026)
- Alerta de CISA, CISA Urges Patching of Newly Exploited Ivanti Connect Secure Vulnerability, 13 de octubre de 2026: https://www.cisa.gov/news-events/alerts/2026/10/13/cisa-urges-patching-newly-exploited-vulnerability-ivanti-connect-secure (enlazada desde The Hacker News, comprobado el 31 de octubre de 2026)