
Una vulnerabilidad de inyección de comandos del sistema operativo en el programa CGI de Zyxel
Una vulnerabilidad de inyección de comandos del sistema operativo en el programa CGI de Zyxel
La vulnerabilidad, descubierta por primera vez el 13 de abril de 2022, causó ejecución remota de código en los productos de firewall de Zyxel. Esta importante vulnerabilidad, con una puntuación CVSS de 9.8, fue bloqueada con la actualización publicada por Zyxel 15 días después de su aparición. Al menos 20.800 modelos se vieron afectados en este proceso, principalmente en Europa. La vulnerabilidad se debe al comando "setWanPortSt" dentro del applet de aprovisionamiento sin contacto (zero-touch provisioning). El acceso al comando "setWanPortSt" se realiza a través del endpoint /ztp/cgi-bin/handler. No se han observado explotaciones desde que Zyxel lanzó una actualización para su modelo ante esta vulnerabilidad. La versión de software de los modelos afectados se ha actualizado a v5.30, y se ha enfatizado que la actualización automática de software debe estar activa para prevenir la vulnerabilidad.
El 13 de abril de 2022, Rapid7 reportó una vulnerabilidad que afecta los dispositivos de firewall de Zyxel, permitiendo a los atacantes inyectar comandos arbitrarios de forma remota como usuario "nobody" sin autenticación. Esta vulnerabilidad fue tratada a nivel crítico y la puntuación CVSS se determinó como 9.8. Zyxel luego abordó la vulnerabilidad emitiendo una actualización de seguridad el 28 de abril de 2022. El 12 de mayo de 2022, Rapid7 publicó un aviso y un módulo de Metasploit para esta vulnerabilidad.
Investigadores de ShadowServer han comenzado a monitorear intentos de explotar CVE-2022-30525. Al menos 20.800 de los modelos de firewall Zyxel afectados han estado expuestos en línea durante las investigaciones. Se señaló que la mayoría de los modelos afectados estaban en Francia e Italia.

La vulnerabilidad surge del uso de “os.system” con datos proporcionados por el atacante. El endpoint /ztp/cgi-bin/handler se utiliza para lanzar el ataque. Handler es un script de Python que puede ejecutar varios comandos diferentes. Jake Baines, quien reportó el error por primera vez, explicó la vulnerabilidad en su blog de la siguiente manera: “Rapid7 descubrió y reportó una vulnerabilidad que afecta los firewalls Zyxel que admiten Zero Touch Provisioning (ZTP), que incluye las series ATP, VPN y USG FLEX (incluyendo USG20-VPN y USG20W-VPN). La vulnerabilidad, identificada como CVE-2022-30525, permite a un atacante remoto no autenticado lograr la ejecución de código arbitrario como el usuario nobody en el dispositivo afectado.” El problema surge de un comando llamado "setWanPortSt" dentro de la implementación de aprovisionamiento sin contacto (zero touch provisioning), que permite al aprovisionador remoto cambiar la configuración IP de los puertos del firewall.
Se ha publicado un PoC para entender mejor cómo se realiza la explotación. Victorian Machinery es un exploit de prueba de concepto para CVE-2022-30525. La vulnerabilidad es una inyección de comandos remota no autenticada que afecta los firewalls Zyxel que admiten aprovisionamiento sin contacto.

Primero, el objetivo se explota utilizando un listener netcat y se captura una reverse shell. Por defecto, “nc” se ejecuta proporcionando “nc-path”. En Python, se crea una copia del proceso principal mediante la operación “os.fork()”. Luego, si el id del proceso es 0, se realiza una solicitud POST a la dirección URL especificada. La URL contiene el protocolo, la dirección remota a explotar, el puerto remoto y el endpoint “/ztp/cgi-bin/handler”, respectivamente. Gracias al endpoint /ztp/cgi-bin/handler aquí, se puede acceder a la funcionalidad del comando “setWanPortSt”, que permite cambiar la configuración IP de los puertos del firewall. Cuando se examina el payload, se observa que el objetivo del comando es el puerto 1270 del protocolo DHCP. De esta manera, los atacantes pueden lograr la ejecución remota de código como nobody.
La Fundación Shadowserver, el grupo que investiga la explotación a nivel mundial, no reveló más información sobre los intentos de explotación observados y sus características. Se ha anunciado que no ha habido intentos de abuso desde el lunes 16 de mayo de 2022, pero las investigaciones continúan.
Se recomienda a los administradores de los dispositivos afectados actualizar el firmware a V5.30 lo antes posible. Jake baines también dijo que se habiliten las actualizaciones automáticas de firmware si es posible. Zyxel fue criticado por manejar la vulnerabilidad en silencio, pero en el comunicado se explicó que esto se debió a "falta de comunicación durante el proceso de coordinación de divulgación". Se ha informado a los empleados internos que crear una nueva política de "Firmas de Protocolo HTTP" mediante un diccionario para la mitigación manual puede prevenir la explotación.
Como resultado, esta vulnerabilidad, que ocurrió en los productos de firewall de Zyxel, afectó a muchos modelos a nivel crítico. Aunque el problema se abordó en poco tiempo, el impacto de la explotación fue bastante grande. El hecho de que no se hayan encontrado explotaciones durante un largo tiempo muestra que las actualizaciones pueden cerrar la vulnerabilidad de seguridad por ahora.