
Доказательство концепции для CVE-2022-31901: отказ в обслуживании в Notepad++ (x86) <=8.4.9 через специально созданные текстовые файлы, с анализом первопричины и отладкой дампа в Visual Studio.
Notepad++(x86) в версии 8.4.3 и ранее.например, 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++, что приводит к DoS.
Таким образом, можно сказать, что открытие двух примеров файлов в Notepad++(x86) <= 8.4.3 приводит к отказу в обслуживании.
Уязвимость протестирована на следующих версиях:
Notepad++ версиях 8.4.8 (32-бит) и ранее.Notepad++ версиях 8.4.9 (32-бит) и ранее.