Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
CVE-2026-35616 — Kit de detecção para CVE-2026-35616, uma bypass de API pré-autenticação no FortiClient EMS. Inclui scanner em Python e script Nmap NSE para identificar versões vulneráveis e fornecer orientações de remediação. | Kitploit
Ferramentas/GitHubGitHub/keraattin/cve-2026-35616
Scanners de VulnerabilidadesAnálise de VulnerabilidadesExploraçãoColeta de InformaçõesSegurança WebSegurança de RedeTestes de PenetraçãoAutenticação
GitHubkeraattin/cve-2026-35616

CVE-2026-35616

Kit de detecção para CVE-2026-35616, uma bypass de API pré-autenticação no FortiClient EMS. Inclui scanner em Python e script Nmap NSE para identificar versões vulneráveis e fornecer orientações de remediação.

124há 5 mesesAinda não revisado
Ver Repositório

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

CVE-2026-35616 - Bypass de Autenticação Pré-API do FortiClient EMS para RCE

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

TL;DR

Um bypass crítico de autenticação no Fortinet FortiClient EMS 7.4.5 e 7.4.6 permite que um atacante remoto completamente não autenticado contorne a autenticação da API falsificando um único cabeçalho HTTP (X-SSL-CLIENT-VERIFY). A falha existe porque o middleware Django confia em metadados de certificado de cliente provenientes de cabeçalhos controlados pelo usuário, e não apenas do proxy reverso confiável. Isso dá aos atacantes acesso administrativo completo à API - e, a partir daí, execução arbitrária de código em endpoints gerenciados em toda a empresa.

Explorado ativamente desde 31 de março de 2026. Adicionado ao CISA KEV em 6 de abril de 2026.


Índice

  • Fatos Rápidos
  • O que é o FortiClient EMS?
  • Análise Aprofundada da Vulnerabilidade
    • A Arquitetura
    • Onde Quebra
    • O Fluxo do Ataque
  • Análise de Impacto
  • Versões Afetadas
  • Linha do Tempo da Exploração
  • Detecção
    • Scanner Python
    • Script Nmap NSE
    • Verificação Manual
  • Indicadores de Comprometimento
  • Remediação
  • Referências
  • Autor

Fatos Rápidos

CampoDetalhe
ID CVECVE-2026-35616
FornecedorFortinet
ProdutoFortiClient Enterprise Management Server (EMS)
Versões Afetadas7.4.5, 7.4.6
Não AfetadasRamo 7.2.x, 7.4.4 e anteriores
CVSS v3.19.1 (Crítico)
CWECWE-284 - Controle de Acesso Impropriado
Vetor de AtaqueRede
AutenticaçãoNenhuma necessária
Interação do UsuárioNenhuma
Maturidade da ExploraçãoExplorado ativamente
CISA KEVAdicionado em 6 de abril de 2026 (prazo: 9 de abril de 2026)
CorreçãoHotfix disponível; correção completa no 7.4.7
CréditosSimo Kohonen (Defused Cyber), Nguyen Duc Anh

O que é o FortiClient EMS?

O FortiClient Enterprise Management Server (EMS) é a plataforma centralizada de gerenciamento de endpoints da Fortinet. Ele serve como a camada de comando e controle para implantar, configurar e monitorar agentes FortiClient em uma organização. Pense nele como o cérebro que governa cada endpoint em um ambiente gerenciado pela Fortinet:

  • Envia políticas de segurança e perfis VPN para endpoints
  • Gerencia conformidade de endpoints e verificações de postura
  • Distribui atualizações de software e correções
  • Integra-se com firewalls FortiGate para Zero Trust Network Access (ZTNA)
  • Armazena e gerencia telemetria de endpoints, certificados e credenciais

Quando um atacante obtém acesso administrativo ao EMS, ele essencialmente possui as chaves de todos os endpoints gerenciados na organização.


Análise Aprofundada da Vulnerabilidade

A Arquitetura

O FortiClient EMS usa uma pilha de aplicação web bastante padrão nos bastidores:

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

Quando o TLS mútuo (mTLS) está configurado, o mod_ssl do Apache lida com a verificação do certificado do cliente. Após validar o certificado, o Apache passa o resultado da verificação para o Django através de variáveis de ambiente WSGI confiáveis:

  • SSL_CLIENT_VERIFY - O status da verificação (SUCCESS, NONE, FAILED)
  • SSL_CLIENT_S_DN - O Distinguished Name do assunto do certificado
  • SSL_CLIENT_SERIAL - O número de série do certificado

Este é o padrão seguro e correto. O problema está em como o middleware Django lê esses dados.

Onde Quebra

No FortiClient EMS 7.4.5 e 7.4.6, o middleware de autenticação Django foi modificado para também aceitar essas mesmas informações de cabeçalhos de requisição HTTP:

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

Isso provavelmente foi adicionado para suportar implantações com proxy reverso onde o Apache não é o ponto de terminação TLS. No entanto, o middleware não distingue entre essas duas fontes. Ele verifica as variáveis WSGI primeiro, mas se elas estiverem ausentes (sem mTLS configurado, ou uma conexão direta), ele recorre aos cabeçalhos HTTP - que qualquer cliente pode definir.

Aqui está a análise conceitual:

root@kitploit:~
CAMINHO SEGURO (pretendido):
  Apache mod_ssl valida cert --> define variáveis de ambiente WSGI --> Django lê variáveis de ambiente  [OK]

CAMINHO INSEGURO (a vulnerabilidade):
  Atacante define cabeçalhos HTTP diretamente --> Django lê cabeçalhos --> Confia neles  [FALHA]

O middleware efetivamente confia que o cliente ateste seu próprio status de verificação de certificado. Isso é como um segurança perguntar a alguém "Ei, o outro segurança já verificou seu documento?" e deixá-lo entrar quando ele diz "sim".

O Fluxo do Ataque

root@kitploit:~
Passo 1: Atacante envia uma requisição POST para um endpoint da API do EMS
         com estes cabeçalhos:
         
         X-SSL-CLIENT-VERIFY: SUCCESS
         X-SSL-CLIENT-S-DN: CN=admin
         X-SSL-CLIENT-SERIAL: 0000000000000001

Passo 2: Middleware Django verifica variáveis de ambiente WSGI → não presentes
         Recorre aos cabeçalhos HTTP → encontra X-SSL-CLIENT-VERIFY: SUCCESS

Passo 3: Middleware trata a requisição como autenticada com identidade de admin

Passo 4: Atacante tem acesso administrativo completo à API

Passo 5: A partir da API administrativa, o atacante pode:
         - Enviar políticas maliciosas para todos os endpoints gerenciados
         - Extrair credenciais e certificados armazenados
         - Implantar payloads via distribuição de software
         - Modificar configurações ZTNA
         - Pivotar para a rede mais ampla

O ataque inteiro requer uma única requisição HTTP. Sem força bruta, sem credential stuffing, sem engenharia social. Apenas um cabeçalho forjado.


Análise de Impacto

A gravidade aqui vai além do próprio servidor. O FortiClient EMS é um multiplicador de força - comprometê-lo dá ao atacante vantagem sobre cada endpoint gerenciado:

Impacto Imediato:

  • Controle administrativo total sobre o console EMS
  • Acesso a todas as configurações de endpoints, credenciais e certificados armazenados
  • Capacidade de ler/modificar/excluir políticas de endpoints
  • Acesso a configurações VPN e ZTNA

Impacto a Jusante (via endpoints gerenciados):

  • Implantação de malware em todos os dispositivos gerenciados via distribuição de software
  • Coleta de credenciais a partir da telemetria de endpoints
  • Desabilitar ou enfraquecer controles de segurança em todos os endpoints gerenciados
  • Movimentação lateral via manipulação de configuração VPN/ZTNA
  • Backdoor persistente através de entrega de payload baseada em políticas

Risco Empresarial:

  • Em uma implantação empresarial típica, o EMS gerencia centenas a milhares de endpoints
  • Uma única instância EMS explorada pode levar ao comprometimento de toda a organização
  • O FortiClient EMS é frequentemente posicionado em uma zona de rede confiável com amplo acesso

Versões Afetadas

VersãoStatus
FortiClient EMS 7.4.6Vulnerável
FortiClient EMS 7.4.5Vulnerável
FortiClient EMS 7.4.4 e anterioresNão afetado
FortiClient EMS 7.2.xNão afetado

Linha do Tempo da Exploração

DataEvento
~Final de março de 2026Vulnerabilidade descoberta e reportada por Simo Kohonen e Nguyen Duc Anh
31 de março de 2026Primeiras tentativas de exploração registradas contra honeypots (Defused Cyber)
4 de abril de 2026Fortinet lança hotfixes de emergência para 7.4.5 e 7.4.6
6 de abril de 2026CISA adiciona CVE-2026-35616 ao catálogo KEV (prazo: 9 de abril de 2026)
13 de abril de 2026Este kit de detecção publicado

Detecção

Scanner Python

O script Python testa múltiplos endpoints da API usando uma técnica de resposta diferencial.

Como funciona:

  1. Fingerprinting - Identifica o FortiClient EMS via corpo e cabeçalhos da resposta HTTP
  2. Requisição de linha de base - Envia um POST para cada endpoint da API sem cabeçalhos falsificados (espera HTTP 401 Unauthorized)
  3. Requisição falsificada - Envia a mesma requisição com X-SSL-CLIENT-VERIFY: SUCCESS injetado
  4. Comparação - Se o código de status mudar de 401 para qualquer outra coisa (tipicamente 500 ou 200), o bypass de autenticação é confirmado

Nenhum payload de exploração é enviado. O teste é seguro para produção.

Uso:

root@kitploit:~
# Instalar dependências (apenas stdlib necessária para este script)
pip install -r requirements.txt

# Alvo único
python CVE-2026-35616_FortiClientEMS_detector.py -t 192.168.1.100

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

# Varredura em massa a partir de arquivo
python CVE-2026-35616_FortiClientEMS_detector.py -f targets.txt

# Saída JSON salva em arquivo
python CVE-2026-35616_FortiClientEMS_detector.py -t 192.168.1.100 --json -o results.json

# Com verificação de certificado SSL habilitada
python CVE-2026-35616_FortiClientEMS_detector.py -t 192.168.1.100 --verify-ssl

# Timeout aumentado para redes lentas
python CVE-2026-35616_FortiClientEMS_detector.py -t 192.168.1.100 --timeout 20

Opções:

FlagDescriçãoPadrão
-t, --targetIP ou hostname do alvo-
-f, --fileArquivo com alvos, um por linha (linhas começando com # são ignoradas)-
-p, --portPorta do alvo443
--timeoutTimeout de conexão em segundos10
--verify-sslHabilita verificação de certificado SSLDesabilitado
--jsonSaída de resultados em formato JSONDesligado
-o, --outputSalvar resultados em um arquivo-

Exemplo de saída:

root@kitploit:~
╔══════════════════════════════════════════════════════════════╗
║  CVE-2026-35616 - FortiClient EMS Auth Bypass Detector     ║
║  Pre-Authentication API Access Bypass → Privilege Escalation║
║  CVSS: 9.1 (Critical) | CISA KEV: Active Exploitation      ║
╚══════════════════════════════════════════════════════════════╝

[*] Scanning 192.168.1.100:443...

Target: 192.168.1.100:443
============================================================
  [*] FortiClient EMS detected (Version: Unknown)

  Vulnerability Test Results:
    [VULNERABLE] /api/v1/auth/signin  Baseline: 401 → Spoofed: 500
    [VULNERABLE] /api/v1/system/status  Baseline: 401 → Spoofed: 500
    [NOT VULN] /api/v1/endpoints  Baseline: 401 → Spoofed: 401

  [!] TARGET IS LIKELY VULNERABLE TO CVE-2026-35616
      Pre-authentication API bypass confirmed. Apply hotfix immediately!
      Remediation: Upgrade to FortiClient EMS 7.4.7 or apply the hotfix

Script Nmap NSE

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

# Varredura básica
nmap -p 443 --script CVE-2026-35616_FortiClientEMS <target>

# Varrer uma sub-rede
nmap -p 443 --script CVE-2026-35616_FortiClientEMS 10.0.0.0/24

# Varrer múltiplos alvos a partir de um arquivo
nmap -p 443 --script CVE-2026-35616_FortiClientEMS -iL targets.txt

# Com detecção de versão de serviço
nmap -sV -p 443 --script CVE-2026-35616_FortiClientEMS <target>

Exemplo de saída Nmap:

root@kitploit:~
PORT    STATE SERVICE
443/tcp open  https
| CVE-2026-35616_FortiClientEMS:
|   VULNERABLE:
|   FortiClient EMS Pre-Authentication API Bypass
|     State: VULNERABLE
|     IDs:  CVE:CVE-2026-35616
|     Risk factor: Critical (CVSS: 9.1)
|     Disclosure date: 2026-04-04
|     Extra information:
|       Affected endpoints: 2
|       Remediation: Apply hotfix for FortiClient EMS 7.4.5/7.4.6 or upgrade to 7.4.7
|       CISA KEV deadline: April 9, 2026
|     References:
|       https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2026-35616
|_      https://www.cisa.gov/known-exploited-vulnerabilities-catalog

Verificação Manual

Se você quiser confirmar manualmente com curl:

root@kitploit:~
# Passo 1: Linha de base - deve retornar 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: Falsificado - se retornar qualquer coisa diferente de 401, provavelmente vulnerável
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 o primeiro retornar 401 e o segundo retornar 500 ou 200, a instância está vulnerável.


Indicadores de Comprometimento

Fique atento a estes sinais no seu ambiente:

  • Requisições de API anômalas contendo cabeçalhos X-SSL-CLIENT-VERIFY de fontes que não sejam proxy
  • Mudanças de política inesperadas enviadas para endpoints sem atividade de sessão de admin
  • Novas contas de admin ou credenciais modificadas no EMS sem logs de atividade correspondentes
  • Comportamento incomum do agente FortiClient em endpoints gerenciados (novas instalações de software, mudanças de política)
  • Logs de acesso do Apache mostrando chamadas de API sem handshakes mTLS correspondentes
  • Alertas de honeypot/IDS para requisições com injeção de cabeçalhos relacionados a certificados

Fontes de log para revisar:

  • Logs de aplicação do FortiClient EMS
  • Logs de acesso e erro do Apache
  • Logs do agente FortiClient em endpoints gerenciados
  • Dados de fluxo de rede mostrando conexões às portas da API do EMS

Remediação

Ações imediatas (faça agora):

  1. Aplique o hotfix - A Fortinet lançou hotfixes de emergência para FortiClient EMS 7.4.5 e 7.4.6 em 4 de abril de 2026
  2. Restrinja o acesso à rede - Limite o acesso à interface de gerenciamento do EMS apenas a redes administrativas confiáveis (regras de firewall, ACLs)
  3. Monitore a atividade da API - Habilite logging detalhado e observe padrões anômalos de acesso à API

Curto prazo (esta semana):

  1. Atualize para o FortiClient EMS 7.4.7 quando disponível para a correção completa
  2. Audite configurações de endpoints - Verifique todos os endpoints gerenciados para mudanças de política não autorizadas
  3. Rode credenciais - Altere todas as senhas de admin e regenere quaisquer certificados gerenciados pelo EMS
  4. Revise endpoints gerenciados - Verifique sinais de implantação de malware ou mudanças de configuração não autorizadas

Longo prazo:

  1. Segmentação de rede - Garanta que o EMS esteja em uma VLAN de gerenciamento isolada com controles de acesso rigorosos
  2. Regras de WAF/proxy reverso - Implante regras para remover cabeçalhos X-SSL-CLIENT-VERIFY, X-SSL-CLIENT-S-DN e X-SSL-CLIENT-SERIAL de requisições recebidas na borda da rede
  3. Monitoramento - Implemente alertas para qualquer acesso à API sem sessões mTLS válidas

Referências

  • Catálogo CISA KEV - CVE-2026-35616
  • Blog Tenable - Análise CVE-2026-35616
  • Bishop Fox - Bypass de Autenticação de API no FortiClient EMS
  • SOCRadar - Bypass de Autenticação CVE-2026-35616 FortiClient EMS
  • Horizon3.ai - Análise CVE-2026-35616
  • BleepingComputer - Falha no FortiClient EMS Explorada em Ataques
  • The Hacker News - Fortinet Corrige CVE-2026-35616 Ativamente Explorado

Autor

Kerem Oruç - Engenheiro de Cibersegurança

  • GitHub: @keraattin
  • Twitter: @keraattin
Baixar ferramenta