
CVE-2026-58635에 대한 PoC: Windows 내레이터 점자 로컬 권한 상승
CVE-2026-58635에 대한 개념 증명으로, Windows 내레이터 점자(Narrator Braille)의 명령 주입 취약점입니다. 로컬 인증 사용자가 쓰기 가능한 BrlAPI 매개변수를 악용하여 권한이 있는 BRLTTY 서비스가 임의의 프로그램을 실행하도록 할 수 있습니다.
Microsoft는 이 문제를 중요(Important) 로 평가하며, CVSS 3.1 점수 7.8 (CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H) 및 CWE-77에 매핑합니다.
이 저장소는 격리된 연구소에서의 공인된 테스트만을 위한 것입니다. 프로덕션 시스템이나 귀하가 소유하거나 관리하지 않는 시스템에서 실행하지 마십시오.
PoC는 다음 경로를 실행합니다:
표준 사용자
-> 로컬에서 액세스 가능한 BrlAPI 서비스 시작
-> localhost:0에 auth=none으로 연결
-> 전역 BrlAPI 매개변수 29(문학 점자 테이블) 작성
-> BRLTTY가 실행 파일 경로를 외부 축약 테이블로 해석
-> BRLTTY가 제공된 프로그램을 LocalService로 실행
-> 선택적 SeImpersonate 토큰 단계
-> 대화형 SYSTEM 명령 프롬프트
CVE 관련 기본 동작은 LocalService로의 임의 실행에서 끝납니다. 테스트된 Windows 구성에서 해당 토큰에는 SeImpersonatePrivilege가 있으므로, 포함된 데모는 선택적으로 SigmaPotato를 사용하여 SYSTEM 토큰을 획득하고 활성 콘솔 세션에서 보이는 셸을 실행합니다.
BRLTTY 6.4.1은 BRLAPI_PARAM_LITERARY_BRAILLE_TABLE을 전역 및 쓰기 가능으로 노출합니다. 서버는 제공된 문자열을 축약 테이블 로더를 통해 전달합니다. Windows에서 확장자가 PATHEXT에 있는 경로는 외부 축약 프로그램으로 처리되어 BRLTTY의 호스트 명령 실행기를 통해 시작됩니다.
트리거는 C:\lab\bin\localservice_stage.exe와 같은 일반적인 Windows 경로를 이 BRLTTY/MinGW 경로 처리 분기에서 예상하는 슬래시 형식으로 정규화합니다. PoC에는 사용자 프로필, 드라이브 문자, Windows 디렉터리 또는 계정 이름이 컴파일되어 있지 않습니다.
테스트된 공격 표면이 존재하려면 선택적 Accessibility.Braille 기능이 설치되어 있어야 합니다. Microsoft CNA 기록은 여러 Windows 클라이언트 및 서버 브랜치가 2026년 7월 수정 버전 미만에서 영향을 받는다고 나열합니다. 일반적인 예는 다음과 같습니다:
빌드 번호만으로는 선별 신호일 뿐이며, 공급업체 권고 및 설치된 구성 요소 목록을 대체할 수 없습니다. 포함된 읽기 전용 검사기를 사용하십시오:
powershell -ExecutionPolicy Bypass -File .\scripts\Check-Vulnerability.ps1
다음을 보고합니다:
brlapi.dll 및 brltty.exe 존재 여부;검사기는 BrlAPI를 시작하거나, 매개변수 29를 쓰거나, 페이로드를 실행하지 않습니다.
.
├── bin/ 컴파일된 PoC 바이너리 및 SigmaPotato
├── scripts/
│ ├── Check-Vulnerability.ps1 읽기 전용 노출/빌드 검사
│ ├── Clear-Results.cmd 생성된 결과 파일 제거
│ ├── Get-SigmaPotato.ps1 업스트림 도우미 가져오기 및 해시 확인
│ ├── Prepare-Lab.ps1 선택적 기능 설치 및 실험실 ACL 설정
│ └── Run-PoC.cmd 표준 사용자 종단 간 데모
├── src/
│ ├── brlapi_trigger.cpp BrlAPI 클라이언트 및 매개변수 29 쓰기
│ ├── localservice_stage.cpp LocalService ID 증명 및 선택적 체인
│ ├── path_util.h 런타임 경로 도우미
│ └── system_shell_launcher.cpp
├── third_party/SigmaPotato/ 버전, 해시, 라이선스 및 저작권
├── Makefile
├── LICENSE
├── SHA256SUMS
└── NOTICE
원본 PoC는 C++17이며 MinGW-w64 x86-64 도구 체인으로 빌드됩니다.
Debian 또는 Ubuntu에서:
sudo apt install make g++-mingw-w64-x86-64
make
빌드는 다음을 생성합니다:
bin/brlapi_trigger.exe
bin/localservice_stage.exe
bin/system_shell_launcher.exe
종단 간 데모에서 사용된 정확한 SigmaPotato 버전을 얻으려면 Windows에서 다음을 실행하십시오:
powershell -ExecutionPolicy Bypass -File .\scripts\Get-SigmaPotato.ps1
다운로드 스크립트는 릴리스 v1.2.6을 고정하고 SHA-256을 확인합니다:
EC68A6BF7F104A815BD21E27E73A8DFB8AFCB282D4997BEBE9ECCD6C89259506
저장소 루트에서 상승된 PowerShell 프롬프트에서:
powershell -ExecutionPolicy Bypass -File .\scripts\Prepare-Lab.ps1
이 스크립트는 다음을 수행합니다:
Accessibility.Braille~~~~0.0.1.0이 없으면 설치합니다;bin\results 아래에 증거를 만들 수 있도록 합니다.기능이 준비되었지만 서비스가 아직 등록되지 않은 경우 재부팅하고 준비 스크립트를 한 번 더 실행하십시오.
로컬 Administrators 그룹의 구성원이 아닌 로컬 또는 도메인 계정으로 로그인합니다. 저장소는 사용자를 생성하거나 암호를 설정하지 않습니다.
보안 제품은 일반적으로 토큰 가장 개념 증명 도구를 감지합니다. 바이너리를 배치하거나 실행하기 전에 조직의 테스트 정책에 따라 격리된 실험실을 구성하십시오. 일반 워크스테이션에서 엔드포인트 보호를 약화시키지 마십시오.
상승되지 않은 명령 프롬프트에서:
scripts\Run-PoC.cmd
예상 출력에는 다음이 포함됩니다:
Connection: descriptor=<number> host=localhost:0 auth=none
Parameter 29 global write: 0
USER=LOCAL SERVICE
SID=S-1-5-19
선택적 두 번째 단계는 출력을 bin\results\escalation.log에 기록합니다. 성공 시 bin\results\system_shell_status.txt에 CREATED=1이 포함되고, CVE-2026-58635 SYSTEM SHELL이라는 제목의 새 창이 열립니다. 해당 창에서:
whoami
다음을 반환해야 합니다:
nt authority\system
생성된 모든 증거는 bin\results에 위치합니다:
생성된 결과는 다음으로 제거합니다:
scripts\Clear-Results.cmd
해당 2026년 7월 보안 업데이트 또는 이후 누적 업데이트를 설치하십시오. Windows 11 24H2 및 25H2의 경우 Microsoft는 KB5101650 (26100.8875 및 26200.8875)에서 수정 버전을 제공합니다. 점자 지원이 필요하지 않은 경우 선택적 기능을 제거하면 이 공격 표면도 제거됩니다:
Remove-WindowsCapability -Online -Name Accessibility.Braille~~~~0.0.1.0
수정 후 Check-Vulnerability.ps1을 다시 실행하고 시스템이 수정 버전을 충족하거나 구성 요소가 없는지 확인하십시오.
| 제품 브랜치 | 잠재적 영향 하한 | 알려진 수정 수준 |
|---|
| Windows 10 1809 / Server 2019 | 17763.9020 | 17763.9020 이상 |
| Windows 10 21H2 | 19044.7548 | 19044.7548 이상 |
| Windows 10 22H2 | 19045.7548 | 19045.7548 이상 |
| Windows Server 2022 | 20348.5386 | 20348.5386 이상 |
| Windows 11 24H2 | 26100.8875 | 26100.8875 이상 |
| Windows 11 25H2 | 26200.8875 | 26200.8875 이상 |
| Windows 11 26H1 | 28000.2525 | 28000.2525 이상 |
| 파일 | 목적 |
|---|
localservice_identity.txt | CVE로 실행된 스테이지의 사용자 이름, SID 및 PID |
localservice_whoami.txt | 전체 토큰 그룹 및 권한 |
escalation.log | 선택적 토큰 가장 도우미의 출력 |
escalation_status.txt | 도우미 프로세스 생성/오류/종료 상태 |
system_shell_status.txt | 활성 세션 셸 생성 결과 |