Skip to content

Latest commit

 

History

History
431 lines (336 loc) · 16.6 KB

File metadata and controls

431 lines (336 loc) · 16.6 KB

CVE-2026-20841 バイナリ収集ガイド

重要な前提: 対象バイナリの特定

CVE-2026-20841 は クラシック notepad.exe ではなく、Microsoft Store 配布の Windows Notepad アプリ に影響する。

項目 詳細
対象アプリ Windows Notepad (Store版 / UWP)
パッケージファミリー名 Microsoft.WindowsNotepad_8wekyb3d8bbwe
Store Product ID 9msmlrh6lzf3
Store URL https://apps.microsoft.com/detail/9msmlrh6lzf3
脆弱性 Markdown プレビュー機能でのコマンドインジェクション (CWE-77)
CVSS 8.8 (Important)
脆弱バージョン 11.0.0 〜 11.2510 未満
パッチ済みバージョン 11.2510.14.0 以降
パッチ配布経路 Microsoft Store (自動更新) + February 2026 Patch Tuesday

実際に取得したバージョン

バージョン ステータス 用途 取得方法
11.2508.38.0 脆弱 (パッチ前) パッチ前バイナリ FE3 API → Microsoft CDN
11.2510.14.0 パッチ済み (最新) パッチ後バイナリ FE3 API → Microsoft CDN

取得済みバイナリのハッシュ

ファイル バージョン サイズ SHA256
Notepad.exe 11.2508.38.0 (pre) 2,828,320 3d5b56ec5cbe064e10b9525ef74359a4e6b83a9c3341f5fbaac629bce80b6817
Notepad.exe 11.2510.14.0 (post) 3,118,664 02626abef89cf5a3101270065422605261cb38815a1911d93bcbc100b0affea6
NotepadXamlUI.dll 11.2508.38.0 (pre) 5,478,432 6d17b550a9faee7d936686726ca47864213b6092a002f959b5595e155be18fd6
NotepadXamlUI.dll 11.2510.14.0 (post) 6,038,048 48ba4119020f79bb99c61d66445ddef6a8771dea1dd0f2fceb60a32118c8ac0e

バイナリサイズ差分 (注目すべき変更)

ファイル Pre-patch Post-patch 差分
Notepad.exe 2,828,320 3,118,664 +290,344 (+10.3%)
NotepadXamlUI.dll 5,478,432 6,038,048 +559,616 (+10.2%)
riched20.dll 3,661,856 3,612,704 -49,152
msptls.dll 1,956,384 1,931,808 -24,576
OleControls.dll N/A 317,000 新規追加

Notepad.exe と NotepadXamlUI.dll の両方が大幅に増加しており、パッチによる入力検証・サニタイゼーション追加が示唆される。

ファイル配置

binaries/
├── pre-patch-11.2508.38.0.msixbundle    # 完全パッケージ
├── post-patch-11.2510.14.0.msixbundle   # 完全パッケージ
├── pre-patch-Notepad.exe                 # x64 メインバイナリ
├── post-patch-Notepad.exe                # x64 メインバイナリ
├── pre-patch-NotepadXamlUI.dll           # x64 UI DLL
├── post-patch-NotepadXamlUI.dll          # x64 UI DLL
├── pre-patch/x64/                        # 完全展開済み (11.2508.38.0)
└── post-patch/x64/                       # 完全展開済み (11.2510.14.0)

収集方法0: Microsoft FE3 Delivery API (実証済み - 本ガイドで使用)

概要

Windows Update クライアントが内部的に使用する SOAP API。Microsoft Store アプリのパッケージ直接ダウンロードリンクを取得できる。今回の収集で実際に使用し成功した方法。

手順概要

Step 1: Cookie 取得

curl -sk -X POST "https://fe3.delivery.mp.microsoft.com/ClientWebService/client.asmx" \
  -H "Content-Type: application/soap+xml; charset=utf-8" \
  -H "User-Agent: Windows-Update-Agent/10.0.10011.16384 Client-Protocol/2.50" \
  -d '<SOAP GetCookie request with WS-Security header>'

Step 2: Display Catalog API で WuCategoryId を取得

curl -sk "https://displaycatalog.mp.microsoft.com/v7.0/products/9msmlrh6lzf3?market=US&languages=en-US"

→ WuCategoryId: 0cfabdcb-e35f-4ee5-8ca1-76660ea27185

Step 3: SyncUpdates で各バージョンの UpdateID を取得

curl -sk -X POST "https://fe3.delivery.mp.microsoft.com/ClientWebService/client.asmx" \
  -d '<SOAP SyncUpdates with FilterAppCategoryIds=0cfabdcb-e35f-4ee5-8ca1-76660ea27185>'

→ 各バージョンの UpdateID を取得

Step 4: GetExtendedUpdateInfo2 でダウンロードURL取得

curl -sk -X POST "https://fe3.delivery.mp.microsoft.com/ClientWebService/client.asmx" \
  -d '<SOAP GetExtendedUpdateInfo2 with target UpdateIDs>'

tlu.dl.delivery.mp.microsoft.com の時間制限付きダウンロードURL取得

Step 5: パッケージダウンロードと展開

curl -sL -o package.msixbundle "<CDN URL>"
unzip package.msixbundle -d extracted/
unzip extracted/NotepadApp_*_x64.msix -d extracted/x64/

利点

  • ブラウザ不要、CLIのみで完結
  • Microsoft CDN から直接取得するため信頼性が高い
  • 全バージョンにアクセス可能

制限事項

  • FE3 API の SOAP リクエスト構築が複雑
  • ダウンロードURLは期限付き (数時間)
  • WS-Security ヘッダーが必要

収集方法1: store.rg-adguard.net (最有力 - Store アプリ向け)

概要

Microsoft Store の内部 API を使って、MSIX/MSIXBUNDLE パッケージの直接ダウンロードリンクを生成するWebサービス。

手順

  1. https://store.rg-adguard.net/ にアクセス
  2. 検索ボックスに以下を入力:
    • URL: https://apps.microsoft.com/detail/9msmlrh6lzf3
    • または ProductId: 9msmlrh6lzf3
  3. チャネルを選択:
    • Retail (安定版) または RP (Release Preview)
  4. 検索結果から以下のファイルを探す:
    • Microsoft.WindowsNotepad_11.2510.14.0_neutral_~_8wekyb3d8bbwe.MsixBundle (パッチ済み)
    • 旧バージョンも RP チャネルで出る場合がある
  5. ダウンロードリンクをクリック (CDN: tlu.dl.delivery.mp.microsoft.com からのダウンロード)

制限事項

  • Cloudflare の Bot Protection があり、CLI (curl) からのアクセスは困難
  • ブラウザでの手動操作が必要
  • 古いバージョンが必ず残っているとは限らない (Retail チャネルは最新のみの場合が多い)

CLI での試行 (Cloudflare が問題)

# 403/Challenge が返るため、ブラウザでの操作を推奨
curl -X POST "https://store.rg-adguard.net/api/GetFiles" \
  -d "type=url&url=https://apps.microsoft.com/detail/9msmlrh6lzf3&ring=Retail"

収集方法2: Appx4Fun (第三者アーカイブ)

概要

Microsoft Store アプリのバージョンアーカイブサイト。過去バージョンの MSIXBUNDLE を保持している。

利用可能なバージョン

バージョン URL ファイルサイズ SHA256
11.2510.14.0 (パッチ済み) https://www.appx4fun.com/xap/55460/ 21.76 MB c29564ac9a3ff782bbcc2c9769f3317d6f5db2275899ee24e851ecf756658e2c
11.2504.46.0 (脆弱) https://www.appx4fun.com/xap/68466/ 21.26 MB (SHA1: 46faa9ea4f1ac6e8d5db5adc813a335f01ea11d2)
11.2410.20.0 https://www.appx4fun.com/xap/63351/ - -
11.2407.9.0 https://www.appx4fun.com/xap/61280/ - -

ダウンロード手順

  1. 上記URLにブラウザでアクセス
  2. "Generate Package Download Link" ボタンをクリック
  3. Microsoft Store CDN からの直接ダウンロードリンクが生成される
  4. ファイルは Microsoft.WindowsNotepad_<version>_neutral_~_8wekyb3d8bbwe.MsixBundle 形式

注意

  • ダウンロードリンクは動的生成 (JavaScriptが必要)
  • CDN リンクは期限付き

収集方法3: Uptodown (第三者アーカイブ)

概要

過去バージョンのアーカイブを提供するダウンロードサイト。

URL

確認済みバージョン一覧

バージョン リリース日
11.2510.14.0 2026-01-13
11.2510.12.0 2025-12-26
11.2508.38.0 2025-11-03
11.2508.34.0 2025-10-07
11.2507.26.0 2025-09-02
11.2506.35.0 2025-08-05
11.2504.62.0 2025-07-01
11.2504.58.0 2025-06-17
11.2504.46.0 2025-06-03

ダウンロード手順

  1. https://windows-notepad.en.uptodown.com/windows/versions にアクセス
  2. 目的のバージョンをクリック
  3. ダウンロードボタンで取得

収集方法4: Winbindex (クラシック notepad.exe 向け)

概要

Windows のシステムファイル (inbox バイナリ) のインデックス。クラシック notepad.exe のみを扱う。 Store版Notepadは対象外だが、参考のため記載する。

URL

データ構造

  • 圧縮 JSON (gzip) で各バイナリのメタデータを提供
  • SHA256ハッシュをキーに、FileInfo (サイズ、ハッシュ、マシンタイプ) と WindowsVersions 情報を含む
  • 確認した限り119エントリ (x86/x64 混在)

ダウンロードメカニズム

Microsoft Symbol Server からの取得。URL フォーマット:

https://msdl.microsoft.com/download/symbols/<peName>/<timeStamp><imageSize>/<peName>
  • timeStamp: PE ヘッダーのタイムスタンプ (16進数)
  • imageSize: PE ヘッダーの仮想サイズ (16進数)

制限事項

  • Store版Notepadは対象外 (今回のCVEには直接使えない)
  • VirusTotal にアップロード済みのファイルのみダウンロード可能な場合がある

収集方法5: Microsoft Update Catalog

概要

Windows Update で配布されるパッチ (.msu/.cab) の検索・ダウンロードサイト。

KB 番号

OS KB番号 備考
Windows 11 KB5077181 February 2026 Cumulative Update
Windows 10 KB5075912 February 2026 Cumulative Update

手順

  1. https://www.catalog.update.microsoft.com/ にアクセス
  2. KB 番号で検索 (例: KB5077181)
  3. 該当するアーキテクチャの .msu ファイルをダウンロード

注意

  • Store版Notepadの更新は通常、Microsoft Storeから配布されるため、KBパッチに含まれない可能性が高い
  • KBパッチにはOSレベルの修正が含まれるが、Store appのバイナリとは別

収集方法6: UUP dump

概要

Windows Update のビルド単位でファイルを取得できるサービス。

URL

手順

  1. サイトでWindows buildを検索
  2. 必要なファイルを選択してダウンロードスクリプトを生成

制限事項

  • inbox (システム付属) のファイル向け
  • Store版アプリは通常含まれない

macOS (Darwin) での MSIXBUNDLE 展開方法

MSIX / MSIXBUNDLE は ZIP ベースのフォーマット なので、macOS の標準ツールで展開可能。

方法1: unzip コマンド (推奨)

# MSIXBUNDLE を展開 (中に複数の .msix ファイルが含まれる)
mkdir -p extracted_bundle
unzip Microsoft.WindowsNotepad_11.2510.14.0_neutral_~_8wekyb3d8bbwe.MsixBundle -d extracted_bundle/

# 各 .msix ファイルをさらに展開
cd extracted_bundle
mkdir -p msix_x64
unzip Microsoft.WindowsNotepad_*_x64_*.msix -d msix_x64/

方法2: Python zipfile モジュール

import zipfile
import os

def extract_msixbundle(bundle_path, output_dir):
    """MSIXBUNDLE を展開し、中の MSIX も展開する"""
    os.makedirs(output_dir, exist_ok=True)

    # Step 1: MSIXBUNDLE を展開
    with zipfile.ZipFile(bundle_path, 'r') as zf:
        zf.extractall(output_dir)

    # Step 2: 内部の .msix ファイルを展開
    for f in os.listdir(output_dir):
        if f.endswith('.msix'):
            msix_dir = os.path.join(output_dir, f.replace('.msix', ''))
            os.makedirs(msix_dir, exist_ok=True)
            with zipfile.ZipFile(os.path.join(output_dir, f), 'r') as zf:
                zf.extractall(msix_dir)

# 使用例
extract_msixbundle('path/to/bundle.MsixBundle', 'extracted/')

方法3: 7-Zip (インストール必要)

brew install p7zip
7z x Microsoft.WindowsNotepad_*.MsixBundle -oextracted/

現在の環境の状況

ツール 状態
unzip macOS 標準で利用可能 (推定)
python3 ✅ 利用可能 (/usr/bin/python3)
python3 zipfile ✅ 利用可能
cabextract ❌ 未インストール
7z ❌ 未インストール
expand /usr/bin/expand (ただしタブ展開用で .cab 展開には使えない)

MSIXBUNDLE 内のファイル構造 (想定)

Microsoft.WindowsNotepad_11.2510.14.0_neutral_~_8wekyb3d8bbwe.MsixBundle
├── AppxMetadata/
│   └── AppxBundleManifest.xml
├── Microsoft.WindowsNotepad_11.2510.14.0_x64__8wekyb3d8bbwe.msix
├── Microsoft.WindowsNotepad_11.2510.14.0_arm64__8wekyb3d8bbwe.msix
├── Microsoft.WindowsNotepad_11.2510.14.0_x86__8wekyb3d8bbwe.msix  (あれば)
└── [Content_Types].xml

.msix 内:

*.msix
├── Notepad/
│   └── Notepad.exe          ← メインバイナリ
├── AppxManifest.xml
├── Assets/
├── resources.pri
└── ...

推奨収集手順 (まとめ)

ステップ1: ブラウザでバイナリダウンロード

以下のいずれかからダウンロード:

パッチ前 (脆弱版) - 11.2504.46.0:

  1. https://www.appx4fun.com/xap/68466/ → "Generate Package Download Link"
  2. https://windows-notepad.en.uptodown.com/windows/versions → 11.2504.46.0 をクリック

パッチ後 (修正版) - 11.2510.14.0:

  1. https://www.appx4fun.com/xap/55460/ → "Generate Package Download Link"
  2. https://windows-notepad.en.uptodown.com/windows/versions → 11.2510.14.0 をクリック

ステップ2: ダウンロードしたファイルを配置

mv ~/Downloads/Microsoft.WindowsNotepad_11.2504*.MsixBundle binaries/pre-patch.msixbundle
mv ~/Downloads/Microsoft.WindowsNotepad_11.2510*.MsixBundle binaries/post-patch.msixbundle

ステップ3: 展開

cd binaries/

# パッチ前
mkdir -p pre-patch
unzip pre-patch.msixbundle -d pre-patch/
cd pre-patch && for f in *.msix; do mkdir -p "${f%.msix}" && unzip "$f" -d "${f%.msix}/"; done && cd ..

# パッチ後
mkdir -p post-patch
unzip post-patch.msixbundle -d post-patch/
cd post-patch && for f in *.msix; do mkdir -p "${f%.msix}" && unzip "$f" -d "${f%.msix}/"; done && cd ..

ステップ4: バイナリ比較 (diff解析用)

# x64 バイナリの Notepad.exe を比較対象として抽出
cp pre-patch/Microsoft.WindowsNotepad_*_x64_*/Notepad/Notepad.exe pre-patch-Notepad.exe
cp post-patch/Microsoft.WindowsNotepad_*_x64_*/Notepad/Notepad.exe post-patch-Notepad.exe

# ハッシュ確認
shasum -a 256 pre-patch-Notepad.exe post-patch-Notepad.exe

ハッシュ情報

バージョン ファイル SHA256
11.2510.14.0 MsixBundle c29564ac9a3ff782bbcc2c9769f3317d6f5db2275899ee24e851ecf756658e2c
11.2504.46.0 MsixBundle (SHA1: 46faa9ea4f1ac6e8d5db5adc813a335f01ea11d2)

その他の参考情報源


参考リンク