
إثبات مفهوم لـ CVE-2022-31902، ثغرة رفض خدمة في Notepad++ (x86) تُثار عبر ميزة Find All على ملفات نصية مصممة، مما يسبب تعطلًا عبر فشل تخصيص الذاكرة.
Notepad++(x86) في الإصدار 8.4.3 و الإصدارات السابقة.first.txt) ثم استخدام خيارات Find All in All Opened Document أو Find All in Current Opened Document ضمن خيارات البحث.كما هو موضح في المثال أدناه، اعتبارًا من 11/07/2022، تم استخدام أحدث إصدار من Notepad++(x86) وهو 8.4.3.

Find All in All Opened Document أو Find All in Current Opened Document.


هنا يمكننا رؤية أن المشكلة تكمن في ScintallComponent -> ScintillaWin.cxx -> السطر رقم 3699.
عند استخدام المستخدم لوظيفة البحث في notepad++ داخل ملف first.txt، يؤدي ذلك إلى تعطل التطبيق.
يستدعي Notepad++ دالة finder::add في ملف findReplaceDlg.cpp والتي تستدعي دالة push_back(foundinfo)، والتي تستدعي داخليًا تخصيص ذاكرة بحجم 4bf21.
بسبب نقص الذاكرة، لا يتمكن new_operator من تخصيص الذاكرة ويعيد bad_alloc.
لذا يمكننا القول إن البحث عن حرف في first.txt باستخدام زر Find All in All Opened Document يؤدي إلى رفض الخدمة.
تم اختبار الثغرة للعمل على الإصدارات التالية:
إصدارات Notepad++ 8.4.8 (32-bit) والإصدارات السابقة.إصدارات Notepad++ 8.4.9 (32-bit) والإصدارات السابقة.