
PoC per CVE-2026-58635: Escalation dei Privilegi Locali tramite Braille del Narratore di Windows
Proof of concept per CVE-2026-58635, una vulnerabilità di command injection nel Braille di Windows Narrator. Un utente autenticato locale può abusare di un parametro BrlAPI scrivibile per far eseguire al servizio privilegiato BRLTTY un programma arbitrario.
Microsoft valuta il problema come Importante con un punteggio CVSS 3.1 di 7.8 (CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H) e lo mappa a CWE-77.
Questo repository è destinato esclusivamente a test autorizzati in un laboratorio isolato. Non eseguirlo su sistemi di produzione o su sistemi di cui non si è proprietari o amministratori.
Il PoC esegue il seguente percorso:
utente standard
-> avvia il servizio BrlAPI accessibile localmente
-> si connette a localhost:0 con auth=none
-> scrive il parametro globale BrlAPI 29 (tavola braille letteraria)
-> BRLTTY interpreta un percorso eseguibile come una tavola di contrazione esterna
-> BRLTTY avvia il programma fornito come LocalService
-> stadio opzionale del token SeImpersonate
-> prompt dei comandi SYSTEM interattivo
La primitiva specifica della CVE termina con l'esecuzione arbitraria come LocalService.
Sulla configurazione Windows testata, quel token possiede SeImpersonatePrivilege, quindi la dimostrazione inclusa utilizza opzionalmente SigmaPotato per ottenere un token SYSTEM e avviare una shell visibile nella sessione console attiva.
BRLTTY 6.4.1 espone BRLAPI_PARAM_LITERARY_BRAILLE_TABLE come globale e scrivibile. Il server passa la stringa fornita attraverso il suo caricatore di tavole di contrazione. Su Windows, un percorso la cui estensione è presente in PATHEXT viene trattato come un programma di contrazione esterno e avviato tramite il lanciatore di comandi host di BRLTTY.
Il trigger normalizza un normale percorso Windows come C:\lab\bin\localservice_stage.exe nella forma con barra in avanti prevista da questo ramo di gestione dei percorsi di BRLTTY/MinGW. Nessun profilo utente, lettera di unità, directory di Windows o nome di account è compilato nel PoC.
La capacità opzionale Accessibility.Braille deve essere installata affinché la superficie d'attacco testata esista. Il record CNA di Microsoft elenca diversi rami client e server di Windows come affetti al di sotto delle loro revisioni fisse di luglio 2026. Esempi comuni includono:
I numeri di build da soli sono un segnale di screening, non un sostituto dell'avviso del fornitore e dell'inventario dei componenti installati. Utilizzare il controllore in sola lettura incluso:
powershell -ExecutionPolicy Bypass -File .\scripts\Check-Vulnerability.ps1
Riporta:
brlapi.dll e brltty.exe;Il controllore non avvia BrlAPI, scrive il parametro 29 né esegue un payload.
.
├── bin/ Binari PoC compilati e SigmaPotato
├── scripts/
│ ├── Check-Vulnerability.ps1 Controllo esposizione/build in sola lettura
│ ├── Clear-Results.cmd Rimuove i file di risultato generati
│ ├── Get-SigmaPotato.ps1 Recupera e verifica l'helper upstream
│ ├── Prepare-Lab.ps1 Installa la funzionalità opzionale e imposta ACL di laboratorio
│ └── Run-PoC.cmd Dimostrazione end-to-end per utente standard
├── src/
│ ├── brlapi_trigger.cpp Client BrlAPI e scrittura parametro 29
│ ├── localservice_stage.cpp Prova identità LocalService e catena opzionale
│ ├── path_util.h Helper runtime per percorsi
│ └── system_shell_launcher.cpp
├── third_party/SigmaPotato/ Versione, hash, licenza e attribuzione
├── Makefile
├── LICENSE
├── SHA256SUMS
└── NOTICE
Il PoC originale è in C++17 e si compila con la toolchain MinGW-w64 x86-64.
Su Debian o Ubuntu:
sudo apt install make g++-mingw-w64-x86-64
make
La build crea:
bin/brlapi_trigger.exe
bin/localservice_stage.exe
bin/system_shell_launcher.exe
Per ottenere la versione esatta di SigmaPotato utilizzata nella dimostrazione end-to-end, eseguire da Windows:
powershell -ExecutionPolicy Bypass -File .\scripts\Get-SigmaPotato.ps1
Lo script di download fissa la release v1.2.6 e verifica SHA-256:
EC68A6BF7F104A815BD21E27E73A8DFB8AFCB282D4997BEBE9ECCD6C89259506
Da un prompt PowerShell elevato nella radice del repository:
powershell -ExecutionPolicy Bypass -File .\scripts\Prepare-Lab.ps1
Questo script:
Accessibility.Braille~~~~0.0.1.0 se assente;bin\results.Se la capacità è in staging ma il servizio non è ancora registrato, riavviare ed eseguire nuovamente lo script di preparazione.
Accedere con qualsiasi account locale o di dominio che non sia membro del gruppo Administrators locale. Il repository non crea utenti né imposta password.
I prodotti di sicurezza spesso rilevano gli strumenti proof-of-concept di impersonificazione dei token. Configurare il laboratorio isolato secondo la politica di test della propria organizzazione prima di posizionare o eseguire i binari. Non indebolire la protezione degli endpoint su una normale workstation.
Da un prompt dei comandi non elevato:
scripts\Run-PoC.cmd
L'output atteso include:
Connection: descriptor=<numero> host=localhost:0 auth=none
Parameter 29 global write: 0
USER=LOCAL SERVICE
SID=S-1-5-19
Lo stadio opzionale registra il suo output in bin\results\escalation.log.
In caso di successo, bin\results\system_shell_status.txt contiene CREATED=1, e si apre una nuova finestra con titolo CVE-2026-58635 SYSTEM SHELL. In quella finestra:
whoami
dovrebbe restituire:
nt authority\system
Tutte le evidenze generate vengono inserite in bin\results:
Rimuovere i risultati generati con:
scripts\Clear-Results.cmd
Installare l'aggiornamento di sicurezza di luglio 2026 applicabile o un aggiornamento cumulativo successivo. Per Windows 11 24H2 e 25H2, Microsoft distribuisce le revisioni fisse in KB5101650 (26100.8875 e 26200.8875). Se il supporto Braille non è necessario, la rimozione della capacità opzionale rimuove anche questa superficie d'attacco:
Remove-WindowsCapability -Online -Name Accessibility.Braille~~~~0.0.1.0
Dopo la correzione, eseguire nuovamente Check-Vulnerability.ps1 e confermare che il sistema soddisfi la revisione fissa o che il componente sia assente.
| Ramo prodotto | Potenzialmente affetto al di sotto | Livello fisso noto |
|---|
| Windows 10 1809 / Server 2019 | 17763.9020 | 17763.9020 o successivo |
| Windows 10 21H2 | 19044.7548 | 19044.7548 o successivo |
| Windows 10 22H2 | 19045.7548 | 19045.7548 o successivo |
| Windows Server 2022 | 20348.5386 | 20348.5386 o successivo |
| Windows 11 24H2 | 26100.8875 | 26100.8875 o successivo |
| Windows 11 25H2 | 26200.8875 | 26200.8875 o successivo |
| Windows 11 26H1 | 28000.2525 | 28000.2525 o successivo |
| File | Scopo |
|---|
localservice_identity.txt | Nome utente, SID e PID dello stadio avviato dalla CVE |
localservice_whoami.txt | Gruppi di token completi e privilegi |
escalation.log | Output dall'helper opzionale di impersonificazione dei token |
escalation_status.txt | Stato di creazione/errore/uscita del processo helper |
system_shell_status.txt | Risultato della creazione della shell della sessione attiva |