Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
Strumenti/GitHubGitHub/keraattin/cve-2026-35616
Scanner di VulnerabilitàAnalisi delle VulnerabilitàExploitRaccolta InformazioniSicurezza WebSicurezza di RetePenetration TestingAutenticazione
GitHubkeraattin/cve-2026-35616

CVE-2026-35616

Toolkit di rilevamento per CVE-2026-35616, un bypass API pre-autenticazione in FortiClient EMS. Include uno scanner Python e uno script Nmap NSE per identificare le versioni vulnerabili e fornire indicazioni di rimedio.

124 mesi faNon ancora revisionato
Vedi Repository

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

CVE-2026-35616 - Bypass API Pre-Autenticazione FortiClient EMS fino a RCE

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

TL;DR

Un bypass critico dell'autenticazione in Fortinet FortiClient EMS 7.4.5 e 7.4.6 consente a un attaccante remoto completamente non autenticato di aggirare l'autenticazione API falsificando un singolo header HTTP (X-SSL-CLIENT-VERIFY). Il difetto esiste perché il middleware Django si fida dei metadati dei certificati client provenienti da header controllati dall'utente, non solo dal proxy inverso affidabile. Questo dà agli attaccanti pieno accesso amministrativo alle API - e da lì, esecuzione arbitraria di codice sugli endpoint gestiti in tutta l'azienda.

Sfruttato attivamente dal 31 marzo 2026. Aggiunto al catalogo KEV CISA il 6 aprile 2026.


Indice

  • Fatti rapidi
  • Cos'è FortiClient EMS?
  • Analisi approfondita della vulnerabilità
    • L'architettura
    • Dove si rompe
    • Il flusso dell'attacco
  • Analisi dell'impatto
  • Versioni interessate
  • Cronologia dello sfruttamento
  • Rilevamento
    • Scanner Python
    • Script Nmap NSE
    • Verifica manuale
  • Indicatori di compromissione
  • Rimedi
  • Riferimenti
  • Autore

Fatti rapidi

CampoDettaglio
ID CVECVE-2026-35616
VendorFortinet
ProdottoFortiClient Enterprise Management Server (EMS)
Versioni interessate7.4.5, 7.4.6
Non interessateramo 7.2.x, 7.4.4 e precedenti
CVSS v3.19.1 (Critico)
CWECWE-284 - Controllo degli accessi improprio
Vettore di attaccoRete
AutenticazioneNessuna richiesta
Interazione utenteNessuna
Maturità dello sfruttamentoSfruttato in natura
CISA KEVAggiunto il 6 aprile 2026 (scadenza: 9 aprile 2026)
PatchHotfix disponibile; correzione completa in 7.4.7
CreditiSimo Kohonen (Defused Cyber), Nguyen Duc Anh

Cos'è FortiClient EMS?

FortiClient Enterprise Management Server (EMS) è la piattaforma centralizzata di gestione degli endpoint di Fortinet. Funge da livello di comando e controllo per distribuire, configurare e monitorare gli agenti FortiClient in un'organizzazione. Pensalo come il cervello che governa ogni endpoint in un ambiente gestito da Fortinet:

  • Distribuisce policy di sicurezza e profili VPN agli endpoint
  • Gestisce la conformità degli endpoint e i controlli di postura
  • Distribuisce aggiornamenti software e patch
  • Si integra con i firewall FortiGate per l'accesso Zero Trust Network Access (ZTNA)
  • Memorizza e gestisce telemetria degli endpoint, certificati e credenziali

Quando un attaccante ottiene accesso amministrativo a EMS, possiede di fatto le chiavi di ogni endpoint gestito nell'organizzazione.


Analisi approfondita della vulnerabilità

L'architettura

FortiClient EMS utilizza uno stack applicativo web abbastanza standard dietro le quinte:

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

Quando è configurato il TLS reciproco (mTLS), il mod_ssl di Apache gestisce la verifica del certificato client. Dopo aver validato il certificato, Apache passa il risultato della verifica a Django tramite variabili d'ambiente WSGI affidabili:

  • SSL_CLIENT_VERIFY - Lo stato della verifica (SUCCESS, NONE, FAILED)
  • SSL_CLIENT_S_DN - Il Distinguished Name del soggetto dal certificato
  • SSL_CLIENT_SERIAL - Il numero di serie del certificato

Questo è il pattern standard e sicuro. Il problema sta in come il middleware Django legge questi dati.

Dove si rompe

In FortiClient EMS 7.4.5 e 7.4.6, il middleware di autenticazione Django è stato modificato per accettare anche queste stesse informazioni da header delle richieste HTTP:

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

Questo è stato probabilmente aggiunto per supportare distribuzioni con proxy inverso dove Apache non è il punto di terminazione TLS. Tuttavia, il middleware non distingue tra queste due fonti. Controlla prima le variabili WSGI, ma se sono assenti (nessun mTLS configurato, o una connessione diretta), ripiega sugli header HTTP - che qualsiasi client può impostare.

Ecco la suddivisione concettuale:

root@kitploit:~
PERCORSO SICURO (previsto):
  Apache mod_ssl valida il cert --> imposta variabili env WSGI --> Django legge le env vars  [OK]

PERCORSO NON SICURO (la vulnerabilità):
  L'attaccante imposta direttamente gli header HTTP --> Django legge gli header --> Si fida di essi  [FAIL]

Il middleware di fatto si fida del client per auto-attestare il proprio stato di verifica del certificato. È come se un buttafuori chiedesse a qualcuno "Ehi, l'altro buttafuori ha già controllato il tuo documento?" e lo facesse entrare quando risponde "sì".

Il flusso dell'attacco

root@kitploit:~
Passo 1: L'attaccante invia una richiesta POST a un endpoint API EMS
         con questi header:
         
         X-SSL-CLIENT-VERIFY: SUCCESS
         X-SSL-CLIENT-S-DN: CN=admin
         X-SSL-CLIENT-SERIAL: 0000000000000001

Passo 2: Il middleware Django controlla le variabili env WSGI → non presenti
         Ripiega sugli header HTTP → trova X-SSL-CLIENT-VERIFY: SUCCESS

Passo 3: Il middleware tratta la richiesta come autenticata con identità admin

Passo 4: L'attaccante ha pieno accesso amministrativo alle API

Passo 5: Dall'API admin, l'attaccante può:
         - Distribuire policy dannose a tutti gli endpoint gestiti
         - Estrarre credenziali e certificati memorizzati
         - Distribuire payload tramite la distribuzione software
         - Modificare le configurazioni ZTNA
         - Muoversi lateralmente nella rete più ampia

L'intero attacco richiede una singola richiesta HTTP. Nessun brute-forcing, nessun credential stuffing, nessuna ingegneria sociale. Solo un header falsificato.


Analisi dell'impatto

La gravità qui va oltre il server stesso. FortiClient EMS è un moltiplicatore di forza - comprometterlo dà a un attaccante leva su ogni endpoint gestito:

Impatto immediato:

  • Pieno controllo amministrativo sulla console EMS
  • Accesso a tutte le configurazioni degli endpoint, credenziali e certificati memorizzati
  • Capacità di leggere/modificare/eliminare le policy degli endpoint
  • Accesso alle configurazioni VPN e alle impostazioni ZTNA

Impatto a valle (tramite gli endpoint gestiti):

  • Distribuzione di malware a tutti i dispositivi gestiti tramite la distribuzione software
  • Raccolta di credenziali dalla telemetria degli endpoint
  • Disabilitazione o indebolimento dei controlli di sicurezza su tutti gli endpoint gestiti
  • Movimento laterale tramite manipolazione della configurazione VPN/ZTNA
  • Backdoor persistente tramite consegna di payload basata su policy

Rischio aziendale:

  • In una tipica distribuzione aziendale, EMS gestisce da centinaia a migliaia di endpoint
  • Una singola istanza EMS sfruttata può portare a una compromissione a livello di organizzazione
  • FortiClient EMS è spesso posizionato in una zona di rete affidabile con ampio accesso

Versioni interessate

VersioneStato
FortiClient EMS 7.4.6Vulnerabile
FortiClient EMS 7.4.5Vulnerabile
FortiClient EMS 7.4.4 e precedentiNon interessata
FortiClient EMS 7.2.xNon interessata

Cronologia dello sfruttamento

DataEvento
~Fine marzo 2026Vulnerabilità scoperta e segnalata da Simo Kohonen e Nguyen Duc Anh
31 marzo 2026Primi tentativi di sfruttamento registrati contro honeypot (Defused Cyber)
4 aprile 2026Fortinet rilascia hotfix di emergenza per 7.4.5 e 7.4.6
6 aprile 2026CISA aggiunge CVE-2026-35616 al catalogo KEV (scadenza: 9 aprile 2026)
13 aprile 2026Pubblicazione di questo toolkit di rilevamento

Rilevamento

Scanner Python

Lo script Python testa più endpoint API utilizzando una tecnica di risposta differenziale.

Come funziona:

  1. Fingerprinting - Identifica FortiClient EMS tramite il corpo della risposta HTTP e gli header
  2. Richiesta di base - Invia una POST a ciascun endpoint API senza header falsificati (attesa HTTP 401 Unauthorized)
  3. Richiesta falsificata - Invia la stessa richiesta con X-SSL-CLIENT-VERIFY: SUCCESS iniettato
  4. Confronto - Se il codice di stato cambia da 401 a qualsiasi altro (tipicamente 500 o 200), il bypass dell'autenticazione è confermato

Non viene mai inviato alcun payload di sfruttamento. Il test è sicuro per la produzione.

Utilizzo:

root@kitploit:~
# Installare le dipendenze (per questo script serve solo la stdlib)
pip install -r requirements.txt

# Singolo target
python CVE-2026-35616_FortiClientEMS_detector.py -t 192.168.1.100

# Porta personalizzata
python CVE-2026-35616_FortiClientEMS_detector.py -t ems.corp.local -p 8443

# Scansione di massa da file
python CVE-2026-35616_FortiClientEMS_detector.py -f targets.txt

# Output JSON salvato su file
python CVE-2026-35616_FortiClientEMS_detector.py -t 192.168.1.100 --json -o results.json

# Con verifica del certificato SSL abilitata
python CVE-2026-35616_FortiClientEMS_detector.py -t 192.168.1.100 --verify-ssl

# Timeout aumentato per reti lente
python CVE-2026-35616_FortiClientEMS_detector.py -t 192.168.1.100 --timeout 20

Opzioni:

FlagDescrizioneDefault
-t, --targetIP o hostname del target-
-f, --fileFile con i target, uno per riga (le righe che iniziano con # vengono saltate)-
-p, --portPorta del target443
--timeoutTimeout di connessione in secondi10
--verify-sslAbilita la verifica del certificato SSLDisabilitata
--jsonOutput dei risultati in formato JSONOff
-o, --outputSalva i risultati su un file-

Esempio di output:

root@kitploit:~
╔══════════════════════════════════════════════════════════════╗
║  CVE-2026-35616 - Rilevatore Bypass Auth FortiClient EMS   ║
║  Bypass Accesso API Pre-Autenticazione → Escalation Privilegi║
║  CVSS: 9.1 (Critico) | CISA KEV: Sfruttamento attivo       ║
╚══════════════════════════════════════════════════════════════╝

[*] Scansione di 192.168.1.100:443...

Target: 192.168.1.100:443
============================================================
  [*] FortiClient EMS rilevato (Versione: Sconosciuta)

  Risultati del test di vulnerabilità:
    [VULNERABILE] /api/v1/auth/signin  Base: 401 → Falsificato: 500
    [VULNERABILE] /api/v1/system/status  Base: 401 → Falsificato: 500
    [NON VULN] /api/v1/endpoints  Base: 401 → Falsificato: 401

  [!] IL TARGET È PROBABILMENTE VULNERABILE A CVE-2026-35616
      Bypass API pre-autenticazione confermato. Applicare subito l'hotfix!
      Rimedio: Aggiornare a FortiClient EMS 7.4.7 o applicare l'hotfix

Script Nmap NSE

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

# Scansione di base
nmap -p 443 --script CVE-2026-35616_FortiClientEMS <target>

# Scansione di una sottorete
nmap -p 443 --script CVE-2026-35616_FortiClientEMS 10.0.0.0/24

# Scansione di più target da un file
nmap -p 443 --script CVE-2026-35616_FortiClientEMS -iL targets.txt

# Con rilevamento della versione del servizio
nmap -sV -p 443 --script CVE-2026-35616_FortiClientEMS <target>

Esempio di output Nmap:

root@kitploit:~
PORT    STATE SERVICE
443/tcp open  https
| CVE-2026-35616_FortiClientEMS:
|   VULNERABLE:
|   Bypass API Pre-Autenticazione FortiClient EMS
|     State: VULNERABLE
|     IDs:  CVE:CVE-2026-35616
|     Fattore di rischio: Critico (CVSS: 9.1)
|     Data di divulgazione: 2026-04-04
|     Informazioni aggiuntive:
|       Endpoint interessati: 2
|       Rimedio: Applicare l'hotfix per FortiClient EMS 7.4.5/7.4.6 o aggiornare a 7.4.7
|       Scadenza CISA KEV: 9 aprile 2026
|     Riferimenti:
|       https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2026-35616
|_      https://www.cisa.gov/known-exploited-vulnerabilities-catalog

Verifica manuale

Se vuoi confermare manualmente con curl:

root@kitploit:~
# Passo 1: Base - dovrebbe restituire 401
curl -sk -X POST https://<TARGET>:443/api/v1/auth/signin \
  -H "Content-Type: application/json" \
  -d '{}' \
  -o /dev/null -w "%{http_code}\n"

# Passo 2: Falsificato - se restituisce qualcosa di diverso da 401, probabilmente vulnerabile
curl -sk -X POST https://<TARGET>: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"

Se il primo restituisce 401 e il secondo restituisce 500 o 200, l'istanza è vulnerabile.


Indicatori di compromissione

Cerca questi segnali nel tuo ambiente:

  • Richieste API anomale contenenti header X-SSL-CLIENT-VERIFY da fonti non proxy
  • Modifiche alle policy inattese distribuite agli endpoint senza attività di sessione admin
  • Nuovi account admin o credenziali modificate in EMS senza log di attività corrispondenti
  • Comportamento insolito dell'agente FortiClient sugli endpoint gestiti (nuove installazioni software, modifiche alle policy)
  • Log di accesso Apache che mostrano chiamate API senza handshake mTLS corrispondenti
  • Avvisi honeypot/IDS per richieste con iniezione di header relativi ai certificati

Fonti di log da esaminare:

  • Log applicativi di FortiClient EMS
  • Log di accesso ed errore di Apache
  • Log dell'agente FortiClient sugli endpoint gestiti
  • Dati di flusso di rete che mostrano connessioni alle porte API EMS

Rimedi

Azioni immediate (fai queste ora):

  1. Applica l'hotfix - Fortinet ha rilasciato hotfix di emergenza per FortiClient EMS 7.4.5 e 7.4.6 il 4 aprile 2026
  2. Limita l'accesso di rete - Limita l'accesso all'interfaccia di gestione EMS solo alle reti admin affidabili (regole firewall, ACL)
  3. Monitora l'attività API - Abilita la registrazione dettagliata e controlla i pattern di accesso API anomali

A breve termine (questa settimana):

  1. Aggiorna a FortiClient EMS 7.4.7 quando disponibile per la correzione completa
  2. Verifica le configurazioni degli endpoint - Controlla tutti gli endpoint gestiti per modifiche non autorizzate alle policy
  3. Ruota le credenziali - Cambia tutte le password admin e rigenera eventuali certificati gestiti da EMS
  4. Rivedi gli endpoint gestiti - Scansiona per segni di distribuzione di malware o modifiche non autorizzate alla configurazione

A lungo termine:

  1. Segmentazione della rete - Assicurati che EMS sia in una VLAN di gestione isolata con controlli di accesso rigorosi
  2. Regole WAF/proxy inverso - Distribuisci regole per rimuovere gli header X-SSL-CLIENT-VERIFY, X-SSL-CLIENT-S-DN e X-SSL-CLIENT-SERIAL dalle richieste in ingresso al perimetro di rete
  3. Monitoraggio - Implementa avvisi su qualsiasi accesso API senza sessioni mTLS valide

Riferimenti

  • Catalogo CISA KEV - CVE-2026-35616
  • Blog Tenable - Analisi CVE-2026-35616
  • Bishop Fox - Bypass Autenticazione API in FortiClient EMS
  • SOCRadar - Bypass Auth FortiClient EMS CVE-2026-35616
  • Horizon3.ai - Analisi CVE-2026-35616
  • BleepingComputer - Difetto FortiClient EMS Sfruttato negli Attacchi
  • The Hacker News - Fortinet Corregge CVE-2026-35616 Attivamente Sfruttato

Autore

Kerem Oruç - Ingegnere della Cybersecurity

  • GitHub: @keraattin
  • Twitter: @keraattin
Scarica lo strumento