Перейти к содержимому
Максиметер

Zero-click RCE в Steam между ПК одного аккаунта и четыре LPE до SYSTEM

Zero-click RCE в Steam между ПК одного аккаунта и четыре LPE до SYSTEM Atredis Partners разобрали клиент Steam для Windows: два переполнения стека в синхронизации между клиентами и четыре повышения привилегий через службу steamservice.exe. Удаленный баг довели до выполнения кода без действий жертвы. На видео атакующий в Hyper-V с Windows 10, жертва на актуальной Windows 11. PoC и слайды с BSides PDX 2026 на GitHub. RCE Предусловие: атакующий управляет клиентом Steam, вошедшим в тот же аккаунт. Экземпляры одного аккаунта обмениваются пакетами SteamToSteam через Connection Manager Valve без сопряжения Remote Play. Исследователи внедряются в свой steam.exe и шлют пакеты штатным транспортом клиента. > EMsg 9526 (DownloadScheduleChanged): apps_scheduled копируется в запись на 152 байта без проверки длины. Больше 200 элементов затирают адрес возврата. > EMsg 9502 (AppStatus): под stage_progress выделено 7 записей по 24 байта, лишние записи дают контроль над RIP. ASLR обходит третий баг в том же 9526, но при отправке: клиент всегда кладет в сообщение 32 DWORD из неинициализированного стека, и среди них указатели steamclient64. Чтобы получить утечку, достаточно прислать свой 9526, клиенты ответят своим. Дальше ROP: хэндл профилировщика VProf на стеке зануляют, чтобы эпилог пропустил CVProfile_ExitScope, вызывают CreateProcessA и завершают поток через ExitThread, Steam продолжает работать. Zero-click относится к принимающей стороне, без доступа к аккаунту атаки нет. Зато угнанный Steam-аккаунт дает код на каждом ПК, где он залогинен, включая рабочий ноутбук с личным Steam. LPE IPC службы идет через Global\SteamClientService_SharedMemFile, DACL пускают процесс с любым уровнем целостности. В шести интерфейсах около 90 обработчиков: 1. IClientInstallUtils. Подписанный VDF от BioShock Infinite вносит бинарники в allowlist по полному пути, где %INSTALLDIR% задает вызывающий. Бинарник не проверяется, allowlist живет до перезапуска службы. Кладем cmd.exe под именем из allowlist, шлем свой неподписанный VDF, команда выполняется от SYSTEM. 2. IClientModuleManager::CallFunctionAsync с битом 3 в flags пишет DLL в legacycompat каталога Steam и запускает оттуда steamservice.exe /runfunc от SYSTEM. Каталог доступен пользователю на запись. 3. secure_desktop_capture.exe (Remote Play) работает от SYSTEM на защищенном рабочем столе. Его буфер ввода пользователь может писать, шифрование выключается флагом в самом слоте. После одного согласия InputEnabled действует 90 дней, и любой процесс сессии шлет VK_Y в окно UAC. 4. InstallVrLinkDongleDriver (Steam Frame) проверяет подпись каталога, но не сверяет .inf с ожидаемым драйвером, плюс TOCTOU до pnputil /add-driver. Итог: BYOVD. Два LPE оказались дублями, третий раньше сообщил другой исследователь. Чего нет CVE, версий с исправлением и статуса по каждому багу. Atredis пишут, что находки «либо исправлены, либо вышли за срок раскрытия». CyberInsider не получил ответа Valve. Мое уточнение к пункту 3: стандартному пользователю UAC показывает запрос пароля, Y его не проходит. Атака рассчитана на запрос согласия, то есть на учетку администратора. Что проверить > Обновить Steam, понимая, что фиксы не привязаны к версиям. > В Steam Guard просмотреть авторизованные устройства, при сомнениях деавторизовать остальные. > HKLM\Software\Valve\SteamSecureDesktop\InputEnabled = 1 значит, что ввод на защищенный рабочий стол открыт. > В корпоративной сети Steam приносит службу SYSTEM с IPC для любого процесса. Где он не нужен, удалить. Где нужен, ловить дочерние процессы steamservice.exe из пользовательских путей, legacycompat\steamservice.exe и pnputil /add-driver от службы Steam.  @poxek |  @poxek_ai |  MAX |  merch.shop

10 просмотров

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

726 подписчиков · IT и технологии

Другие публикации канала

Популярные публикации канала

Ещё по теме «IT и технологии»

Читать дальше

Два раза в неделю свежие посты этого канала — на почту и в личную ленту. Без повторного поиска канала вручную.