Подмена идентификатора учётной записи в Cato Client открывает локальному злоумышленнику путь к правам SYSTEM

Cato Networks

Клиент Cato Networks для Windows принимает от локального пользователя подставной идентификатор учётной записи и подставляет его в путь к файлу на диске. Уязвимость CVE-2026-10739 позволяет рядовому пользователю без прав администратора получить на машине полный доступ уровня SYSTEM. Проблема касается Cato Client - программы, через которую сотрудники подключаются к облачной платформе Cato Cloud. Специалисты Quarkslab подтвердили её на версиях 6.2.0 и 6.4.6, а вендор относит к уязвимым все сборки старше 6.12.6. Чтобы воспользоваться ошибкой, нужно уже иметь на компьютере учётную запись с урезанными правами; из сети она не срабатывает.

Уязвимость CVE-2026-10739

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

Среди функций клиента есть раздельное туннелирование. Администратор разрешает пользователю загрузить текстовый файл, где перечислены диапазоны адресов, которые идут через шифрованный канал, и те, что остаются в стороне. Формат простой: слово include или exclude в первой строке, дальше адреса с масками. Графический интерфейс передаёт файл привилегированной службе, а та создаёт служебный файл состояния.

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

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

Дальше начинается сама ошибка. Интерфейс регистрируется в службе и передаёт идентификатор безопасности учётной записи - строку, которой Windows помечает пользователя и группы. Служба берёт эту строку и составляет из неё имя файла с расширением .stp. При этом значение приходит от клиента и не сверяется с реальным маркером доступа процесса. Разделители пути внутри строки служба принимает как обычную часть имени.

В результате запись уходит за пределы рабочего каталога. Подставной идентификатор выводит файл в любую точку диска. С корректным файлом настроек это даёт запись от имени SYSTEM, с некорректным - удаление файла с тем же расширением и теми же правами.

Удаление оказалось полезнее записи. Служба убирает служебный файл, когда загруженный файл настроек читается, но не проходит разбор. Исследователи подставили символическую ссылку - объект файловой системы, который перенаправляет обращение с одного пути на другой. Ссылка вела в служебный каталог установщика Windows. Когда служба удаляла файл с правами SYSTEM, удаление затрагивало именно этот каталог. Затем срабатывал механизм отката установщика Windows: он восстанавливал предыдущее состояние системы и запускал подготовленную программу. Завершала цепочку командная оболочка с правами SYSTEM.

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

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

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

Cato Networks исправила ошибку в версии 6.12.6. Пользователям клиента для Windows стоит обновиться до этой сборки или более поздней. Номер версии виден в окне программы, а в корпоративной среде обновление удобнее раздать через систему управления устройствами. Администраторам имеет смысл заодно уточнить, на каких машинах раздельное туннелирование действительно нужно.

Раскрытие шло по согласованному графику. Quarkslab сообщила вендору об ошибке 2 июня 2026 года, на следующий день компания подтвердила получение отчёта. Шестого августа Cato Networks заявила, что исправление уже готово внутри и выйдет в конце месяца, и попросила отложить публикацию. Идентификатор CVE-2026-10739 уязвимости присвоили 30 сентября, тогда же вендор выпустил предупреждение для клиентов. Технический разбор появился 1 октября.

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

Ссылки

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