
upsmon: NOTIFYCMD実行時に攻撃者が制御するups.alarmを介したリモートOSコマンドインジェクション(RCE)
upsmon は、サーバー提供、攻撃者が制御可能な ups.alarm 値 をサニタイズせずに、system() を介して実行するシェルコマンドに補間します。監視対象デバイスが ALARM 状態を報告し、オペレーターが ALARM イベントに対して NOTIFYCMD を EXEC で設定している場合、シェルコマンド置換(POSIX では $(...) / バックティック、Windows cmd.exe では "&…&" 引用符の突破)を含む ups.alarm の値により、 結果となります。なぜなら はシステムシャットダウンを管理するために root で動作するからです。
upsmon ユーザー(通常は root)として任意の OS コマンドが実行されるupsmonclients/upsmon.c (notify()、および WIN32 版の async_notify() と wall()) は、clients/upsmon.h の標準 NOTIFY_ALARM メッセージによって駆動されます。git master。 影響なし: ≤ 2.8.2。
タグ v2.8.2 と v2.8.3 の差分確認により: ups.alarm → NOTIFY_ALARM の処理 (ups_is_alarm()、do_notify(…, NOTIFY_ALARM, …)、ups.alarm GET) は 2.8.3 で導入されました (issue #2657 / PR #2658)。出荷パッケージ nut-client 2.8.5 (Fedora 42/43)、2.8.4 (Fedora 41 / Debian sid / ubuntu:rolling)、2.8.3 (Ubuntu 25.10) で脆弱性を確認。2.8.1 (Debian trixie/stable、Ubuntu 24.04 LTS) ではトリガーされません。詳細なレポートは GHSA-mjgp-j4gm-6qg5 を参照してください。