10 月 9 日晚上,GitHub 的 advisory 库一口气给 nginx-ui(0xJacky/nginx-ui)挂了一排新条目。就是那个不少人图省事装来管 Nginx 的 Web 面板——改配置、看日志、reload 一条龙的那种。

先挑大的说。CVE-2026-107806,Critical,CVSS 9.4:远程代码执行。同批的 CVE-2026-107805(High,7.5,CWE-400)走的是另一条路:未认证就能打——它的签名请求体先在磁盘 staging、再校验摘要与签名,攻击者拿合法格式的签名元数据就能触发存储和 I/O 消耗,直接把服务打到拒绝服务,受影响 2.5.0 ~ <2.6.0。剩下几个也都不轻:CVE-2026-107807(8.8)节点密钥经 URL query 参数泄露——密钥进了 URL,日志、跳转、Referer 哪儿都可能带走它;CVE-2026-107813(8.8)缺少授权;CVE-2026-107811(8.8)信息泄露;CVE-2026-107804(5.3)自带反向代理可以绕过 IP 白名单,还能造成共享登录锁定。修复方案就一句:升到 2.6.0 或更高(修复 commit 0xJacky/nginx-ui@8c9b9a1)。

这批洞真正值得记的是面板类工具的原罪:它必须开着高权限才能改配置、reload 服务,又常常为了"方便"直接暴露在公网——等于把一个高权限 Web 应用挂在门口。107804 还顺手证明了"IP 白名单 + 反代"这种自以为稳妥的姿势,会被自家组件绕掉。

自查四步:

  1. 有没有装、版本多少——2.5.0 到 2.6.0 之前的都在 107805 的圈里;
  2. 管理入口是不是裸奔公网——收进内网或 VPN;白名单要留,但别当根本防线;
  3. 升到 2.6.0+,这是唯一的根治;
  4. 节点密钥如果在 URL 里跑过,升级后统一轮换一遍。

说到底还是"给出去的权限"配不配得上"它的重要性"。AI 删库那回我说过,问题不在手滑,在 token 一开始就给多了(那篇在这));面板这回是同一个道理的组件版。而"定期自查"这件事,元旦那天一批鼠标集体失灵、锅是一张到期证书(那篇在这)早就提醒过——版本、证书、密钥,都得有个日历管着,不能靠出事那天才想起来。我平时管几十台机器用的是七亿批量远程管理工具,批量核对版本号、推升级命令这类活它干得顺手,用法整理在教程页。七亿批量远程管理工具自己也有 Web 侧入口,所以这批 CVE 我看得格外仔细——入口类组件的教训,不能只拿别人家的当故事听。