
PoC für CVE-2026-58635: Windows Narrator Braille Lokale Privilegienausweitung
Proof of Concept für CVE-2026-58635, eine Befehlsinjektions-Sicherheitslücke in Windows Narrator Braille. Ein lokaler authentifizierter Benutzer kann einen beschreibbaren BrlAPI-Parameter missbrauchen, um den privilegierten BRLTTY-Dienst zur Ausführung eines beliebigen Programms zu veranlassen.
Microsoft bewertet das Problem als Important mit einem CVSS-3.1-Score von 7.8 (CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H) und ordnet es CWE-77 zu.
Dieses Repository ist ausschließlich für autorisierte Tests in einer isolierten Laborumgebung bestimmt. Führen Sie es nicht auf Produktionssystemen oder Systemen aus, die Sie nicht besitzen oder verwalten.
Der PoC durchläuft den folgenden Pfad:
Standardbenutzer
-> startet den lokal erreichbaren BrlAPI-Dienst
-> verbindet sich mit localhost:0 mit auth=none
-> schreibt globalen BrlAPI-Parameter 29 (literale Braille-Tabelle)
-> BRLTTY interpretiert einen ausführbaren Pfad als externe Kontraktionstabelle
-> BRLTTY startet das bereitgestellte Programm als LocalService
-> optionaler SeImpersonate-Token-Schritt
-> interaktive SYSTEM-Eingabeaufforderung
Die CVE-spezifische Grundprimitive endet mit der Ausführung als LocalService. Auf der getesteten Windows-Konfiguration besitzt dieser Token SeImpersonatePrivilege, daher verwendet die enthaltene Demonstration optional SigmaPotato, um einen SYSTEM-Token zu erhalten und eine sichtbare Shell in der aktiven Konsolensitzung zu starten.
BRLTTY 6.4.1 legt BRLAPI_PARAM_LITERARY_BRAILLE_TABLE als global und beschreibbar fest. Der Server übergibt die übergebene Zeichenfolge an seinen Kontraktionstabellen-Lader. Unter Windows wird ein Pfad, dessen Erweiterung in PATHEXT vorhanden ist, als externes Kontraktionsprogramm behandelt und über BRLTTY's Host-Befehlsstarter gestartet.
Der Auslöser normalisiert einen gewöhnlichen Windows-Pfad wie C:\lab\bin\localservice_stage.exe in die von diesem BRLTTY/MinGW-Pfadverarbeitungszweig erwartete Schrägstrich-Form. Es werden kein Benutzerprofil, kein Laufwerksbuchstabe, kein Windows-Verzeichnis und kein Kontoname im PoC kompiliert.
Die optionale Funktion Accessibility.Braille muss installiert sein, damit die getestete Angriffsfläche existiert. Der Microsoft-CNA-Eintrag listet mehrere Windows-Client- und Server-Zweige als betroffen unterhalb ihrer Juli 2026 korrigierten Revisionen. Häufige Beispiele umfassen:
Build-Nummern allein sind ein Screening-Signal, kein Ersatz für die Herstellerberatung und die Bestandsaufnahme installierter Komponenten. Verwenden Sie den enthaltenen schreibgeschützten Prüfer:
powershell -ExecutionPolicy Bypass -File .\scripts\Check-Vulnerability.ps1
Er meldet:
brlapi.dll und brltty.exe;Der Prüfer startet nicht BrlAPI, schreibt Parameter 29 oder führt eine Nutzlast aus.
.
├── 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
Der originale PoC ist C++17 und wird mit der MinGW-w64 x86-64-Toolchain erstellt.
Auf Debian oder Ubuntu:
sudo apt install make g++-mingw-w64-x86-64
make
Der Build erstellt:
bin/brlapi_trigger.exe
bin/localservice_stage.exe
bin/system_shell_launcher.exe
Um die genaue SigmaPotato-Version zu erhalten, die von der End-to-End-Demonstration verwendet wird, führen Sie Folgendes unter Windows aus:
powershell -ExecutionPolicy Bypass -File .\scripts\Get-SigmaPotato.ps1
Das Download-Skript fixiert die Version v1.2.6 und überprüft SHA-256:
EC68A6BF7F104A815BD21E27E73A8DFB8AFCB282D4997BEBE9ECCD6C89259506
Führen Sie in einer erhöhten PowerShell-Eingabeaufforderung im Repository-Stammverzeichnis Folgendes aus:
powershell -ExecutionPolicy Bypass -File .\scripts\Prepare-Lab.ps1
Dieses Skript:
Accessibility.Braille~~~~0.0.1.0, falls nicht vorhanden;bin\results erstellen kann.Wenn die Funktion bereitgestellt, aber der Dienst noch nicht registriert ist, starten Sie neu und führen Sie das Vorbereitungsskript erneut aus.
Melden Sie sich mit einem beliebigen lokalen oder Domänenkonto an, das nicht Mitglied der lokalen Administratorgruppe ist. Das Repository erstellt keine Benutzer oder setzt Kennwörter.
Sicherheitsprodukte erkennen häufig Token-Impersonation-Proof-of-Concept-Tools. Konfigurieren Sie die isolierte Laborumgebung gemäß den Testrichtlinien Ihrer Organisation, bevor Sie die Binärdateien platzieren oder ausführen. Schwächen Sie den Endpunktschutz auf einer normalen Workstation nicht.
Führen Sie in einer nicht erhöhten Eingabeaufforderung Folgendes aus:
scripts\Run-PoC.cmd
Die erwartete Ausgabe umfasst:
Connection: descriptor=<number> host=localhost:0 auth=none
Parameter 29 global write: 0
USER=LOCAL SERVICE
SID=S-1-5-19
Die optionale zweite Stufe zeichnet ihre Ausgabe in bin\results\escalation.log auf. Bei Erfolg enthält bin\results\system_shell_status.txt CREATED=1, und ein neues Fenster mit dem Titel CVE-2026-58635 SYSTEM SHELL öffnet sich. In diesem Fenster:
whoami
sollte zurückgeben:
nt authority\system
Alle generierten Beweise werden in bin\results abgelegt:
Entfernen Sie erzeugte Ergebnisse mit:
scripts\Clear-Results.cmd
Installieren Sie das entsprechende Juli-2026-Sicherheitsupdate oder ein späteres kumulatives Update. Für Windows 11 24H2 und 25H2 liefert Microsoft die korrigierten Revisionen in KB5101650 (26100.8875 und 26200.8875). Wenn Braille-Unterstützung nicht benötigt wird, entfernt das Löschen der optionalen Funktion auch diese Angriffsfläche:
Remove-WindowsCapability -Online -Name Accessibility.Braille~~~~0.0.1.0
Führen Sie nach der Behebung Check-Vulnerability.ps1 erneut aus und bestätigen Sie, dass das System die korrigierte Revision erfüllt oder die Komponente nicht vorhanden ist.
| Produktzweig | Potenziell betroffen unterhalb | Bekannte korrigierte Version |
|---|
| Windows 10 1809 / Server 2019 | 17763.9020 | 17763.9020 oder höher |
| Windows 10 21H2 | 19044.7548 | 19044.7548 oder höher |
| Windows 10 22H2 | 19045.7548 | 19045.7548 oder höher |
| Windows Server 2022 | 20348.5386 | 20348.5386 oder höher |
| Windows 11 24H2 | 26100.8875 | 26100.8875 oder höher |
| Windows 11 25H2 | 26200.8875 | 26200.8875 oder höher |
| Windows 11 26H1 | 28000.2525 | 28000.2525 oder höher |
| Datei | Zweck |
|---|
localservice_identity.txt | Benutzername, SID und PID der durch CVE gestarteten Stufe |
localservice_whoami.txt | Vollständige Tokengruppen und -berechtigungen |
escalation.log | Ausgabe des optionalen Token-Impersonation-Helfers |
escalation_status.txt | Status der Erstellung/ein Fehler/Exit des Helferprozesses |
system_shell_status.txt | Ergebnis der Shell-Erstellung in der aktiven Sitzung |