
Windows 11에서 TrustedInstaller의 CBS(Component Based Servicing) 세션 COM 개체와 정션(junction)을 악용하여 임의 파일 쓰기를 수행하는 LPE(로컬 권한 상승) 개념 증명(PoC)입니다.
게이트되지 않은 CBS COM 메서드를 통한 로컬 권한 상승 - Windows 11에서 medium-IL에서 SYSTEM으로의 임의 파일 쓰기
| 날짜 | 사건 |
|---|---|
| 2026년 7월 22일 | MSRC에 취약점 보고 |
| 2026년 9월 8일 | Microsoft가 Windows Update 서비스 스택 패치 (9월 패치 화요일) |
| 2026년 10월 29일 | MSRC 응답 (아래 참조) |
CBS(Component Based Servicing) 세션 COM 객체는 TrustedInstaller.exe 내부에서 SYSTEM으로 실행되며, 모든 대화형 사용자가 활성화할 수 있습니다. 세션 인터페이스의 거의 모든 메서드는 진행 전에 EnsureCallerIsAdministrator를 호출하지만, **CreateExternalTransformerExecutor**는 예외로, 권한 검사 없이 낮은 수준의 CSI 저장소 트랜스포머 실행기를 반환했습니다.
해당 실행기의 Initialize()는 가장(impersonation) 없이 SYSTEM으로 실행됩니다. medium 무결성 호출자는 NTFS 정션과 객체 관리자 심볼릭 링크를 악용하여 TrustedInstaller가 공격자가 제어하는 경로에 레지스트리 하이브 로그 파일을 생성하도록 유도할 수 있으며, 이들 중 어느 것도 생성하는 데 특별한 권한이 필요하지 않습니다.
CreateExternalTransformerExecutor 호출결과: 일반 사용자 계정에서 SYSTEM 권한으로 기존 디렉터리 어디에나 임의 파일 쓰기 가능. 관리자 권한도, 특별 권한도, 사용자 상호작용도 필요 없음.
MSRC는 내 보고서를 **낮은 심각도 / 심층 방어(Defense in Depth)**로 평가하며, "평가된 개념 증명이 권한 없는 위치에 대한 파일 쓰기를 입증하지 못했다"고 밝혔습니다. 사례는 즉각적인 서비스 임계값 미만으로 종결되었고 추가 CVE도 발급되지 않았으며, 포상금도 지급되지 않았고 MSRC는 이 문제를 더 이상 추적하지 않을 것이라고 했는데, 중복이라면 이해가 되는 부분입니다.
PoC는 medium-IL의 비관리자 프로세스에서 공격자가 제어하는 내용을 C:\Windows\System32에 기록하며, 테스트된 모든 미패치 빌드에서 안정적으로 동작했습니다.
MSRC의 평가에 대한 가장 그럴듯한 설명은 타이밍입니다. 보고서는 7월에 제출되었고, 서비스 스택 수정은 9월에 배포되었으며, MSRC의 응답은 10월에 도착했는데, 그 시점에는 최신 시스템에서 PoC가 E_ACCESSDENIED로 실패했을 것이기 때문입니다.
적어도 MSRC 특별 언급 페이지에 추가되기는 했습니다 :)
여기서 보고된 취약점은 CVE-2026-81963("Windows Update Stack Elevation of Privilege Vulnerability")에 해당하는 것으로 의심됩니다. 이 취약점은 언급된 업데이트에서 수정되었으며, 동일한 취약점 클래스(CWE-59 / CWE-284, CBS 서비스 스택의 링크 추적 + 부적절한 접근 제어)를 설명합니다. 해당 CVE는 Romain Deperne(Airbus Helicopters)와 Microsoft Threat Intelligence Center(MSTIC)에 공로가 돌아갔으며, 패치 이전에 실제 환경에서 활발히 악용된 것으로 확인되었습니다. 하지만: 제 보고서가 동일한 이슈를 다루고 있다는 공식 확인은 없습니다.
두 PoC 모두 일반 비관리자 사용자(중간 무결성)로 실행해야 하며, 동일한 기본 익스플로잇을 포함합니다. 관리자 권한으로 실행하면 이미 관리자 권한을 보유하고 있으므로 익스플로잇이 자명하게 성공하지만, 이는 전체 요점을 놓치는 것입니다.
PoC_Fun/UI가 포함된 전체 개념 증명입니다. 익스플로잇 기법을 대화형 인터페이스로 감싼 바이브코딩된 그래픽 하네스입니다. 데모와 지루한 터미널 전용 PoC를 싫어하는 모든 사람에게 적합합니다(MAKE POCS FUN AGAIN!)
제목과 배너에 사용된 고정폭 고딕 픽셀 아트 폰트는 제 의뢰로 nico_n_art가 제작했습니다.
빌드:
$ cd PoC_Fun
$ dotnet clean -c Release && dotnet publish -c Release
$ .\bin\Release\net8.0-windows\win-x64\publish\TrustedHive.exe
사용법: 릴리스 파일을 더블 클릭하면 UI가 안내하거나, "?"를 사용하여 도움말 메뉴를 열 수 있습니다.
PoC_Boring/익스플로잇을 위한 독립 실행형 C 파일입니다. UI가 없으며 ole32.lib와 advapi32.lib 외에는 의존성이 없습니다. MSVC(cl /O2 ...)로 빌드하고, 입력 파일과 출력 경로를 지정하면 작업을 수행합니다.
빌드:
$ cd PoC_Boring
$ cl /nologo /W3 /O2 TrustedHive_PoC.c ole32.lib advapi32.lib /link
$ .\TrustedHive_PoC.exe
사용법:
$ .\TrustedHive_BoringPoC.exe <input_file> <output_path> [/keep]
<input_file> : file whose bytes are written to the target
<output_path> : destination (its parent directory must exist),
e.g. C:\Windows\System32\poc.dll
/keep : keep the Hidden+System attributes the Configuration Manager
stamps on the created hive-log file (default: clear them)
EvaluateApplicability를 통한 dpx.dll 사이드로딩)
