
Vulnérabilité d’élévation de privilèges locaux dans Steam Client Service
Ceci est la version mono-script. Le PoC C++ compilé original se trouve sur la branche legacy. Merci à John Hammond pour la suggestion, abonnez-vous à lui !

Vidéo du PoC : YouTube
Analyse de John Hammond : YouTube
Salutations à @MSNIGHTMARE2000 pour l'inspiration - donnez-lui un emploi et envoyez-lui un e-mail !
Coucou à Tookie, Hazetick, belogen et bet3rd pour être les meilleurs potes.
J'attends toujours notre session de jeu lusilly •`_´•
BrokenPipe démontre une élévation de privilèges locale depuis un compte Windows standard vers NT AUTHORITY\SYSTEM via le service client Steam. La preuve de concept lance une invite de commandes SYSTEM sans demander d'identifiants administrateur ni afficher d'invite UAC.
NT AUTHORITY\SYSTEM.whoami /user a renvoyé le SID Local System, S-1-5-18.Le service client Steam (steamservice.exe), qui s'exécute toujours en tant que SYSTEM, accepte une racine d'installation contrôlée par l'appelant qui n'est pas couverte par la signature d'un script d'installation VDF authentique signé par Valve. BrokenPipe exploite cette lacune de couverture de signature pour amener le service privilégié à exécuter le lanceur inclus depuis un chemin déplacé, en tant que SYSTEM. Il ne falsifie, ne modifie ni ne contourne la signature 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 preuve a été validée contre la version actuelle de Steam 10.96.30.42 sur les dernières versions de Windows 10 et Windows 11 x64.
Aucune étape de compilation. BrokenPipe est un script PowerShell unique et autonome. Le VDF authentique signé par Valve est intégré en base64 et le client IPC du service client Steam est un type C# inline, il n'y a donc aucun binaire externe à compiler ou à livrer.
powershell.exe -NoProfile -ExecutionPolicy Bypass -File .\BrokenPipe-PowerShell.ps1
Par défaut, le script copie C:\Windows\System32\cmd.exe et fait en sorte que le Steam Client Service le lance en tant que SYSTEM. Le fait que le launcher.exe relocalisé s'exécute réellement en tant que NT AUTHORITY\SYSTEM en est la preuve (confirmez-le dans le Gestionnaire des tâches ou Process Explorer). Si Steam n'est pas déjà en cours d'exécution, le script le démarre silencieusement au préalable.
Pointez-le vers votre propre charge utile avec des paramètres :
.\BrokenPipe-PowerShell.ps1 -PayloadPath "C:\path\to\payload.exe" -PayloadArguments "your args"
BrokenPipe\
assets\
brokenpipe-system-shell.png
BrokenPipe-PowerShell.ps1
LICENSE
README.md
Tout se trouve dans BrokenPipe-PowerShell.ps1 : il établit l'IPC par mémoire partagée avec le Steam Client Service, ajoute le VDF embarqué signé par Valve à la liste blanche par rapport à une racine d'installation contrôlée par l'appelant, puis exécute le lanceur relocalisé en tant que SYSTEM.
Qu'est-ce que c'est ?
Une élévation de privilèges locale d'utilisateur standard vers SYSTEM.
Comment ça fonctionne ?
Tout est dans BrokenPipe-PowerShell.ps1, un seul fichier, lisez-le du début à la fin.
N'est-ce pas inutile ?
Pour vous, peut-être, pour d'autres, probablement pas.
Qu'y a-t-il de si grave ?
Vous obtenez les privilèges SYSTEM, c'est un niveau supérieur à Administrateur (ce sur quoi vous faites un clic droit et sélectionnez) et un niveau inférieur à TRUSTEDINSTALLER sans être réellement administrateur au départ. Si vous ne comprenez pas cela, cherchez sur Google (ou demandez à votre LLM de quartier préféré comme Grok, ChatGPT ou Siri mdr).
Pourquoi ?
Parce que VALVE est déjà au courant depuis mars, ils ne l'ont pas corrigé et simplement parce que je me fiche de Steam ou de n'importe quel jeu VALVE, surtout quand CS2 est infesté de tricheurs et d'exploiteurs. Ils devraient le corriger et se pencher sur ce rapport vieux de 5 mois.
Une question stupide sur l'installation en tant qu'administrateur standard ou je ne sais quoi que quelqu'un a posée et qui m'a fait perdre quelques neurones...
Même votre antivirus a besoin de droits administrateur lors de son installation, installer Steam nécessite bien sûr des droits administrateur lors de la première installation. Ensuite, il exécute simplement le service en tant que SYSTEM même pour un utilisateur standard. Ne me demandez pas, demandez à VALVE.
La version originale était un lanceur C++ compilé (BrokenPipe.exe) qui décompressait un laboratoire interactif embarqué, incluant un broker qui orchestrait une console SYSTEM entièrement interactive. Cette version vit sur la branche legacy. Cette branche est la même vulnérabilité distillée en un seul script PowerShell, sans étape de compilation ni binaires embarqués.
Ce projet est fourni à des fins de recherche en sécurité autorisée et de validation défensive. Testez uniquement sur des systèmes que vous possédez ou pour lesquels vous disposez d'une autorisation explicite d'évaluation.