
Vulnerabilidad de escalada de privilegios locales en Steam Client Service
Esta es la versión de un solo script. El PoC original compilado en C++ está en la rama legacy. Gracias a John Hammond por la sugerencia, ¡suscríbete a él!

Vídeo del PoC: YouTube
Análisis de John Hammond: YouTube
Saludos a @MSNIGHTMARE2000 por la inspiración - ¡por favor, dadle un trabajo y escribidle un correo!
Un saludo a Tookie, Hazetick, belogen y bet3rd por ser los mejores colegas.
Sigo esperando nuestra sesión de juego lusilly •`_´•
BrokenPipe demuestra una escalada de privilegios local desde una cuenta estándar de Windows hasta NT AUTHORITY\SYSTEM a través del Servicio de Cliente de Steam. La prueba lanza un símbolo del sistema de SYSTEM sin solicitar credenciales de administrador ni mostrar un aviso de UAC.
NT AUTHORITY\SYSTEM.whoami /user devolvió el SID de Local System, S-1-5-18.El Servicio de Cliente de Steam (steamservice.exe), que siempre se ejecuta como SYSTEM, acepta una raíz de instalación controlada por el llamador que no está cubierta por la firma de un VDF de script de instalación genuino firmado por Valve. BrokenPipe aprovecha esta laguna en la cobertura de la firma para hacer que el servicio privilegiado ejecute el lanzador incluido desde una ruta reubicada como SYSTEM. No falsifica, modifica ni elude la firma del VDF.
Flujo de ejecución:
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
La prueba se validó contra la versión actual de Steam 10.96.30.42 en las últimas versiones de Windows 10 y Windows 11 x64.
Sin paso de compilación. BrokenPipe es un único script de PowerShell autocontenido. El VDF auténtico firmado por Valve está incrustado como base64 y el cliente IPC del Servicio de Cliente de Steam es un tipo C# en línea, por lo que no hay binarios externos que compilar o distribuir.
powershell.exe -NoProfile -ExecutionPolicy Bypass -File .\BrokenPipe-PowerShell.ps1
Por defecto, el script copia C:\Windows\System32\cmd.exe y hace que el Steam Client Service lo ejecute como SYSTEM. Que el launcher.exe reubicado se ejecute como NT AUTHORITY\SYSTEM es la prueba (confírmalo en el Administrador de tareas o en Process Explorer). Si Steam no está en ejecución, el script lo inicia de forma silenciosa primero.
Apúntalo a tu propia carga útil con 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
Todo está en BrokenPipe-PowerShell.ps1: establece la IPC de memoria compartida con el Steam Client Service, incluye en la lista blanca el VDF firmado por Valve embebido contra una raíz de instalación controlada por el llamador, y luego ejecuta el lanzador reubicado como SYSTEM.
¿Qué es esto?
Una escalada de privilegios local de Usuario Estándar -> SYSTEM.
¿Cómo funciona?
Está todo en BrokenPipe-PowerShell.ps1, un solo archivo, léelo de principio a fin.
¿No es inútil?
Para ti, quizás, para otros, probablemente no.
¿Qué tiene de malo?
Estás obteniendo privilegios SYSTEM, es un nivel superior a Administrador (lo que haces clic derecho y seleccionas) y un nivel inferior a TRUSTEDINSTALLER sin ser realmente administrador en primer lugar. Si no entiendes esto, búscalo en Google (o pregúntale a tu LLM amigable del vecindario como Grok, ChatGPT o Siri jaja).
¿Por qué?
Porque VALVE ya lo sabe desde marzo, no lo han arreglado y simplemente porque no me importa Steam ni ningún juego de VALVE, especialmente cuando CS2 está plagado de tramposos y explotadores. Deberían arreglarlo e investigar ese informe de hace 5 meses.
Alguna pregunta estúpida sobre la instalación estándar de administrador o lo que sea que alguien hizo que me causó una ligera pérdida de neuronas...
Incluso tu antivirus necesita derechos de administrador cuando lo instalas, instalar Steam por supuesto requiere derechos de administrador en la primera instalación. Después de eso, simplemente ejecuta el servicio como SYSTEM incluso para un usuario estándar. No me preguntes a mí, pregúntale a VALVE.
La versión original era un lanzador compilado en C++ (BrokenPipe.exe) que desempaquetaba un laboratorio interactivo embebido, incluyendo un broker que organizaba una consola SYSTEM totalmente interactiva. Esa versión vive en la rama legacy. Esta rama es la misma vulnerabilidad destilada en un único script de PowerShell sin paso de compilación y sin binarios embebidos.
Este proyecto se proporciona para investigación de seguridad autorizada y validación defensiva. Prueba solo en sistemas que poseas o tengas permiso explícito de evaluar.