
upsmon: injeção remota de comandos do sistema operacional (RCE) via ups.alarm controlado pelo atacante na execução do NOTIFYCMD
upsmon interpola o valor ups.alarm fornecido pelo servidor e controlável pelo atacante, não sanitizado, em um comando shell que executa via system(). Quando um dispositivo monitorado reporta um estado ALARM e o operador configurou NOTIFYCMD com EXEC no evento ALARM, um valor ups.alarm contendo substituição de comando shell ($(...) / backticks no POSIX, ou uma quebra de aspas "&…&" no cmd.exe do Windows) resulta em execução arbitrária de comandos do SO como o usuário upsmon — comumente root, porque upsmon executa como root para gerenciar o desligamento do sistema.
clients/upsmon.c (notify(), e os gêmeos WIN32 async_notify() e wall()), acionados pela mensagem padrão NOTIFY_ALARM em clients/upsmon.h.git master atual. Não afetados: ≤ 2.8.2.
Confirmado ao comparar as tags v2.8.2 vs v2.8.3: o tratamento de ups.alarm → NOTIFY_ALARM (ups_is_alarm(), do_notify(…, NOTIFY_ALARM, …), o GET ups.alarm) foi introduzido na 2.8.3 (via issue #2657 / PR #2658). Verificado como vulnerável nos pacotes distribuídos (Fedora 42/43), (Fedora 41 / Debian sid / ubuntu:rolling), (Ubuntu 25.10); não acionado no (Debian trixie/stable, Ubuntu 24.04 LTS).Consulte GHSA-mjgp-j4gm-6qg5 para ler o relatório completo.
https://github.com/user-attachments/assets/a3e76a3f-9be4-4a72-b5e7-3ae9bdcf3de7
nut-client 2.8.52.8.42.8.32.8.1