
Vulnerabilità di escalation dei privilegi locali nel servizio client Steam
Questa è la versione a script singolo. Il PoC originale compilato in C++ si trova sul branch legacy. Grazie a John Hammond per il suggerimento, iscriviti al suo canale!

Video del PoC: YouTube
Analisi di John Hammond: YouTube
Un saluto a @MSNIGHTMARE2000 per l'ispirazione - per favore, dategli un lavoro e scrivetegli una mail!
Un ringraziamento a Tookie, Hazetick, belogen e bet3rd per essere i migliori amici di sempre.
Sto ancora aspettando la nostra sessione di gioco lusilly •`_´•
BrokenPipe dimostra un'escalation di privilegi locale da un account Windows standard a NT AUTHORITY\SYSTEM tramite il servizio client di Steam. La proof avvia un prompt dei comandi SYSTEM senza richiedere credenziali di amministratore né mostrare un prompt UAC.
NT AUTHORITY\SYSTEM.whoami /user ha restituito il SID del Local System, S-1-5-18.Il servizio client di Steam (steamservice.exe), che viene sempre eseguito come SYSTEM, accetta una radice di installazione controllata dal chiamante che non è coperta dalla firma di un VDF di script di installazione autentico firmato da Valve. BrokenPipe sfrutta questa lacuna nella copertura della firma per far eseguire al servizio privilegiato il launcher incluso da un percorso rilocato come SYSTEM. Non falsifica, modifica né aggira la firma del 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
La proof è stata validata rispetto alla versione corrente di Steam 10.96.30.42 sulle versioni più recenti di Windows 10 e Windows 11 x64.
Nessuna fase di build. BrokenPipe è un singolo script PowerShell autonomo. Il VDF autentico firmato da Valve è incorporato come base64 e il client IPC dello Steam Client Service è un tipo C# inline, quindi non ci sono binari esterni da compilare o distribuire.
powershell.exe -NoProfile -ExecutionPolicy Bypass -File .\BrokenPipe-PowerShell.ps1
Per impostazione predefinita lo script copia C:\Windows\System32\cmd.exe e fa in modo che Steam Client Service lo avvii come SYSTEM. Il fatto che il launcher.exe ricollocato venga eseguito come NT AUTHORITY\SYSTEM è la prova (confermalo in Task Manager o Process Explorer). Se Steam non è già in esecuzione, lo script lo avvia prima in modo silenzioso.
Puntalo sul tuo payload con i parametri:
.\BrokenPipe-PowerShell.ps1 -PayloadPath "C:\path\to\payload.exe" -PayloadArguments "your args"
BrokenPipe\
assets\
brokenpipe-system-shell.png
BrokenPipe-PowerShell.ps1
LICENSE
README.md
È tutto in BrokenPipe-PowerShell.ps1: stabilisce l'IPC a memoria condivisa verso lo Steam Client Service, inserisce nella whitelist il VDF firmato da Valve incorporato rispetto a una root di installazione controllata dal chiamante, quindi esegue il launcher rilocato come SYSTEM.
Cos'è questo?
Un'Escalation di Privilegi Locale da Utente Standard -> SYSTEM.
Come funziona?
È tutto in BrokenPipe-PowerShell.ps1, un solo file, leggilo dall'inizio alla fine.
Non è inutile?
Per te, forse, per altri, probabilmente no.
Cosa c'è di così grave?
Stai ottenendo privilegi SYSTEM, che è un livello superiore ad Administrator (quello che clicchi con il tasto destro e selezioni) e un livello inferiore a TRUSTEDINSTALLER senza essere effettivamente un amministratore in primo luogo. Se non lo capisci, cercalo su Google (o chiedi al tuo LLM di quartiere preferito come Grok, ChatGPT o Siri lol).
Perché?
Perché VALVE lo sa già da marzo, non l'hanno corretto e semplicemente perché non mi interessa di Steam o di qualsiasi gioco VALVE, soprattutto quando CS2 è pieno di cheater ed exploiter. Dovrebbero correggerlo e dare un'occhiata a quella segnalazione vecchia di 5 mesi.
Qualche stupida domanda sull'installazione da Admin Standard o qualunque cosa che qualcuno mi ha fatto perdere qualche neurone...
Persino il tuo antivirus necessita dei diritti di amministratore quando lo installi, installare Steam ovviamente richiede i diritti di amministratore alla prima installazione. Dopo di che esegue semplicemente il servizio come SYSTEM anche per un utente standard. Non chiederlo a me, chiedilo a VALVE.
La versione originale era un launcher C++ compilato (BrokenPipe.exe) che estraeva un laboratorio interattivo incorporato, inclusi un broker che gestiva una console SYSTEM completamente interattiva. Quella versione vive sul branch legacy. Questo branch è la stessa vulnerabilità distillata in un singolo script PowerShell senza fase di build e senza binari incorporati.
Questo progetto è fornito per ricerca di sicurezza autorizzata e validazione difensiva. Testa solo su sistemi di tua proprietà o per i quali hai esplicita autorizzazione alla valutazione.