Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
CVE-2026-35616 — Kit de detección para CVE-2026-35616, una omisión de API de preautenticación en FortiClient EMS. Incluye un escáner en Python y un script NSE de Nmap para identificar versiones vulnerables y proporcionar orientación de remediación. | Kitploit
Herramientas/GitHubGitHub/keraattin/cve-2026-35616
Escáneres de VulnerabilidadesAnálisis de VulnerabilidadesExplotaciónRecopilación de InformaciónSeguridad WebSeguridad de RedesPruebas de PenetraciónAutenticación
GitHubkeraattin/cve-2026-35616

CVE-2026-35616

Kit de detección para CVE-2026-35616, una omisión de API de preautenticación en FortiClient EMS. Incluye un escáner en Python y un script NSE de Nmap para identificar versiones vulnerables y proporcionar orientación de remediación.

12hace 4 mesesAún no revisado
Ver Repositorio

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

CVE-2026-35616 - Bypass de Autenticación Pre-API en FortiClient EMS que Conduce a RCE

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

TL;DR

Un bypass de autenticación crítico en Fortinet FortiClient EMS 7.4.5 y 7.4.6 permite a un atacante remoto completamente no autenticado eludir la autenticación de la API falsificando una única cabecera HTTP (X-SSL-CLIENT-VERIFY). La falla existe porque el middleware de Django confía en los metadatos del certificado del cliente provenientes de cabeceras controladas por el usuario, no solo del proxy inverso de confianza. Esto otorga a los atacantes acceso administrativo completo a la API, y desde allí, ejecución arbitraria de código en los endpoints gestionados de toda la empresa.

Explotado activamente desde el 31 de marzo de 2026. Añadido al catálogo KEV de CISA el 6 de abril de 2026.


Tabla de Contenidos

  • Datos Rápidos
  • ¿Qué es FortiClient EMS?
  • Análisis Profundo de la Vulnerabilidad
    • La Arquitectura
    • Dónde se Rompe
    • El Flujo del Ataque
  • Análisis de Impacto
  • Versiones Afectadas
  • Cronología de Explotación
  • Detección
    • Escáner en Python
    • Script NSE para Nmap
    • Verificación Manual
  • Indicadores de Compromiso
  • Remediación
  • Referencias
  • Autor

Datos Rápidos

CampoDetalle
ID CVECVE-2026-35616
ProveedorFortinet
ProductoFortiClient Enterprise Management Server (EMS)
Versiones Afectadas7.4.5, 7.4.6
No AfectadasRama 7.2.x, 7.4.4 y anteriores
CVSS v3.19.1 (Crítico)
CWECWE-284 - Control de Acceso Inadecuado
Vector de AtaqueRed
AutenticaciónNo se requiere
Interacción del UsuarioNinguna
Madurez del ExploitExplotado en la naturaleza
CISA KEVAñadido el 6 de abril de 2026 (fecha límite: 9 de abril de 2026)
ParcheHotfix disponible; corrección completa en 7.4.7
CréditosSimo Kohonen (Defused Cyber), Nguyen Duc Anh

¿Qué es FortiClient EMS?

FortiClient Enterprise Management Server (EMS) es la plataforma centralizada de gestión de endpoints de Fortinet. Actúa como la capa de comando y control para implementar, configurar y monitorear los agentes de FortiClient en una organización. Piense en él como el cerebro que gobierna cada endpoint en un entorno gestionado por Fortinet:

  • Envía políticas de seguridad y perfiles VPN a los endpoints
  • Gestiona el cumplimiento de los endpoints y las verificaciones de postura
  • Distribuye actualizaciones de software y parches
  • Se integra con los firewalls FortiGate para el Acceso a Red de Confianza Cero (ZTNA)
  • Almacena y gestiona telemetría de endpoints, certificados y credenciales

Cuando un atacante obtiene acceso administrativo a EMS, esencialmente posee las llaves de cada endpoint gestionado en la organización.


Análisis Profundo de la Vulnerabilidad

La Arquitectura

FortiClient EMS utiliza una pila de aplicaciones web bastante estándar entre bastidores:

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

Cuando se configura TLS mutuo (mTLS), el mod_ssl de Apache maneja la verificación del certificado del cliente. Después de validar el certificado, Apache pasa el resultado de la verificación a Django a través de variables de entorno WSGI de confianza:

  • SSL_CLIENT_VERIFY - El estado de verificación (SUCCESS, NONE, FAILED)
  • SSL_CLIENT_S_DN - El Nombre Distinguido del Sujeto del certificado
  • SSL_CLIENT_SERIAL - El número de serie del certificado

Este es el patrón estándar y seguro. El problema está en cómo el middleware de Django lee estos datos.

Dónde se Rompe

En FortiClient EMS 7.4.5 y 7.4.6, el middleware de autenticación de Django fue modificado para aceptar también esta misma información desde cabeceras de solicitud HTTP:

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

Esto probablemente se añadió para soportar implementaciones con proxy inverso donde Apache no es el punto de terminación TLS. Sin embargo, el middleware no distingue entre estas dos fuentes. Primero verifica las variables WSGI, pero si están ausentes (sin mTLS configurado, o una conexión directa), recurre a las cabeceras HTTP, que cualquier cliente puede establecer.

Aquí está el desglose conceptual:

root@kitploit:~
RUTA SEGURA (prevista):
  Apache mod_ssl valida el certificado --> establece variables de entorno WSGI --> Django lee las variables de entorno  [OK]

RUTA INSEGURA (la vulnerabilidad):
  El atacante establece cabeceras HTTP directamente --> Django lee las cabeceras --> Confía en ellas  [FALLO]

El middleware efectivamente confía en que el cliente auto-certifique su propio estado de verificación de certificado. Es como si un portero le preguntara a alguien "Oye, ¿el otro portero ya revisó tu identificación?" y lo dejara entrar cuando dice "sí".

El Flujo del Ataque

root@kitploit:~
Paso 1: El atacante envía una solicitud POST a un endpoint de la API de EMS
        con estas cabeceras:
        
        X-SSL-CLIENT-VERIFY: SUCCESS
        X-SSL-CLIENT-S-DN: CN=admin
        X-SSL-CLIENT-SERIAL: 0000000000000001

Paso 2: El middleware de Django verifica las variables de entorno WSGI → no presentes
        Recurre a las cabeceras HTTP → encuentra X-SSL-CLIENT-VERIFY: SUCCESS

Paso 3: El middleware trata la solicitud como autenticada con identidad de administrador

Paso 4: El atacante tiene acceso administrativo completo a la API

Paso 5: Desde la API de administración, el atacante puede:
        - Enviar políticas maliciosas a todos los endpoints gestionados
        - Extraer credenciales y certificados almacenados
        - Implementar payloads mediante la distribución de software
        - Modificar configuraciones ZTNA
        - Moverse lateralmente hacia la red más amplia

Todo el ataque requiere una única solicitud HTTP. Sin fuerza bruta, sin relleno de credenciales, sin ingeniería social. Solo una cabecera falsificada.


Análisis de Impacto

La gravedad aquí va más allá del propio servidor. FortiClient EMS es un multiplicador de fuerza: comprometerlo le da a un atacante influencia sobre cada endpoint gestionado:

Impacto Inmediato:

  • Control administrativo completo sobre la consola de EMS
  • Acceso a todas las configuraciones de endpoints, credenciales y certificados almacenados
  • Capacidad de leer/modificar/eliminar políticas de endpoints
  • Acceso a configuraciones VPN y ajustes ZTNA

Impacto Descendente (a través de endpoints gestionados):

  • Implementación de malware en todos los dispositivos gestionados mediante la distribución de software
  • Recolección de credenciales desde la telemetría de endpoints
  • Deshabilitar o debilitar los controles de seguridad en todos los endpoints gestionados
  • Movimiento lateral mediante la manipulación de la configuración VPN/ZTNA
  • Acceso persistente de puerta trasera mediante la entrega de payloads basada en políticas

Riesgo Empresarial:

  • En una implementación empresarial típica, EMS gestiona cientos a miles de endpoints
  • Una única instancia de EMS explotada puede llevar a un compromiso en toda la organización
  • FortiClient EMS a menudo se posiciona en una zona de red de confianza con acceso amplio

Versiones Afectadas

VersiónEstado
FortiClient EMS 7.4.6Vulnerable
FortiClient EMS 7.4.5Vulnerable
FortiClient EMS 7.4.4 y anterioresNo afectada
FortiClient EMS 7.2.xNo afectada

Cronología de Explotación

FechaEvento
~Finales de marzo de 2026Vulnerabilidad descubierta y reportada por Simo Kohonen y Nguyen Duc Anh
31 de marzo de 2026Primeros intentos de explotación registrados contra honeypots (Defused Cyber)
4 de abril de 2026Fortinet publica hotfixes de emergencia para 7.4.5 y 7.4.6
6 de abril de 2026CISA añade CVE-2026-35616 al catálogo KEV (fecha límite: 9 de abril de 2026)
13 de abril de 2026Se publica este kit de herramientas de detección

Detección

Escáner en Python

El script en Python prueba múltiples endpoints de la API utilizando una técnica de respuesta diferencial.

Cómo funciona:

  1. Huella digital - Identifica FortiClient EMS mediante el cuerpo y las cabeceras de la respuesta HTTP
  2. Solicitud de referencia - Envía un POST a cada endpoint de la API sin cabeceras falsificadas (espera HTTP 401 No Autorizado)
  3. Solicitud falsificada - Envía la misma solicitud con X-SSL-CLIENT-VERIFY: SUCCESS inyectada
  4. Comparación - Si el código de estado cambia de 401 a cualquier otro (típicamente 500 o 200), el bypass de autenticación se confirma

Nunca se envía un payload de explotación. La prueba es segura para producción.

Uso:

root@kitploit:~
# Instalar dependencias (solo se necesita la biblioteca estándar para este script)
pip install -r requirements.txt

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

# Puerto personalizado
python CVE-2026-35616_FortiClientEMS_detector.py -t ems.corp.local -p 8443

# Escaneo masivo desde archivo
python CVE-2026-35616_FortiClientEMS_detector.py -f targets.txt

# Salida JSON guardada en archivo
python CVE-2026-35616_FortiClientEMS_detector.py -t 192.168.1.100 --json -o results.json

# Con verificación de certificado SSL habilitada
python CVE-2026-35616_FortiClientEMS_detector.py -t 192.168.1.100 --verify-ssl

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

Opciones:

IndicadorDescripciónPredeterminado
-t, --targetIP u hostname del objetivo-
-f, --fileArchivo con objetivos, uno por línea (las líneas que comienzan con # se omiten)-
-p, --portPuerto del objetivo443
--timeoutTiempo de espera de conexión en segundos10
--verify-sslHabilitar verificación de certificado SSLDeshabilitado
--jsonMostrar resultados en formato JSONDesactivado
-o, --outputGuardar resultados en un archivo-

Ejemplo de salida:

root@kitploit:~
╔══════════════════════════════════════════════════════════════╗
║  CVE-2026-35616 - Detector de Bypass de Autenticación de    ║
║  FortiClient EMS                                             ║
║  Bypass de Acceso a API Pre-Autenticación → Escalada de     ║
║  Privilegios                                                 ║
║  CVSS: 9.1 (Crítico) | CISA KEV: Explotación Activa         ║
╚══════════════════════════════════════════════════════════════╝

[*] Escaneando 192.168.1.100:443...

Objetivo: 192.168.1.100:443
============================================================
  [*] FortiClient EMS detectado (Versión: Desconocida)

  Resultados de la Prueba de Vulnerabilidad:
    [VULNERABLE] /api/v1/auth/signin  Referencia: 401 → Falsificado: 500
    [VULNERABLE] /api/v1/system/status  Referencia: 401 → Falsificado: 500
    [NO VULN] /api/v1/endpoints  Referencia: 401 → Falsificado: 401

  [!] EL OBJETIVO ES PROBABLEMENTE VULNERABLE A CVE-2026-35616
      Bypass de API pre-autenticación confirmado. ¡Aplique el hotfix inmediatamente!
      Remediación: Actualice a FortiClient EMS 7.4.7 o aplique el hotfix

Script NSE para Nmap

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

# Escaneo básico
nmap -p 443 --script CVE-2026-35616_FortiClientEMS <objetivo>

# Escanear una subred
nmap -p 443 --script CVE-2026-35616_FortiClientEMS 10.0.0.0/24

# Escanear múltiples objetivos desde un archivo
nmap -p 443 --script CVE-2026-35616_FortiClientEMS -iL targets.txt

# Con detección de versión de servicio
nmap -sV -p 443 --script CVE-2026-35616_FortiClientEMS <objetivo>

Ejemplo de salida de Nmap:

root@kitploit:~
PORT    STATE SERVICE
443/tcp open  https
| CVE-2026-35616_FortiClientEMS:
|   VULNERABLE:
|   Bypass de API Pre-Autenticación en FortiClient EMS
|     Estado: VULNERABLE
|     IDs:  CVE:CVE-2026-35616
|     Factor de riesgo: Crítico (CVSS: 9.1)
|     Fecha de divulgación: 2026-04-04
|     Información adicional:
|       Endpoints afectados: 2
|       Remediación: Aplique el hotfix para FortiClient EMS 7.4.5/7.4.6 o actualice a 7.4.7
|       Fecha límite CISA KEV: 9 de abril de 2026
|     Referencias:
|       https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2026-35616
|_      https://www.cisa.gov/known-exploited-vulnerabilities-catalog

Verificación Manual

Si desea confirmar manualmente con curl:

root@kitploit:~
# Paso 1: Referencia - debería devolver 401
curl -sk -X POST https://<OBJETIVO>:443/api/v1/auth/signin \
  -H "Content-Type: application/json" \
  -d '{}' \
  -o /dev/null -w "%{http_code}\n"

# Paso 2: Falsificado - si devuelve algo distinto de 401, probablemente vulnerable
curl -sk -X POST https://<OBJETIVO>: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 el primero devuelve 401 y el segundo devuelve 500 o 200, la instancia es vulnerable.


Indicadores de Compromiso

Esté atento a estas señales en su entorno:

  • Solicitudes API anómalas que contengan cabeceras X-SSL-CLIENT-VERIFY desde fuentes que no son proxy
  • Cambios de política inesperados enviados a los endpoints sin actividad de sesión de administrador
  • Nuevas cuentas de administrador o credenciales modificadas en EMS sin registros de actividad correspondientes
  • Comportamiento inusual del agente FortiClient en los endpoints gestionados (nuevas instalaciones de software, cambios de política)
  • Registros de acceso de Apache que muestren llamadas a la API sin los handshakes mTLS correspondientes
  • Alertas de honeypot/IDS por solicitudes con inyección de cabeceras relacionadas con certificados

Fuentes de registro a revisar:

  • Registros de aplicación de FortiClient EMS
  • Registros de acceso y error de Apache
  • Registros del agente FortiClient en los endpoints gestionados
  • Datos de flujo de red que muestren conexiones a los puertos de la API de EMS

Remediación

Acciones inmediatas (hágalas ahora):

  1. Aplique el hotfix - Fortinet publicó hotfixes de emergencia para FortiClient EMS 7.4.5 y 7.4.6 el 4 de abril de 2026
  2. Restrinja el acceso a la red - Limite el acceso a la interfaz de gestión de EMS solo a redes de administración de confianza (reglas de firewall, ACLs)
  3. Monitoree la actividad de la API - Habilite el registro detallado y esté atento a patrones de acceso API anómalos

A corto plazo (esta semana):

  1. Actualice a FortiClient EMS 7.4.7 cuando esté disponible para la corrección completa
  2. Audite las configuraciones de los endpoints - Verifique todos los endpoints gestionados para detectar cambios de política no autorizados
  3. Rote las credenciales - Cambie todas las contraseñas de administrador y regenere cualquier certificado gestionado por EMS
  4. Revise los endpoints gestionados - Escanee en busca de señales de implementación de malware o cambios de configuración no autorizados

A largo plazo:

  1. Segmentación de red - Asegúrese de que EMS esté en una VLAN de gestión aislada con controles de acceso estrictos
  2. Reglas de WAF/proxy inverso - Implemente reglas para eliminar las cabeceras X-SSL-CLIENT-VERIFY, X-SSL-CLIENT-S-DN y X-SSL-CLIENT-SERIAL de las solicitudes entrantes en el borde de la red
  3. Monitoreo - Implemente alertas sobre cualquier acceso a la API sin sesiones mTLS válidas

Referencias

  • Catálogo KEV de CISA - CVE-2026-35616
  • Blog de Tenable - Análisis de CVE-2026-35616
  • Bishop Fox - Bypass de Autenticación de API en FortiClient EMS
  • SOCRadar - Bypass de Autenticación de FortiClient EMS CVE-2026-35616
  • Horizon3.ai - Análisis de CVE-2026-35616
  • BleepingComputer - Fallo de FortiClient EMS Explotado en Ataques
  • The Hacker News - Fortinet Parchea CVE-2026-35616 Explotado Activamente

Autor

Kerem Oruç - Ingeniero de Ciberseguridad

  • GitHub: @keraattin
  • Twitter: @keraattin
Descargar herramienta