Una auditoría de seguridad de FortiOS VPN de Fortinet realizada por el investigador de Akamai Ben Barnea ha descubierto múltiples vulnerabilidades que podrían permitir a los atacantes lanzar ataques de denegación de servicio (DoS) y potencialmente ejecutar código remoto (RCE).
Los hallazgos, divulgados responsablemente a Fortinet, provocaron una rápida respuesta de la empresa de ciberseguridad, con parches lanzados el 14 de enero de 2025 para abordar las debilidades identificadas.
Las vulnerabilidades surgen del uso que hace Fortinet de la biblioteca ‘apreq’, un módulo de Apache para manejar datos de solicitudes de clientes.
Barnea descubrió que la implementación de apreq por parte de Fortinet se basó en una versión de casi 25 años con modificaciones mínimas. Esta base de código anticuada contenía varias fallas, incluida la escritura fuera de límites (OOB) de bytes NULL, copia salvaje, DoS del dispositivo, DoS del servidor web y lectura OOB.
Múltiples vulnerabilidades descubiertas
Una de las vulnerabilidades más preocupantes es el DoS del dispositivo. Esta vulnerabilidad reside en el código de Fortinet, que utiliza la biblioteca. Cuando un usuario carga un archivo a través de un formulario, se crea un nuevo archivo en el directorio /tmp/.
Para cada carga de archivo, se crea una estructura y se agrega a una lista vinculada de archivos cargados, pero solo se elimina el primer archivo de la lista vinculada al final del análisis.
Un atacante puede aprovechar esto enviando repetidamente solicitudes con formularios que contienen varios archivos y, finalmente, llenando el directorio /tmp/, que se almacena en la RAM.
Esto conduce a una condición de falta de memoria (OOM) del sistema, lo que hace que el dispositivo se bloquee y deje de funcionar hasta que se reinicie. En algunos casos, el ataque puede incluso provocar un bloqueo de la red, lo que deja el dispositivo inutilizable incluso después de reiniciar.
Otra vulnerabilidad identificada es una copia salvaje dentro de la función multipart_buffer_read. Esto ocurre cuando el código no logra ubicar el límite entre los campos del formulario dentro del fragmento de datos inicial.
Como resultado, la función devuelve solo una parte del búfer interno: (bytes – longitud_límite). El error aquí es que los bytes se establecen en el valor constante 5120, mientras que la longitud del límite puede ser mucho mayor (hasta el límite de la longitud del encabezado).
Por lo tanto, al enviar un campo en el que el límite no está en el primer fragmento y la longitud del límite es mayor que 5120, podemos hacer que sea negativo. Esto lleva a que el código establezca self->buffer antes del búfer y self->buffer_len a un valor mayor.
Esto puede dar lugar a una operación de copia de memoria con un tamaño negativo, lo que podría provocar un escenario de «copia salvaje» en el que los datos se escriben en ubicaciones de memoria no deseadas.
Si bien potencialmente conduce a RCE, la explotación de dicha copia comodín sería muy difícil, si es posible, porque no hay opción para «detener» la copia comodín y no hay subprocesos múltiples, por lo que no podemos sobrescribir un objeto que se utilizará en otro subproceso al mismo tiempo.
A las vulnerabilidades descubiertas por Barnea se les ha asignado CVE-2024-46666 y CVE-2024-46668. Fortinet abordó las vulnerabilidades descubiertas por Barnea el 14 de enero de 2025 y los dispositivos con versiones actualizadas de FortiOS están protegidos contra ellas.
Si bien no se identificaron definitivamente vulnerabilidades críticas de RCE, Barnea enfatizó la importancia de la investigación de seguridad continua en dispositivos VPN, dado su papel crítico como puertas de entrada a las redes organizacionales.