Эта уязвимость находится в логике поиска бинарных файлов для регистрации различных компонентов Notepad++ во время установки его инсталлером. Для некоторых компонентов не указаны абсолютные пути. Таким образом сам инсталлятор Notepad ++ подвержен уязвимости к порядку поиска компонентов (Search Order).
👍 Что происходит
Во время установки Notepad ++ запускает следующие бинарные файлы, уязвимые к Search Order Hijack:
1. regsvr32.exe регистрирует COM-компонент библиотеки NppShell.dll в реестре.
regsvr32 /s "C:\Program Files\Notepad++\contextMenu\NppShell.dll"
NppShell.dll — это DLL, содержащая включает в себя несколько COM-объектов. Ее цель — интеграция иконки Notepad ++ в контекстное меню при правом клике мыши на какой-либо файл для открытия его Notepad'ом.
2. rundll32.exe вызывается только при переустановке Notepad ++ на систему
rundll32.exe "C:\Program Files\Notepad++\contextmenu\NppShell.dll",CleanupDll
Из библиотеки NppShell.dll вызывается функция CleanupDll — она отвечает за удаление модуля NppShell, если он уже присутствует на системе. Таким образом происходит переустановка или обновление.
Злоумышленники могут воспользоваться особенностью порядка поиска в Windows в случае указания не абсолютных путей:
1. Папка, где было запущено приложение
2. System32
3. /Windows/
4. WorkingDirectory
5. PATH переменная окружения
Таким образом, любой бинарный файл, который мы назовем одноименно с regsvr32.exe или rundll32.exe и поместим в одну папку с инсталером, будет запущен с повышенным уровнем целостности, так как установка инициирует прохождение UAC. Имея в распоряжении подобный процесс, злоумышленникам не составит труда подняться до SYSTEM.
Недавно Notepad ++ выпустили релиз версии 8.2.2, где исправили эту уязвимость. Чтобы проверить исправление, достаточно посмотреть параметры вызова CreateProcessW в процессе установки различных версий Notepad.
👍 Как проверить, исправлена ли уязвимость
В старой версии 8.6.8 (верхний скриншот) отсутствует абсолютный путь до rundll32.exe в параметрах вызова CreateProcessW
В обновленной версии 8.8.2 (нижний скриншот) указан абсолютный путь
Рекомендации по mitigation\detection
1. Обновление Notepad++ до последней версии 8.8.2, где устранена уязвимость порядка поиска
2. Отслеживание подозрительных запусков rundll32.exe и regsvr32.exe из нестандартных директорий (C:\Windows\System32|C:\Windows\SysWoW64)
