FortiGate-Hack: Zugang ohne Passwort

Wie eine kritische Schwachstelle in FortiGate den vollständigen Admin-Zugriff ermöglicht.

FortiGate-Hack: Zugang ohne Passwort

In der IT-Sicherheit werden VPNs oft als eine der fundamentalen Säulen zum Schutz der Datenübertragung angesehen. Doch was passiert, wenn nicht der verschlüsselte Tunnel, sondern das VPN-Gateway selbst zur Achillesferse wird? Ein Angreifer, der administrativen Zugriff auf die Appliance erlangt, kann den gesamten Datenverkehr im Klartext einsehen, das Gerät nach Belieben umkonfigurieren oder als Brückenkopf für weitere Angriffe im internen Netzwerk nutzen. Dieser Artikel demonstriert, wie eine kritische Authentisierungs-Bypass-Schwachstelle in einer FortiGate VPN-Appliance ausgenutzt werden kann, um genau dieses Szenario zu realisieren.

Die trügerische Sicherheit von VPN-Appliances

Die weit verbreitete Annahme ist, dass der verschlüsselte Tunnel zwischen Client und VPN-Gateway die größte Hürde für Angreifer darstellt. Moderne Verschlüsselungsalgorithmen sind in der Tat robust und praktisch nicht mit roher Gewalt zu brechen. Die Angriffsfläche ist jedoch weitaus größer. Viele übersehen, dass die VPN-Appliances selbst komplexe Systeme sind – oft auf einer Linux-Basis laufend – mit eigenen administrativen Schnittstellen, Webservern und Diensten wie SSH. Genau hier setzen clevere Angreifer an. Anstatt den Tunnel anzugreifen, zielen sie auf Schwachstellen in der Verwaltungssoftware des Geräts ab.

Schritt 1: Aufklärung - Das Ziel im Visier

Jeder Angriff beginnt mit der Informationsbeschaffung. Im lokalen Netzwerk wird zunächst ein Scan durchgeführt, um das Zielsystem zu identifizieren. Ein Werkzeug der Wahl für diese Aufgabe ist Nmap. Mit einem einfachen TCP-Scan lässt sich die IP-Adresse des Geräts ermitteln und es werden offene Ports und Dienste aufgedeckt.

nmap -sT 192.168.1.0/24

Die Ausgabe eines solchen Scans könnte wie folgt aussehen und verrät uns wertvolle Informationen:

Das Ergebnis ist eindeutig: Unter der IP 192.168.1.99 ist ein Gerät erreichbar, auf dem Port 22 (SSH) und Port 443 (HTTPS) offen sind. Dies sind typische Ports für die administrative Verwaltung einer FortiGate-Appliance.

Schritt 2: Der frontale Angriff - Ein vorhersehbares Scheitern

Mit dem Wissen um einen offenen SSH-Port wäre der naheliegendste Versuch, sich direkt als Administrator anzumelden. Doch Versuche, das Passwort des admin-Benutzers zu erraten, scheitern erwartungsgemäß.

ssh admin@192.168.1.99
admin@192.168.1.99's password:
Permission denied, please try again.
admin@192.168.1.99's password:
Permission denied, please try again.
admin@192.168.1.99's password:
admin@192.168.1.99: Permission denied (publickey,password).

Nach mehreren Fehlversuchen wird die Verbindung zurückgewiesen. Ein reines Raten von Passwörtern ist selten erfolgreich und würde hier nur zu einer Sperrung der IP-Adresse führen. Der Weg ins System muss ein anderer sein.

Schritt 3: Die Schwachstelle - Wenn die Vordertür einen Konstruktionsfehler hat

An dieser Stelle kommt eine spezifische Schwachstelle ins Spiel: CVE-2022-40684. Hierbei handelt es sich um eine kritische Authentisierungs-Bypass-Schwachstelle mit einem CVSS-Score von 9.8. Sie ermöglicht es einem nicht authentifizierten Angreifer, durch speziell präparierte HTTP- oder HTTPS-Anfragen administrative Änderungen am System vorzunehmen. Im Kern erlaubt es dieser Fehler, die Konfiguration des admin-Benutzers zu manipulieren und einen eigenen öffentlichen SSH-Schlüssel in dessen authorized_keys-Datei zu hinterlegen.

Schritt 4: Das Werkzeug - Ein Python-Skript als Generalschlüssel

Für diese Schwachstelle existieren öffentlich verfügbare Proof-of-Concept-Exploits. Einer davon wurde von Horizon3.ai entwickelt und auf GitHub veröffentlicht. Das Python-Skript nutzt die Schwachstelle aus, um den öffentlichen SSH-Schlüssel eines Angreifers auf dem Zielgerät zu hinterlegen.

Der Aufruf des Skripts ist denkbar einfach:

# CVE-2022-40684: Fortinet Authentication Bypass
# Dieses Skript nutzt die Schwachstelle, um einen SSH-Key für einen beliebigen Benutzer zu setzen.
# Weitere technische Details gibt es im Blog von Horizon3.ai.

# usage: python3 CVE-2022-40684.py -t <target> -u <username> -k <ssh-key-file>
# Beispiel:
# python3 CVE-2022-40684.py -t 192.168.1.99 -u admin -k ~/.ssh/id_ed25519.pub

Das Skript benötigt drei Parameter: die IP-Adresse des Ziels (-t), den Benutzernamen des Administrators (-u) und den Pfad zur lokalen, öffentlichen SSH-Schlüsseldatei des Angreifers (-k).

Schritt 5: Der erfolgreiche Einbruch - Admin-Zugriff ohne Passwort

Nun wird der Exploit ausgeführt. Das Skript sendet die manipulierte Anfrage an die Weboberfläche der FortiGate-Appliance auf Port 443.

python3 CVE-2022-40684.py -t 192.168.1.99 -u admin -k ~/.ssh/id_ed25519.pub

Wenn das Ziel verwundbar ist, meldet das Skript Erfolg:

[+] SSH key for user 'admin' added successfully.

Damit wurde der öffentliche Schlüssel des Angreifers zur Liste der autorisierten Schlüssel für den admin-Benutzer auf der FortiGate-Appliance hinzugefügt. Ein erneuter SSH-Login-Versuch, diesmal unter Verwendung des korrespondierenden privaten Schlüssels, ist nun erfolgreich.

Der Angreifer ist nun ohne Eingabe eines Passworts als Administrator auf dem System angemeldet und hat die volle Kontrolle.

Die Konsequenzen

Mit vollen administrativen Rechten sind die Möglichkeiten für einen Angreifer nahezu unbegrenzt. Er könnte:

  • Den gesamten ein- und ausgehenden VPN-Verkehr mit Tools wie diag sniffer packet any anschauen, da der Verkehr auf der Appliance entschlüsselt wird.
  • Die Firewall-Regeln ändern, um bösartigen Verkehr zu erlauben oder legitimen zu blockieren.
  • Dauerhafte Backdoors installieren, um den Zugriff auch nach einem Neustart zu gewährleisten.
  • Das Gerät als Sprungbrett für weitere Angriffe auf das interne Unternehmensnetzwerk nutzen.
  • Das gesamte System lahmlegen.

Kein Einzelfall: Ein Blick auf die CVE-Landschaft

Dieser Vorfall ist kein isoliertes Problem. Ein Blick auf die Liste der Schwachstellen für Fortinet-Produkte zeigt eine beunruhigende Häufigkeit von kritischen Sicherheitslücken. Von Path-Traversal-Fehlern bis hin zu Remote-Code-Execution – die Liste ist lang und verdeutlicht ein strukturelles Problem. Der berüchtigte Viasat-Hack zu Beginn des Ukraine-Krieges 2022, bei dem zehntausende Satellitenmodems ausfielen, wurde ebenfalls durch die Ausnutzung einer Schwachstelle in einer VPN-Komponente ermöglicht. Dies zeigt, dass selbst ältere, bekannte Schwachstellen eine massive Bedrohung darstellen, wenn sie nicht konsequent gepatcht werden.

Fazit

Die Demonstration zeigt eindrücklich, dass blindes Vertrauen in eine “Security-Box” fatal sein kann. Während die Kryptografie von VPN-Tunneln stark ist, stellen die Management-Schnittstellen der Appliances oft das schwächste Glied dar. Ein konsequentes Patch-Management, eine engmaschige Überwachung der CVE-Meldungen für eingesetzte Produkte und eine grundsätzliche “Zero-Trust”-Haltung gegenüber jedem Gerät im Netzwerk sind unerlässlich, um die Integrität der eigenen Infrastruktur zu wahren.