
Detectar de manera segura si una instancia de FortiGate SSL VPN es vulnerable a CVE-2023-27997 basado en el tiempo de respuesta
Detecte de forma segura si una instancia de FortiGate SSL VPN es vulnerable a CVE-2023-27997 basándose en el tiempo de respuesta. Consulte el artículo completo en el blog de Bishop Fox, que incluye un recorrido completo de la metodología detrás de esta herramienta.
CVE-2023-27997 es un desbordamiento de búfer basado en el montón en el componente SSL VPN de FortiGate que se ha demostrado que es explotable para RCE previo a la autenticación. Dado que se trata de un error de corrupción de memoria, necesitamos poder detectar versiones vulnerables sin bloquear el proceso sslvpnd y desconectar a los usuarios activos.
Esta herramienta enviará 800 solicitudes a la ruta URL vulnerable. La mitad de las solicitudes tendrán una longitud no válida y, por lo tanto, serán rechazadas por las versiones más recientes de FortiGate; esto crea una diferencia de tiempo medible (alrededor de 250 microsegundos en nuestros dispositivos durante las pruebas) entre las solicitudes con longitudes válidas y no válidas, que podemos detectar usando un poco de matemáticas.
Los campos de tamaño de solicitud y longitud de datos se eligen específicamente para que, en dispositivos vulnerables, la corrupción de memoria solo afecte áreas del montón en las que no hay datos en uso. Esto garantiza que el proceso SSL VPN no se bloquee.
$ git clone https://github.com/BishopFox/CVE-2023-27997-check
$ cd CVE-2023-27997-check
$ python3 -m venv venv
$ source venv/bin/activate
$ python3 -m pip install -r requirements.txt
Escanee la VPN SSL en https://<IP>:<PORT>. El objetivo puede devolver el estado Vulnerable, Parcheado o Desconocido. El escaneo normalmente se completa en menos de 30 segundos, pero debido a la gran cantidad de solicitudes enviadas, puede tardar hasta 5 minutos en algunas circunstancias.
$ python3 CVE-2023-27997-check.py <IP> <PORT>
En el siguiente ejemplo, example.com:10443 es vulnerable a CVE-2023-27997.
$ python3 CVE-2023-27997-check.py example.com 10443
Checking https://example.com:10443
Vulnerable
Tenga en cuenta que esta herramienta depende de información de tiempo medida a través de Internet, que está sujeta a ruido. La herramienta le advertirá cuando los resultados puedan ser incorrectos.
$ python3 CVE-2023-27997-check.py example.com 10443
Checking https://example.com:10443
WARNING: Low confidence results.
Patched
$ python3 CVE-2023-27997-check.py example.com 10443
Checking https://example.com:10443
WARNING: Low confidence results.
Unknown
Si ve WARNING: Low confidence results, considere intentar reducir el ruido de Internet utilizando un VPS que esté lo más cerca geográficamente posible del servidor de destino.
El uso de esta herramienta para atacar objetivos sin consentimiento mutuo previo es ilegal. Es responsabilidad del usuario final cumplir con todas las leyes locales, estatales y federales aplicables. Los desarrolladores no asumen ninguna responsabilidad y no son responsables por cualquier uso indebido o daño causado por este programa.