Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2026-52885 — تحليل فني لـ CVE-2026-52885: حالة سباق TOCTOU في Notepad++ v8.9.6.2 تسمح بتنفيذ أوامر عشوائية عبر تجاوز سلامة HMAC. يشمل السبب الجذري، سيناريو الهجوم، PoC، وتحليل التصحيح. | Kitploit
أدوات/GitHubGitHub/v3s9er/cve-2026-52885
تحليل الثغرات الأمنيةتحليل الكودالاستغلالتحليل الملفات الثنائيةالأوراق والأبحاثالتعلم والتعليم
GitHubv3s9er/cve-2026-52885

CVE-2026-52885

تحليل فني لـ CVE-2026-52885: حالة سباق TOCTOU في Notepad++ v8.9.6.2 تسمح بتنفيذ أوامر عشوائية عبر تجاوز سلامة HMAC. يشمل السبب الجذري، سيناريو الهجوم، PoC، وتحليل التصحيح.

عرض المستودع
منذ 7 أياملم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

TOCTOU: التحقق من HMAC على القرص، التنفيذ من الذاكرة

Notepad++ v8.9.6.2 — تنفيذ أوامر المستخدم المُتحكم بها من قبل المهاجم عبر حالة سباق HMAC

التقرير الأمني

GHSAGHSA-qm4c-qg8p-qfcr
CVECVE-2026-52885
الخطورةعالية
المتأثرv8.9.6.2
المُصحَّحv8.9.6.4
التصحيح (Commit)4f7563c
الملف المتأثرPowerEditor/src/NppCommands.cpp :4328–4359
المنصةWindows 11 Pro x64
الصلاحية المطلوبةمستخدم عادي (صلاحية الكتابة على shortcuts.xml)
الباحثv3s9er
تاريخ الإفصاح2026-06-05

ملخص

قدّم Notepad++ الإصدار v8.9.6.2 فحصاً للتكامل باستخدام HMAC-SHA256 على ملف shortcuts.xml لمنع حقن إدخالات UserCommand عشوائية.

يحتوي هذا الفحص على ثغرة من نوع TOCTOU: يتم التحقق من HMAC مقابل الملف الموجود على القرص في وقت التشغيل، ولكن الأمر الذي يُنفَّذ يُقرأ من المتجه _userCommands المخزّن في الذاكرة والمُحمّل عند بدء التشغيل. لا يتم إعادة مزامنة هذين المصدرين أبداً.

يمكن للمهاجم الذي يستطيع الكتابة على shortcuts.xml زرع أمر ضار قبل بدء التشغيل، والسماح لـ Notepad++ بتحميله إلى الذاكرة، ثم استعادة الملف الشرعي على القرص، ثم تشغيل الأمر. ينجح فحص HMAC (القرص نظيف)، ولكن الحمولة الضارة تُنفَّذ (الذاكرة قديمة).


نظرة فنية

تتحقق آلية التكامل من ملف shortcuts.xml الحالي على القرص، بينما يستخدم تنفيذ الأمر تمثيلاً تم تحميله سابقاً في الذاكرة. ونظراً لأن مصدري البيانات مستقلان، يمكن للمهاجم تغيير الملف قبل بدء التشغيل، والسماح بتحليله في الذاكرة، ثم استعادة الملف الأصلي قبل تنفيذ الأمر — مما يتسبب في نجاح فحص HMAC بينما تعمل الحمولة الضارة.


السبب الجذري

السطور 4328–4359 في ملف NppCommands.cpp:

root@kitploit:~
// TIME OF CHECK — يقرأ الملف من القرص
std::string currentHMAC = computeHMAC(
    getMachineGUID(),
    getFileContent(nppParams.getShortcutsPath().c_str())
);
if (currentHMAC != nppGUI._shortcutsXmlHmacInConfig) { return; }
// تم التحقق مقابل الملف على القرص

// TIME OF USE — يقرأ من المتجه في الذاكرة (تم تحميله عند بدء التشغيل، لم يتم تحديثه أبداً)
int i = id - ID_USER_CMD;
const vector<UserCommand>& cmds = nppParams.getUserCommandList();
UserCommand ucmd = cmds[i];
Command cmd(string2wstring(ucmd.getCmd(), CP_UTF8));
cmd.run(_pPublicInterface->getHSelf()); // ينفذ الحمولة من الذاكرة
العمليةالمصدرالتوقيت
التحقق (HMAC)ملف القرصعند وقت التشغيل
الاستخدام (تنفيذ)المتجه في الذاكرةتم تحميله عند بدء التشغيل
الفجوةيتحكم بها المهاجمبدء التشغيل → وقت التشغيل

سيناريو الهجوم

الشرط المسبق: صلاحية الكتابة على shortcuts.xml

  • تثبيت محمول (Portable): نفس مجلد notepad++.exe
  • تثبيت قياسي: %AppData%\Notepad++\

الخطوات:

  1. استبدال shortcuts.xml على القرص بنسخة ضارة (cmd = calc.exe)
  2. تشغيل Notepad++ — يتم ملء _userCommands من الملف الضار
  3. استعادة ملف shortcuts.xml الشرعي على القرص — يصبح HMAC مطابقاً لـ config.xml
  4. إرسال WM_COMMAND(21000) (ID_USER_CMD+0) أو الضغط على Ctrl+Alt+P
  5. فحص HMAC يقرأ الملف الشرعي من القرص → ينجح
  6. التنفيذ يقرأ _userCommands[0] من الذاكرة → يعمل calc.exe

النتيجة: تنفيذ أوامر يتحكم بها المهاجم تحت صلاحيات المستخدم الحالي. لا حاجة لصلاحية المسؤول، لا UAC، لا تحذير للمستخدم.


الجدول الزمني للتنفيذ


التأثير


إثبات المفهوم

انظر poc_8962_toctou.ps1.

المتطلبات:

  • Notepad++ الإصدار v8.9.6.2 المحمول (portable) x64
  • وجود ملف doLocalConf.xml في مجلد Notepad++ (الوضع المحمول)
  • ملف config.xml يحتوي على HMAC صالح لملف shortcuts.xml الشرعي
root@kitploit:~
.\poc_8962_toctou.ps1 -NppPath "C:\path\to\notepad++.exe"

تم التحقق: تم إنشاء calc.exe (PID 35932)، ويظهر القرص ملف shortcuts.xml شرعياً طوال الوقت.


تحليل التصحيح

ينقل الإصلاح (commit 4f7563c) التحقق من HMAC إلى وقت بدء التشغيل، إلى جانب عملية تحليل الملف الأولية. الآن يعمل كل من التحقق والاستخدام على نفس الكائن في نفس الوقت، مما يزيل نافذة TOCTOU.

v8.9.6.2 (ضعيف)v8.9.6.4 (مُصحَّح)
فحص HMACعند وقت التشغيل، يُعيد قراءة القرصعند بدء التشغيل، نفس البايتات التي تم تحليلها
مصدر الأمرالذاكرة التي تم تحميلها عند بدء التشغيلالذاكرة التي تم التحقق منها عند بدء التشغيل
نافذة TOCTOU

المراجع

  • GHSA-qm4c-qg8p-qfcr
  • تصحيح commit 4f7563c
  • إصدار Notepad++ v8.9.6.4
تنزيل الأداة
الوقتالحدثالحالة
T+0.0ثالمهاجم يكتب ملف shortcuts.xml ضاراًdisk=MALICIOUS
T+0.0ثالمهاجم يشغل Notepad++disk=MALICIOUS
T+0.1ثNotepad++ يقرأ shortcuts.xml ← _userCommands[0]="calc.exe"mem=MALICIOUS
T+4.2ثNotepad++ يتم تحميله بالكاملmem=MALICIOUS
T+4.2ثالمهاجم يستعيد ملف shortcuts.xml الشرعيdisk=LEGIT / mem=MAL
T+4.7ثالمهاجم يرسل WM_COMMAND(21000)
T+4.7ثفحص HMAC: يقرأ الملف الشرعي من القرص → ينجحCHECK OK
T+4.7ثالتنفيذ: يقرأ _userCommands[0] من الذاكرة → calc.exeاستغلال
T+4.7ثcalc.exe يتم إنشاؤه (PID 35932)مُؤكَّد
النوعتنفيذ أوامر عشوائي
يتطلب مسؤولاًلا
ظهور UACلا
قابلية الاكتشافمنخفضة — يظهر القرص ملفاً شرعياً طوال الوقت؛ الحمولة موجودة في الذاكرة فقط
CVSS (تقديري)AV:L / AC:H / PR:L / UI:N / S:U / C:H / I:H / A:H
بدء التشغيل → وقت التشغيل
تم القضاء عليها