
upsmon: удаленное внедрение команд ОС (RCE) через управляемый атакующим ups.alarm при выполнении NOTIFYCMD
upsmon интерполирует передаваемое сервером и контролируемое злоумышленником значение ups.alarm без очистки в команду оболочки, которая выполняется через system(). Когда отслеживаемое устройство сообщает о состоянии ALARM и оператор настроил NOTIFYCMD с EXEC на событие ALARM, значение ups.alarm, содержащее подстановку команд оболочки ($(...) / обратные кавычки в POSIX или экранирование кавычек "&…&" в Windows cmd.exe) приводит к произвольному выполнению команд ОС от имени пользователя upsmon — обычно root, поскольку upsmon работает от root для управления завершением работы системы.
clients/upsmon.c (notify(), а также его аналоги для WIN32 async_notify() и wall()),
управляемые стандартным сообщением NOTIFY_ALARM в clients/upsmon.h.git master. Не уязвимы: ≤ 2.8.2.
Подтверждено сравнением тегов v2.8.2 и v2.8.3: обработка ups.alarm → NOTIFY_ALARM
(ups_is_alarm(), do_notify(…, NOTIFY_ALARM, …), GET ups.alarm) была введена в 2.8.3
(через issue #2657 / PR #2658). Проверено на уязвимость в поставляемых пакетах
(Fedora 42/43), (Fedora 41 / Debian sid / ubuntu:rolling), (Ubuntu 25.10); не
обнаружено на (Debian trixie/stable, Ubuntu 24.04 LTS).Пожалуйста, обратитесь к GHSA-mjgp-j4gm-6qg5 для ознакомления с полным отчетом.
https://github.com/user-attachments/assets/a3e76a3f-9be4-4a72-b5e7-3ae9bdcf3de7
nut-client 2.8.52.8.42.8.32.8.1