
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 do Windows) resulta em , porque executa como root para gerenciar o desligamento do sistema.
cmd.exeupsmon — comumente rootupsmonclients/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 nut-client 2.8.5 (Fedora 42/43), 2.8.4 (Fedora 41 / Debian sid / ubuntu:rolling), 2.8.3 (Ubuntu 25.10); não acionado no 2.8.1 (Debian trixie/stable, Ubuntu 24.04 LTS).Consulte GHSA-mjgp-j4gm-6qg5 para ler o relatório completo.