
Уязвимость локального повышения привилегий в Steam Client Service

Видео PoC: ЗДЕСЬ
Небольшое видео от John Hammond ЗДЕСЬ
Привет @MSNIGHTMARE2000 за вдохновение — Пожалуйста, дайте ему работу и напишите ему!
Респект Tookie, Hazetick, belogen и bet3rd за то, что они лучшие кореша.
И ты всё ещё должна мне сессию в Overwatch или Starlight Princess lusilly, мяу :3
BrokenPipe демонстрирует локальное повышение привилегий со стандартной учётной записи Windows до
NT AUTHORITY\SYSTEM через службу Steam Client. Доказательство запускает интерактивную командную строку SYSTEM
без запроса учётных данных администратора и без отображения запроса UAC.
NT AUTHORITY\SYSTEM.whoami /user вернул SID Local System, S-1-5-18.Служба Steam Client (steamservice.exe), которая всегда работает как SYSTEM, принимает контролируемый вызывающей стороной корневой каталог установки, который не покрывается
подписью подлинного install-скрипта VDF, подписанного Valve. BrokenPipe использует этот пробел в покрытии подписи,
чтобы заставить привилегированную службу выполнить включённый лаунчер из перемещённого пути как SYSTEM. Он
не подделывает, не изменяет и не обходит подпись VDF.
Конвейер:
Establish IPC connection to Steam Client Service (No Admin Needed)
|
v
IClientInstallUtils::AddInstallScriptToWhiteList
|
| Genuine Valve-signed VDF
| Caller-controlled installation root <------ flaw exists here.
| Relocated launcher becomes whitelisted <---------ˡ
v
IClientInstallUtils::RunInstallScript
|
| Service processes the run VDF
| Whitelisted launcher is selected
v
Steam Client Service launches the executable as SYSTEM
|
| BrokenPipe receives an interactive
| NT AUTHORITY\SYSTEM command prompt
v
IClientInstallUtils::GetInstallScriptExitCode
|
| Optional polling or result collection
v
Cleanup and receipt generation
Доказательство было проверено на текущей версии Steam 10.96.30.42 на последних версиях Windows 10 и Windows 11 x64.
Требования:
Откройте PowerShell в каталоге проекта и выполните:
powershell.exe -NoProfile -ExecutionPolicy Bypass -File .\build.ps1
Готовый исполняемый файл записывается в:
x64\Release\BrokenPipe.exe
Скрипт сборки находит MSBuild, проверяет хеш встроенной полезной нагрузки, пересобирает конфигурацию x64 Release и выводит итоговый путь к исполняемому файлу и SHA-256.
Вы также можете открыть BrokenPipe.sln в Visual Studio, выбрать Release | x64 и выбрать
Build > Rebuild Solution.
BrokenPipe.exe обычным образом, без повышения прав.whoami или whoami /user или любой другой команды, которую хотите выполнить.exit или закройте командную строку SYSTEM по завершении.Аргументы командной строки или внешние файлы времени выполнения не требуются. ZIP-архив полезной нагрузки скомпилирован в
исполняемый файл. Доказательство не создаёт механизмов персистентности, запускает только канонический
C:\Windows\System32\cmd.exe и помещает дерево процессов с повышенными правами в задание Windows с завершением при закрытии.
JSON-квитанции записываются в C:\Users\Public\BrokenPipe.
Если вы хотите внести изменения в используемую полезную нагрузку, она находится в папке payloads с именем BrokenPipePayload.zip
BrokenPipe\
assets\
brokenpipe-system-shell.png
payload\
BrokenPipePayload.zip
BrokenPipe-Bootstrap.ps1
BrokenPipe.cpp
BrokenPipe.rc
BrokenPipe.sln
BrokenPipe.vcxproj
build.ps1
resource.h
README.md
Встроенная полезная нагрузка должна оставаться по пути payload\BrokenPipePayload.zip, если только её путь к ресурсу также не
обновлён в BrokenPipe.rc.
В: Что это
О: Локальное повышение привилегий из стандартного пользователя в SYSTEM
В: Как это работает?
О: Загляните в Payload\BrokenPipePayload.zip, распакуйте его и прочитайте код.
В: Разве это бесполезно?
О: Для вас, возможно, для других, вероятно, нет.
В: Что в этом такого плохого
О: Вы получаете привилегии SYSTEM, это уровень выше администратора (то, что вы выбираете правой кнопкой мыши) и уровень ниже TRUSTEDINSTALLER, при этом изначально не являясь администратором. Если вы этого не понимаете, погуглите (или спросите своего дружелюбного соседского LLM, такого как Grok, ChatGPT или Siri, лол)
В: Почему?
О: Потому что VALVE уже знает об этом с марта, они это не исправили, и просто потому что мне плевать на Steam или любые игры VALVE, особенно когда CS2 кишит читерами и эксплойтерами. Им следует это исправить и изучить тот отчёт пятимесячной давности.
В: Какой-то глупый вопрос про установку от стандартного администратора или что-то в этом роде, от которого у меня слегка убавилось мозговых клеток...
О: Даже вашему антивирусу нужны права администратора при установке, установка Steam, конечно, требует прав администратора при первой установке. После этого он просто запускает службу как SYSTEM даже для стандартного пользователя. Не спрашивайте меня, спросите VALVE.
Этот проект предоставлен для авторизованных исследований в области безопасности и защитной валидации. Тестируйте только на системах, которыми вы владеете или на которые у вас есть явное разрешение на оценку.