Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
CVE-2026-35616 — Инструментарий обнаружения для CVE-2026-35616 — обхода API без аутентификации в FortiClient EMS. Включает сканер на Python и Nmap NSE-скрипт для выявления уязвимых версий и предоставления рекомендаций по устранению. | Kitploit
Инструменты/GitHubGitHub/keraattin/cve-2026-35616
Сканеры уязвимостейАнализ уязвимостейЭксплуатацияСбор информацииВеб-безопасностьСетевая безопасностьТестирование на ПроникновениеАутентификация
GitHubkeraattin/cve-2026-35616

CVE-2026-35616

Инструментарий обнаружения для CVE-2026-35616 — обхода API без аутентификации в FortiClient EMS. Включает сканер на Python и Nmap NSE-скрипт для выявления уязвимых версий и предоставления рекомендаций по устранению.

1245 месяцев назадЕщё не проверено
Репозиторий

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

CVE-2026-35616 - Обход аутентификации API FortiClient EMS до выполнения произвольного кода (RCE)

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

TL;DR

Критический обход аутентификации в Fortinet FortiClient EMS 7.4.5 и 7.4.6 позволяет полностью неаутентифицированному удалённому злоумышленнику обойти аутентификацию API, подделав один HTTP-заголовок (X-SSL-CLIENT-VERIFY). Уязвимость существует из-за того, что промежуточное ПО Django доверяет метаданным клиентского сертификата из управляемых пользователем заголовков, а не только доверенному обратному прокси. Это даёт злоумышленникам полный административный доступ к API — а оттуда и возможность выполнения произвольного кода на управляемых конечных точках по всему предприятию.

Активно эксплуатируется с 31 марта 2026 года. Добавлена в каталог CISA KEV 6 апреля 2026 года.


Содержание

  • Краткие факты
  • Что такое FortiClient EMS?
  • Глубокий анализ уязвимости
    • Архитектура
    • Где происходит сбой
    • Схема атаки
  • Анализ воздействия
  • Затронутые версии
  • Хронология эксплуатации
  • Обнаружение
    • Сканер на Python
    • NSE-скрипт Nmap
    • Ручная проверка
  • Индикаторы компрометации
  • Устранение
  • Ссылки
  • Автор

Краткие факты

ПолеДетали
ID CVECVE-2026-35616
ПроизводительFortinet
ПродуктFortiClient Enterprise Management Server (EMS)
Затронутые версии7.4.5, 7.4.6
Не затронутыветка 7.2.x, 7.4.4 и более ранние
CVSS v3.19.1 (Критический)
CWECWE-284 - Некорректный контроль доступа
Вектор атакиСеть
АутентификацияНе требуется
Взаимодействие с пользователемНет
Зрелость эксплойтаЭксплуатируется в дикой природе
CISA KEVДобавлена 6 апреля 2026 года (крайний срок: 9 апреля 2026 года)
ПатчГорячий фикс доступен; полное исправление в 7.4.7
Авторы обнаруженияСимо Кохонен (Defused Cyber), Нгуен Дык Ань

Что такое FortiClient EMS?

FortiClient Enterprise Management Server (EMS) — это централизованная платформа управления конечными точками от Fortinet. Она служит уровнем управления и контроля (C2) для развёртывания, настройки и мониторинга агентов FortiClient в организации. Представьте её как мозг, который управляет каждой конечной точкой в среде под управлением Fortinet:

  • Распространяет политики безопасности и профили VPN на конечные точки
  • Управляет соответствием конечных точек и проверками состояния
  • Распространяет обновления программного обеспечения и патчи
  • Интегрируется с межсетевыми экранами FortiGate для Zero Trust Network Access (ZTNA)
  • Хранит и управляет телеметрией конечных точек, сертификатами и учётными данными

Когда злоумышленник получает административный доступ к EMS, он фактически получает ключи от каждой управляемой конечной точки в организации.


Глубокий анализ уязвимости

Архитектура

FortiClient EMS использует довольно стандартный стек веб-приложений за кулисами:

root@kitploit:~
+----------------+          +----------------+          +----------------+
|   Браузер /    |  HTTPS   |    Apache      |   WSGI   |    Django      |
|   API-клиент   | -------> |   (mod_ssl)    | -------> |    Бэкенд      |
+----------------+          +----------------+          +----------------+

Когда настроен взаимный TLS (mTLS), модуль mod_ssl Apache обрабатывает проверку клиентского сертификата. После проверки сертификата Apache передаёт результат проверки в Django через доверенные переменные окружения WSGI:

  • SSL_CLIENT_VERIFY — статус проверки (SUCCESS, NONE, FAILED)
  • SSL_CLIENT_S_DN — Subject Distinguished Name из сертификата
  • SSL_CLIENT_SERIAL — серийный номер сертификата

Это стандартный и безопасный подход. Проблема в том, как промежуточное ПО Django считывает эти данные.

Где происходит сбой

В FortiClient EMS 7.4.5 и 7.4.6 промежуточное ПО аутентификации Django было изменено, чтобы также принимать эту же информацию из HTTP-заголовков запроса:

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

Вероятно, это было добавлено для поддержки развёртываний с обратным прокси, где Apache не является точкой завершения TLS. Однако промежуточное ПО не различает эти два источника. Оно сначала проверяет переменные WSGI, но если они отсутствуют (mTLS не настроен или прямое соединение), оно переключается на HTTP-заголовки — которые может установить любой клиент.

Вот концептуальная схема:

root@kitploit:~
БЕЗОПАСНЫЙ ПУТЬ (предполагаемый):
  Apache mod_ssl проверяет сертификат --> устанавливает переменные окружения WSGI --> Django считывает переменные окружения  [ОК]

НЕБЕЗОПАСНЫЙ ПУТЬ (уязвимость):
  Злоумышленник напрямую устанавливает HTTP-заголовки --> Django считывает заголовки --> Доверяет им  [СБОЙ]

Промежуточное ПО фактически доверяет клиенту самостоятельно подтверждать статус проверки собственного сертификата. Это как если бы вышибала спросил кого-то: «Эй, тебя уже проверил другой вышибала?» — и впустил его, когда тот ответил «да».

Схема атаки

root@kitploit:~
Шаг 1: Злоумышленник отправляет POST-запрос к конечной точке API EMS
        со следующими заголовками:
        
        X-SSL-CLIENT-VERIFY: SUCCESS
        X-SSL-CLIENT-S-DN: CN=admin
        X-SSL-CLIENT-SERIAL: 0000000000000001

Шаг 2: Промежуточное ПО Django проверяет переменные окружения WSGI → отсутствуют
        Переключается на HTTP-заголовки → находит X-SSL-CLIENT-VERIFY: SUCCESS

Шаг 3: Промежуточное ПО обрабатывает запрос как аутентифицированный с правами администратора

Шаг 4: Злоумышленник получает полный административный доступ к API

Шаг 5: Через административный API злоумышленник может:
        - Распространять вредоносные политики на все управляемые конечные точки
        - Извлекать сохранённые учётные данные и сертификаты
        - Развёртывать полезные нагрузки через систему распространения ПО
        - Изменять конфигурации ZTNA
        - Перемещаться в более широкую сеть

Вся атака требует одного HTTP-запроса. Никакого перебора, подбора учётных данных или социальной инженерии. Просто один подделанный заголовок.


Анализ воздействия

Серьёзность здесь выходит за рамки самого сервера. FortiClient EMS — это мультипликатор силы: его компрометация даёт злоумышленнику рычаги воздействия на каждую управляемую конечную точку:

Непосредственное воздействие:

  • Полный административный контроль над консолью EMS
  • Доступ ко всем сохранённым конфигурациям конечных точек, учётным данным и сертификатам
  • Возможность чтения/изменения/удаления политик конечных точек
  • Доступ к конфигурациям VPN и настройкам ZTNA

Каскадное воздействие (через управляемые конечные точки):

  • Развёртывание вредоносного ПО на всех управляемых устройствах через систему распространения ПО
  • Сбор учётных данных из телеметрии конечных точек
  • Отключение или ослабление средств безопасности на всех управляемых конечных точках
  • Боковое перемещение через манипуляцию конфигурациями VPN/ZTNA
  • Постоянный бэкдор-доступ через доставку полезных нагрузок на основе политик

Риск для предприятия:

  • В типичном корпоративном развёртывании EMS управляет сотнями и тысячами конечных точек
  • Единственный скомпрометированный экземпляр EMS может привести к компрометации всей организации
  • FortiClient EMS часто размещается в доверенной сетевой зоне с широким доступом

Затронутые версии

ВерсияСтатус
FortiClient EMS 7.4.6Уязвима
FortiClient EMS 7.4.5Уязвима
FortiClient EMS 7.4.4 и более ранниеНе затронуты
FortiClient EMS 7.2.xНе затронуты

Хронология эксплуатации

ДатаСобытие
~Конец марта 2026Уязвимость обнаружена и сообщена Симо Кохоненом и Нгуен Дык Анем
31 марта 2026Зафиксированы первые попытки эксплуатации против honeypot-систем (Defused Cyber)
4 апреля 2026Fortinet выпускает экстренные горячие фиксы для 7.4.5 и 7.4.6
6 апреля 2026CISA добавляет CVE-2026-35616 в каталог KEV (крайний срок: 9 апреля 2026 года)
13 апреля 2026Публикация этого набора инструментов для обнаружения

Обнаружение

Сканер на Python

Python-скрипт проверяет несколько конечных точек API, используя технику дифференциального ответа.

Как это работает:

  1. Снятие отпечатка — Идентифицирует FortiClient EMS по телу HTTP-ответа и заголовкам
  2. Базовый запрос — Отправляет POST на каждую конечную точку API без поддельных заголовков (ожидается HTTP 401 Unauthorized)
  3. Поддельный запрос — Отправляет тот же запрос с внедрённым X-SSL-CLIENT-VERIFY: SUCCESS
  4. Сравнение — Если код состояния меняется с 401 на что-либо другое (обычно 500 или 200), обход аутентификации подтверждён

Эксплуатационная полезная нагрузка никогда не отправляется. Тест безопасен для производственной среды.

Использование:

root@kitploit:~
# Установка зависимостей (для этого скрипта нужна только стандартная библиотека)
pip install -r requirements.txt

# Одиночная цель
python CVE-2026-35616_FortiClientEMS_detector.py -t 192.168.1.100

# Нестандартный порт
python CVE-2026-35616_FortiClientEMS_detector.py -t ems.corp.local -p 8443

# Массовое сканирование из файла
python CVE-2026-35616_FortiClientEMS_detector.py -f targets.txt

# Вывод JSON, сохранённый в файл
python CVE-2026-35616_FortiClientEMS_detector.py -t 192.168.1.100 --json -o results.json

# С включённой проверкой SSL-сертификата
python CVE-2026-35616_FortiClientEMS_detector.py -t 192.168.1.100 --verify-ssl

# Увеличенный таймаут для медленных сетей
python CVE-2026-35616_FortiClientEMS_detector.py -t 192.168.1.100 --timeout 20

Параметры:

ФлагОписаниеПо умолчанию
-t, --targetIP-адрес или имя хоста цели-
-f, --fileФайл с целями, по одной на строку (строки, начинающиеся с #, пропускаются)-
-p, --portПорт цели443
--timeoutТаймаут соединения в секундах10
--verify-sslВключить проверку SSL-сертификатаОтключено
--jsonВывод результатов в формате JSONВыкл
-o, --outputСохранить результаты в файл-

Пример вывода:

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

NSE-скрипт Nmap

root@kitploit:~
# Установка NSE-скрипта
sudo cp CVE-2026-35616_FortiClientEMS.nse /usr/share/nmap/scripts/
sudo nmap --script-updatedb

# Базовое сканирование
nmap -p 443 --script CVE-2026-35616_FortiClientEMS <цель>

# Сканирование подсети
nmap -p 443 --script CVE-2026-35616_FortiClientEMS 10.0.0.0/24

# Сканирование нескольких целей из файла
nmap -p 443 --script CVE-2026-35616_FortiClientEMS -iL targets.txt

# С определением версии службы
nmap -sV -p 443 --script CVE-2026-35616_FortiClientEMS <цель>

Пример вывода 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

Ручная проверка

Если вы хотите подтвердить вручную с помощью curl:

root@kitploit:~
# Шаг 1: Базовый запрос — должен вернуть 401
curl -sk -X POST https://<ЦЕЛЬ>:443/api/v1/auth/signin \
  -H "Content-Type: application/json" \
  -d '{}' \
  -o /dev/null -w "%{http_code}\n"

# Шаг 2: Поддельный запрос — если возвращает что-либо кроме 401, вероятно, уязвим
curl -sk -X POST https://<ЦЕЛЬ>: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"

Если первый возвращает 401, а второй — 500 или 200, экземпляр уязвим.


Индикаторы компрометации

Обратите внимание на эти признаки в вашей среде:

  • Аномальные API-запросы, содержащие заголовки X-SSL-CLIENT-VERIFY из источников, не являющихся прокси
  • Неожиданные изменения политик, отправленные на конечные точки без активности административной сессии
  • Новые учётные записи администратора или изменённые учётные данные в EMS без соответствующих журналов активности
  • Необычное поведение агентов FortiClient на управляемых конечных точках (новые установки ПО, изменения политик)
  • Журналы доступа Apache, показывающие вызовы API без соответствующих рукопожатий mTLS
  • Оповещения honeypot/IDS о запросах с внедрением заголовков, связанных с сертификатами

Источники журналов для проверки:

  • Журналы приложения FortiClient EMS
  • Журналы доступа и ошибок Apache
  • Журналы агентов FortiClient на управляемых конечных точках
  • Данные сетевого трафика, показывающие подключения к портам API EMS

Устранение

Немедленные действия (сделайте сейчас):

  1. Примените горячий фикс — Fortinet выпустил экстренные горячие фиксы для FortiClient EMS 7.4.5 и 7.4.6 4 апреля 2026 года
  2. Ограничьте сетевой доступ — Ограничьте доступ к интерфейсу управления EMS только доверенными административными сетями (правила межсетевого экрана, ACL)
  3. Мониторьте активность API — Включите подробное журналирование и следите за аномальными паттернами доступа к API

Краткосрочные (на этой неделе):

  1. Обновитесь до FortiClient EMS 7.4.7, когда она станет доступна, для полного исправления
  2. Проведите аудит конфигураций конечных точек — Проверьте все управляемые конечные точки на предмет несанкционированных изменений политик
  3. Смените учётные данные — Измените все пароли администраторов и перегенерируйте любые сертификаты, управляемые EMS
  4. Проверьте управляемые конечные точки — Просканируйте на предмет признаков развёртывания вредоносного ПО или несанкционированных изменений конфигурации

Долгосрочные:

  1. Сегментация сети — Убедитесь, что EMS находится в изолированной управляющей VLAN со строгими контролями доступа
  2. Правила WAF/обратного прокси — Разверните правила для удаления заголовков X-SSL-CLIENT-VERIFY, X-SSL-CLIENT-S-DN и X-SSL-CLIENT-SERIAL из входящих запросов на сетевом периметре
  3. Мониторинг — Внедрите оповещения о любом доступе к API без действительных сессий mTLS

Ссылки

  • Каталог CISA KEV - CVE-2026-35616
  • Блог Tenable - Анализ CVE-2026-35616
  • Bishop Fox - Обход аутентификации API в FortiClient EMS
  • SOCRadar - Обход аутентификации CVE-2026-35616 FortiClient EMS
  • Horizon3.ai - Анализ CVE-2026-35616
  • BleepingComputer - Уязвимость FortiClient EMS эксплуатируется в атаках
  • The Hacker News - Fortinet патчит активно эксплуатируемую CVE-2026-35616

Автор

Керем Оруч — Инженер по кибербезопасности

  • GitHub: @keraattin
  • Twitter: @keraattin
Скачать инструмент