
CVE-2024-21762 est une vulnérabilité critique dans les produits FortiOS et FortiProxy de Fortinet, présente dans son composant SSL VPN.
CVE-2024-21762 est une vulnérabilité critique dans les produits FortiOS et FortiProxy de Fortinet, présente dans leur composant SSL VPN. Cette vulnérabilité permet à un attaquant distant non authentifié d'exécuter du code ou des commandes arbitraires sur le système cible via des requêtes HTTP spécialement conçues, ce qui peut entraîner une prise de contrôle totale du système.
Impact : En raison de cette vulnérabilité, un attaquant peut exécuter du code arbitraire à distance sans aucune authentification, prenant ainsi le contrôle total de l'appareil affecté. Cela peut entraîner une fuite de données sensibles, des interruptions de service, voire des attaques réseau supplémentaires.
Méthode d'attaque : Le principal moyen utilisé par l'attaquant pour exploiter cette vulnérabilité consiste à envoyer des requêtes HTTP spécialement conçues afin de déclencher une vulnérabilité d'écriture hors limites dans le composant SSL VPN. Plus précisément, l'attaquant peut manipuler les données en mémoire via des requêtes soigneusement élaborées, aboutissant finalement à une exécution de code à distance.
Mesures de protection : Pour se prémunir contre les attaques exploitant cette vulnérabilité, il est recommandé de mettre à niveau immédiatement FortiOS et FortiProxy vers les dernières versions de sécurité officielles fournies. De plus, la désactivation de la fonctionnalité SSL VPN constitue également une mesure de protection temporaire.
CVE-2024-21762 est une vulnérabilité à haut risque dans Fortinet FortiOS SSL VPN, appartenant à la catégorie des écritures hors limites non autorisées. Cette vulnérabilité peut être utilisée pour une exécution de code à distance (RCE), constituant une menace pour la sécurité des réseaux d'entreprise.
FortiGate a publié une mise à jour en février 2024, corrigeant plusieurs vulnérabilités de gravité moyenne et élevée. Parmi celles-ci, cet article analyse en détail le processus d'exploitation de CVE-2024-21762, y compris comment exploiter cette vulnérabilité pour réaliser une exécution de code à distance.
Le code PoC suivant, fourni par assetnote, illustre les étapes de base pour exploiter cette vulnérabilité.
# Extrait de code d'exploitation simplifié
ssl_do_handshake_ptr = b"%60%ce%42%00%00%00%00%00" # Pointeur de poignée de main SSL
getcwd_ptr = b"%70%62%2c%04%00%00%00%00" # Pointeur de fonction getcwd
pivot_1 = b"%52%f7%fd%00%00%00%00%00" # Jeu d'instructions pivot 1
pivot_2 = b"%ac%c9%ab%02%00%00%00%00" # Jeu d'instructions pivot 2
rop = b"" # Chaîne ROP
rop += b"%c6%e2%46%00%00%00%00%00"
rop += b"%19%6f%4d%01%00%00%00%00"
# ... reste de la chaîne ROP omis
# Données de requête falsifiées
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
# Envoi de la requête falsifiée
ssock1 = make_sock(TARGET, PORT)
ssock1.sendall(data)
En comparant les fichiers binaires de FortiOS 7.4.2 et 7.4.3, le code corrigé se situe dans la fonction sub_18F4980. La correction se concentre principalement sur deux points :
chunk, une validation de la longueur du chunk a été ajoutée. Si la longueur décodée dépasse 16, elle est considérée comme invalide.chunk trailer a été corrigée pour empêcher l'écriture hors limites de \r\n.Déclenchement de l'écriture hors limites :
chunk, si le champ de longueur est décodé à 0, la lecture du chunk trailer est déclenchée.chunk trailer, \r\n est écrit dans la pile en fonction du champ de longueur.0, cela déclenche une écriture hors limites de \r\n près de l'adresse de retour.Débordement de pile et détournement :
chunk, il est possible de remplacer l'adresse de retour dans la pile, détournant ainsi le flux de contrôle du programme.Bien qu'il soit possible de détourner le flux via une chaîne ROP, /bin/sh dans le programme principal de FortiGate n'a pas la capacité d'exécuter directement des commandes. Il est donc nécessaire de rechercher d'autres fonctions exploitables. Par exemple, en falsifiant des pointeurs de structure, on peut utiliser SSL_do_handshake pour une attaque plus poussée.
Même dans la configuration par défaut (mode Web désactivé), cette vulnérabilité peut toujours être exploitée.

CVE-2024-21762 est une vulnérabilité d'une complexité relativement élevée, dont le processus d'exploitation nécessite une compréhension approfondie de la logique du code et de la disposition mémoire de FortiOS. Par rapport aux exercices CTF traditionnels, l'exploitation de vulnérabilités réelles nécessite une analyse contextuelle et structurelle plus complexe.
L'auteur a fourni un article d'analyse chinois plus détaillé, consultable ici : Lien original