
Эксплойт Proof-of-concept, демонстрирующий уязвимость отказа в обслуживании в Notepad++ (x86) версиях до 8.4.9, вызванную открытием специально созданных текстовых файлов, с анализом первопричины и протестированными версиями.
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-бит) и ранее.