ja-errorpro/CVE-2026-54161
GitHub: ja-errorpro/CVE-2026-54161
CVE-2026-54161 概念验证代码,展示了 NUT upsmon 因未净化 ups.alarm 值而导致的远程操作系统命令注入漏洞。
Stars: 1 | Forks: 0
# CVE-2026-54161 PoC
### 摘要
`upsmon` 将**由服务器提供且可被攻击者控制的 `ups.alarm` 值**,在未经清理的情况下插入到通过 `system()` 运行的 shell 命令中。当受监控设备报告 `ALARM` 状态,且操作员为 `ALARM` 事件配置了带有 `EXEC` 的 `NOTIFYCMD` 时,如果 `ups.alarm` 值中包含 shell 命令替换(POSIX 下的 `$(...)` / 反引号,或 Windows `cmd.exe` 中通过 `"&…&"` 引号突围),将导致**以 `upsmon` 用户身份(通常是 root)执行任意 OS 命令**,因为 `upsmon` 需要以 root 身份运行来管理系统关机。
### 受影响组件 / 版本
- 组件:`clients/upsmon.c`(`notify()`,以及 WIN32 下的同类函数 `async_notify()` 和 `wall()`),
由 `clients/upsmon.h` 中的标准 `NOTIFY_ALARM` 消息驱动。
- **受影响版本:NUT 2.8.3、2.8.4、2.8.5 以及当前的 `git master`。** **不受影响版本:≤ 2.8.2。**
通过对比 tag `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](https://github.com/networkupstools/nut/security/advisories/GHSA-mjgp-j4gm-6qg5) 阅读完整报告。
### 演示
https://github.com/user-attachments/assets/a3e76a3f-9be4-4a72-b5e7-3ae9bdcf3de7
### 参考
- https://github.com/networkupstools/nut/security/advisories/GHSA-mjgp-j4gm-6qg5
- https://github.com/networkupstools/nut/pull/3499
- https://nvd.nist.gov/vuln/detail/CVE-2026-54161
标签:Cutter, Go语言工具, PoC, 命令注入, 暴力破解, 网络安全, 远程命令执行, 隐私保护