
Cloud Vulnerability DB
A community-led vulnerabilities database
CVE-2026-107813 is a Missing Authorization vulnerability in Nginx UI, a web-based management interface for the Nginx web server. It affects versions 2.0.0 through 2.5.0 (exclusive) and represents an incomplete fix for the prior advisory CVE-2026-84315 (GHSA-5v7c-xpfp-p65m). The api/cluster router exposes sensitive node and namespace mutation operations — including cluster-wide Nginx reload/restart — protected only by AuthRequired middleware, without the RequireSecureSession (OTP step-up) enforcement applied to sibling routers. It was published on October 9, 2026, and carries a CVSS v3.1 base score of 8.8 (High) (Github Advisory, Feedly).
The root cause is CWE-862 (Missing Authorization): when the prior fix for GHSA-5v7c-xpfp-p65m wrapped the api/nginx, api/cert, api/dns, api/backup, api/site, and api/stream routers in middleware.RequireSecureSession(), the physically separate api/cluster package was overlooked. Both router groups mount on the same AuthRequired + Proxy group in router/routers.go, but cluster.InitRouter(g) registers all sensitive handlers — AddNode, EditNode, DeleteNode, ReloadNginx, RestartNginx, AddNamespace, ModifyNamespace, DeleteNamespace — directly on the bare authenticated group with no step-up wrapper. An attacker with a stolen or persisted JWT (but no fresh X-Secure-Session-ID) can call these endpoints directly; for example, POST /api/nodes/reload_nginx succeeds while the equivalent POST /api/nginx/reload correctly returns a secure-session challenge. The advisory author source-verified this at HEAD commit 2cb7ee9 (Github Advisory).
A successful exploit allows an authenticated attacker with only a stolen or persisted JWT to perform full cluster node CRUD operations — including reading and rewriting AES-serialized node token secrets used to control remote nodes — effectively compromising cross-node credentials. The attacker can also trigger cluster-wide Nginx reload or restart, disrupting availability across all managed nodes, and add, modify, or delete namespaces. The combined confidentiality, integrity, and availability impact is rated High across all three dimensions, enabling potential lateral movement to every node in the cluster (Github Advisory, Feedly).
No public proof-of-concept exploit code has been published, and there is no evidence of in-the-wild exploitation as of the time of disclosure (Feedly). The vulnerability requires low privileges (a valid JWT for any authenticated user) and no user interaction, making it straightforward to exploit if a JWT is obtained. The EPSS score is approximately 0.305% (22nd percentile), indicating a relatively low near-term exploitation probability. The CVE is not listed in the CISA Known Exploited Vulnerabilities (KEV) catalog. Qualys scanner ID 532901 has been assigned for detection (Github Advisory).
POST /api/nginx/reload with the stolen JWT. If the server returns a secure-session challenge (HTTP 401/403 with OTP prompt), the instance is patched for the nginx router. Then send POST /api/nodes/reload_nginx — if it succeeds (HTTP 200), the cluster router is unprotected and the instance is vulnerable.GET /api/nodes to list all registered cluster nodes and their IDs.POST /api/nodes/:id (EditNode) to read or overwrite the AES-serialized node token secret for a target node, gaining the credential used to control that remote node.POST /api/nodes/reload_nginx or POST /api/nodes/restart_nginx to restart Nginx across all cluster nodes, or use the extracted node token to authenticate directly to remote nodes and escalate access (Github Advisory).POST requests to /api/nodes, /api/nodes/:id, /api/nodes/reload_nginx, /api/nodes/restart_nginx, /api/namespaces, or /api/namespaces/:id from unusual source IPs or at unusual times; absence of a corresponding X-Secure-Session-ID header in requests to these endpoints./api/nodes*, /api/namespaces*) without a preceding OTP step-up flow; audit log entries for node CRUD or namespace changes by users who did not recently complete MFA.NGINX_UI_NODE_SECRET) changed without administrator action.Upgrade Nginx UI to version 2.5.0, which wraps the api/cluster router's mutation handlers in middleware.RequireSecureSession(), mirroring the fix applied to the nginx router (nginx-ui v2.5.0). The v2.5.0 release notes also advise that if any instance ever ran version 2.3.6 or earlier, upgrading alone does not invalidate previously exposed credentials — administrators should rotate NGINX_UI_NODE_SECRET on every node, rotate NGINX_UI_APP_JWT_SECRET to invalidate existing JWTs, and review access logs for unauthorized activity. As interim workarounds for those unable to patch immediately: restrict network-level access to the api/cluster router endpoints, enforce JWT rotation policies to limit token persistence, and monitor for suspicious cluster operations (Github Advisory, Feedly).
The vulnerability was reported by security researcher arpitjain099 and published by the project maintainer 0xJacky as a GitHub Security Advisory on August 12, 2026, with the fix released in v2.5.0 (Github Advisory). The advisory was subsequently indexed by vulnerability aggregators including VulDB, Vulners, CVEFeed, and OSV shortly after NVD publication on October 9, 2026. No significant broader media coverage or notable public researcher commentary beyond the advisory itself has been identified.
Source: This report was generated using AI
Free Vulnerability Assessment
Evaluate your cloud security practices across 9 security domains to benchmark your risk level and identify gaps in your defenses.
Get a personalized demo
"Best User Experience I have ever seen, provides full visibility to cloud workloads."
"Wiz provides a single pane of glass to see what is going on in our cloud environments."
"We know that if Wiz identifies something as critical, it actually is."