
upsmon: Remote-OS-Befehleinschleusung (RCE) über angreiferkontrolliertes ups.alarm bei der NOTIFYCMD-Ausführung
upsmon interpoliert den vom Server gelieferten, angreiferkontrollierten ups.alarm-Wert unbereinigt in einen Shell-Befehl, den es über system() ausführt. Wenn ein überwachtes Gerät einen ALARM-Status meldet und der Betreiber NOTIFYCMD mit EXEC für das ALARM-Ereignis konfiguriert hat, führt ein ups.alarm-Wert, der eine Shell-Befehlssubstitution enthält ($(...) / Backticks unter POSIX oder ein "&…&"-Quote-Breakout unter Windows cmd.exe), zur Ausführung beliebiger Betriebssystembefehle als upsmon-Benutzer — üblicherweise root, da upsmon zur Verwaltung des System-Herunterfahrens als root läuft.
clients/upsmon.c (notify() sowie die WIN32-Zwillinge async_notify() und wall()),
gesteuert durch die Standard-NOTIFY_ALARM-Nachricht in clients/upsmon.h.git master. Nicht betroffen: ≤ 2.8.2.
Bestätigt durch Diff der Tags v2.8.2 vs v2.8.3: Die ups.alarm → NOTIFY_ALARM-Behandlung
(ups_is_alarm(), do_notify(…, NOTIFY_ALARM, …), der ups.alarm-GET) wurde in 2.8.3 eingeführt
(über Issue #2657 / PR #2658). Als verwundbar verifiziert auf den ausgelieferten Paketen
(Fedora 42/43), (Fedora 41 / Debian sid / ubuntu:rolling), (Ubuntu 25.10); nicht
auslösbar auf (Debian trixie/stable, Ubuntu 24.04 LTS).Bitte lesen Sie den vollständigen Bericht unter GHSA-mjgp-j4gm-6qg5.
https://github.com/user-attachments/assets/a3e76a3f-9be4-4a72-b5e7-3ae9bdcf3de7
nut-client 2.8.52.8.42.8.32.8.1