Selon watchTowr Labs, une vulnérabilité non nommée et sans identifiant public affecte Fortinet FortiWeb et serait exploitée activement, signalée initialement par l’équipe Defused; des tests internes de watchTowr indiquent qu’un correctif “silencieux” semble présent en version 8.0.2, bien que les notes de version n’en fassent pas mention.
L’analyse détaille une combinaison de deux failles: traversée de chemin dans l’URI de l’API FortiWeb permettant d’atteindre l’exécutable CGI interne fwbcgi, puis contournement d’authentification via l’en-tête HTTP_CGIINFO. Le composant fwbcgi effectue un contrôle d’entrée minimal (JSON valide) et une phase d’“authentification” qui, en réalité, impersonne l’utilisateur fourni par le client via un JSON Base64 (champs username, profname, vdom, loginname), conférant ensuite les privilèges correspondants dans cgi_process().
watchTowr observe des usages malveillants consistant à créer des comptes administrateurs sur les appliances vulnérables comme mécanisme de persistance. Un test simple est décrit: une requête vers le chemin vulnérable retournant HTTP 200 indiquerait la présence de la faille, contre HTTP 403 si elle est corrigée. Des exemples d’artefacts observés incluent des requêtes automatisées (User-Agent python-urllib3/2.2.3) et l’utilisation d’un en-tête CGIINFO/HTTP_CGIINFO.
Indicateurs et TTPs relevés:
- TTPs: Traversée de chemin vers /cgi-bin/fwbcgi via un préfixe d’API valide; contournement d’authentification par en-tête HTTP_CGIINFO contenant un JSON encodé Base64; usurpation d’identité (dont l’admin intégré) via cgi_auth(); persistance par ajout de comptes admin; exécution de fonctions privilégiées via cgi_process().
- IOCs (extraits de l’article): chemins de requête incluant « /api/v2.0/…/cgi-bin/fwbcgi »; en-tête CGIINFO/HTTP_CGIINFO; User-Agent observé « python-urllib3/2.2.3 »; présence de payloads JSON minimaux valides.
watchTowr publie un Detection Artefact Generator pour identifier les hôtes vulnérables: https://github.com/watchtowrlabs/watchTowr-vs-Fortiweb-AuthBypass. L’article est une publication de recherche technique visant à documenter le bug, son exploitation observée et à fournir des artefacts de détection.
🧠 TTPs et IOCs détectés
TTP
Traversée de chemin vers /cgi-bin/fwbcgi via un préfixe d’API valide; contournement d’authentification par en-tête HTTP_CGIINFO contenant un JSON encodé Base64; usurpation d’identité via cgi_auth(); persistance par ajout de comptes admin; exécution de fonctions privilégiées via cgi_process().
IOC
Chemins de requête incluant « /api/v2.0/…/cgi-bin/fwbcgi »; en-tête CGIINFO/HTTP_CGIINFO; User-Agent observé « python-urllib3/2.2.3 ».
🔗 Source originale : https://labs.watchtowr.com/when-the-impersonation-function-gets-used-to-impersonate-users-fortinet-fortiweb-auth-bypass/