
إثبات المفهوم لـ CVE-2022-31901: رفض الخدمة في Notepad++ (x86) الإصدار <=8.4.9 عبر ملفات نصية مصممة خصيصًا، مع تحليل السبب الجذري وتصحيح تفريغ فيجوال ستوديو.
Notepad++(x86) في 8.4.3 و قبل.e.g. first.txt & second.txt) كمدخل لـ notepad++.كمثال توضيحي أدناه، اعتبارًا من 11/07/2022، تم استخدام أحدث إصدار من Notepad++(x86) وهو 8.4.3.



هنا يمكننا رؤية المشكلة في تحليل هذه الملفات في ScintallComponent -> Editor.h -> السطر رقم 690.
عندما يفتح notepad++ أي ملف، فإنه يستدعي دالة notepad_plus::addHotSpot التي تنشئ ذاكرة كومة باستخدام عامل new وتخزن عنوان الإرجاع في متغير widetext
TCHAR *wideText = new TCHAR[endPos - startPos + 1];. نظرًا لأنه يطلب تخصيصًا كبيرًا، فإن new يرجع bad_alloc وهو ما لا يتم معالجته في notepad++ ويؤدي إلى رفض الخدمة.
لذلك يمكن القول إن فتح ملفي المثال باستخدام Notepad++(x86) <= 8.4.3 يؤدي إلى رفض الخدمة.
تم اختبار الثغرة للعمل على الإصدارات التالية:
Notepad++ versions 8.4.8 (32-bit) and before.Notepad++ versions 8.4.9 (32-bit) and before.