
Sicher erkennen, ob eine FortiGate SSL VPN-Instanz anfällig für CVE-2023-27997 ist, basierend auf der Antwortzeit.
Sicher erkennen, ob eine FortiGate SSL VPN-Instanz basierend auf Antwortzeiten für CVE-2023-27997 anfällig ist. Siehe den vollständigen Artikel im Bishop Fox Blog, einschließlich einer kompletten Schritt-für-Schritt-Erklärung der Methodik hinter diesem Tool.
CVE-2023-27997 ist ein heap-basierter Pufferüberlauf in der SSL-VPN-Komponente von FortiGate, der nachweislich für Pre-Authentifizierungs-RCE ausgenutzt werden kann. Da es sich um einen Speicherkorruptionsfehler handelt, wollten wir in der Lage sein, anfällige Versionen zu erkennen, ohne den sslvpnd-Prozess zum Absturz zu bringen und aktive Benutzer zu trennen.
Dieses Tool sendet 800 Anfragen an den anfälligen URL-Pfad. Die Hälfte der Anfragen hat eine ungültige Länge und wird daher von neueren FortiGate-Versionen abgelehnt; dies erzeugt einen messbaren Zeitunterschied (etwa 250 Mikrosekunden auf unseren Geräten während des Tests) zwischen Anfragen mit gültigen und ungültigen Längen, den wir mit etwas Mathematik erkennen können.
Die Größe der Anfragen und die Datenlängenfelder sind so gewählt, dass Speicherkorruption auf anfälligen Geräten nur Bereiche im Heap betrifft, in denen keine Daten in Benutzung sind. Dies garantiert, dass der SSL-VPN-Prozess nicht abstürzt.
$ 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
Scannen Sie das SSL-VPN unter https://<IP>:<PORT>. Das Ziel kann mit den Status Vulnerable, Patched oder Unknown zurückkommen. Der Scan wird normalerweise in unter 30 Sekunden abgeschlossen – aber aufgrund der großen Anzahl von gesendeten Anfragen kann es unter bestimmten Umständen bis zu 5 Minuten dauern.
$ python3 CVE-2023-27997-check.py <IP> <PORT>
Im folgenden Beispiel ist example.com:10443 anfällig für CVE-2023-27997.
$ python3 CVE-2023-27997-check.py example.com 10443
Checking https://example.com:10443
Vulnerable
Beachten Sie, dass dieses Tool auf Zeitinformationen basiert, die über das Internet gemessen werden und Störungen unterliegen. Das Tool warnt Sie, wenn Ergebnisse möglicherweise falsch sind.
$ 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
Wenn Sie WARNING: Low confidence results sehen, versuchen Sie, Internetrauschen zu reduzieren, indem Sie einen VPS verwenden, der geografisch so nah wie möglich am Zielserver liegt.
Die Nutzung dieses Tools zum Angriff auf Ziele ohne vorherige gegenseitige Zustimmung ist illegal. Es liegt in der Verantwortung des Endbenutzers, alle geltenden lokalen, staatlichen und bundesstaatlichen Gesetze einzuhalten. Die Entwickler übernehmen keine Haftung und sind nicht verantwortlich für Missbrauch oder Schäden, die durch dieses Programm verursacht werden.