
CVE-2026-58635 の PoC: Windows ナレーター点字のローカル権限昇格
CVE-2026-58635 の概念実証コードです。Windows Narrator Braille におけるコマンドインジェクションの脆弱性を悪用します。ローカルの認証済みユーザーが書き込み可能な 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 は以下のパスを実行します:
標準ユーザー
-> ローカルでアクセス可能な BrlAPI サービスを開始
-> auth=none で localhost:0 に接続
-> グローバル BrlAPI パラメータ 29(点字リテラルテーブル)を書き込み
-> BRLTTY が実行可能パスを外部短縮テーブルとして解釈
-> BRLTTY が指定されたプログラムを LocalService として起動
-> オプションの SeImpersonate トークンステージ
-> 対話型 SYSTEM コマンドプロンプト
CVE 固有のプリミティブは、LocalService としての任意の実行で終了します。テストした Windows 構成では、そのトークンは SeImpersonatePrivilege を持っているため、付属のデモではオプションで SigmaPotato を使用して SYSTEM トークンを取得し、アクティブなコンソールセッションに可視シェルを起動します。
BRLTTY 6.4.1 は BRLAPI_PARAM_LITERARY_BRAILLE_TABLE をグローバルかつ書き込み可能として公開しています。サーバーは渡された文字列を短縮テーブルローダーに渡します。Windows では、PATHEXT に拡張子が存在するパスは外部短縮プログラムとして扱われ、BRLTTY のホストコマンドランチャーを通じて起動されます。
トリガーは、C:\lab\bin\localservice_stage.exe のような通常の Windows パスを、この BRLTTY/MinGW パス処理ブランチが期待するフォワードスラッシュ形式に正規化します。PoC にはユーザープロファイル、ドライブ文字、Windows ディレクトリ、アカウント名はコンパイルされていません。
テストされた攻撃対象領域が存在するためには、オプションの Accessibility.Braille 機能がインストールされている必要があります。Microsoft CNA レコードによると、複数の Windows クライアントおよびサーバーブランチが、2026 年 7 月の修正リビジョンより下のバージョンで影響を受けます。一般的な例は以下のとおりです:
ビルド番号だけではスクリーニングシグナルであり、ベンダーのアドバイザリやインストール済みコンポーネントのインベントリに代わるものではありません。付属の読み取り専用チェッカーを使用してください:
powershell -ExecutionPolicy Bypass -File .\scripts\Check-Vulnerability.ps1
これは以下を報告します:
brlapi.dll および brltty.exe の存在;チェッカーは BrlAPI を起動せず、パラメータ 29 を書き込まず、ペイロードを実行しません。
.
├── bin/ コンパイル済み PoC バイナリと SigmaPotato
├── scripts/
│ ├── Check-Vulnerability.ps1 読み取り専用の露出/ビルドチェック
│ ├── Clear-Results.cmd 生成された結果ファイルを削除
│ ├── Get-SigmaPotato.ps1 アップストリームヘルパーを取得しハッシュチェック
│ ├── Prepare-Lab.ps1 オプション機能をインストールしラボ ACL を設定
│ └── Run-PoC.cmd 標準ユーザーによるエンドツーエンドデモ
├── src/
│ ├── brlapi_trigger.cpp BrlAPI クライアントとパラメータ 29 書き込み
│ ├── localservice_stage.cpp LocalService の ID 証明とオプションチェーン
│ ├── path_util.h ランタイムパスヘルパー
│ └── system_shell_launcher.cpp
├── third_party/SigmaPotato/ バージョン、ハッシュ、ライセンス、帰属
├── 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
オプションの第2ステージは、その出力を 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 | アクティブセッションシェルの作成結果 |