Вышла версия Notepad++ 8.5.7, в которой были исправлены сразу несколько 0-day уязвимостей, связанных с переполнением буфера. Одна из проблем может привести к выполнению произвольного кода, если пользователь откроет специально подготовленный злоумышленником файл.
В последние месяцы ИБ-специалист компании GitHub Ярослав Лобачевски (Jaroslav Lobačevski) сообщил разработчикам популярного редактора сразу о четырех уязвимостях в Notepad++ версии 8.5.2.
Свои выводы и эксплоиты для найденных уязвимостей Лобачевски опубликовал еще 21 августа 2023 года, однако команда разработчиков Notepad++ не спешила реагировать на ситуацию. Патчи появились только после того, как в сообществе начало нарастать недовольство. Только лишь 30 августа был создан официальный issue, подтверждавший наличие проблем, а 3 сентября 2023 года вышли исправления.
Обнаруженные уязвимости связаны с переполнениями буфера хипа (чтение/запись) в различных функциях и библиотеках, используемых Notepad++.
- CVE-2023-40031: переполнение буфера в функции Utf8_16_Read::convert из-за неверных предположений в ходе преобразования кодировки UTF16 в UTF8;
- CVE-2023-40036: глобальное переполнение буфера при чтении CharDistributionAnalysis::HandleOneChar, вызванное тем, что индексы массива связаны с размером буфера, что усугубляется использованием библиотеки uchardet;
- CVE-2023-40164: глобальное переполнение буфера при чтении nsCodingStateMachine::NextState, которое связано со специфической версией библиотеки uchardet, используемой в Notepad++ (уязвимость обусловлена зависимостью от размера буфера charLenTable);
- CVE-2023-40166: в FileManager::detectLanguageFromTextBegining происходит переполнение буфера из-за отсутствия проверки длины буфера при определении языка файла.
Наиболее серьезной из этих проблем является CVE-2023-40031, которая получила 7,8 балла из 10 по шкале оценки уязвимостей CVSS. Дело в том, что Лобачевски считает, что эта уязвимость потенциально может привести к выполнению произвольного кода.
Впрочем, с его точкой зрения не согласны некоторые пользователи, один из которых утверждает, что ошибку стоит относить к другому типу.
«Хотя технически это "переполнение буфера", на самом деле это просто ошибка типа off-by-two с практически нулевым шансом на выполнение произвольного кода», — пишет пользователь domivogt.
Как бы то ни было, PoC-эксплоиты уже опубликованы в доступы в отчетах эксперта, так что пользователям рекомендуется как можно скорее обновить программу до версии 8.5.7.