Envío de registros, alertas y datos de telemetría a través de un diodo de datos

Descubre cómo
Utilizamos inteligencia artificial para traducir el sitio web y, aunque nos esforzamos por garantizar la precisión, es posible que las traducciones no sean siempre 100 % exactas. Agradecemos tu comprensión.

CVE-2023-20198 y CVE-2023-20273: De una solicitud web sin autenticar a privilegios de root en iOS XE

Por OPSWAT
Comparte esta publicación
Participantes en el Programa OPSWAT

Resumen

A finales de 2023, unos investigadores de seguridad descubrieron una vulnerabilidad encadenada crítica que afectaba a la interfaz de usuario web de Cisco IOS XE y que permitía a atacantes no autenticados obtener el control total de los dispositivos afectados. La cadena de ataque combina dos vulnerabilidades de seguridad —CVE-2023-20198 y CVE-2023-20273— que, cuando se explotan conjuntamente, permiten la ejecución de comandos con privilegios de root en el host Linux subyacente que ejecuta IOS XE. Esto permite la toma de control total del dispositivo, el acceso persistente y el posible movimiento lateral a través de las redes empresariales.

  • CVE-2023-20198: Esta vulnerabilidad, presente en Software 16.0.x a 17.9.x Software Cisco IOS XE, permite a atacantes no autenticados obtener acceso inicial y crear una cuenta con nivel de privilegios 15 (administrador) a través de la interfaz de usuario web. Una vez creada, el atacante puede realizar cualquier acción administrativa en el dispositivo, lo que supone un grave riesgo para la seguridad.
  • CVE-2023-20273: Esta vulnerabilidad, que afecta a las mismas versiones del software, permite a los usuarios autenticados con privilegios de nivel 15 ejecutar comandos arbitrarios con privilegios de root en el sistema operativo Linux subyacente a través de una falla de inyección de comandos en el componente de gestión del software.

Durante el Programa OPSWAT , nuestros becarios, Hoa X. Nguyen y Nhan Nguyen, llevaron a cabo un análisis técnico en profundidad de esta cadena de ataque. En nuestra investigación, reproducimos las vulnerabilidades en un conmutador Cisco Catalyst 9300-24T-E con el sistema operativo IOS XE 17.01, demostrando cómo se pueden encadenar estas fallas para lograr el control total del sistema en condiciones reales.

Antecedentes

Descripción general de Cisco IOS XE

Cisco IOS XE es un sistema operativo de red moderno y modular que da servicio a muchas de las plataformas empresariales de Cisco, entre las que se incluyen routers, conmutadores y controladores inalámbricos. Combina la amplia funcionalidad del Cisco IOS clásico con una arquitectura más segura, programable y basada en Linux, lo que proporciona a los administradores de red flexibilidad y un mayor rendimiento.

En esencia, IOS XE funciona como un sistema operativo Linux que aloja el proceso principal denominado IOSd (demonio de IOS). Este demonio se encarga de las tareas de red tradicionales, como el enrutamiento, la gestión de la interfaz de línea de comandos y el control de la configuración. En IOS XE 17.01, el binario IOSd se encuentra en /usr/binos/bin/x86_64_crb_linux_iosd_ngwc-universalk9-ms.

A diferencia de los sistemas Cisco tradicionales, los usuarios de IOS XE que se conectan a través de SSH acceden a un shell restringido del subsistema IOSd, en lugar de al entorno Linux subyacente. Este diseño aísla el acceso real a nivel de root del sistema operativo, lo que refuerza considerablemente la barrera de seguridad general entre las interacciones de los usuarios y el núcleo del host.

Niveles de privilegios de Cisco

Los dispositivos Cisco implementan un modelo jerárquico de privilegios para controlar los permisos de los usuarios:

  • Nivel 0 - Acceso de nivel cero: Este es el nivel más restringido. Por lo general, solo permite un conjunto limitado de comandos básicos, como «logout», «enable», «disable», «help» y «exit».
  • Nivel 1 - Modo EXEC de usuario: acceso predeterminado para inicios de sesión estándar, que permite consultar el sistema de forma básica, pero no realizar cambios en la configuración.
  • Nivel 15 - Modo EXEC con privilegios: Este es el nivel de privilegios más alto y otorga control total sobre el dispositivo. Los usuarios de este nivel pueden ejecutar todos los comandos, incluidos los de configuración, y pueden reiniciar el dispositivo.

Los niveles intermedios (2-14) se pueden personalizar para otorgar permisos específicos. Los privilegios se heredan, lo que significa que los usuarios de los niveles superiores disponen automáticamente de los derechos de los niveles inferiores.

Arquitectura de la interfaz de usuario web de Cisco

La interfaz de usuario web de Cisco IOS XE ofrece una interfaz basada en navegador para gestionar y supervisar dispositivos, con funciones de configuración y diagnóstico sin necesidad de acceder a la línea de comandos. A nivel interno, la interfaz de usuario web utiliza NGINX como proxy de middleware para dirigir las solicitudes de los usuarios a diversos servicios internos, incluido el Agente de Gestión de Servicios Web (WSMA).

El componente WSMA actúa como puente de comunicación entre la interfaz de usuario web y el demonio IOSd subyacente, traduciendo las acciones realizadas a través de la web en los correspondientes comandos de configuración de IOS XE.

Figura 2: Flujo de solicitudes HTTP en IOS XE

Para garantizar el control de acceso, cada solicitud se somete a una autenticación basada en SOAP y a una verificación de privilegios a través de un encabezado HTTP específico (Priv-Level), lo que garantiza que solo los usuarios autorizados puedan realizar operaciones con privilegios.

Figura 3: Ejemplo de cuerpo XML SOAP, con nombre de usuario, contraseña de marcador de posición y comando a ejecutar

Análisis técnico

CVE-2023-20198 - Elusión de la autenticación y escalada de privilegios

Nuestros becarios descubrieron que la vulnerabilidad tiene su origen en el punto final HTTP de la interfaz de usuario web de Cisco IOS XE. Al procesar las solicitudes entrantes, la interfaz de usuario web transmite los comandos y los permisos de usuario asociados a un punto final interno (/lua5), que luego NGINX redirige a uno de los dos controladores WSMA —/webui_wsma_http o /webui_wsma_https— en función del protocolo.

Figura 4: Controlador de análisis de comandos en el código fuente de WebUI
Figura 5: Configuración de enrutamiento de NGINX, establecimiento del encabezado «Priv-Level» adecuado y envío al controlador IOSd correspondiente

El análisis estático del binario IOSd también revela una configuración de NGINX que incluye un controlador de reserva predeterminado:  

Figura 6: Manejador de nginx de reserva predeterminado encontrado en IOSd

La vulnerabilidad se debe a la forma en que NGINX e IOSd gestionan la codificación de las URL. Ambos componentes descodifican las rutas de las URL de forma independiente, lo que permite a un atacante aprovechar una vulnerabilidad de elusión de la doble codificación.

Por ejemplo, si /webui_wsma_https se envía como /%2577ebui_wsma_https, NGINX realiza una única decodificación y ve /%77ebui_wsma_https(que no coincide directamente con la ruta interna protegida), por lo que envía la solicitud a través de un controlador de reserva menos restrictivo. Cuando la solicitud llega al backend de IOSd, este realiza una segunda decodificación y resuelve la ruta a /webui_wsma_https.

Figura 7: Cadena de doble codificación

Dado que NGINX redirige inicialmente esta solicitud malformada mediante su controlador predeterminado, no aplica la lógica habitual de autenticación y control de acceso. Como consecuencia, el atacante puede inyectar un encabezado «Priv-Level» falsificado que le otorga privilegios de nivel de administrador (15). Si a esto se le suma una carga útil SOAP XML que contiene un comando para crear un nuevo usuario, se produce la creación silenciosa de una cuenta local con privilegios elevados.

Figura 8: Se ha creado con éxito una cuenta de atacante con privilegios elevados (nivel 15) mediante una solicitud HTTP diseñada a medida

Esta vulnerabilidad no requiere autenticación previa y permite al atacante obtener un control total sobre la configuración del dispositivo a través de la interfaz de usuario web, lo que constituye la primera fase de la cadena de ataque.

CVE-2023-20273 - Inyección de comandos en Software

Una vez autenticado con la cuenta de administrador recién creada, el atacante puede aprovechar la vulnerabilidad CVE-2023-20273, una vulnerabilidad de inyección de comandos en el componente de gestión de software (/webui/rest/softwareMgmt/*). Este punto de acceso está destinado a que los administradores legítimos instalen o actualicen paquetes de software en el dispositivo.

La vulnerabilidad tiene su origen en la lógica de validación de entradas de la función `validateSmuRequest(req)`, que llama a `validator.validateIPv4IPv6HostNameAddress(req.ipaddress) ` para verificar la dirección IP facilitada en la solicitud. Este paso de validación está diseñado para garantizar que la dirección facilitada tenga el formato correcto y sea segura de utilizar.

Dentro de la función `validateIPv4IPv6HostNameAddress`, la validación se basa en la rutina auxiliar `utils.isIPv6Address(ip) ` para comprobar el cumplimiento de la sintaxis IPv6. Esta función intenta analizar la entrada dividiéndola por dos puntos (:) y evaluando cada segmento con una expresión regular diseñada para rechazar patrones hexadecimales no válidos o valores fuera de rango. El fallo de implementación reside en esta expresión regular: debido a un cuantificador * excesivamente permisivo, coincide con cualquier entrada, lo que permite que valores malformados o maliciosos superen la validación sin ser detectados.

En consecuencia, los datos controlados por el atacante se aceptan como válidos y pasan a la lógica posterior, donde se utilizan para construir comandos. El valor de la dirección IP no fiable se utiliza finalmente dentro de la función `runPexecCommand()` para construir un comando del sistema que inicia una solicitud TFTP. Dado que esta operación se lleva a cabo sin validación de entradas ni escape, un atacante puede inyectar comandos arbitrarios en el proceso, lo que da lugar a la ejecución de comandos con privilegios elevados y al compromiso total del dispositivo Cisco.

Prueba de concepto (PoC)

Durante el Programa OPSWAT , nuestros becarios Hoa X. Nguyen y Nhan Nguyen reprodujeron el exploit en cadena en un laboratorio controlado y aislado físicamente, utilizando un Cisco Catalyst 9300-24T-E con el sistema operativo IOS XE 17.01. La secuencia de explotación se puede resumir en las siguientes etapas:

Figura 9: Cadena de explotación final de un atacante no autorizado que utiliza CVE-2023-20198 y CVE-2023-20273
  1. Solicitud con doble codificación: envía una solicitud POST especialmente manipulada a una ruta interna con doble codificación (por ejemplo, /%2577ebui_wsma_https) que se redirige a través del proxy de reserva y que contiene un encabezado «Priv-Level» falsificado y una carga útil SOAP de creación de cuenta.
  2. Obtener sesión de administrador: inicia sesión con la cuenta creada y recopila los tokens de sesión y CSRF.
  3. Cargar la carga útil: utiliza la función de carga de la interfaz de usuario web para colocar el archivo «attacker_shell.sh» en el dispositivo (acción reservada al administrador).
  4. Ejecutar a través de SMU: enviar una solicitud SMU con una dirección IP manipulada (por ejemplo, 100:100:100:$(/bin/sh /bootflash/attacker_shell.sh)); se omite la validación y el script cargado se ejecuta como root.
Figura 10: Se han obtenido con éxito privilegios de root en el dispositivo Cisco de destino

Remediación

Cisco ha publicado versiones parcheadas del Software Cisco IOS XE Software corrigen tanto el CVE-2023-20198 como el CVE-2023-20273. Todas las organizaciones que utilicen versiones afectadas, desde la 16.0.x hasta la 17.9.x, deben actualizar inmediatamente a la última versión corregida, tal y como se indica en el aviso de seguridad oficial de Cisco. La aplicación de estas actualizaciones elimina de forma efectiva las vulnerabilidades subyacentes y evita la escalada de privilegios no autorizada o la inyección de comandos a través de la interfaz de usuario web.

En entornos en los que no sea posible realizar una actualización inmediata, los administradores deben restringir o desactivar el acceso a la interfaz de usuario web desde redes no fiables, aplicar controles de autenticación estrictos para las interfaces administrativas y supervisar continuamente cualquier comportamiento inusual del sistema, como la creación de cuentas no autorizadas o cambios de configuración anormales.

Para reforzar la resiliencia cibernética general, las organizaciones pueden complementar las actualizaciones de los proveedores con MetaDefender OPSWAT, un marco de seguridad unificado diseñado para proteger las infraestructuras críticas mediante la detección y prevención de amenazas en archivos, dispositivos y flujos de datos. La integración MetaDefender los flujos de trabajo de red y operativos mejora la visibilidad, garantiza un análisis más exhaustivo de las amenazas y ofrece una protección adicional frente a posibles intentos de explotación dirigidos a los sistemas de gestión.

Al combinar las actualizaciones puntuales de Cisco, unos controles de acceso sólidos y una estrategia de defensa por capas respaldada por la MetaDefender , las organizaciones pueden reducir considerablemente su vulnerabilidad ante cadenas de exploits similares y mantener una postura de seguridad más sólida y resistente.

Etiquetas:

¡Mantente al día con OPSWAT!

Regístrate hoy mismo para recibir las últimas novedades de la empresa, historias, información sobre eventos y mucho más.