Fortinet закрыла в FortiClient ошибку CORS, через которую сайт выполнял код на компьютере

Fortinet

Fortinet выпустила обновления FortiClient для Windows и macOS, закрывающие ошибку проверки источника запросов с оценкой 9.1 по CVSS. Открытая в браузере страница могла обратиться к локальному сервису клиента и добиться выполнения произвольной команды на компьютере пользователя. Уязвимы ветки 7.4 и 7.2, исправленные сборки - 7.4.8 и 7.2.15, включая варианты Windows PAM.

Локальный сервис поверил чужой странице

FortiClient - клиент Fortinet для VPN-подключений и проверки защищённости рабочего места. На машине он держит локальный сервис: небольшой процесс, который слушает порт и выполняет служебные запросы от имени пользователя. Этот сервис и стал точкой входа.

Ошибка относится к CWE-346, некорректная проверка источника запроса. CORS - механизм браузера, который решает, может ли страница с одного сайта читать ответ сервера с другого. Если сервер доверчиво отвечает всем, страница с чужого домена получает доступ к тому, что ей принадлежать не должно.

Что именно сломано

Локальный сервис FortiClient принимал запросы с произвольных веб-страниц. Проверку origin он либо не выполнял, либо выполнял с ошибкой в конфигурации. В итоге скрипт на сторонней странице мог отправить сервису команду и получить её выполнение в контексте пользователя.

Вектор сетевой, сложность низкая, привилегии не нужны. Требуется одно условие: жертва открывает специально сформированную страницу. Дальше всё делает браузер, без установки файлов и без запроса учётных данных.

Успешная эксплуатация ведёт к выполнению кода и повышению привилегий на хосте. Для атакующего это закрепление на машине, у которой обычно есть доступ к корпоративным ресурсам и сохранённые сессии.

Условия эксплуатации

Атака идёт через браузер, а не напрямую по сети. Локальный порт слушает только интерфейс самой машины, поэтому подключиться к нему из интернета нельзя. Это снижает массовость, но не отменяет риск: достаточно одной фишинговой ссылки.

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

Сетевой периметр здесь не помогает. Запрос идёт с самого компьютера, трафик не покидает хост и не выглядит подозрительным для межсетевого экрана. Заметить попытку можно только средствами на конечном устройстве.

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

В зоне риска FortiClient для macOS 7.4.0-7.4.7, FortiClient для Windows 7.4.0-7.4.7, Windows PAM 7.4.0-7.4.7, а также Windows 7.2.0-7.2.14 и Windows PAM 7.2.0-7.2.14.

Ветка 8.0 ошибку не содержит. FortiClient для macOS 7.2 тоже вне зоны риска. Остальные сборки из перечисленных диапазонов нужно обновлять, даже если клиент используется только для VPN и не настроен на другие модули.

Что исправляет патч

Исправления - 7.4.8 для ветки 7.4 и 7.2.15 для ветки 7.2, включая PAM-сборки. Виртуального патча Fortinet не выпустила, поэтому закрыть ошибку на уровне продукта без обновления клиента нельзя.

После установки клиент нужно перезапустить. Обновлённый код должен заменить работающий сервис, иначе в памяти останется старая конфигурация. Проверьте, что процесс завершился и стартовал заново, а не просто обновился на диске.

Важно не ограничиться загрузкой установщика. Обновление должно примениться на всех профилях, включая ноутбуки удалённых сотрудников, которые редко появляются в корпоративной сети. Именно они чаще всего остаются на старой версии месяцами.

Как найти уязвимые установки

Исследователь Кевин Йонсен из Baldur Security, сообщивший об уязвимости, назвал два признака уязвимой установки на Windows: сервис, слушающий TCP-порт 9191, и запущенный процесс FortiVRS.exe. По ним удобно строить запрос в EDR или инвентаризационном средстве.

Такой запрос даёт список приоритетных машин за один проход. В первую очередь закрывайте ноутбуки с VPN, административные рабочие станции и сегменты, откуда доступны системы управления инфраструктурой. Компрометация такого хоста даёт атакующему валидные учётные данные и привычные инструменты.

Отдельно проверьте сборки PAM: они ставятся на машины с расширенными правами, и цена ошибки там выше.

Если обновиться нельзя

Отключение локального сервиса снижает функциональность клиента. Сначала проверьте, какие задачи зависят от него: часть функций контроля защищённости и VPN-профилей может перестать работать.

На время окна обновления ограничьте переходы по ссылкам из почты и мессенджеров. Это организационная мера, а не техническая защита, но она снижает вероятность эксплуатации.

Блокировка по домену не поможет: страница может размещаться на любом сайте, включая взломанный легитимный ресурс. Ориентироваться стоит на обновление, а не на фильтрацию адресов.

Что осталось неизвестным

Fortinet не подтверждает эксплуатацию уязвимости в реальных атаках. Приоритет обновления определяется вашей экспозицией, а не сообщениями об инцидентах: наличие клиента на ноутбуках с VPN делает ошибку практической проблемой.

Первое действие - инвентаризация по порту и процессу, затем обновление до 7.4.8 или 7.2.15 с обязательным перезапуском клиента. Хосты, где сервис работал до патча, стоит отдельно проверить на признаки закрепления.

Ссылки

Комментарии: 0