Корпоративные Windows-сети горят: уязвимость в Quest дарит права SYSTEM каждому встречному

Корпоративные Windows-сети горят: уязвимость в Quest дарит права SYSTEM каждому встречному

Администраторы в панике — CVE-2025-67813 превратил их домены в анархию.

image

В корпоративном продукте Quest KACE Desktop Authority, который используют для централизованного управления рабочими станциями Windows, обнаружили уязвимость с возможностью удаленного выполнения кода. Решение устанавливает на каждый управляемый компьютер агентскую службу. Она работает от имени учетной записи SYSTEM и выполняет привилегированные операции по командам сервера. Именно в этом компоненте исследователь нашел небезопасный механизм межпроцессного взаимодействия.

Во время анализа ПО для управления конечными точками специалист обратил внимание на именованный канал Windows с названием ScriptLogic_Server_NamedPipe_9300. Бренд ScriptLogic использовался разработчиком до покупки компанией Quest. Канал обслуживается службой с максимальными правами SYSTEM и при этом допускает подключение удаленных аутентифицированных пользователей домена. Такой набор прав доступа сразу создает риск, поскольку именованные каналы в Windows могут быть доступны по сети через SMB.

Серверная часть Desktop Authority создает канал по пути \\.\pipe\ScriptLogic_Server_NamedPipe_9300. Клиентский агент на рабочих станциях использует парный канал \\.\pipe\ScriptLogic_Client_NamedPipe_9300. Через него сервер связывается с агентами и отправляет задания. Если разрешения настроены слишком широко, к такому каналу может подключиться любой пользователь домена с действительной учетной записью.

Обмен данными внутри канала построен на собственном IPC протоколе поверх сериализации Microsoft Foundation Classes CArchive. Формат представляет собой бинарный поток с префиксами длины и поддержкой типов COM VARIANT. После реверс анализа исследователь восстановил структуру сообщений. В нее входят поля с COM ProgID для создания объекта, именем вызываемого метода, селектором операции RpcName, командой для запуска, идентификатором процесса для внедрения DLL и дополнительными параметрами. Значение RpcName определяет, какое именно действие выполнит служба.

Разбор показал, что протокол поддерживает несколько опасных операций. Команда AdminExec позволяет запустить произвольный процесс с правами локального администратора. Переданные параметры Command и CommandArgument напрямую уходят в механизм создания процесса. Для получения выполнения кода достаточно подключиться к каналу и отправить сообщение с нужной командой.

Операция DllInjection внедряет указанную DLL в выбранный процесс. Путь к библиотеке может быть задан в формате UNC, то есть вредоносный файл можно разместить на сетевом SMB ресурсе и заставить службу под учетной записью SYSTEM загрузить его в адресное пространство любого процесса на целевой машине. Если идентификатор процесса неизвестен, его можно подобрать перебором диапазона PID.

Метод Credentials раскрывает учетные данные сервисной учетной записи Desktop Authority в открытом виде. Продукт использует схему временного повышения привилегий. Для административных действий берется обычный доменный пользователь, его на короткое время добавляют в локальную группу Administrators, создают токен доступа, затем удаляют из группы. Сам токен при этом сохраняет расширенные права. Вызов Credentials возвращает имя и пароль этой учетной записи без шифрования. Риск усиливается тем, что одна и та же сервисная учетная запись часто применяется на множестве узлов, что упрощает боковое перемещение по сети и повторное использование пароля против других ресурсов домена.

Функция ImpersonateAdmin работает с подменой токена. Если передать дескриптор текущего потока, служба выполнит имперсонацию административного токена и применит его к вызывающей стороне. Операция InvokeCOM дает универсальный способ создавать COM объекты и вызывать их методы в контексте повышенных привилегий. Служба предоставляет набор внутренних классов, среди них CProcess для управления процессами, CRegistry для работы с реестром, CFileSystem для файловых операций, CUserTool для управления пользователями, CNet для сетевых задач, CSecurityEditor для изменения дескрипторов безопасности, CPowerManagement для управления состояниями питания и CEventLog для доступа к журналам событий. Все методы выполняются с административными правами.

Формат сериализации полностью повторяет поведение MFC CArchive. Строки кодируются так же, как CString, с переменной длиной и поддержкой ANSI и Unicode. Маркер 0xfffe переключает поток в режим Unicode. Размер строки задается переменным префиксом длины, один байт для коротких значений и расширенный формат для длинных. Типы VARIANT записываются с 16 битным идентификатором типа, например VT_BSTR, VT_I4 или VT_BOOL, после чего следует соответствующее значение. Такой формат типичен для MFC приложений с COM объектами.

Практическая эксплуатация не требует сложных условий. С любой машины, включенной в домен, можно подключиться к именованному каналу удаленного хоста по SMB и отправить специально сформированное сообщение. Для упрощения проверки был создан инструмент SLAgentTool. Он поддерживает операции AdminExec, Credentials, InvokeCOM и COMExec, который выступает сокращенной формой вызова CProcess.Exec. Пример запуска команды выглядит так: подключение к удаленному узлу и выполнение cmd.exe с нужными аргументами. Второй вариант использует режим внедрения DLL с указанием сетевого пути к библиотеке и PID процесса.

Проблеме присвоен идентификатор CVE-2025-67813. Quest выпустила бюллетень безопасности и статью базы знаний по небезопасным разрешениям именованного канала. Вендор рекомендует установить исправления. Если обновление пока невозможно, предлагается закрыть входящие подключения SMB на TCP 445 к узлам с агентом через правила межсетевого экрана, изолировать управляющую инфраструктуру от пользовательских сегментов, отключить службу агента там, где она не нужна, и отслеживать подозрительные подключения к каналам ScriptLogic.

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