Notepad++ — бесплатный редактор исходного кода с открытым исходным кодом. До версии 8.9.6.1 текстовое содержимое тега <Command> внутри <UserDefinedCommands> в файле Shorts.xml считывается NppXml::value(aNode) (Parameters.cpp:3658) в функции FeedUserCmds() и сохраняется в UserCommand._cmd без какой-либо проверки. Когда пользователь щелкает соответствующую запись в меню «Выполнить», NppCommands.cpp:4264 создает объект Command со строкой string2wstring(ucmd.getCmd()) и вызывает run(), который вызывает ShellExecute (RunDlg.cpp:221) со строкой, контролируемой злоумышленником, в качестве пути к исполняемому файлу.
Внедренная команда отображается как обычный пункт меню «Выполнить», что делает ее жизнеспособным механизмом сохранения. Эта уязвимость исправлена в версии 8.9.6.1.
Показать оригинальное описание (EN)
Notepad++ is a free and open-source source code editor. Prior to 8.9.6.1, the <Command> tag text content inside <UserDefinedCommands> in shortcuts.xml is read by NppXml::value(aNode) (Parameters.cpp:3658) in the feedUserCmds() function and stored in UserCommand._cmd without any validation. When the user clicks the corresponding entry in the Run menu, NppCommands.cpp:4264 creates a Command object with string2wstring(ucmd.getCmd()) and calls run(), which invokes ShellExecute (RunDlg.cpp:221) with the attacker-controlled string as the executable path. The injected command appears as a normal menu item in the Run menu, making it a viable persistence mechanism. This vulnerability is fixed in 8.9.6.1.
Характеристики атаки
Последствия
Строка CVSS v3.1
Тип уязвимости (CWE)
Уязвимые продукты 1
| Конфигурация | От (включительно) | До (исключительно) |
|---|---|---|
|
Notepad-Plus-Plus Notepad\+\+
cpe:2.3:a:notepad-plus-plus:notepad\+\+:*:*:*:*:*:*:*:*
|
— |
8.9.6.1
|