
upsmon : injection de commande système à distance (RCE) via ups.alarm contrôlé par l'attaquant dans l'exécution de NOTIFYCMD
upsmon interpole la valeur ups.alarm fournie par le serveur et contrôlable par l'attaquant, non assainie, dans une commande shell qu'il exécute via system(). Lorsqu'un périphérique surveillé signale un état ALARM et que l'opérateur a configuré NOTIFYCMD avec EXEC sur l'événement ALARM, une valeur ups.alarm contenant une substitution de commande shell ($(...) / backticks sur POSIX, ou une rupture de guillemet "&…&" sur cmd.exe Windows) entraîne l'exécution arbitraire de commandes système en tant qu'utilisateur upsmon — généralement root, car upsmon s'exécute en tant que root pour gérer l'arrêt du système.
clients/upsmon.c (notify(), et les jumeaux WIN32 async_notify() et wall()),
piloté par le message NOTIFY_ALARM standard dans clients/upsmon.h.git master actuel. Non affecté : ≤ 2.8.2.
Confirmé en différenciant les tags v2.8.2 vs v2.8.3 : la gestion de ups.alarm → NOTIFY_ALARM
(ups_is_alarm(), do_notify(…, NOTIFY_ALARM, …), le GET ups.alarm) a été introduite dans 2.8.3
(via l'issue #2657 / PR #2658). Vérifié vulnérable sur les paquets fournis
(Fedora 42/43), (Fedora 41 / Debian sid / ubuntu:rolling), (Ubuntu 25.10) ; non
déclenché sur (Debian trixie/stable, Ubuntu 24.04 LTS).Veuillez vous référer à GHSA-mjgp-j4gm-6qg5 pour lire le rapport complet.
https://github.com/user-attachments/assets/a3e76a3f-9be4-4a72-b5e7-3ae9bdcf3de7
nut-client 2.8.52.8.42.8.32.8.1