
upsmon: inyección remota de comandos del sistema operativo (RCE) a través de ups.alarm controlado por el atacante en la ejecución de NOTIFYCMD
upsmon interpola el valor proporcionado por el servidor, controlable por el atacante, ups.alarm, sin sanitizar, en un comando de shell que ejecuta mediante system(). Cuando un dispositivo monitoreado reporta un estado ALARM y el operador ha configurado NOTIFYCMD con EXEC en el evento ALARM, un valor ups.alarm que contenga sustitución de comandos de shell ($(...) / backticks en POSIX, o una ruptura de comillas "&…&" en cmd.exe de Windows) resulta en ejecución arbitraria de comandos del sistema operativo como el usuario upsmon — comúnmente root, porque upsmon se ejecuta como root para gestionar el apagado del sistema.
clients/upsmon.c (notify(), y los gemelos WIN32 async_notify() y wall()), impulsados por el mensaje estándar NOTIFY_ALARM en clients/upsmon.h.git master. No afectado: ≤ 2.8.2.
Confirmado mediante la comparación de las etiquetas v2.8.2 vs v2.8.3: el manejo de ups.alarm → NOTIFY_ALARM (ups_is_alarm(), do_notify(…, NOTIFY_ALARM, …), el GET de ups.alarm) se introdujo en 2.8.3 (mediante el issue #2657 / PR #2658). Verificado vulnerable en los paquetes distribuidos (Fedora 42/43), (Fedora 41 / Debian sid / ubuntu:rolling), (Ubuntu 25.10); no se activa en (Debian trixie/stable, Ubuntu 24.04 LTS).Consulte GHSA-mjgp-j4gm-6qg5 para leer el informe completo.
https://github.com/user-attachments/assets/a3e76a3f-9be4-4a72-b5e7-3ae9bdcf3de7
nut-client 2.8.52.8.42.8.32.8.1