
upsmon: iniezione di comandi del sistema operativo da remoto (RCE) tramite ups.alarm controllato dall'attaccante nell'esecuzione di NOTIFYCMD
upsmon interpola il valore ups.alarm fornito dal server e controllabile dall'attaccante, senza sanificazione, in un comando shell che esegue tramite system(). Quando un dispositivo monitorato segnala uno stato ALARM e l'operatore ha configurato NOTIFYCMD con EXEC sull'evento ALARM, un valore ups.alarm contenente sostituzione di comando della shell ($(...) / backtick su POSIX, o un break-out di virgolette "&…&" su Windows cmd.exe) comporta l'esecuzione arbitraria di comandi del sistema operativo come utente upsmon — comunemente root, perché upsmon viene eseguito come root per gestire lo spegnimento del sistema.
clients/upsmon.c (notify(), e i gemelli WIN32 async_notify() e wall()),
guidato dal messaggio standard NOTIFY_ALARM in clients/upsmon.h.git master attuale. Non interessate: ≤ 2.8.2.
Confermato confrontando i tag v2.8.2 vs v2.8.3: la gestione ups.alarm → NOTIFY_ALARM
(ups_is_alarm(), do_notify(…, NOTIFY_ALARM, …), la GET di ups.alarm) è stata introdotta in 2.8.3
(tramite issue #2657 / PR #2658). Vulnerabilità verificata sui pacchetti distribuiti nut-client 2.8.5
(Fedora 42/43), 2.8.4 (Fedora 41 / Debian sid / ubuntu:rolling), 2.8.3 (Ubuntu 25.10); non
innescata su 2.8.1 (Debian trixie/stable, Ubuntu 24.04 LTS).Fare riferimento a GHSA-mjgp-j4gm-6qg5 per leggere il report completo.
https://github.com/user-attachments/assets/a3e76a3f-9be4-4a72-b5e7-3ae9bdcf3de7