Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate to MCP interface
-
DeliveryInvoke nginx_config_add tool
-
ExploitInject blocked js_*/load_module directives
-
ExecutionNginx reload executes module code
-
ImpactCode execution in container
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V2 - Validation and Business Logic Input validation, allowlisting
|
| Exploitation Conditions | Requires an authenticated caller able to reach the MCP tool nginx_config_add (mcp/config/config_add.go), or an MCP-enabled AI agent whose inputs an attacker can poison via prompt injection. For the injected directives to achieve code execution, the nginx build must have the njs or perl module available - true for the official Docker image but not all installations. The other three config-write paths (api/config/add.go, api/config/modify.go, mcp/config/config_modify.go) are NOT exploitable because they enforce ValidateConfigFile. Limiting factors: valid MCP authentication/authorization (PR:L), and absence of the njs/perl module neutralizes code execution even though the directive injection still succeeds. Affects versions prior to 2.4.1 only. |
| Impact | This is a credible, actionable priority rather than a paper-high CVSS. The provided CVSS:3.1 vector (AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H, base 8.8) describes a network-reachable, low-complexity flaw that yields full CIA impact - consistent with the described outcome of arbitrary nginx code execution. PR:L correctly reflects that an authenticated MCP caller is required, so this is not unauthenticated RCE. The key amplifier is the prompt-injection vector: because the vulnerable path is an MCP tool (nginx_config_add), an attacker who can influence an AI agent's inputs may trigger it without holding credentials directly, which is a realistic modern exploitation path. Exploitation is conditional on the njs/perl module being present (true on the official Docker image), so impact is deployment-dependent. No EPSS score, no CISA KEV listing, and no public POC were provided - so exploitation status is 'no public exploit identified at time of analysis.' SSVC-style reading: technical impact is total, automatable is plausible given the simple API call, but exploitation is not confirmed active. The root cause is well-understood (an inconsistent security control applied to three of four write paths), which lowers analytic uncertainty. Note the provided commit diff shows backup-router / RequireSecureSession changes rather than the config_add.go fix described - verify the exact remediation commit against the GHSA advisory. |
| Exploit ScenarioDerived | An attacker with authenticated access to the Nginx UI MCP interface - or who can prompt-inject an AI agent that wields the MCP tools - calls nginx_config_add with configuration content containing a blocked directive such as load_module of the njs module plus a js_* handler. Because this single path skips ValidateConfigFile, the content is written to disk and nginx is reloaded, executing attacker-controlled module code on deployments where njs/perl is available (e.g., the official Docker image). No public exploit was identified at time of analysis, though the root cause is fully documented in the advisory. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 12, 2026
Authenticated users of Nginx UI (0xJacky/Nginx-UI) prior to 2.4.1 can bypass the built-in nginx directive validation and write arbitrary nginx configuration through the MCP tool nginx_config_add, which reloads nginx with the injected directives. Where nginx is built with the njs or perl module (as in the official Docker image), an attacker - or an MCP-enabled AI agent steered by prompt injection - can achieve code execution on the nginx host with the privileges of the nginx worker process. The CVSS score of 8.8 reflects a network-reachable, low-complexity path requiring only authenticated MCP access (AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H), making this a credible, actionable priority rather than a paper-high CVSS; no public exploit code was identified at time of analysis and the issue is not confirmed actively exploited (no CISA KEV listing).
RemediationAI
The primary fix is to upgrade Nginx UI to version 2.4.1, which is the vendor-released patch for this issue; the remediation commit is at https://github.com/0xJacky/nginx-ui/commit/23d1934099b05b2a01589b48129dc3d3159d91c2 and the fixed release is documented at https://github.com/0xJacky/nginx-ui/releases/tag/v2.4.1, with the full advisory at https://github.com/0xJacky/nginx-ui/security/advisories/GHSA-76pm-mq2q-9gcr. If immediate upgrading is not possible, several compensating controls reduce exposure with known trade-offs: disable or network-restrict the MCP interface entirely (for example by removing or firewall-restricting the MCP listener so only trusted management hosts can reach it), which removes the vulnerable write path but also disables legitimate agent-driven automation; audit and reduce MCP credentials so only fully trusted accounts hold authenticated MCP access, noting that PR:L means any authenticated MCP caller still qualifies as an attacker; and rebuild or reconfigure the nginx container image without the njs and perl dynamic modules so that injected js_*, perl_*, and load_module directives cannot be turned into code execution, accepting that this breaks legitimate njs/perl-based configurations. Because three of the four config-write paths already enforce ValidateConfigFile, operators should also monitor MCP-driven configuration changes and reload events for unexpected js_*, perl_*, load_module, or 'user root' directives in nginx configuration files as a detection measure, and treat any such directive authored through the MCP interface as suspicious until the upgrade is applied.
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
The root cause is CWE-20 improper input validation combined with an inconsistent application of an existing security control. Nginx UI maintains ValidateConfigFile in internal/config/validation.go, which blocks a denylist of dangerous nginx directives: js_* and perl_* directives, load_module of the njs and perl modules, and the 'user root' directive. That control is invoked on three of the four configuration-write code paths - api/config/add.go, api/config/modify.go, and mcp/config/config_modify.go - but the fourth path, the MCP tool nginx_config_add implemented in mcp/config/config_add.go, writes caller-supplied content straight to disk and then triggers an nginx reload. Because the Model Context Protocol (MCP) tool surface is designed to be driven by automated agents as well as human operators, the missing validation check is reachable both by an authenticated MCP client and indirectly by an agent whose input can be poisoned through prompt injection. Successful code execution depends on the nginx build shipping the njs or perl dynamic module, which is the case for the project's official Docker image but not for every deployment; where the module is absent the directive injection still succeeds but the code-execution step is neutralized. Only versions below 2.4.1 are affected. No CPE strings were supplied in the source data, so exact version enumeration should be drawn from the vendor advisory and release notes rather than from CPE matching.
Know when Docker 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:H/I:H/A:H
Network-reachable MCP API, low complexity, requires authenticated MCP access so PR:L (not PR:N); missing validation yields full nginx code execution giving total C/I/A impact.
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, internal/config/validation.go (ValidateConfigFile) is a security control that blocks dangerous nginx directives - js_*, perl_*, load_module of the njs/perl modules, and user root. It is enforced on three of the four config-write paths: api/config/add.go, api/config/modify.go, and mcp/config/config_modify.go. The fourth path - the MCP tool nginx_config_add (mcp/config/config_add.go) - does NOT call it: it writes the caller-supplied content straight to disk and reloads nginx. An authenticated MCP caller (or an MCP agent induced via prompt injection) can therefore inject exactly the directives the control is meant to block, leading to nginx code execution on deployments where the njs/perl module is available (e.g. the official Docker image). This issue is fixed in version 2.4.1.
Articles & Coverage 2
Executive ViewAI
A high-severity flaw in Nginx UI (0xJacky/Nginx-UI), versions prior to 2.4.1, allows an authenticated user - or an AI agent connected through the product's MCP integration that has been steered by prompt injection - to inject arbitrary nginx configuration and achieve code execution on the nginx host. Organizations running Nginx UI, particularly the official Docker image built with the njs or perl modules, should treat this as an actionable risk: the product sits directly in the configuration path of internet-facing web infrastructure, so a single compromised or over-privileged account could translate into control of the web tier. No public exploit code and no confirmed active exploitation were identified at the time of analysis, which gives leadership a window to remediate ahead of the issue, but the exposure is network-reachable and low-complexity once authenticated access is obtained.
No vendor-released patch identified at time of analysis. Interim mitigations: disable the MCP integration or remove the nginx_config_add tool from Nginx UI wherever it is not operationally required; restrict MCP endpoint exposure to trusted management networks and tightly limit which authenticated accounts and AI agents may invoke it; run the nginx worker process with least privilege and in an isolated environment to constrain post-exploitation impact; require manual review and independent validation of all nginx configuration changes before reload; monitor for prompt-injection vectors against any AI agent holding MCP access; and audit configuration and MCP logs for unauthorized nginx_config_add activity.
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
Remote Code Execution represents the critical moment when an attacker successfully runs arbitrary code on a target system without physical access.
An issue was discovered in Appsmith before 1.52. Rated critical severity (CVSS 9.8), this vulnerability is remotely expl
runc through version 1.0-rc6 (used in Docker before 18.09.2) contains a container escape vulnerability that allows attac
Netmaker makes networks with WireGuard. Rated high severity (CVSS 7.5), this vulnerability is remotely exploitable, no a
Unauthenticated remote code execution in Marimo ≤0.20.4 allows attackers to execute arbitrary system commands via the `/
The News & Blog Designer Pack - WordPress Blog Plugin - (Blog Post Grid, Blog Post Slider, Blog Post Carousel, Blog Post
Path traversal in JFrog Artifactory (CWE-22) enables an authenticated low-privilege user to write data outside the inten
Docker 1.3.2 allows remote attackers to execute arbitrary code with root privileges via a crafted (1) image or (2) build
Remote code execution in Gogs through 0.14.2 allows authenticated users (and unauthenticated attackers on default-config
Unauthenticated remote command injection in SGWBOX N3 firmware 2.0.25 lets attackers execute arbitrary operating-system
Remote code execution in Flowise before 3.1.2 allows any authenticated user (or API caller with chatflow view/update per
Remote code execution in NocoBase Workflow Script Node (npm @nocobase/plugin-workflow-javascript) allows authenticated l
Docker Desktop Community Edition before 2.1.0.1 allows local users to gain privileges by placing a Trojan horse docker-c
EUVD-2026-97895
GHSA-76pm-mq2q-9gcr
NVD
CVE.org
EPSS
Exploit-DB