
Prova de conceito para CVE-2022-31901: negação de serviço no Notepad++ (x86) <=8.4.9 através de arquivos de texto especialmente criados, com análise de causa raiz e depuração de dump do Visual Studio.
Notepad++(x86) na versão 8.4.3 e anteriores.ex.: first.txt & second.txt) como entrada para o Notepad++.Como exemplo ilustrativo abaixo, em 11/07/2022, a versão mais recente do Notepad++(x86) é a 8.4.3 utilizada.



Aqui podemos ver o problema ao analisar estes ficheiros em ScintallComponent -> Editor.h -> Linha 690.
Quando o Notepad++ abre qualquer ficheiro, chama uma função notepad_plus::addHotSpot que cria memória heap com o operador new e armazena o endereço de retorno na variável widetext
TCHAR *wideText = new TCHAR[endPos - startPos + 1];. Como solicita uma grande alocação, new retorna bad_alloc que não é tratado no Notepad++ e resulta em DoS.
Portanto, pode-se dizer que abrir os dois ficheiros de exemplo com o Notepad++(x86) <= 8.4.3 leva a uma Negação de Serviço.
A vulnerabilidade foi testada para funcionar nas seguintes versões:
Notepad++ versions 8.4.8 (32-bit) and before.Notepad++ versions 8.4.9 (32-bit) and before.