
upsmon: NOTIFYCMD実行時に攻撃者が制御するups.alarmを介したリモートOSコマンドインジェクション(RCE)
upsmon は、サーバー提供、攻撃者が制御可能な ups.alarm 値 をサニタイズせずに、system() を介して実行するシェルコマンドに補間します。監視対象デバイスが ALARM 状態を報告し、オペレーターが ALARM イベントに対して NOTIFYCMD を EXEC で設定している場合、シェルコマンド置換(POSIX では $(...) / バックティック、Windows cmd.exe では "&…&" 引用符の突破)を含む ups.alarm の値により、upsmon ユーザー(通常は root)として任意の OS コマンドが実行される 結果となります。なぜなら upsmon はシステムシャットダウンを管理するために root で動作するからです。
clients/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)、 (Fedora 41 / Debian sid / ubuntu:rolling)、 (Ubuntu 25.10) で脆弱性を確認。 (Debian trixie/stable、Ubuntu 24.04 LTS) ではトリガーされません。詳細なレポートは GHSA-mjgp-j4gm-6qg5 を参照してください。
https://github.com/user-attachments/assets/a3e76a3f-9be4-4a72-b5e7-3ae9bdcf3de7
2.8.42.8.32.8.1