Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessGain mirror control or MITM position
-
DeliveryOperator triggers self-upgrade
-
ExploitServe malicious binary with matching digest
-
ExecutionDigest-only check passes
-
ImpactInstall and run attacker code as Nginx UI process
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A08:2025 - Software or Data Integrity Failures
ASVS 5.0
V15 - Secure Coding and Architecture Code integrity verification
|
| Exploitation Conditions | Exploitation requires two concurrent conditions: (1) the attacker must control the Nginx UI upgrade mirror or hold a man-in-the-middle network position capable of altering BOTH the downloaded binary and its digest response (the same-origin digest provides no independent trust anchor); and (2) an operator must manually trigger the self-upgrade feature - the code is installed and run only on that next upgrade. Limiting factors: only the self-upgrade workflow is affected (default install without an operator-initiated upgrade is not exploitable), and the high network/mirror-position requirement plus required operator action substantially narrow realistic exploitation. Only versions 2.0.0 through 2.4.x are affected; 2.5.0 adds minisign signature verification. |
| Impact | This is a code-integrity flaw (CWE-494) in the Nginx UI self-upgrade mechanism, where a downloaded binary is validated only against a same-origin digest from the same mirror, so an attacker who controls that mirror or the network path can swap in both a malicious binary and a matching digest. The provided CVSS 3.1 vector (AV:N/AC:H/PR:N/UI:R/S:U/C:H/I:H/A:H, base 7.5) accurately captures the shape: network-reachable and unauthenticated, but gated by high attack complexity (the attacker must already hold a privileged network/mirror position and tamper with two responses) and by required operator interaction (the upgrade must be manually triggered). No EPSS score, KEV listing, or POC is present in the input, so there is no public exploit identified at time of analysis and no evidence of active exploitation; the two preconditions (MITM-or-mirror-compromise plus an operator-initiated upgrade) make opportunistic mass exploitation unlikely and point toward targeted abuse if exploited at all. This is therefore a genuine full-compromise risk once the preconditions are met (attacker code runs in the Nginx UI process context, yielding C/I/A High), but the AC:H and UI:R gates place it below internet-facing drive-by criticals in real-world priority. Note the C:H rating: the flaw is tagged 'Information Disclosure' in the input, but the actual primary impact is arbitrary code execution / supply-chain integrity loss, so the tag understates and mischaracterizes the risk. |
| Exploit ScenarioDerived | An attacker who has compromised the Nginx UI upgrade mirror, or who occupies a man-in-the-middle position on the network path (e.g. a hostile network or TLS-stripping proxy), waits for or induces an operator to click 'upgrade' in the Nginx UI (versions 2.0.0 to pre-2.5.0). The attacker returns a malicious executable together with a matching same-origin digest, which passes validation, and the application installs and executes the attacker's code in the Nginx UI process context on the next upgrade. No public exploit code was identified at time of analysis, and high attack complexity means the attacker must already hold the mirror/network position. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 09, 2026
Attackers who control the Nginx UI upgrade mirror - or hold a man-in-the-middle position on the path to it - can get arbitrary code installed and executed by Nginx UI 2.0.0 through 2.4.x, because the self-upgrade routine verifies the downloaded binary only against a same-origin digest fetched from that same mirror, leaving no independent trust anchor. Exploitation requires two simultaneous conditions: the attacker's mirror/network position must let them alter BOTH the binary and its digest response, and an operator must manually trigger the self-upgrade, at which point the swapped payload is installed and runs in the Nginx UI process context. The issue is rated CVSS 7.5 (AV:N/AC:H/PR:N/UI:R) and is fixed in 2.5.0, which introduces minisign signature verification; no public exploit code and no confirmed active exploitation were identified at time of analysis, and the high network-position prerequisite plus the required operator action substantially narrow realistic exploitation.
RemediationAI
Vendor-released patch: 2.5.0 - upgrade Nginx UI to v2.5.0 (https://github.com/0xJacky/nginx-ui/releases/tag/v2.5.0), which adds Minisign signature verification of release archives so the integrity check no longer depends on a digest served by the same mirror; the change is implemented in commit 580585516dd87a8b176bcdac258db70c3b64b7ec and documented in GHSA-662p-52hx-cmh2. Because installing the fix through the vulnerable self-upgrade path would repeat the same trust problem, obtain and verify the 2.5.0 artifact out-of-band (container image, package manager, or a manually downloaded archive checked against its .minisig file and the project's trusted public keys) before replacing the binary. If immediate upgrade is not possible, disable or refrain from using the in-application self-upgrade feature and perform upgrades manually from a trusted source; that workaround costs operators automatic update convenience and requires a repeatable manual release-verification process. Additionally, restrict which hosts the Nginx UI host can reach for update traffic (allow-list only the legitimate release endpoint, block or monitor other mirror URLs), and terminate outbound updates through a controlled egress proxy or pinned TLS, accepting the operational overhead of maintaining that allow-list. Hosts that already ran a self-upgrade from an untrusted or unverified mirror between versions 2.0.0 and 2.4.x should be treated as potentially compromised and rebuilt from a known-good image rather than patched in place.
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
This is a software supply-chain / code-integrity defect (CWE-494, Download of Code Without Integrity Check) in the Go-based Nginx UI application (CPE cpe:2.3:a:0xjacky:nginx-ui). Nginx UI ships a self-upgrade feature that downloads a release archive from a configured upgrade mirror and validates it using a digest served from the same origin as the artifact. Since the digest and the artifact share a trust domain, an adversary who compromises the mirror (or terminates the TLS/HTTP path) can satisfy the integrity check with a digest computed over a malicious binary, defeating the check entirely. The fix, delivered in v2.5.0 via commit 580585516dd87a8b176bcdac258db70c3b64b7ec, moves verification to an out-of-band trust anchor: the release build workflow now gains a Go 1.26.x setup and a 'Sign publish archive' step that runs ./cmd/sign-release using a Minisign private key from CI secrets, producing .minisig sidecar files (app-dist.tar.gz.minisig and per-OS archives) that are published alongside the artifacts, including uploads to the R2-backed nginx-ui-dev-build bucket. The new cmd/sign-release/main.go loads the Minisign private key (supporting encrypted keys via MINISIGN_PASSWORD), enforces requireTrustedSigner() against releasesign.TrustedPublicKeys(), and signs each archive; the client-side upgrade path can therefore validate a signature against baked-in trusted public keys rather than trusting anything the mirror returns. The vulnerable window is the self-upgrade mechanism only - a default installation that is never upgraded by an operator does not reach the affected code path.
Know when Nginx Ui 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:H/PR:N/UI:R/S:U/C:H/I:H/A:H
AC:H because the attacker must hold a mirror/MITM position and alter two responses; UI:R because an operator must trigger the upgrade; PR:N as no auth is needed; C/I/A:H from code execution in the process context.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
2DescriptionCVE.org
Nginx UI is a web user interface for the Nginx web server. From 2.0.0 until 2.5.0, the self-upgrade mechanism validates a downloaded binary only with a same-origin digest obtained from the same upgrade mirror. A compromised mirror or network attacker able to alter both responses can supply a malicious executable and matching digest. An operator-triggered upgrade is required, and the application installs and runs the attacker-controlled code in the Nginx UI process context on the next upgrade. This issue is fixed in version 2.5.0.
Articles & Coverage 1
Technical POC Analysis
CWE-494 (Download of Code Without Integrity Check).
Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.
Executive ViewAI
A flaw in Nginx UI, the web-based control panel used to manage Nginx web servers, could allow an attacker who already controls or intercepts the software's update channel to install malicious code on that host when an operator performs a routine self-upgrade. Because Nginx UI typically sits on the management path for production web infrastructure, a successful compromise could give an adversary the same level of control over the servers it manages, extending the blast radius well beyond a single system. Exploitation is not trivial - it requires a privileged network position plus a deliberate human action - and no public exploit or active exploitation has been identified, so this is a manageable but time-sensitive patching priority rather than an emergency.
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.
Unauthenticated backup download and RCE in Nginx UI before 2.3.3. EPSS 1.0%. PoC available.
Nginx UI is a web user interface for the Nginx web server. Rated high severity (CVSS 8.9), this vulnerability is remotel
Unauthenticated attackers can hijack the administrator account during nginx-ui's first-run installation window by claimi
Nginx UI is a web user interface for the Nginx web server. Rated high severity (CVSS 7.7), this vulnerability is remotel
nginx-ui prior to version 2.3.8 exposes sensitive configuration values including node.secret via an authenticated GET /a
Nginx-UI is a web interface to manage Nginx configurations. Rated critical severity (CVSS 9.8), this vulnerability is re
Authenticated administrators of Nginx UI releases 2.3.8 through 2.4.x can achieve remote code execution on the host by a
Remote code execution as root in nginx-ui versions before 2.3.8 via unauthenticated backup restore within 10-minute star
Configuration-validation bypass in Nginx UI (versions 2.0.0-rc.6 through 2.4.0) lets an authenticated low-privilege user
Nginx UI installations before 2.4.1 expose two account-security endpoints, POST /api/otp_enroll and POST /api/finish_pas
Configuration validation bypass in Nginx UI (nginx-ui) prior to 2.4.1 lets an authenticated user with configuration-writ
Ordinary authenticated users of clustered Nginx UI deployments can read the cluster node token from the JSON responses o
EUVD-2026-95897
GHSA-662p-52hx-cmh2
NVD
CVE.org
EPSS
Vulnrichment
VulDB
Exploit-DB