Skip to main content

Nginx UI CVE-2026-84317

| EUVDEUVD-2026-97895 HIGH
Improper Input Validation (CWE-20)
2026-10-12 security-advisories@github.com GHSA-76pm-mq2q-9gcr
8.8
CVSS 3.1 · Vendor: github
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Authenticate to MCP interface
  2. Delivery
    Invoke nginx_config_add tool
  3. Exploit
    Inject blocked js_*/load_module directives
  4. Execution
    Nginx reload executes module code
  5. Impact
    Code 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.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available 0.4% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – 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

nginx-ui < 2.4.1

Affected Packages

go github.com/0xjacky/nginx-ui fix: 1.9.10-0.20260703131214-23d1934099b0
euvd nginx_ui fix: 2.4.1

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

Vendor (github) PRIMARY 8.8 HIGH
AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
vuln.today AI 8.8 HIGH

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.

3.1 AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
4.0 AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N

Primary rating from Vendor (github).

CVSS VectorVendor: github

Attack Vector
Network
Attack Complexity
Low
Privileges Required
Low
User Interaction
None
Scope
Unchanged
Confidentiality
High
Integrity
High
Availability
High

Lifecycle Timeline

2
Patch available
Oct 12, 2026 - 22:03 EUVD
CVE Published
Oct 12, 2026 - 21:17 cve.org
HIGH 8.8

DescriptionCVE.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.

Executive ViewAI

Why It Matters

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.

Business Impact: High
Compensating Controls

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

EPSS Score
0.4%
Top 70% exploitable
Prevalence
Medium
popular self-hosted open-source nginx admin UI, moderate but not universal adoption
Threat Intel
1
1 source
Social Media
1
Sightings
Data Quality
5 sources
Confidence: Medium

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.

SignalValue
Severity HIGH
CISA KEV No
Public POC No
EPSS 0.4%
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation· derived
None
System Exposure· derived
Open
Automatable· derived
No
Human Impact
High

Priority Score

44
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +44
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Remote Code Execution represents the critical moment when an attacker successfully runs arbitrary code on a target system without physical access.

More in Docker

View all
CVE-2024-55964 CRITICAL POC
9.8 Mar 26

An issue was discovered in Appsmith before 1.52. Rated critical severity (CVSS 9.8), this vulnerability is remotely expl

CVE-2019-5736 HIGH POC
8.6 Feb 11

runc through version 1.0-rc6 (used in Docker before 18.09.2) contains a container escape vulnerability that allows attac

CVE-2023-32077 HIGH POC
7.5 Aug 24

Netmaker makes networks with WireGuard. Rated high severity (CVSS 7.5), this vulnerability is remotely exploitable, no a

CVE-2026-39987 CRITICAL POC
9.3 Apr 08

Unauthenticated remote code execution in Marimo ≤0.20.4 allows attackers to execute arbitrary system commands via the `/

CVE-2023-5815 HIGH POC
8.1 Nov 22

The News & Blog Designer Pack - WordPress Blog Plugin - (Blog Post Grid, Blog Post Slider, Blog Post Carousel, Blog Post

CVE-2026-66384 MEDIUM POC
5.3 Aug 12

Path traversal in JFrog Artifactory (CWE-22) enables an authenticated low-privilege user to write data outside the inten

CVE-2014-9357 CRITICAL
10.0 Dec 16

Docker 1.3.2 allows remote attackers to execute arbitrary code with root privileges via a crafted (1) image or (2) build

CVE-2026-52806 CRITICAL POC
9.9 Jun 23

Remote code execution in Gogs through 0.14.2 allows authenticated users (and unauthenticated attackers on default-config

CVE-2025-14707 HIGH POC
8.9 Dec 15

Unauthenticated remote command injection in SGWBOX N3 firmware 2.0.25 lets attackers execute arbitrary operating-system

CVE-2026-56274 HIGH POC
8.7 Jun 23

Remote code execution in Flowise before 3.1.2 allows any authenticated user (or API caller with chatflow view/update per

CVE-2026-34156 CRITICAL POC
9.9 Mar 30

Remote code execution in NocoBase Workflow Script Node (npm @nocobase/plugin-workflow-javascript) allows authenticated l

CVE-2019-15752 HIGH POC
7.8 Aug 28

Docker Desktop Community Edition before 2.1.0.1 allows local users to gain privileges by placing a Trojan horse docker-c

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy