
CVE-2024-21762 es una vulnerabilidad crítica en los productos FortiOS y FortiProxy de Fortinet, presente en su componente SSL VPN.
CVE-2024-21762 es una vulnerabilidad crítica en los productos FortiOS y FortiProxy de Fortinet, presente en su componente SSL VPN. Esta vulnerabilidad permite a un atacante remoto no autenticado ejecutar código o comandos arbitrarios en el sistema objetivo mediante solicitudes HTTP especialmente diseñadas, lo que podría resultar en el control total del sistema.
Impacto: Debido a esta vulnerabilidad, un atacante puede ejecutar código arbitrario de forma remota sin necesidad de autenticación, llegando a controlar por completo el dispositivo afectado. Esto puede provocar la filtración de datos sensibles, la interrupción de servicios e incluso ataques de red adicionales.
Método de ataque: El principal medio que utiliza el atacante para explotar esta vulnerabilidad es el envío de solicitudes HTTP especialmente diseñadas que desencadenan una vulnerabilidad de escritura fuera de los límites en el componente SSL VPN. En concreto, el atacante puede manipular los datos en memoria mediante solicitudes cuidadosamente construidas, logrando finalmente la ejecución remota de código.
Medidas de protección: Para prevenir ataques contra esta vulnerabilidad, se recomienda actualizar inmediatamente FortiOS y FortiProxy a la versión de seguridad más reciente proporcionada oficialmente. Además, deshabilitar la funcionalidad SSL VPN también constituye una medida de protección temporal.
CVE-2024-21762 es una vulnerabilidad de alto riesgo en Fortinet FortiOS SSL VPN, clasificada como una vulnerabilidad de escritura fuera de los límites no autorizada. Esta vulnerabilidad podría utilizarse para la ejecución remota de código (RCE), representando una amenaza para la seguridad de las redes empresariales.
FortiGate publicó una actualización en febrero de 2024 que corrigió múltiples vulnerabilidades de riesgo medio y alto. Entre ellas, este artículo se centra en analizar el proceso de explotación de CVE-2024-21762, incluyendo cómo aprovechar esta vulnerabilidad para lograr la ejecución remota de código.
El siguiente código PoC fue proporcionado por assetnote y demuestra los pasos básicos para explotar esta vulnerabilidad.
# Fragmento de código de explotación simplificado
ssl_do_handshake_ptr = b"%60%ce%42%00%00%00%00%00" # Puntero de handshake SSL
getcwd_ptr = b"%70%62%2c%04%00%00%00%00" # Puntero de la función getcwd
pivot_1 = b"%52%f7%fd%00%00%00%00%00" # Conjunto de instrucciones pivot 1
pivot_2 = b"%ac%c9%ab%02%00%00%00%00" # Conjunto de instrucciones pivot 2
rop = b"" # Cadena ROP
rop += b"%c6%e2%46%00%00%00%00%00"
rop += b"%19%6f%4d%01%00%00%00%00"
# ... el resto del contenido de la cadena ROP se omite
# Datos de solicitud falsificados
body = (b"B"*1808 + b"=" + b"B"*1024 + b"&") * 20
data = b"POST /remote/hostcheck_validate HTTP/1.1\r\n"
data += b"Host: 192.168.1.229\r\n"
data += f"Content-Length: {len(body)}\r\n".encode("utf-8")
data += b"\r\n" + body
# Enviar solicitud falsificada
ssock1 = make_sock(TARGET, PORT)
ssock1.sendall(data)
Mediante la comparación de los archivos binarios de FortiOS 7.4.2 y 7.4.3, el código corregido se encuentra en la función sub_18F4980. La corrección se centra principalmente en los siguientes dos puntos:
chunk, se añadió una validación de la longitud del chunk. Si la longitud decodificada supera 16, se considera ilegal.chunk trailer, evitando la escritura fuera de los límites de \r\n.Desencadenar la escritura fuera de los límites:
chunk, si el campo de longitud se decodifica como 0, se activa la lectura del chunk trailer.chunk trailer, se escribe \r\n en la pila según el campo de longitud.0, se desencadena la escritura fuera de los límites de \r\n cerca de la dirección de retorno.Desbordamiento de pila y secuestro:
chunk cuidadosamente construidos, se puede sobrescribir la dirección de retorno en la pila, logrando el objetivo de secuestrar el flujo de control del programa.Aunque es posible realizar el secuestro mediante la cadena ROP, /bin/sh en el programa principal de FortiGate no tiene la capacidad de ejecutar comandos directamente, por lo que es necesario buscar otras funciones explotables. Por ejemplo, mediante la falsificación de punteros a estructuras, se puede utilizar SSL_do_handshake para realizar ataques adicionales.
Incluso en la configuración predeterminada (con el modo Web desactivado), esta vulnerabilidad aún puede ser explotada.

CVE-2024-21762 es una vulnerabilidad de complejidad relativamente alta, cuyo proceso de explotación requiere un conocimiento profundo de la lógica del código y el diseño de memoria de FortiOS. En comparación con los desafíos tradicionales de CTF, la explotación de vulnerabilidades reales requiere un análisis más complejo del contexto y la estructura.
El autor proporciona un artículo de análisis chino más detallado, que se puede consultar en: Enlace original