Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate as secondary low-privileged user
-
DeliverySubmit restricted directives via MCP config interface
-
ExploitLoad ngx_http_js_module and import attacker JS
-
ExecutionReload Nginx worker
-
ImpactExecute arbitrary NJS code in worker context
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A06:2025 - Insecure Design
ASVS 5.0
V15 - Secure Coding and Architecture Protection mechanism completeness
|
| Exploitation Conditions | Requires an authenticated Nginx UI account (a 'secondary authenticated user', consistent with PR:L) with access to the MCP configuration interface on a version prior to 2.4.1. The exploitable path is specifically the MCP config interface, which fails to reject the restricted directives load_module, js_import, and js_content that the regular HTTP configuration API correctly blocks; the attacker must be able to load ngx_http_js_module.so and trigger an Nginx reload. Limiting factors: exploitation is not possible unauthenticated, depends on the MCP interface being reachable/enabled for the account, and the Nginx build must support the NJS/js module. Upgrading to 2.4.1 removes the bypass. |
| Impact | This is a genuine high-priority issue for anyone running Nginx UI below 2.4.1, but it is a privilege/protection-boundary failure rather than an internet-wide mass-exploitation threat. The provided CVSS 3.1 vector (AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:H/A:H, base 8.3) indicates a network-reachable, low-complexity attack that nonetheless requires an authenticated low-privileged account (PR:L), so it is not unauthenticated. The core weakness (CWE-693, Protection Mechanism Failure) is well-supported by the description: the hardened HTTP config API correctly rejects load_module/js_import/js_content, but the MCP configuration interface fails to enforce the same restriction, letting an authenticated user reach code execution in the Nginx worker. No EPSS score, CISA KEV listing, or public POC was provided in the input, so exploitation probability cannot be quantified and there is no public exploit identified at time of analysis. The dominant mitigating signal is the PR:L requirement - an attacker must already hold a valid (secondary) account - which limits this to insider/post-compromise or multi-tenant scenarios rather than opportunistic scanning. Note a data caveat: the official vector rates confidentiality only C:L, yet achieving arbitrary NJS execution in the worker context would typically enable broad read access, so the real confidentiality impact may be understated - verify against the vendor advisory. |
| Exploit ScenarioDerived | An attacker holding a secondary low-privileged Nginx UI account (prior to 2.4.1) uses the MCP configuration interface - which, unlike the HTTP config API, does not reject restricted directives - to write a configuration that loads ngx_http_js_module.so and imports attacker-controlled JavaScript. After triggering an Nginx reload, the attacker-supplied NJS executes in the Nginx worker context, yielding code execution on the host. No public proof-of-concept was identified in the provided data; exploitation requires authenticated access (PR:L) but is otherwise low-complexity. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 12, 2026
Authenticated users with access to the MCP configuration interface in Nginx UI versions prior to 2.4.1 can bypass the directive filtering that the regular HTTP configuration API enforces, injecting restricted Nginx directives such as load_module, js_import, and js_content and then applying them via a configuration reload. Because the attacker can load the NJS module (ngx_http_js_module.so) and import JavaScript they control, they can execute arbitrary code inside the Nginx worker process, giving high impact to confidentiality, integrity, and availability of the managed Nginx instance. Exploitation requires a valid account (per the CVSS vector, PR:L, i.e. authenticated) and depends on the MCP interface being reachable and the Nginx build supporting NJS; no public exploit code has been identified at time of analysis and the issue is not confirmed as actively exploited, but it should be treated as high priority for any deployment below 2.4.1. The vendor-released patch is version 2.4.1, published with security advisory GHSA-5r62-gj48-897x.
RemediationAI
Upgrade Nginx UI to 2.4.1 or later immediately (Vendor-released patch: 2.4.1; release https://github.com/0xJacky/nginx-ui/releases/tag/v2.4.1, fix commit https://github.com/0xJacky/nginx-ui/commit/23d1934099b05b2a01589b48129dc3d3159d91c2, advisory GHSA-5r62-gj48-897x) - this is the only complete fix, because the mitigation is server-side validation on the MCP configuration path. If immediate upgrade is not possible, restrict the MCP configuration interface to a single trusted administrative account and remove or disable MCP access for all secondary users; note the trade-off that this breaks MCP-driven automation and tooling integrations until you upgrade. Additionally, do not expose the Nginx UI management port to untrusted networks (bind to loopback or place behind a VPN/authenticated reverse proxy) so that PR:L access is hard to obtain, and if the NJS module is not required, ensure ngx_http_js_module.so is not present or loadable in the Nginx build - this prevents the final code-execution step but is a deployment-level change that breaks any legitimate NJS usage. As a detective control pending upgrade, audit nginx.conf and included files for load_module, js_import, and js_content entries and alert on unexpected Nginx reload events or unexpected additions of ngx_http_js_module.so, since these are the signatures of this bypass. Review all Nginx UI accounts and their role assignments now, as any authenticated low-privilege user with MCP reach is a viable attacker under the assessed vector (CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H).
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 2 packages in go, euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
Nginx UI is a Go (Gin-based) web front end that generates Nginx configuration files and triggers reloads on behalf of administrators. It exposes two configuration paths: a regular HTTP configuration API that deliberately rejects directives regarded as dangerous (load_module, js_import, js_content) and an MCP (Model Context Protocol) configuration interface intended for programmatic/tooling access. The defect is classified as CWE-693 (Protection Mechanism Failure): the directive denylist is implemented on the HTTP API path only, so the MCP path applies equivalent configuration content without the same validation. The restricted directives are significant because load_module lets an operator load ngx_http_js_module.so at runtime or at startup, js_import pulls in attacker-supplied JavaScript, and js_content executes that JavaScript in the Nginx worker context - effectively arbitrary code execution under the Nginx service identity, with access to proxied traffic, secrets, upstream credentials, and the ability to alter or disrupt all served content. The supplied commit 23d1934099b05b2a01589b48129dc3d3159d91c2 (released as v2.4.1) hardens related routes, including adding a RequireSecureSession middleware layer to backup endpoints and their auto-backup mutations, alongside the MCP directive-validation fix. The upstream security advisory is GHSA-5r62-gj48-897x.
Know when Nginx gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:H/A:H
Authenticated secondary user (PR:L) over the network (AV:N/AC:L); arbitrary NJS execution in the worker context yields full code execution, so C/I/A:H, raising confidentiality above the vendor's C:L.
Primary rating from Vendor (github).
CVSS VectorVendor: github
Lifecycle Timeline
2DescriptionCVE.org
Nginx UI is a web user interface for the Nginx web server. Prior to 2.4.1, the regular HTTP configuration API rejects restricted Nginx directives such as load_module, js_import, and js_content. However, the MCP configuration interface allows a secondary authenticated user to write and apply equivalent restricted configuration content. This allows the user to load ngx_http_js_module.so, import attacker-controlled JavaScript, reload Nginx, and execute NJS in the Nginx worker context. This issue is fixed in version 2.4.1.
Articles & Coverage 2
Executive ViewAI
Nginx UI management console deployments below version 2.4.1 allow a user who already holds a valid account on the MCP configuration interface to slip restricted Nginx directives past the filtering enforced by the standard HTTP configuration API, resulting in code execution inside the Nginx worker process. Because this is the control plane that governs the organization's managed Nginx instances, a single privileged-but-not-administrative account can undermine the confidentiality, integrity, and availability of every site and service those instances front. Leadership should care because the impacted asset is a management-tier system: success here yields downstream reach far beyond one server, and remediation is currently gated on a version upgrade.
Apply vendor patch. Until the upgrade to 2.4.1 is validated, treat the MCP configuration interface as a privileged channel: restrict it to trusted administrative networks or disable it entirely, reduce the number of accounts with access, enforce multi-factor authentication and least privilege on those accounts, alert on configuration reloads and on any appearance of load_module, js_import, or js_content directives, and remove NJS support from Nginx builds where that capability is not required.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.
Denial of service against HTTP/2 server implementations allows remote unauthenticated attackers to exhaust server resour
The ngx_http_parse_chunked function in http/ngx_http_parse.c in nginx 1.3.9 through 1.4.0 allows remote attackers to cau
A critical vulnerability in Kubernetes ingress-nginx controller allows unauthenticated attackers with pod network access
nginx 0.8.41 through 1.4.3 and 1.5.x before 1.5.7 allows remote attackers to bypass intended restrictions via an unescap
An issue was discovered on GL.iNet devices before version 4.5.0. Rated critical severity (CVSS 9.8), this vulnerability
Nginx versions since 0.5.6 up to and including 1.13.2 are vulnerable to integer overflow vulnerability in nginx range fi
The resolver in nginx before 1.8.1 and 1.9.x before 1.9.10 allows remote attackers to cause a denial of service (invalid
Kubernetes ingress-nginx contains a configuration injection vulnerability via the mirror-target and mirror-host Ingress
A security issue was discovered in ingress-nginx https://github.com/kubernetes/ingress-nginx where the `auth-url` Ingres
A security issue was discovered in ingress-nginx https://github.com/kubernetes/ingress-nginx where the `auth-tls-match-c
Roxy-WI is a web interface for managing Haproxy, Nginx, Apache and Keepalived servers. Rated critical severity (CVSS 9.8
The STARTTLS implementation in mail/ngx_mail_smtp_handler.c in the SMTP proxy in nginx 1.5.x and 1.6.x before 1.6.1 and
EUVD-2026-97905
GHSA-5r62-gj48-897x
NVD
CVE.org
EPSS
Exploit-DB