Исследователь опубликовал на GitHub демонстрационный эксплойт BrokenPipe, который даёт обычному пользователю Windows без прав администратора полный контроль над машиной через службу Steam Client Service. Атака не требует ни подделки цифровой подписи, ни обхода контроля учётных записей, ни входа в аккаунт Steam. Проверка проводилась на клиенте Steam версии 10.96.30.42 в полностью обновлённых 64-битных сборках Windows 10 и Windows 11.
Детали уязвимости
Фоновая служба steamservice.exe постоянно работает с привилегиями SYSTEM, поскольку отвечает за установку, обновление и восстановление игр. Именно этот уровень прав и привлекает атакующих. Обычная учётная запись Windows не может остановить защитные механизмы или добраться до системных файлов, а вот процесс, запущенный от имени NT AUTHORITY\SYSTEM, может почти всё. BrokenPipe как раз переносит непривилегированного пользователя через эту границу.
Слабое место кроется в обработке установочных сценариев в формате Valve Data Format, сокращённо VDF. Служба принимает такой сценарий через интерфейс межпроцессного взаимодействия и проверяет его подпись, поставленную Valve. Подпись подлинная, и её никто не трогает. Проблема в том, что она не привязана к папке установки, которую выбирает вызывающая сторона. Иными словами, пользователь может подсунуть службе легитимный подписанный сценарий, но указать при этом собственный каталог. Служба заносит файл из этого каталога в список доверенных, а затем запускает его с правами SYSTEM.
В опубликованной демонстрации скрипт копирует системный командный интерпретатор в отдельное место, после чего служба запускает эту копию от имени Local System. Автор подтверждает результат через идентификатор безопасности S-1-5-18 в окне командной строки. Ни запроса на повышение прав, ни окна контроля учётных записей при этом не появляется. Steam в момент запуска остаётся на экране входа, игра не открывается, аккаунт не нужен. Требуется лишь установленный клиент с работающей службой.
Сам эксплойт распространяется как один самодостаточный сценарий PowerShell, который входит в состав Windows. Компилировать ничего не нужно. Подписанный файл Valve встроен внутрь в виде текстового представления, а клиент межпроцессного взаимодействия написан на C# прямо в том же файле. Автор подчёркивает, что не меняет двоичные файлы Steam и не подделывает подписи. Ранее существовала версия на C++ с отдельным загрузчиком, теперь она перенесена в устаревшую ветку как исторический артефакт.
Для защитников важность находки определяется природой локального повышения привилегий. Само по себе такое повышение не даёт злоумышленнику начального доступа, зато превращает любую зацепку в полный контроль над конечной точкой. Зацепкой может стать вредоносная программа, открытый фишинговый документ или скомпрометированная учётная запись с минимальными правами. Получив SYSTEM, атакующий отключает средства защиты, читает защищённые системные ресурсы, закрепляется в системе, извлекает учётные данные и разворачивает программы-вымогатели. Права SYSTEM выше прав администратора, который пользователь получает через привычное меню, поэтому последствия трудно ограничить.
Автор проекта утверждает, что Valve знает об уязвимости с марта и за пять месяцев исправление не появилось. Официального подтверждения со стороны компании в исходных данных нет, и патча тоже нет. До его выхода администраторам стоит ограничить установку Steam на корпоративных машинах, где клиент не нужен для работы. Игровые платформы часто оказываются на рабочих ноутбуках сотрудников, а фоновая служба с правами SYSTEM превращает такую безобидную на первый взгляд программу в удобную точку входа.
Обнаружить эксплуатацию можно по косвенным признакам. Стоит отслеживать необычные дочерние процессы, порождённые steamservice.exe: командные интерпретаторы, движки сценариев и неподписанные исполняемые файлы, запущенные из нестандартных каталогов. Поводом для проверки служит и подозрительная активность межпроцессного взаимодействия со службой Steam, а также запуски PowerShell на машинах, где клиент установлен. Отдельный признак - копирование системных исполняемых файлов Windows во временные папки и каталоги, доступные на запись обычному пользователю.
Сама по себе эта уязвимость не связана с массовой атакой, и паниковать рано. Однако она хорошо показывает, как вспомогательные службы потребительского ПО годами живут с высокими привилегиями и широкими возможностями запуска сторонних файлов. Чем больше таких служб на корпоративной машине, тем шире поверхность для локального повышения прав. Исправление Valve пока не опубликовала, поэтому единственные доступные меры - сократить число систем с установленным Steam, следить за поведением его службы и поставить обновление сразу после выхода.
Ссылки