
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에서 도입됨
(이슈 #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