Notepad++(x86) 版本 8.4.3 及之前版本。例如 first.txt 和 second.txt)作为 Notepad++ 的输入来触发漏洞。以下示例展示,截至 2022年7月11日,最新版本的 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++ 版本 8.4.8(32位)及之前版本。Notepad++ 版本 8.4.9(32位)及之前版本。