
Cloud Vulnerability DB
A community-led vulnerabilities database
CVE-2026-42223 is a sensitive information exposure vulnerability in Nginx UI, a web-based management interface for the Nginx web server. The GetSettings API handler (api/settings/settings.go:24-65) serializes all settings structs to JSON and returns them to any authenticated user, completely ignoring the protected:"true" struct tags that are only enforced during write operations. This exposes 40+ protected fields including JwtSecret, NodeSecret, OIDC ClientSecret, and IP whitelist configuration. All versions up to and including 2.3.7 are affected; the issue was patched in version 2.3.8, released April 21, 2026, and publicly disclosed on April 27, 2026. The CVSS v3.1 base score is 6.5 (Medium) (Github Advisory, GitHub Security Advisory).
The root cause is an asymmetric access control design flaw (CWE-200: Exposure of Sensitive Information to an Unauthorized Actor). In Go, the custom protected:"true" struct tag has no effect on json.Marshal serialization — it is a developer-defined tag with no built-in enforcement. The ProtectedFill function is called 10 times within SaveSettings to prevent overwriting sensitive fields on write, but is never invoked in GetSettings, meaning any authenticated HTTP GET to /api/settings returns the full unfiltered JSON payload. The attack requires only a valid Bearer token (low-privilege user credentials suffice), no special configuration, and no user interaction, making it trivially exploitable over the network (Github Advisory, GitHub Security Advisory).
Successful exploitation allows any authenticated user to retrieve over 40 sensitive configuration secrets in a single API call. Obtaining the JwtSecret enables an attacker to forge valid JWT tokens for any user account — including administrators — providing persistent access that survives password changes and session revocations. The NodeSecret can be used to impersonate cluster nodes, push malicious Nginx configurations across all nodes, and intercept cluster synchronization traffic. Leaked OIDC and Casdoor ClientSecret values enable OAuth account takeover on connected identity providers, while disclosure of IPWhiteList, ReloadCmd, RestartCmd, ConfigDir, and SbinPath reveals the security posture and infrastructure layout for further targeted attacks (Github Advisory).
A proof-of-concept exploit is publicly documented in the GitHub Security Advisory, consisting of a single authenticated HTTP GET request to /api/settings with a Bearer token. The advisory itself constitutes a concrete, reproducible attack sequence. No evidence of active in-the-wild exploitation has been reported as of the time of writing. The EPSS score is approximately 0.031–0.042%, placing it in the 13th percentile for exploitation probability. The vulnerability is not currently listed in the CISA Known Exploited Vulnerabilities (KEV) catalog. No specific threat actor attribution has been identified (Github Advisory, GitHub Security Advisory).
GET /api/settings HTTP/1.1
Host: <target-nginx-ui>
Authorization: Bearer <your_token>app.jwt_secret — for forging admin JWT tokensnode.secret — for cluster node impersonationoidc.client_secret / casdoor.client_secret — for OAuth account takeoverauth.ip_white_list — to understand network access controlsJwtSecret, craft a signed JWT token for an administrator account using any standard JWT library, granting persistent admin-level access independent of the original credentials.NodeSecret to authenticate as a cluster node and push malicious Nginx configurations, or use the OIDC ClientSecret to perform OAuth flows as the Nginx UI application against the identity provider (Github Advisory, GitHub Security Advisory)./api/settings from non-administrative user accounts or from unexpected source IPs; unusual outbound connections from the Nginx UI host following a settings API call (potential exfiltration).GET /api/settings requests from low-privilege user accounts or at unusual times; multiple rapid sequential requests to /api/settings from the same account (automated scraping).client_id from unexpected IP addresses.Upgrade Nginx UI to version 2.3.8 or later, which introduces a 2FA-gated reveal flow for sensitive settings and proper masking of sensitive values in the UI, preventing unfiltered serialization of protected fields (GitHub Release). If an immediate upgrade is not possible, restrict access to the Nginx UI interface to trusted administrators only using network-level controls (firewall rules, VPN, or reverse proxy authentication), and monitor API access logs for any GET /api/settings requests from non-administrative accounts. Additionally, consider rotating all secrets (JWT secret, node secret, OIDC client secret) if the instance was accessible to non-admin authenticated users prior to patching, as those secrets should be considered compromised (Github Advisory).
Heise Online covered the vulnerability with an article titled "Critical security vulnerability in Nginx UI closed again," noting the recurring nature of security issues in the project (Heise). The vulnerability was reported by security researcher yotampe-pluto and received coverage from multiple vulnerability tracking platforms including VulnDB, Vulners, and CIRCL. Social media activity was observed on Bluesky and Nitter/Twitter via the CVEnew account. Community sentiment reflected concern about the low barrier to exploitation — any authenticated user could trigger the disclosure — and the breadth of secrets exposed in a single API call.
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."