
스팀 클라이언트 서비스 로컬 권한 상승 취약점
이것은 단일 스크립트 버전입니다. 원본 컴파일된 C++ PoC는 legacy 브랜치에 있습니다. 제안해 주신 John Hammond에게 감사드리며, 그의 채널을 구독하세요!

PoC 영상: YouTube
John Hammond의 분석: YouTube
영감을 준 @MSNIGHTMARE2000 에게 인사를 - 그에게 일자리를 주고 이메일을 보내주세요!
최고의 친구인 Tookie, Hazetick, belogen, bet3rd 에게 감사를 표합니다.
나는 아직도 우리의 게임 세션을 기다리고 있어 lusilly •`_´•
BrokenPipe는 Steam 클라이언트 서비스를 통해 표준 Windows 계정에서 NT AUTHORITY\SYSTEM으로의 로컬 권한 상승을 시연합니다. 이 증명은 관리자 자격 증명을 요청하거나 UAC 프롬프트를 표시하지 않고 SYSTEM 명령 프롬프트를 실행합니다.
NT AUTHORITY\SYSTEM으로 실행되었습니다.whoami /user는 로컬 시스템 SID인 S-1-5-18을 반환했습니다.항상 SYSTEM으로 실행되는 Steam 클라이언트 서비스(steamservice.exe)는 호출자가 제어하는 설치 루트를 허용하는데, 이는 정품 Valve 서명 설치 스크립트 VDF의 서명 범위에 포함되지 않습니다. BrokenPipe는 이 서명 범위 격차를 이용하여 권한 있는 서비스가 재배치된 경로에서 포함된 런처를 SYSTEM으로 실행하도록 만듭니다. 이는 VDF 서명을 위조, 수정 또는 우회하지 않습니다.
파이프라인:
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
이 증명은 최신 버전의 Windows 10 및 Windows 11 x64에서 현재 버전의 Steam 10.96.30.42를 대상으로 검증되었습니다.
빌드 단계는 없습니다. BrokenPipe는 자체 포함된 단일 PowerShell 스크립트입니다. Valve가 서명한 정품 VDF가 base64로 임베드되어 있고, Steam Client Service IPC 클라이언트는 인라인 C# 타입이므로 컴파일하거나 배포할 외부 바이너리가 없습니다.
powershell.exe -NoProfile -ExecutionPolicy Bypass -File .\BrokenPipe-PowerShell.ps1
기본적으로 이 스크립트는 C:\Windows\System32\cmd.exe를 복사하고 Steam Client Service가 이를 SYSTEM 권한으로 실행하도록 합니다. 재배치된 launcher.exe가 NT AUTHORITY\SYSTEM으로 실행된다는 점이 바로 증거입니다(작업 관리자나 Process Explorer에서 확인하세요). Steam이 이미 실행 중이 아니라면, 스크립트가 먼저 조용히 Steam을 시작합니다.
매개변수를 사용하여 자신의 페이로드를 지정하세요:
.\BrokenPipe-PowerShell.ps1 -PayloadPath "C:\path\to\payload.exe" -PayloadArguments "your args"
BrokenPipe\
assets\
brokenpipe-system-shell.png
BrokenPipe-PowerShell.ps1
LICENSE
README.md
모든 것은 BrokenPipe-PowerShell.ps1에 들어 있습니다. 이 스크립트는 Steam Client Service에 대한 공유 메모리 IPC를 설정하고, 호출자가 제어하는 설치 루트에 대해 내장된 Valve 서명 VDF를 화이트리스트에 등록한 다음, 재배치된 런처를 SYSTEM 권한으로 실행합니다.
이게 뭔가요?
표준 사용자 -> SYSTEM 로컬 권한 상승입니다.
어떻게 작동하나요?
모두 BrokenPipe-PowerShell.ps1에 들어 있습니다. 파일 하나이니 처음부터 끝까지 읽어보세요.
쓸모없는 거 아닌가요?
당신에게는 그럴 수도 있겠지만, 다른 사람들에게는 아마 아닐 겁니다.
뭐가 그렇게 나쁜가요?
SYSTEM 권한을 얻게 되는데, 이는 Administrator(마우스 오른쪽 클릭 후 선택하는 것)보다 한 단계 높고 TRUSTEDINSTALLER보다 한 단계 낮은 등급이며, 실제로는 처음부터 관리자가 아니었던 상태에서 그렇게 되는 것입니다. 이해가 안 된다면 구글링하세요(또는 Grok, ChatGPT, Siri 같은 친근한 동네 LLM에게 물어보세요 ㅋㅋ).
왜인가요?
VALVE는 3월부터 이 문제를 이미 알고 있지만 고치지 않았고, 단지 제가 Steam이나 VALVE 게임에 관심이 없기 때문입니다. 특히 CS2가 치터와 익스플로이터로 가득한 상황에서는 더욱 그렇죠. 그들은 이 문제를 고치고 5개월 된 보고서를 조사해야 합니다.
누군가가 던진 약간의 뇌세포 손실을 초래한 어떤 멍청한 표준 관리자 설치 질문 같은 것...
당신의 안티바이러스조차 설치할 때 관리자 권한이 필요합니다. Steam 설치도 물론 첫 설치 시 관리자 권한이 필요합니다. 그 이후에는 표준 사용자에게도 서비스를 SYSTEM으로 실행할 뿐입니다. 저에게 묻지 말고 VALVE에게 물어보세요.
원래 릴리스는 컴파일된 C++ 런처(BrokenPipe.exe)로, 완전한 대화형 SYSTEM 콘솔을 마샬링하는 브로커를 포함한 내장 대화형 랩을 압축 해제했습니다. 그 버전은 legacy 브랜치에 있습니다. 이 브랜치는 동일한 취약점을 빌드 단계도 내장 바이너리도 없는 단일 PowerShell 스크립트로 정제한 것입니다.
이 프로젝트는 승인된 보안 연구 및 방어적 검증을 위해 제공됩니다. 소유한 시스템 또는 평가에 대한 명시적 허가를 받은 시스템에서만 테스트하세요.