CVE-2026-58635 的概念验证,这是一个 Windows 讲述人盲文中的命令注入漏洞。本地经过身份验证的用户可以滥用可写的 BrlAPI 参数,使特权 BRLTTY 服务执行任意程序。
Microsoft 将该问题评级为重要,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 执行以下路径:
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
CVE 特定的原语终止于作为 LocalService 的任意执行。在测试的 Windows 配置上,该令牌具有 SeImpersonatePrivilege,因此包含的演示可选地使用 SigmaPotato 来获取 SYSTEM 令牌并在活动控制台会话中启动可见的 shell。
BRLTTY 6.4.1 将 BRLAPI_PARAM_LITERARY_BRAILLE_TABLE 暴露为全局且可写。服务器将提供的字符串传递通过其缩写表加载器。在 Windows 上,扩展名存在于 PATHEXT 中的路径被视为外部缩写程序,并通过 BRLTTY 的主机命令启动器启动。
触发器将普通的 Windows 路径(例如 C:\lab\bin\localservice_stage.exe)规范化为此 BRLTTY/MinGW 路径处理分支期望的正斜杠形式。没有用户配置文件、驱动器盘符、Windows 目录或帐户名称被编译到 PoC 中。
必须安装可选的 Accessibility.Braille 功能,才能存在测试的攻击面。Microsoft CNA 记录将多个 Windows 客户端和服务器分支列为受影响,低于其 2026 年 7 月修复版本。常见示例包括:
仅凭内部版本号是一个筛选信号,不能替代供应商公告和已安装组件清单。使用包含的只读检查器:
powershell -ExecutionPolicy Bypass -File .\scripts\Check-Vulnerability.ps1
它报告:
brlapi.dll 和 brltty.exe 的存在;检查器不启动 BrlAPI、写入参数 29 或执行载荷。
.
├── 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
原始 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 | 活动会话 shell 创建结果 |