
PoC para CVE-2026-58635: Escalada de privilegios local en Windows Narrator Braille
Prueba de concepto para CVE-2026-58635, una vulnerabilidad de inyección de comandos en Braille del Narrador de Windows. Un usuario local autenticado puede abusar de un parámetro BrlAPI escribible para hacer que el servicio privilegiado BRLTTY ejecute un programa arbitrario.
Microsoft clasifica el problema como Importante con una puntuación 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) y lo asigna a CWE-77.
Este repositorio está destinado únicamente a pruebas autorizadas en un laboratorio aislado. No lo ejecute en sistemas de producción o sistemas que no posea o administre.
La PoC ejercita la siguiente ruta:
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
La primitiva específica de CVE termina con la ejecución arbitraria como LocalService. En la configuración de Windows probada, ese token tiene SeImpersonatePrivilege, por lo que la demostración incluida usa opcionalmente SigmaPotato para obtener un token SYSTEM y lanzar un shell visible en la sesión de consola activa.
BRLTTY 6.4.1 expone BRLAPI_PARAM_LITERARY_BRAILLE_TABLE como global y escribible. El servidor pasa la cadena suministrada a través de su cargador de tablas de contracciones. En Windows, una ruta cuya extensión esté presente en PATHEXT se trata como un programa de contracción externo y se inicia a través del lanzador de comandos host de BRLTTY.
El desencadenante normaliza una ruta Windows ordinaria como C:\lab\bin\localservice_stage.exe a la forma con barras diagonales esperada por esta rama de manejo de rutas de BRLTTY/MinGW. No se compila ningún perfil de usuario, letra de unidad, directorio de Windows o nombre de cuenta en la PoC.
La funcionalidad opcional Accessibility.Braille debe estar instalada para que exista la superficie de ataque probada. El registro CNA de Microsoft enumera múltiples ramas de cliente y servidor de Windows como afectadas por debajo de sus revisiones corregidas de julio de 2026. Ejemplos comunes incluyen:
| Rama del producto | Potencialmente afectada por debajo | Nivel fijo conocido |
|---|---|---|
| Windows 10 1809 / Server 2019 | 17763.9020 | 17763.9020 o posterior |
| Windows 10 21H2 | 19044.7548 | 19044.7548 o posterior |
| Windows 10 22H2 | 19045.7548 | 19045.7548 o posterior |
| Windows Server 2022 | 20348.5386 | 20348.5386 o posterior |
| Windows 11 24H2 | 26100.8875 | 26100.8875 o posterior |
| Windows 11 25H2 | 26200.8875 | 26200.8875 o posterior |
| Windows 11 26H1 | 28000.2525 | 28000.2525 o posterior |
Los números de compilación por sí solos son una señal de cribado, no un sustituto del aviso del proveedor y del inventario de componentes instalados. Utilice el verificador de solo lectura incluido:
powershell -ExecutionPolicy Bypass -File .\scripts\Check-Vulnerability.ps1
Informa:
brlapi.dll y brltty.exe;El verificador no inicia BrlAPI, escribe el parámetro 29 ni ejecuta una carga útil.
.
├── 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
La PoC original está en C++17 y se compila con la cadena de herramientas MinGW-w64 x86-64.
En Debian o Ubuntu:
sudo apt install make g++-mingw-w64-x86-64
make
La compilación crea:
bin/brlapi_trigger.exe
bin/localservice_stage.exe
bin/system_shell_launcher.exe
Para obtener la versión exacta de SigmaPotato utilizada en la demostración de extremo a extremo, ejecute esto desde Windows:
powershell -ExecutionPolicy Bypass -File .\scripts\Get-SigmaPotato.ps1
El script de descarga fija el lanzamiento v1.2.6 y verifica SHA-256:
EC68A6BF7F104A815BD21E27E73A8DFB8AFCB282D4997BEBE9ECCD6C89259506
Desde un símbolo del sistema de PowerShell elevado en la raíz del repositorio:
powershell -ExecutionPolicy Bypass -File .\scripts\Prepare-Lab.ps1
Este script:
Accessibility.Braille~~~~0.0.1.0 cuando está ausente;bin\results.Si la funcionalidad está preparada pero el servicio aún no está registrado, reinicie y ejecute el script de preparación una vez más.
Inicie sesión con cualquier cuenta local o de dominio que no sea miembro del grupo de Administradores local. El repositorio no crea usuarios ni establece contraseñas.
Los productos de seguridad comúnmente detectan herramientas de prueba de concepto de suplantación de tokens. Configure el laboratorio aislado de acuerdo con la política de pruebas de su organización antes de colocar o ejecutar los binarios. No debilite la protección de endpoints en una estación de trabajo normal.
Desde un símbolo del sistema no elevado:
scripts\Run-PoC.cmd
La salida esperada incluye:
Connection: descriptor=<number> host=localhost:0 auth=none
Parameter 29 global write: 0
USER=LOCAL SERVICE
SID=S-1-5-19
La segunda etapa opcional registra su salida en bin\results\escalation.log. En caso de éxito, bin\results\system_shell_status.txt contiene CREATED=1, y se abre una nueva ventana titulada CVE-2026-58635 SYSTEM SHELL. En esa ventana:
whoami
debería devolver:
nt authority\system
Toda la evidencia generada se coloca en bin\results:
| Archivo | Propósito |
|---|---|
localservice_identity.txt | Usuario, SID y PID de la etapa lanzada por CVE |
localservice_whoami.txt | Grupos y privilegios completos del token |
escalation.log | Salida del ayudante opcional de suplantación de tokens |
escalation_status.txt | Estado de creación/error/salida del proceso ayudante |
system_shell_status.txt | Resultado de creación del shell de sesión activa |
Elimine los resultados generados con:
scripts\Clear-Results.cmd
Instale la actualización de seguridad de julio de 2026 aplicable o una actualización acumulativa posterior. Para Windows 11 24H2 y 25H2, Microsoft distribuye las revisiones corregidas en KB5101650 (26100.8875 y 26200.8875). Si no se necesita soporte Braille, eliminar la funcionalidad opcional también elimina esta superficie de ataque:
Remove-WindowsCapability -Online -Name Accessibility.Braille~~~~0.0.1.0
Después de la mitigación, vuelva a ejecutar Check-Vulnerability.ps1 y confirme que el sistema cumple con la revisión fija o que el componente está ausente.