Описание
Уязвимость функции isInTrustedDirectory() сценария RunDlg.cpp текстового редактора Notepad++ связана c неоднозначным разрешением пути. Эксплуатация уязвимости может позволить нарушителю выполнить произвольный код
Вендор
Don Ho
Наименование ПО
Notepad++
Версия ПО
8.9.6.1 (Notepad++)
Тип ПО
Прикладное ПО информационных систем
Операционные системы и аппаратные платформы
-
Уровень опасности уязвимости
Средний уровень опасности (базовая оценка CVSS 2.0 составляет 6,8)
Высокий уровень опасности (базовая оценка CVSS 3.1 составляет 7,8)
Возможные меры по устранению уязвимости
Использование рекомендаций:
https://notepad-plus-plus.org/news/v8962-released/
https://github.com/notepad-plus-plus/notepad-plus-plus/commit/ea1508855e9c4528f6198ce9d345f13cb759ebf4
Компенсирующие меры:
Канонизируйте путь, используя функцию PathCanonicalize() или GetFullPathNameW() перед проверкой:
bool isInTrustedDirectory(const wchar_t* path) {
wchar_t canonicalPath[MAX_PATH] = {};
// Resolve .., ., and redundant separators
if (!PathCanonicalize(canonicalPath, path))
return false;
// NOW check against trusted directories
for (auto& trusted : trustedDirs) {
if (PathIsPrefix(trusted, canonicalPath))
return true;
}
return false;
}
Статус уязвимости
Подтверждена производителем
Наличие эксплойта
Существует в открытом доступе
Информация об устранении
Уязвимость устранена
Идентификаторы других систем описаний уязвимостей
- CVE
EPSS
Процентиль: 11%
0.00211
Низкий
7.8 High
CVSS3
6.8 Medium
CVSS2
EPSS
Процентиль: 11%
0.00211
Низкий
7.8 High
CVSS3
6.8 Medium
CVSS2