Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
CVE-2026-35616 — # Kit de détection pour CVE-2026-35616 Kit de détection pour CVE-2026-35616, un contournement d'API pré-authentification dans FortiClient EMS. Comprend un scanner Python et un script Nmap NSE pour identifier les versions vulnérables et fournir des recommandations de remédiation. | Kitploit
Outils/GitHubGitHub/keraattin/cve-2026-35616
Scanners de VulnérabilitésAnalyse des VulnérabilitésExploitationCollecte d'InformationsSécurité WebSécurité RéseauTests d'IntrusionAuthentification
GitHub
keraattin/cve-2026-35616

CVE-2026-35616

# Kit de détection pour CVE-2026-35616 Kit de détection pour CVE-2026-35616, un contournement d'API pré-authentification dans FortiClient EMS. Comprend un scanner Python et un script Nmap NSE pour identifier les versions vulnérables et fournir des recommandations de remédiation.

Voir le dépôt
12il y a 4 moisPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

CVE-2026-35616 - Contournement de l'authentification API pré-authentification FortiClient EMS vers RCE

CVE-2026-35616 CVSS 9.1 CISA KEV CWE-284

TL;DR

Un contournement d'authentification critique dans Fortinet FortiClient EMS 7.4.5 et 7.4.6 permet à un attaquant distant totalement non authentifié de contourner l'authentification API en usurpant un seul en-tête HTTP (X-SSL-CLIENT-VERIFY). La faille existe parce que le middleware Django fait confiance aux métadonnées de certificat client provenant d'en-têtes contrôlés par l'utilisateur, et pas uniquement au proxy inverse de confiance. Cela donne aux attaquants un accès API administratif complet - et à partir de là, une exécution de code arbitraire sur les points de terminaison gérés à travers l'entreprise.

Exploité activement depuis le 31 mars 2026. Ajouté au catalogue KEV de la CISA le 6 avril 2026.


Table des matières

  • Faits rapides
  • Qu'est-ce que FortiClient EMS ?
  • Analyse approfondie de la vulnérabilité
    • L'architecture
    • Où ça casse
    • Le flux d'attaque
  • Analyse d'impact
  • Versions affectées
  • Chronologie de l'exploitation
  • Détection
    • Scanner Python
    • Script Nmap NSE
    • Vérification manuelle
  • Indicateurs de compromission
  • Remédiation
  • Références
  • Auteur

Faits rapides

ChampDétail
ID CVECVE-2026-35616
FournisseurFortinet
ProduitFortiClient Enterprise Management Server (EMS)
Versions affectées7.4.5, 7.4.6
Non affectéBranche 7.2.x, 7.4.4 et antérieures
CVSS v3.19.1 (Critique)
CWECWE-284 - Contrôle d'accès inapproprié
Vecteur d'attaqueRéseau
AuthentificationAucune requise
Interaction utilisateurAucune
Maturité de l'exploitExploité dans la nature
CISA KEVAjouté le 6 avril 2026 (échéance : 9 avril 2026)
CorrectifCorrectif d'urgence disponible ; correctif complet dans 7.4.7
Crédité àSimo Kohonen (Defused Cyber), Nguyen Duc Anh

Qu'est-ce que FortiClient EMS ?

FortiClient Enterprise Management Server (EMS) est la plateforme centralisée de gestion des points de terminaison de Fortinet. Elle sert de couche de commande et de contrôle pour déployer, configurer et surveiller les agents FortiClient dans une organisation. Considérez-la comme le cerveau qui gouverne chaque point de terminaison dans un environnement géré par Fortinet :

  • Pousse les politiques de sécurité et les profils VPN vers les points de terminaison
  • Gère la conformité des points de terminaison et les contrôles de posture
  • Distribue les mises à jour logicielles et les correctifs
  • S'intègre aux pare-feu FortiGate pour l'accès réseau Zero Trust (ZTNA)
  • Stocke et gère la télémétrie, les certificats et les identifiants des points de terminaison

Lorsqu'un attaquant obtient un accès administratif à EMS, il détient essentiellement les clés de chaque point de terminaison géré dans l'organisation.


Analyse approfondie de la vulnérabilité

L'architecture

FortiClient EMS utilise une pile d'applications web assez standard en arrière-plan :

root@kitploit:~
+----------------+          +----------------+          +----------------+
|   Navigateur / |  HTTPS   |    Apache      |   WSGI   |    Django      |
|   Client API   | -------> |   (mod_ssl)    | -------> |    Backend     |
+----------------+          +----------------+          +----------------+

Lorsque le TLS mutuel (mTLS) est configuré, le mod_ssl d'Apache gère la vérification du certificat client. Après avoir validé le certificat, Apache transmet le résultat de la vérification à Django via des variables d'environnement WSGI de confiance :

  • SSL_CLIENT_VERIFY - Le statut de vérification (SUCCESS, NONE, FAILED)
  • SSL_CLIENT_S_DN - Le nom distinctif du sujet du certificat
  • SSL_CLIENT_SERIAL - Le numéro de série du certificat

C'est le modèle standard et sécurisé. Le problème réside dans la façon dont le middleware Django lit ces données.

Où ça casse

Dans FortiClient EMS 7.4.5 et 7.4.6, le middleware d'authentification Django a été modifié pour également accepter ces mêmes informations à partir des en-têtes de requête HTTP :

  • X-SSL-CLIENT-VERIFY
  • X-SSL-CLIENT-S-DN
  • X-SSL-CLIENT-SERIAL

Cela a probablement été ajouté pour prendre en charge les déploiements de proxy inverse où Apache n'est pas le point de terminaison TLS. Cependant, le middleware ne fait pas la distinction entre ces deux sources. Il vérifie d'abord les variables WSGI, mais si elles sont absentes (pas de mTLS configuré, ou connexion directe), il retombe sur les en-têtes HTTP - que n'importe quel client peut définir.

Voici la répartition conceptuelle :

root@kitploit:~
CHEMIN SÉCURISÉ (prévu) :
  Apache mod_ssl valide le certificat --> définit les variables d'env WSGI --> Django lit les variables d'env  [OK]

CHEMIN NON SÉCURISÉ (la vulnérabilité) :
  L'attaquant définit directement les en-têtes HTTP --> Django lit les en-têtes --> Leur fait confiance  [ÉCHEC]

Le middleware fait effectivement confiance au client pour auto-attester son propre statut de vérification de certificat. C'est comme si un videur demandait à quelqu'un « Hé, est-ce que l'autre videur a déjà vérifié ta pièce d'identité ? » et le laissait entrer quand il répond « oui ».

Le flux d'attaque

root@kitploit:~
Étape 1 : L'attaquant envoie une requête POST à un point de terminaison API EMS
          avec ces en-têtes :
          
          X-SSL-CLIENT-VERIFY: SUCCESS
          X-SSL-CLIENT-S-DN: CN=admin
          X-SSL-CLIENT-SERIAL: 0000000000000001

Étape 2 : Le middleware Django vérifie les variables d'env WSGI → absentes
          Retombe sur les en-têtes HTTP → trouve X-SSL-CLIENT-VERIFY: SUCCESS

Étape 3 : Le middleware traite la requête comme authentifiée avec l'identité admin

Étape 4 : L'attaquant a un accès API administratif complet

Étape 5 : Depuis l'API admin, l'attaquant peut :
          - Pousser des politiques malveillantes vers tous les points de terminaison gérés
          - Extraire les identifiants et certificats stockés
          - Déployer des charges utiles via la distribution logicielle
          - Modifier les configurations ZTNA
          - Pivoter vers le réseau plus large

L'attaque entière nécessite une seule requête HTTP. Pas de force brute, pas de bourrage d'identifiants, pas d'ingénierie sociale. Juste un en-tête falsifié.


Analyse d'impact

La gravité ici va au-delà du serveur lui-même. FortiClient EMS est un multiplicateur de force - le compromettre donne à un attaquant un levier sur chaque point de terminaison géré :

Impact immédiat :

  • Contrôle administratif complet sur la console EMS
  • Accès à toutes les configurations, identifiants et certificats stockés des points de terminaison
  • Capacité de lire/modifier/supprimer les politiques des points de terminaison
  • Accès aux configurations VPN et aux paramètres ZTNA

Impact en aval (via les points de terminaison gérés) :

  • Déploiement de logiciels malveillants sur tous les appareils gérés via la distribution logicielle
  • Récolte d'identifiants à partir de la télémétrie des points de terminaison
  • Désactivation ou affaiblissement des contrôles de sécurité sur tous les points de terminaison gérés
  • Mouvement latéral via la manipulation des configurations VPN/ZTNA
  • Accès dérobé persistant via la livraison de charges utiles basée sur les politiques

Risque pour l'entreprise :

  • Dans un déploiement d'entreprise typique, EMS gère des centaines à des milliers de points de terminaison
  • Une seule instance EMS exploitée peut conduire à une compromission à l'échelle de l'organisation
  • FortiClient EMS est souvent positionné dans une zone réseau de confiance avec un accès large

Versions affectées

VersionStatut
FortiClient EMS 7.4.6Vulnérable
FortiClient EMS 7.4.5Vulnérable
FortiClient EMS 7.4.4 et antérieuresNon affecté
FortiClient EMS 7.2.xNon affecté

Chronologie de l'exploitation

DateÉvénement
~Fin mars 2026Vulnérabilité découverte et signalée par Simo Kohonen et Nguyen Duc Anh
31 mars 2026Premières tentatives d'exploitation enregistrées contre des honeypots (Defused Cyber)
4 avril 2026Fortinet publie des correctifs d'urgence pour 7.4.5 et 7.4.6
6 avril 2026La CISA ajoute CVE-2026-35616 au catalogue KEV (échéance : 9 avril 2026)
13 avril 2026Publication de cette boîte à outils de détection

Détection

Scanner Python

Le script Python teste plusieurs points de terminaison API en utilisant une technique de réponse différentielle.

Comment ça fonctionne :

  1. Empreinte - Identifie FortiClient EMS via le corps de la réponse HTTP et les en-têtes
  2. Requête de référence - Envoie un POST à chaque point de terminaison API sans en-têtes usurpés (attend HTTP 401 Unauthorized)
  3. Requête usurpée - Envoie la même requête avec X-SSL-CLIENT-VERIFY: SUCCESS injecté
  4. Comparaison - Si le code de statut passe de 401 à autre chose (généralement 500 ou 200), le contournement d'authentification est confirmé

Aucune charge utile d'exploitation n'est jamais envoyée. Le test est sûr pour la production.

Utilisation :

root@kitploit:~
# Installer les dépendances (seule la bibliothèque standard est nécessaire pour ce script)
pip install -r requirements.txt

# Cible unique
python CVE-2026-35616_FortiClientEMS_detector.py -t 192.168.1.100

# Port personnalisé
python CVE-2026-35616_FortiClientEMS_detector.py -t ems.corp.local -p 8443

# Analyse en masse depuis un fichier
python CVE-2026-35616_FortiClientEMS_detector.py -f targets.txt

# Sortie JSON enregistrée dans un fichier
python CVE-2026-35616_FortiClientEMS_detector.py -t 192.168.1.100 --json -o results.json

# Avec vérification du certificat SSL activée
python CVE-2026-35616_FortiClientEMS_detector.py -t 192.168.1.100 --verify-ssl

# Délai d'attente augmenté pour les réseaux lents
python CVE-2026-35616_FortiClientEMS_detector.py -t 192.168.1.100 --timeout 20

Options :

OptionDescriptionDéfaut
-t, --targetIP ou nom d'hôte cible-
-f, --fileFichier avec les cibles, une par ligne (les lignes commençant par # sont ignorées)-
-p, --portPort cible443
--timeoutDélai d'attente de connexion en secondes10
--verify-sslActiver la vérification du certificat SSLDésactivé
--jsonSortir les résultats au format JSONDésactivé
-o, --outputEnregistrer les résultats dans un fichier-

Exemple de sortie :

root@kitploit:~
╔══════════════════════════════════════════════════════════════╗
║  CVE-2026-35616 - Détecteur de contournement d'auth FortiClient EMS ║
║  Contournement d'accès API pré-authentification → Élévation de privilèges║
║  CVSS : 9.1 (Critique) | CISA KEV : Exploitation active      ║
╚══════════════════════════════════════════════════════════════╝

[*] Analyse de 192.168.1.100:443...

Cible : 192.168.1.100:443
============================================================
  [*] FortiClient EMS détecté (Version : Inconnue)

  Résultats des tests de vulnérabilité :
    [VULNÉRABLE] /api/v1/auth/signin  Référence : 401 → Usurpé : 500
    [VULNÉRABLE] /api/v1/system/status  Référence : 401 → Usurpé : 500
    [NON VULN] /api/v1/endpoints  Référence : 401 → Usurpé : 401

  [!] LA CIBLE EST PROBABLEMENT VULNÉRABLE À CVE-2026-35616
      Contournement API pré-authentification confirmé. Appliquez le correctif immédiatement !
      Remédiation : Mettez à niveau vers FortiClient EMS 7.4.7 ou appliquez le correctif d'urgence

Script Nmap NSE

root@kitploit:~
# Installer le script NSE
sudo cp CVE-2026-35616_FortiClientEMS.nse /usr/share/nmap/scripts/
sudo nmap --script-updatedb

# Analyse de base
nmap -p 443 --script CVE-2026-35616_FortiClientEMS <cible>

# Analyser un sous-réseau
nmap -p 443 --script CVE-2026-35616_FortiClientEMS 10.0.0.0/24

# Analyser plusieurs cibles depuis un fichier
nmap -p 443 --script CVE-2026-35616_FortiClientEMS -iL targets.txt

# Avec détection de version de service
nmap -sV -p 443 --script CVE-2026-35616_FortiClientEMS <cible>

Exemple de sortie Nmap :

root@kitploit:~
PORT    STATE SERVICE
443/tcp open  https
| CVE-2026-35616_FortiClientEMS:
|   VULNÉRABLE :
|   Contournement d'API pré-authentification FortiClient EMS
|     État : VULNÉRABLE
|     ID :  CVE:CVE-2026-35616
|     Facteur de risque : Critique (CVSS : 9.1)
|     Date de divulgation : 2026-04-04
|     Informations supplémentaires :
|       Points de terminaison affectés : 2
|       Remédiation : Appliquez le correctif d'urgence pour FortiClient EMS 7.4.5/7.4.6 ou mettez à niveau vers 7.4.7
|       Échéance CISA KEV : 9 avril 2026
|     Références :
|       https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2026-35616
|_      https://www.cisa.gov/known-exploited-vulnerabilities-catalog

Vérification manuelle

Si vous souhaitez confirmer manuellement avec curl :

root@kitploit:~
# Étape 1 : Référence - devrait renvoyer 401
curl -sk -X POST https://<CIBLE>:443/api/v1/auth/signin \
  -H "Content-Type: application/json" \
  -d '{}' \
  -o /dev/null -w "%{http_code}\n"

# Étape 2 : Usurpé - si renvoie autre chose que 401, probablement vulnérable
curl -sk -X POST https://<CIBLE>:443/api/v1/auth/signin \
  -H "Content-Type: application/json" \
  -H "X-SSL-CLIENT-VERIFY: SUCCESS" \
  -H "X-SSL-CLIENT-S-DN: CN=admin" \
  -H "X-SSL-CLIENT-SERIAL: 0000000000000001" \
  -d '{}' \
  -o /dev/null -w "%{http_code}\n"

Si la première renvoie 401 et la seconde renvoie 500 ou 200, l'instance est vulnérable.


Indicateurs de compromission

Surveillez ces signes dans votre environnement :

  • Requêtes API anormales contenant des en-têtes X-SSL-CLIENT-VERIFY provenant de sources non-proxy
  • Changements de politique inattendus poussés vers les points de terminaison sans activité de session admin
  • Nouveaux comptes admin ou identifiants modifiés dans EMS sans journaux d'activité correspondants
  • Comportement inhabituel de l'agent FortiClient sur les points de terminaison gérés (nouvelles installations logicielles, changements de politique)
  • Journaux d'accès Apache montrant des appels API sans poignées de main mTLS correspondantes
  • Alertes honeypot/IDS pour des requêtes avec injection d'en-têtes liés aux certificats

Sources de journaux à examiner :

  • Journaux d'application FortiClient EMS
  • Journaux d'accès et d'erreurs Apache
  • Journaux de l'agent FortiClient sur les points de terminaison gérés
  • Données de flux réseau montrant des connexions vers les ports API EMS

Remédiation

Actions immédiates (faites-les maintenant) :

  1. Appliquez le correctif d'urgence - Fortinet a publié des correctifs d'urgence pour FortiClient EMS 7.4.5 et 7.4.6 le 4 avril 2026
  2. Restreignez l'accès réseau - Limitez l'accès à l'interface de gestion EMS aux réseaux admin de confiance uniquement (règles de pare-feu, ACL)
  3. Surveillez l'activité API - Activez la journalisation détaillée et surveillez les modèles d'accès API anormaux

À court terme (cette semaine) :

  1. Mettez à niveau vers FortiClient EMS 7.4.7 dès qu'il est disponible pour le correctif complet
  2. Auditez les configurations des points de terminaison - Vérifiez tous les points de terminaison gérés pour des changements de politique non autorisés
  3. Faites pivoter les identifiants - Changez tous les mots de passe admin et régénérez les certificats gérés par EMS
  4. Examinez les points de terminaison gérés - Recherchez des signes de déploiement de logiciels malveillants ou de changements de configuration non autorisés

À long terme :

  1. Segmentation du réseau - Assurez-vous qu'EMS est dans un VLAN de gestion isolé avec des contrôles d'accès stricts
  2. Règles WAF/proxy inverse - Déployez des règles pour supprimer les en-têtes X-SSL-CLIENT-VERIFY, X-SSL-CLIENT-S-DN et X-SSL-CLIENT-SERIAL des requêtes entrantes à la périphérie du réseau
  3. Surveillance - Implémentez des alertes sur tout accès API sans sessions mTLS valides

Références

  • Catalogue KEV de la CISA - CVE-2026-35616
  • Blog Tenable - Analyse de CVE-2026-35616
  • Bishop Fox - Contournement d'authentification API dans FortiClient EMS
  • SOCRadar - CVE-2026-35616 Contournement d'auth FortiClient EMS
  • Horizon3.ai - Analyse de CVE-2026-35616
  • BleepingComputer - Faille FortiClient EMS exploitée dans des attaques
  • The Hacker News - Fortinet corrige CVE-2026-35616 activement exploitée

Auteur

Kerem Oruç - Ingénieur en cybersécurité

  • GitHub : @keraattin
  • Twitter : @keraattin
Télécharger l’outil