Skip to content

Latest commit

 

History

History
249 lines (183 loc) · 8.3 KB

File metadata and controls

249 lines (183 loc) · 8.3 KB

CVE-2026-20841 バイナリ差分解析レポート

作成日: 2026-02-12 担当: バイナリ解析チーム


1. 解析対象

項目 パッチ前 (脆弱) パッチ後 (修正済み)
バージョン 11.2508.38.0 11.2510.14.0
ビルド日 2025-10-25 2026-01-07
パッケージ Microsoft.WindowsNotepad_8wekyb3d8bbwe

2. バイナリサイズ比較

ファイル 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%)
NotepadXamlUI.winmd 118,784 136,192 +17,408 (+14.7%)
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 の大幅な増加(+850KB合計)は、入力検証・URI安全性チェックの大量追加を示唆する。


3. AppxManifest.xml 差分 (重要発見)

3.1 プロトコルハンドラー登録

両バージョンとも同一:

<uap:Extension Category="windows.protocol">
  <uap:Protocol Name="ms-notepad">
    ...
  </uap:Protocol>
</uap:Extension>

注: OSINT報告では notepad:// と記載されていたが、実際のプロトコル名は ms-notepad

3.2 新規COMサーバー登録 (post-patch のみ)

<com4:Extension Category="windows.comServer">
  <com4:ComServer>
    <com4:InProcessServer Path="OleControls\OleControls.dll">
      <com4:Class Id="95b90fa7-3125-40d3-b9ff-1e807810a5f7"
                  ProgId="Notepad.OleControls.ImageBlock"
                  ThreadingModel="STA"
                  InsertableObject="true"/>
    </com4:InProcessServer>
  </com4:ComServer>
</com4:Extension>

OleControls.dll (317KB) が新規追加され、ImageBlock COMクラスが登録された。Markdownの画像レンダリングを安全に処理するための新コンポーネント。

3.3 新規 ActivatableClass (post-patch で追加)

セキュリティ修正に直接関連:

  • NotepadXamlUI.UnsafeLinkAlertDialog脆弱性修正の核心
  • NotepadXamlUI.EditElementPopup ← 要素編集の安全化

Markdown機能拡充:

  • NotepadXamlUI.FormattingTableToolViewModel
  • NotepadXamlUI.FormattingTableCell / FormattingTableCellViewModel
  • NotepadXamlUI.FormattingTableMenuItem
  • NotepadXamlUI.InsertTableDialog / InsertTableEventArgs
  • NotepadXamlUI.FormatImageToolViewModel
  • NotepadXamlUI.NumberInputBox
  • NotepadXamlUI.AutoTrimTextBlock
  • NotepadXamlUI.TabData

4. XAML UI ファイル差分

4.1 新規追加 (.xbf ファイル)

ファイル サイズ 説明
UnsafeLinkAlertDialog.xbf 1,519 安全でないリンクの警告ダイアログ (修正の核心)
EditElementPopup.xbf 1,304 要素編集ポップアップ
InsertTableDialog.xbf 1,611 テーブル挿入ダイアログ
FormattingTableCell.xbf 1,715 テーブルセル
AutoTrimTextBlock.xbf 876 テキストブロック
NumberInputBox.xbf 829 数値入力ボックス

4.2 サイズ変更があったファイル

ファイル Pre Post 差分
FormattingToolbar.xbf 3,119 4,394 +1,275 (テーブル/画像ツール追加)
GlobalStyles.xbf 13,765 14,985 +1,220
OverwriteStyles.xbf 52,134 53,158 +1,024
GotoDialogContent.xbf 1,141 1,330 +189
CowriterFloatingLoader.xbf 5,854 6,125 +271
RowBarButton.xbf 1,737 1,155 -582

5. UTF-16文字列解析 (NotepadXamlUI.dll)

5.1 新規追加された重要文字列

セキュリティ関連:

  • NotepadXamlUI.UnsafeLinkAlertDialog
  • ms-appx:///NotepadXamlUI/UnsafeLinkAlertDialog.xaml
  • UrlText ← URL表示/検証用プロパティ

画像処理関連:

  • NotepadXamlUI.FormatImageToolViewModel
  • ImageScale, ImageTemplate
  • LinkImageLabel
  • 画像サイズ変更コマンド多数

テーブル処理関連:

  • テーブル挿入/編集/削除コマンド群

5.2 統計

指標
Pre-patch固有UTF-16文字列数 1,133
Post-patch固有UTF-16文字列数 1,273
新規追加文字列 148
削除文字列 8

6. WinMD メタデータ差分

Post-patch で追加された型定義 (抜粋):

IUnsafeLinkAlertDialog
IUnsafeLinkAlertDialogFactory
CreateUnsafeLinkAlertDialog
UnsafeLinkAlertDialog

IEditElementPopup
CreateEditElementPopup
EditElementPopup

IFormatImageToolViewModel
FormatImageToolViewModel

IFormattingTableCell / IFormattingTableCellStatics
FormattingTableCell / FormattingTableCellViewModel
IFormattingTableMenuItem / IFormattingTableMenuItemStatics
FormattingTableMenuItem / FormattingTableToolViewModel

IInsertTableDialog / IInsertTableDialogFactory
InsertTableDialog / InsertTableEventArgs

INumberInputBox / INumberInputBoxStatics
NumberInputBox

7. 脆弱性メカニズムの特定

7.1 根本原因

パッチ前 (11.2508.38.0):

  • Markdown内のハイパーリンクをクリックすると、URLが検証なしでOS(Windows Shell)のプロトコルディスパッチに渡される
  • UnsafeLinkAlertDialog存在しない → リンクの安全性確認なし
  • ms-notepad プロトコルハンドラーを含む任意のURIスキームが無検証で処理される
  • 特殊文字を含むURLがシェルコマンドとして解釈される可能性

パッチ後 (11.2510.14.0):

  • UnsafeLinkAlertDialog がリンククリックを介在し、URLの安全性を検証
  • UrlText プロパティでURLをユーザーに表示して確認を求める
  • 不審なプロトコルやコマンドインジェクションパターンをフィルタリング
  • OleControls.dll (ImageBlock) で画像処理を安全に隔離

7.2 攻撃フロー (推定)

1. 攻撃者が悪意のある.mdファイルを作成
   - Markdown内に巧妙なリンクを埋め込む
   - 例: [Click here](ms-notepad:<injected_command>)
   - または: [Click](javascript:...) / [Click](file:///C:/Windows/...) 等

2. 被害者がStore版Notepad (< 11.2510) で.mdファイルを開く

3. Markdownプレビューがリンクをレンダリング

4. 被害者がリンクをクリック

5. [パッチ前] URLが検証なしでWindows Shellに渡される
   → コマンドインジェクション成立
   → 任意コード実行 (ユーザー権限)

6. [パッチ後] UnsafeLinkAlertDialog が介在
   → URLを表示して確認を求める
   → 不審なスキーム/パターンをブロック

7.3 CWE-77 (Command Injection) の具体的箇所

  • 脆弱コンポーネント: NotepadXamlUI.dll 内のMarkdownリンクハンドラー
  • 入力ソース: Markdownファイル内のハイパーリンクURL
  • シンク: Windows Shell プロトコルディスパッチ (ShellExecute/Launcher API)
  • 欠落していた制御: URL検証、プロトコルホワイトリスト、UnsafeLinkAlertDialog

8. PoC作成に向けた情報

8.1 攻撃対象環境

  • Windows 10/11 + Microsoft Store版 Notepad < 11.2510
  • Markdownプレビュー機能が有効

8.2 試すべきペイロード

  1. ms-notepad プロトコル経由のコマンドインジェクション:

    [Open](ms-notepad:test%0acalc.exe)
    [Open](ms-notepad:test|calc.exe)
  2. Shell protocol handler abuse:

    [Click](file:///C:/Windows/System32/calc.exe)
    [Click](ms-msdt:-id PCWDiagnostic /moreoptions false /skip true)
  3. URI scheme コマンドインジェクション (典型的パターン):

    [Click](ms-notepad://127.0.0.1/test" & calc.exe & "x)
    [Click](ms-notepad://test`calc.exe`)

8.3 参考: 既存PoC


Report generated: 2026-02-12 by Binary Analysis Team