DavidCarliez/CVE-2026-58635-PoC

GitHub: DavidCarliez/CVE-2026-58635-PoC

CVE-2026-58635 的概念验证工具,演示如何利用 Windows 讲述人盲文组件中的命令注入漏洞实现本地权限提升至 SYSTEM。

Stars: 22 | Forks: 6

# CVE-2026-58635:Windows 讲述人盲文本地权限提升 这是针对 **CVE-2026-58635** 的概念验证,它是 Windows 讲述人盲文中的一个命令注入漏洞。经过身份验证的本地用户可以 滥用可写的 BrlAPI 参数,使特权的 BRLTTY 服务执行 任意程序。 微软将该问题评为 **重要** 级别,其 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 配置中,该 token 拥有 `SeImpersonatePrivilege` 权限,因此所包含的演示可选择性地使用 [SigmaPotato](https://github.com/tylerdotrar/SigmaPotato) 来获取 SYSTEM token,并在当前活动的控制台会话中启动一个可见的 shell。 ## 为什么参数 29 很重要 BRLTTY 6.4.1 将 `BRLAPI_PARAM_LITERARY_BRAILLE_TABLE` 暴露为全局且 可写的参数。服务端会将提供的字符串传递给其缩写表 加载器。在 Windows 上,扩展名存在于 `PATHEXT` 中的路径会被 视为外部缩写程序,并通过 BRLTTY 的宿主命令 启动器启动。 触发机制会将普通的 Windows 路径(例如 `C:\lab\bin\localservice_stage.exe`)标准化为此 BRLTTY/MinGW 路径处理分支所预期的正斜杠形式。PoC 中并没有硬编码任何 用户配置文件、驱动器号、Windows 目录或账户名。 ## 受影响的系统 必须安装可选的 **Accessibility.Braille** 功能,才能存在 受测的攻击面。微软 CNA 记录列出了多个受影响的 Windows 客户端和服务器 分支,这些分支受影响的版本均低于其 2026 年 7 月的修复 修订版。常见示例包括: | 产品分支 | 潜在受影响版本低于 | 已知修复版本级别 | | --- | ---: | ---: | | 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` 或更高 | 仅凭内部版本号只是筛查信号,不能替代厂商 安全公告和已安装组件清单。请使用包含的只读检查器: ``` powershell -ExecutionPolicy Bypass -File .\scripts\Check-Vulnerability.ps1 ``` 它将报告: - OS 内部版本和更新修订版; - Accessibility.Braille 功能状态; - 是否存在 `brlapi.dll` 和 `brltty.exe`; - BrlAPI 服务注册和身份; - 与支持分支的已知修复版本进行比对;以及 - 已安装的盲文组件的 SHA-256 哈希值。 该检查器**不会**启动 BrlAPI、写入参数 29 或执行 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 ``` ## 构建 原始 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 ``` ## 实验环境配置 ### 1. 准备可选的 Windows 组件 在仓库根目录下,通过提升权限的 PowerShell 提示符运行: ``` powershell -ExecutionPolicy Bypass -File .\scripts\Prepare-Lab.ps1 ``` 此脚本将执行以下操作: 1. 缺失时安装 `Accessibility.Braille~~~~0.0.1.0`; 2. 授予内置 Users 对该仓库的读取/执行权限;以及 3. 授予 LocalService 修改权限,以便服务能够执行 stage 并 在 `bin\results` 下创建证据。 如果功能已暂存但服务尚未注册,请重启并 再次运行准备脚本。 ### 2. 使用现有的标准用户账户 使用任何**不属于**本地 Administrators 组成员的本地或域账户登录。此仓库不会创建用户或设置密码。 安全产品通常会检测到 token 模拟概念验证工具。 在放置或运行二进制文件之前,请根据您组织的测试策略配置隔离的实验环境。请勿在正常的工作站上削弱端点保护。 ### 3. 运行 PoC 在非提升权限的命令提示符下: ``` scripts\Run-PoC.cmd ``` 预期输出包括: ``` Connection: descriptor= 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` 中: | 文件 | 用途 | | --- | --- | | `localservice_identity.txt` | CVE 启动阶段的用户名、SID 和 PID | | `localservice_whoami.txt` | 完整的 token 组和权限 | | `escalation.log` | 可选的 token 模拟助手的输出 | | `escalation_status.txt` | 助手进程的创建/错误/退出状态 | | `system_shell_status.txt` | 活动会话 shell 创建结果 | 使用以下命令删除生成的结果: ``` scripts\Clear-Results.cmd ``` ## 补救与验证 安装适用的 2026 年 7 月安全更新或更高版本的累积更新。 对于 Windows 11 24H2 和 25H2,微软在 **KB5101650**(`26100.8875` 和 `26200.8875`)中提供了修复后的修订版。如果不需要盲文支持, 移除该可选功能也会同时移除此攻击面: ``` Remove-WindowsCapability -Online -Name Accessibility.Braille~~~~0.0.1.0 ``` 补救后,重新运行 `Check-Vulnerability.ps1` 并确认系统 已达到修复修订版本,或者该组件已不存在。 ## 参考 - [微软安全更新指南:CVE-2026-58635](https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-58635) - [NVD:CVE-2026-58635](https://nvd.nist.gov/vuln/detail/CVE-2026-58635) - [微软 KB5101650](https://support.microsoft.com/help/5101650) - [BRLTTY](https://brltty.app/) - [SigmaPotato](https://github.com/tylerdotrar/SigmaPotato)
标签:AI合规, Web报告查看器, 本地提权, 概念验证, 端点可见性