
Vulnerabilidade de Escalação de Privilégios Locais no Steam Client Service
Esta é a versão de script único. O PoC original compilado em C++ está na branch legacy. Agradecimentos a John Hammond pela sugestão, inscreva-se no canal dele!

Vídeo do PoC: YouTube
Análise do John Hammond: YouTube
Greetz para @MSNIGHTMARE2000 pela inspiração - por favor, deem um emprego a ele e mandem um e-mail!
Shoutout para Tookie, Hazetick, belogen e bet3rd por serem os melhores parceiros.
Ainda estou esperando nossa sessão de jogos lusilly •`_´•
O BrokenPipe demonstra uma escalada de privilégios local de uma conta Windows padrão para NT AUTHORITY\SYSTEM através do Serviço do Cliente Steam. A prova lança um prompt de comando SYSTEM sem solicitar credenciais de administrador ou exibir um prompt do UAC.
NT AUTHORITY\SYSTEM.whoami /user retornou o SID do Sistema Local, S-1-5-18.O Serviço do Cliente Steam (steamservice.exe), que sempre é executado como SYSTEM, aceita uma raiz de instalação controlada pelo chamador que não está coberta pela assinatura de um VDF de script de instalação genuíno assinado pela Valve. O BrokenPipe usa essa lacuna de cobertura de assinatura para fazer o serviço privilegiado executar o launcher incluído a partir de um caminho realocado como SYSTEM. Ele não forja, modifica ou contorna a assinatura do VDF.
Pipeline:
Establish IPC connection to Steam Client Service (no admin needed)
|
v
IClientInstallUtils::AddInstallScriptToWhiteList
|
| genuine Valve-signed VDF
| caller-controlled installation root <-- flaw is 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
|
v
the relocated launcher.exe now runs as NT AUTHORITY\SYSTEM
A prova foi validada contra a versão atual do Steam 10.96.30.42 nas versões mais recentes do Windows 10 e Windows 11 x64.
Sem etapa de build. O BrokenPipe é um único script PowerShell autocontido. O VDF legítimo assinado pela Valve está embutido como base64 e o cliente IPC do Steam Client Service é um tipo C# inline, portanto não há binários externos para compilar ou distribuir.
powershell.exe -NoProfile -ExecutionPolicy Bypass -File .\BrokenPipe-PowerShell.ps1
Por padrão, o script copia C:\Windows\System32\cmd.exe e faz com que o Steam Client Service o inicie como SYSTEM. O fato de o launcher.exe realocado ser executado como NT AUTHORITY\SYSTEM é a prova (confirme no Gerenciador de Tarefas ou no Process Explorer). Se o Steam ainda não estiver em execução, o script o inicia silenciosamente primeiro.
Aponte-o para o seu próprio payload com parâmetros:
.\BrokenPipe-PowerShell.ps1 -PayloadPath "C:\path\to\payload.exe" -PayloadArguments "your args"
BrokenPipe\
assets\
brokenpipe-system-shell.png
BrokenPipe-PowerShell.ps1
LICENSE
README.md
Tudo está em BrokenPipe-PowerShell.ps1: ele estabelece a IPC de memória compartilhada com o Steam Client Service, coloca o VDF embutido assinado pela Valve na lista de permissões em relação a uma raiz de instalação controlada pelo chamador e, em seguida, executa o launcher realocado como SYSTEM.
O que é isto?
Uma Escalação de Privilégios Local de Usuário Padrão -> SYSTEM.
Como funciona?
Está tudo em BrokenPipe-PowerShell.ps1, um único arquivo, leia de cima a baixo.
Não é inútil?
Para você, talvez, para outros, provavelmente não.
O que há de tão ruim nisso?
Você está obtendo privilégios SYSTEM, que é um nível acima de Administrador (aquele em que você clica com o botão direito e seleciona) e um nível abaixo de TRUSTEDINSTALLER sem na verdade ser um administrador em primeiro lugar. Se você não entende isso, pesquise no Google (ou pergunte ao seu LLM amigável de estimação, como Grok, ChatGPT ou Siri, rsrs).
Por quê?
Porque a VALVE já sabe disso desde março, eles não corrigiram e simplesmente porque eu não me importo com o Steam ou qualquer jogo da VALVE, especialmente quando o CS2 está repleto de trapaceiros e exploradores. Eles deveriam corrigir isso e investigar esse relatório de 5 meses atrás.
Alguma pergunta idiota sobre Instalação Padrão de Administrador ou algo do tipo que alguém fez e que me causou uma leve perda de neurônios...
Até o seu antivírus precisa de direitos de administrador quando você o está instalando; instalar o Steam, é claro, exige direitos de administrador na primeira instalação. Depois disso, ele simplesmente executa o serviço como SYSTEM até mesmo para um usuário padrão. Não me pergunte, pergunte à VALVE.
O lançamento original era um launcher em C++ compilado (BrokenPipe.exe) que desempacotava um laboratório interativo embutido, incluindo um broker que organizava um console SYSTEM totalmente interativo. Essa versão vive no branch legacy. Este branch é a mesma vulnerabilidade destilada em um único script PowerShell, sem etapa de build e sem binários embutidos.
Este projeto é fornecido para pesquisa de segurança autorizada e validação defensiva. Teste apenas em sistemas que você possui ou para os quais tem permissão explícita de avaliação.