
PoC para CVE-2026-58635: Elevação de Privilégio Local no Narrador do Windows (Braille)
Prova de conceito para CVE-2026-58635, uma vulnerabilidade de injeção de comando no Braille do Narrador do Windows. Um usuário autenticado local pode abusar de um parâmetro BrlAPI gravável para fazer o serviço privilegiado BRLTTY executar um programa arbitrário.
A Microsoft classifica o problema como Importante com uma pontuação CVSS 3.1 de 7.8 (CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H) e o mapeia para CWE-77.
Este repositório destina-se apenas a testes autorizados em um laboratório isolado. Não o execute em sistemas de produção ou sistemas que você não possui ou administra.
O PoC executa o seguinte caminho:
standard user
-> starts the locally accessible BrlAPI service
-> connects to localhost:0 with auth=none
-> writes global BrlAPI parameter 29 (literary braille table)
-> BRLTTY interprets an executable path as an external contraction table
-> BRLTTY launches the supplied program as LocalService
-> optional SeImpersonate token stage
-> interactive SYSTEM command prompt
A primitiva específica do CVE termina na execução arbitrária como LocalService. Na configuração do Windows testada, esse token possui SeImpersonatePrivilege, então a demonstração incluída opcionalmente usa SigmaPotato para obter um token de SYSTEM e iniciar um shell visível na sessão ativa do console.
O BRLTTY 6.4.1 expõe BRLAPI_PARAM_LITERARY_BRAILLE_TABLE como global e gravável. O servidor passa a string fornecida através de seu carregador de tabela de contração. No Windows, um caminho cuja extensão está presente em PATHEXT é tratado como um programa de contração externo e iniciado através do lançador de comando host do BRLTTY.
O gatilho normaliza um caminho comum do Windows, como C:\lab\bin\localservice_stage.exe, para a forma de barra invertida esperada por este ramo de manipulação de caminho do BRLTTY/MinGW. Nenhum perfil de usuário, letra de unidade, diretório do Windows ou nome de conta é compilado no PoC.
A capacidade opcional Accessibility.Braille deve estar instalada para que a superfície de ataque testada exista. O registro CNA da Microsoft lista vários ramos de cliente e servidor do Windows como afetados abaixo de suas revisões corrigidas de julho de 2026. Exemplos comuns incluem:
Apenas os números de compilação são um sinal de triagem, não substituem o aviso do fornecedor e o inventário de componentes instalados. Use o verificador somente leitura incluído:
powershell -ExecutionPolicy Bypass -File .\scripts\Check-Vulnerability.ps1
Ele relata:
brlapi.dll e brltty.exe;O verificador não inicia o BrlAPI, escreve o parâmetro 29 ou executa um payload.
.
├── bin/ Compiled PoC binaries and SigmaPotato
├── scripts/
│ ├── Check-Vulnerability.ps1 Read-only exposure/build check
│ ├── Clear-Results.cmd Remove generated result files
│ ├── Get-SigmaPotato.ps1 Fetch and hash-check the upstream helper
│ ├── Prepare-Lab.ps1 Install the optional feature and set lab ACLs
│ └── Run-PoC.cmd Standard-user end-to-end demonstration
├── src/
│ ├── brlapi_trigger.cpp BrlAPI client and parameter-29 write
│ ├── localservice_stage.cpp LocalService identity proof and optional chain
│ ├── path_util.h Runtime path helpers
│ └── system_shell_launcher.cpp
├── third_party/SigmaPotato/ Version, hash, license, and attribution
├── Makefile
├── LICENSE
├── SHA256SUMS
└── NOTICE
O PoC original é C++17 e compila com o conjunto de ferramentas MinGW-w64 x86-64.
No Debian ou Ubuntu:
sudo apt install make g++-mingw-w64-x86-64
make
A compilação cria:
bin/brlapi_trigger.exe
bin/localservice_stage.exe
bin/system_shell_launcher.exe
Para obter a versão exata do SigmaPotato usada pela demonstração completa, execute isto no Windows:
powershell -ExecutionPolicy Bypass -File .\scripts\Get-SigmaPotato.ps1
O script de download fixa o lançamento v1.2.6 e verifica SHA-256:
EC68A6BF7F104A815BD21E27E73A8DFB8AFCB282D4997BEBE9ECCD6C89259506
Em um prompt do PowerShell elevado na raiz do repositório:
powershell -ExecutionPolicy Bypass -File .\scripts\Prepare-Lab.ps1
Este script:
Accessibility.Braille~~~~0.0.1.0 quando ausente;bin\results.Se a capacidade estiver preparada, mas o serviço ainda não estiver registrado, reinicie e execute o script de preparação mais uma vez.
Faça login com qualquer conta local ou de domínio que não seja membro do grupo Administradores local. O repositório não cria usuários nem define senhas.
Produtos de segurança geralmente detectam ferramentas de prova de conceito de impersonação de token. Configure o laboratório isolado de acordo com a política de teste da sua organização antes de colocar ou executar os binários. Não enfraqueça a proteção de endpoint em uma estação de trabalho normal.
Em um prompt de comando não elevado:
scripts\Run-PoC.cmd
A saída esperada inclui:
Connection: descriptor=<number> host=localhost:0 auth=none
Parameter 29 global write: 0
USER=LOCAL SERVICE
SID=S-1-5-19
O segundo estágio opcional registra sua saída em bin\results\escalation.log. Em caso de sucesso, bin\results\system_shell_status.txt contém CREATED=1, e uma nova janela intitulada CVE-2026-58635 SYSTEM SHELL abre. Nessa janela:
whoami
deve retornar:
nt authority\system
Toda evidência gerada é colocada em bin\results:
Remova os resultados gerados com:
scripts\Clear-Results.cmd
Instale a atualização de segurança aplicável de julho de 2026 ou uma atualização cumulativa posterior. Para Windows 11 24H2 e 25H2, a Microsoft fornece as revisões corrigidas em KB5101650 (26100.8875 e 26200.8875). Se o suporte a Braille não for necessário, remover a capacidade opcional também remove essa superfície de ataque:
Remove-WindowsCapability -Online -Name Accessibility.Braille~~~~0.0.1.0
Após a remediação, execute novamente Check-Vulnerability.ps1 e confirme que o sistema atende à revisão corrigida ou que o componente está ausente.
| Ramo do produto | Potencialmente afetado abaixo de | Nível de correção conhecido |
|---|
| Windows 10 1809 / Server 2019 | 17763.9020 | 17763.9020 or later |
| Windows 10 21H2 | 19044.7548 | 19044.7548 or later |
| Windows 10 22H2 | 19045.7548 | 19045.7548 or later |
| Windows Server 2022 | 20348.5386 | 20348.5386 or later |
| Windows 11 24H2 | 26100.8875 | 26100.8875 or later |
| Windows 11 25H2 | 26200.8875 | 26200.8875 or later |
| Windows 11 26H1 | 28000.2525 | 28000.2525 or later |
| Arquivo | Propósito |
|---|
localservice_identity.txt | Nome de usuário, SID e PID do stage lançado pelo CVE |
localservice_whoami.txt | Grupos e privilégios completos do token |
escalation.log | Saída do auxiliar opcional de impersonação de token |
escalation_status.txt | Status de criação/erro/saída do processo auxiliar |
system_shell_status.txt | Resultado da criação do shell na sessão ativa |