Пакет backmeup npm собирает командные строки оболочки путем прямого объединения значений параметров (имя, источник, назначение, фильтр) — например. cmd = "mkdir -p " + path.join(info.destination, info.name) + "; " - и выполняет полученную строку через оболочку через ssh2-exec (локально через child_process или удаленно через SSH, когда предоставляется дескриптор ssh), вместо использования execFile/spawn с массивом аргументов. Единственная применяемая обработка — это path.normalize()/path.join(), которые не нейтрализуют метасимволы оболочки (;, |, &, $(), обратные кавычки, новую строку). Любое приложение, которое передает в эти параметры значения, введенные злоумышленником (например, выбранное пользователем имя резервной копии), уязвимо для выполнения произвольных команд ОС на хосте резервного копирования или на удаленном целевом объекте SSH, если он настроен.
Показать оригинальное описание (EN)
The backmeup npm package assembles shell command strings by directly concatenating its option values (name, source, destination, filter) - e.g. cmd = "mkdir -p " + path.join(info.destination, info.name) + "; " - and executes the resulting string through a shell via ssh2-exec (locally via child_process, or remotely via SSH when an ssh handle is supplied), rather than using execFile/spawn with an argument array.
Характеристики атаки
Последствия
Строка CVSS v3.1