Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate to Nginx UI with backup-config access
-
DeliveryCreate/modify automatic backup with traversal in Name
-
ExploitGetName returns unsanitized path components
-
Executionfilepath.Join resolves archive outside storage dir
-
ImpactScheduled backup writes archive/key file with process privileges
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V5 - File Handling Path canonicalization, traversal prevention
MITRE ATT&CK
2 techniques across 2 tactics: Discovery, Collection The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Requires an authenticated Nginx UI account with permission to create or modify an automatic backup configuration; the attacker sets the backup's Name field to include path separators or parent-directory ('..') components, which AutoBackup.GetName passes through unsanitized into the archive filename. Exploitation only triggers when that automatic backup actually executes, and for the encryption-key write it additionally requires the backup to be configured as an encrypted configuration backup. Limiting factors: authentication and backup-management privileges are mandatory (PR:L), the write is confined to the generated archive/key filename (not arbitrary content into arbitrary files), and impact scales with the privileges of the Nginx UI process. Versions 2.4.3 and later reject separators, '..', Windows reserved characters/device names, and sanitize the name, removing the condition. |
| Impact | This is a medium-severity, authenticated path traversal (CWE-22) with a vendor/NVD CVSS 3.1 vector of AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:L (6.3). The PR:L metric confirms exploitation requires an authenticated account - specifically one with permission to create or modify an automatic backup - so this is not an unauthenticated internet-facing bug. No EPSS score, SSVC decision, KEV listing, or public POC was provided in the intelligence set; exploitation status is therefore 'no public exploit identified at time of analysis.' The signals are internally consistent (network-reachable admin UI, low complexity, low privileges, no user interaction), but the real-world impact is constrained: the primitive is an arbitrary-location file WRITE of a backup archive (and, for encrypted backups, the adjacent key file) with the Nginx UI process privileges - not a read or direct code-execution primitive. The official vector rates confidentiality as Low, which is debatable since the flaw writes rather than reads files; I independently assess confidentiality impact as negligible (see assessed vectors). Net: a genuine but bounded privilege/integrity issue requiring an existing authenticated foothold, best prioritized where Nginx UI is multi-tenant or exposed, not treated as a critical widespread threat. |
| Exploit ScenarioDerived | An authenticated Nginx UI user with access to backup configuration creates or edits an automatic backup whose Name contains path separators and parent-directory components (e.g. '..\evil/...'); because AutoBackup.GetName returns the unsanitized name and it is embedded into the archive filename, filepath.Join resolves the output outside the validated storage directory. When the scheduled backup runs, the archive - and for encrypted configuration backups the encryption key file - is written to an attacker-chosen location with the Nginx UI process's privileges, potentially overwriting sensitive files. No public exploit was identified at time of analysis; exploitation requires only low privileges, no user interaction, and low attack complexity (AV:N/AC:L). |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 12, 2026
Path traversal in Nginx UI (0xJacky) before 2.4.3 allows an authenticated user who can create or modify an automatic backup to write backup archive files - and, when the backup is configured as an encrypted configuration backup, the adjacent encryption key file - outside the validated storage directory, with the privileges of the Nginx UI process. Exploitation requires a valid Nginx UI account with backup-management permissions (CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:L/A:L, 6.3 per the independent assessment) and only takes effect when the configured automatic backup actually runs; the attacker influences the generated archive/key filename rather than arbitrary file content. The issue is fixed in version 2.4.3, and no public exploit code was identified at time of analysis.
RemediationAI
Upgrade to Nginx UI 2.4.3 or later, which is the vendor-released fix for this issue; the release is published at https://github.com/0xJacky/nginx-ui/releases/tag/v2.4.3 and the underlying patch is commit f92218e01054491fc1e6684dc6f7facaf8ab41eb, referenced from the advisory GHSA-jrq7-xrjx-pcfw (https://github.com/0xJacky/nginx-ui/security/advisories/GHSA-jrq7-xrjx-pcfw). If you cannot upgrade immediately, apply these specific compensating controls, noting the trade-offs: (1) restrict the Nginx UI account permissions so that only fully trusted administrators can create or modify automatic backup configurations, since the vulnerability is only reachable with backup-management privileges (PR:L) - this removes the attacker population but does not fix the code path; (2) ensure the Name field of every existing automatic backup contains no path separators or '..' components and review/clean up any backup entries with unusual names before the next scheduled run, accepting that manual name hygiene is easy to regress; (3) run the Nginx UI process with least privilege (a dedicated non-root user, and, where practical, a container with a restricted/read-only root filesystem and a dedicated writable backup volume), which does not prevent the traversal but caps the impact of an out-of-directory write to the files that process can reach; (4) if encrypted configuration backups are not required, avoid configuring them, since the adjacent encryption key file is the additional artifact that can be displaced - the trade-off is losing encryption-at-rest for configuration backups; (5) monitor the Nginx UI process's backup storage location and its parent directories for unexpected archive or key files appearing outside the configured storage_path. Note that no vendor-released patch exists for versions prior to 2.4.3 other than upgrading to 2.4.3, and that the independent assessment scores confidentiality impact as None (C:N), meaning the primary risk is unauthorized file placement (integrity/availability), not direct data disclosure.
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-based web front end for the Nginx web server, and CVE-2026-84320 is a classic CWE-22 path traversal arising from an untrusted-name-to-filesystem-path flow in the automatic backup subsystem. The AutoBackup model stores a user-supplied Name alongside StorageType and StoragePath; while the storage_path was validated to remain inside the intended directory, AutoBackup.GetName previously performed only a trivial transformation (strings.ReplaceAll(strings.TrimSpace(a.Name), " ", "_")), returning the user-controlled name verbatim with no rejection of path separators or '..' parent-directory components. Downstream code embedded that result into a generated archive filename (for example via fmt.Sprintf("%s_%d.zip", name, timestamp)) and then resolved it with Go's filepath.Join(storagePath, generatedFilename); because filepath.Join cleans and normalizes the joined path, a name containing separators or '..' causes the resolved output to escape the validated storage directory. The same construction applies to the key file written alongside encrypted configuration backups. The upstream fix (commit f92218e0) introduces SafeAutoBackupName, which whitelists only letters, digits, '.', '-' and '_', collapses disallowed runs into underscores, strips '..' sequences, trims leading/trailing '._-' characters, falls back to 'backup' for empty results, and prefixes an underscore for Windows reserved device names, complemented by validateAutoBackupFilename rejecting Windows-reserved characters (<>:"|?*) and reserved device names (CON, PRN, AUX, NUL, COM1-9, LPT1-9). The provided CPE cpe:2.3:a:0xjacky:nginx-ui:*:*:*:*:*:*:*:* with no version constraints reflects that all releases prior to 2.4.3 are affected.
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:L/PR:L/UI:N/S:U/C:L/I:L/A:L
Network-reachable admin UI with low-privilege authenticated access (PR:L), no UI; it is a file-write primitive so I:L and A:L but C:N since no data is read.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
1DescriptionCVE.org
Nginx UI is a web user interface for the Nginx web server. Prior to 2.4.3, Nginx UI validates an automatic backup's storage_path, but AutoBackup.GetName returns a user-controlled name without rejecting path separators or parent-directory components, and downstream filename formatting embeds that result in the final archive filename. An authenticated user who can create or modify an automatic backup can cause filepath.Join to resolve the generated archive path outside the validated storage directory, allowing backup archives to be written with the Nginx UI process privileges. For encrypted configuration backups, the adjacent encryption key file can also be written outside the validated directory. This issue is fixed in version 2.4.3.
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
Path traversal exploits occur when applications use user-controlled input to construct file system paths without proper validation.
Unauthenticated backup download and RCE in Nginx UI before 2.3.3. EPSS 1.0%. PoC available.
Unauthenticated attackers who can reach a fresh, uninitialized Nginx UI instance before version 2.3.8 during its first-r
Nginx UI is a web user interface for the Nginx web server. Rated high severity (CVSS 8.9), this vulnerability is remotel
Nginx UI is a web user interface for the Nginx web server. Rated high severity (CVSS 7.7), this vulnerability is remotel
nginx-ui versions prior to 2.3.8 expose 40+ protected configuration fields through the GetSettings API to authenticated
nginx-ui prior to version 2.3.8 exposes sensitive configuration values including node.secret via an authenticated GET /a
Server-side request forgery in Nginx UI through 2.3.4 lets any authenticated user redirect API requests to an attacker-c
Unauthenticated bootstrap takeover in Nginx UI 2.3.5: any remote client that can reach a still-uninitialized instance du
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
EUVD-2026-97860
GHSA-jrq7-xrjx-pcfw
NVD
CVE.org
EPSS
Exploit-DB