作成日: 2026-02-12 担当: バイナリ解析チーム
| 項目 | パッチ前 (脆弱) | パッチ後 (修正済み) |
|---|---|---|
| バージョン | 11.2508.38.0 | 11.2510.14.0 |
| ビルド日 | 2025-10-25 | 2026-01-07 |
| パッケージ | Microsoft.WindowsNotepad_8wekyb3d8bbwe |
| ファイル | 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安全性チェックの大量追加を示唆する。
両バージョンとも同一:
<uap:Extension Category="windows.protocol">
<uap:Protocol Name="ms-notepad">
...
</uap:Protocol>
</uap:Extension>注: OSINT報告では notepad:// と記載されていたが、実際のプロトコル名は ms-notepad。
<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の画像レンダリングを安全に処理するための新コンポーネント。
セキュリティ修正に直接関連:
NotepadXamlUI.UnsafeLinkAlertDialog← 脆弱性修正の核心NotepadXamlUI.EditElementPopup← 要素編集の安全化
Markdown機能拡充:
NotepadXamlUI.FormattingTableToolViewModelNotepadXamlUI.FormattingTableCell/FormattingTableCellViewModelNotepadXamlUI.FormattingTableMenuItemNotepadXamlUI.InsertTableDialog/InsertTableEventArgsNotepadXamlUI.FormatImageToolViewModelNotepadXamlUI.NumberInputBoxNotepadXamlUI.AutoTrimTextBlockNotepadXamlUI.TabData
| ファイル | サイズ | 説明 |
|---|---|---|
| UnsafeLinkAlertDialog.xbf | 1,519 | 安全でないリンクの警告ダイアログ (修正の核心) |
| EditElementPopup.xbf | 1,304 | 要素編集ポップアップ |
| InsertTableDialog.xbf | 1,611 | テーブル挿入ダイアログ |
| FormattingTableCell.xbf | 1,715 | テーブルセル |
| AutoTrimTextBlock.xbf | 876 | テキストブロック |
| NumberInputBox.xbf | 829 | 数値入力ボックス |
| ファイル | 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 |
セキュリティ関連:
NotepadXamlUI.UnsafeLinkAlertDialogms-appx:///NotepadXamlUI/UnsafeLinkAlertDialog.xamlUrlText← URL表示/検証用プロパティ
画像処理関連:
NotepadXamlUI.FormatImageToolViewModelImageScale,ImageTemplateLinkImageLabel- 画像サイズ変更コマンド多数
テーブル処理関連:
- テーブル挿入/編集/削除コマンド群
| 指標 | 値 |
|---|---|
| Pre-patch固有UTF-16文字列数 | 1,133 |
| Post-patch固有UTF-16文字列数 | 1,273 |
| 新規追加文字列 | 148 |
| 削除文字列 | 8 |
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
パッチ前 (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) で画像処理を安全に隔離
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を表示して確認を求める
→ 不審なスキーム/パターンをブロック
- 脆弱コンポーネント:
NotepadXamlUI.dll内のMarkdownリンクハンドラー - 入力ソース: Markdownファイル内のハイパーリンクURL
- シンク: Windows Shell プロトコルディスパッチ (ShellExecute/Launcher API)
- 欠落していた制御: URL検証、プロトコルホワイトリスト、
UnsafeLinkAlertDialog
- Windows 10/11 + Microsoft Store版 Notepad < 11.2510
- Markdownプレビュー機能が有効
-
ms-notepadプロトコル経由のコマンドインジェクション:[Open](ms-notepad:test%0acalc.exe) [Open](ms-notepad:test|calc.exe)
-
Shell protocol handler abuse:
[Click](file:///C:/Windows/System32/calc.exe) [Click](ms-msdt:-id PCWDiagnostic /moreoptions false /skip true)
-
URI scheme コマンドインジェクション (典型的パターン):
[Click](ms-notepad://127.0.0.1/test" & calc.exe & "x) [Click](ms-notepad://test`calc.exe`)
- GitHub: https://github.com/BTtea/CVE-2026-20841-PoC
- Gist: https://gist.github.com/alon710/1a466249b18c499a9f99c0d11a3e0693
Report generated: 2026-02-12 by Binary Analysis Team