KillaBoi/BrokenPipe
BrokenPipe is a PowerShell PoC that escalates a standard Windows user to NT AUTHORITY\SYSTEM by abusing the Steam Client Service (steamservice.exe). It connects to the service's shared-memory IPC, whitelists a genuine Valve-signed install-script VDF against a caller-controlled installation root (IClientInstallUtils::AddInstallScriptToWhiteList), then triggers RunInstallScript so the SYSTEM service launches a relocated executable (by default cmd.exe) without any UAC prompt. The flaw was reported to Valve in March and remained unpatched as of the write-up, validated on Steam 10.96.30.42 on Windows 10/11 x64.
What it is
BrokenPipe is a single-file PowerShell PoC (BrokenPipe-PowerShell.ps1) for the standard-user-to-SYSTEM privilege escalation in the Steam Client Service, previously described as C++ in a legacy branch. No build step: the Valve-signed VDF is embedded as base64 and the IPC client is inline C#.
How it works
flowchart TD
A[Standard user, no admin] --> B[IPC connect to Steam Client Service]
B --> C[AddInstallScriptToWhiteList:<br/>genuine signed VDF + attacker install root]
C --> D[RunInstallScript]
D --> E[Service launches relocated<br/>launcher.exe as SYSTEM]The service's signature check on the install-script VDF doesn't cover the caller-supplied installation root, so a genuine Valve-signed VDF can be whitelisted against an attacker-chosen path. The script does not forge or bypass the signature itself.
Preconditions / Affected
- Windows 10 or 11 x64, Windows PowerShell 5.1 (built-in)
- Steam installed and the Steam Client Service running; Steam can be idle at the unauthenticated login screen, no account login or game launch needed
- Confirmed on Steam 10.96.30.42
What to do
Run unelevated from the project directory:
powershell.exe -NoProfile -ExecutionPolicy Bypass -File .\BrokenPipe-PowerShell.ps1By default this relocates and launches C:\Windows\System32\cmd.exe as SYSTEM (verify in Task Manager/Process Explorer). To run a custom payload instead:
.\BrokenPipe-PowerShell.ps1 -PayloadPath "C:\path\to\payload.exe" -PayloadArguments "your args"If Steam isn't running, the script starts it silently first. The repo frames use for authorized research/defensive validation only, on systems you own or have permission to test.
Caveats
The page itself provides no patch, mitigation, or detection guidance beyond the repro steps — the author states Valve has not fixed it since the March report and offers no workaround for defenders.
Organisations named here
- IClientInstallUtils::AddInstallScriptToWhiteList
- IClientInstallUtils::RunInstallScript
- John Hammond
Technologies named here
- BrokenPipe
- Steam Client Service
- BrokenPipe.exe
- Windows 10 x64
- Windows PowerShell 5.1
- Windows 11 x64
- Task Manager
- Process Explorer
- PowerShell
- Windows
- Steam
Techniques named here
- Local Privilege Escalation via vulnerable SYSTEM service
- Abuse of signature-coverage gap
Related in Offensive Security