Nginx UI: Authenticated Remote Code Execution via Backup Restore App Config Overwrite
## Summary An authenticated nginx-ui user can call `POST /api/restore`, upload a forged encrypted backup, restore `app.ini`, set nginx command settings such as `TestConfigCmd`, and then trigger command execution with `POST /api/nginx/test`. This was validated on nginx-ui `2.3.11 2(523) 6c86e5a5` in the local Docker container `uozi/nginx-ui:latest`. ## Impact An authenticated user can overwrite nginx-ui application configuration and database state through restore, including protected settings that are normally not writable through the settings API. By setting nginx command fields in the restored `app.ini`, the attacker can execute commands in the nginx-ui runtime context. This affects confidentiality, integrity, and availability because the attacker can read or replace secrets, change node/JWT secrets, corrupt application state, and execute arbitrary commands. ## Affected Version / Environment - Version: `nginx-ui 2.3.11 2(523) 6c86e5a5` - Deployment: local Docker, `uozi/nginx-ui:latest` - Base URL used in validation: `http://127.0.0.1:8080` ## Root Cause `/api/restore` is reachable through normal authenticated-user authorization. The restore handler accepts attacker-supplied backup key material, validates the manifest with a key derived from that supplied AES key, decrypts attacker-controlled backup contents, and copies restored `app.ini` into the live nginx-ui config path. Relevant code paths: - `api/backup/router.go`: `POST /api/restore` - `api/backup/restore.go`: accepts `
- Products
- github.com/0xJacky/Nginx-UI
- Affected versions
- Not specified
- Fixed versions
- 1.9.10-0.20260728074146-a467ed652591
- CVEs
- CVE-2026-107806
- Confirmed fixed CVEs
- Not specified
- Updated in this feed
- 31 Oct 2026, 08:44 UTC · Revision 1
Source evidence
Nginx UI: Authenticated Remote Code Execution via Backup Restore App Config Overwrite
core-osv · Original sourcePublished 9 Oct 2026, 20:45 UTC
## Summary An authenticated nginx-ui user can call `POST /api/restore`, upload a forged encrypted backup, restore `app.ini`, set nginx command settings such as `TestConfigCmd`, and then trigger command execution with `POST /api/nginx/test`. This was validated on nginx-ui `2.3.11 2(523) 6c86e5a5` in the local Docker container `uozi/nginx-ui:latest`. ## Impact An authenticated user can overwrite nginx-ui application configuration and database state through restore, including protected settings that are normally not writable through the settings API. By setting nginx command fields in the restored `app.ini`, the attacker can execute commands in the nginx-ui runtime context. This affects confidentiality, integrity, and availability because the attacker can read or replace secrets, change node/JWT secrets, corrupt application state, and execute arbitrary commands. ## Affected Version / Environment - Version: `nginx-ui 2.3.11 2(523) 6c86e5a5` - Deployment: local Docker, `uozi/nginx-ui:latest` - Base URL used in validation: `http://127.0.0.1:8080` ## Root Cause `/api/restore` is reachable through normal authenticated-user authorization. The restore handler accepts attacker-supplied backup key material, validates the manifest with a key derived from that supplied AES key, decrypts attacker-controlled backup contents, and copies restored `app.ini` into the live nginx-ui config path. Relevant code paths: - `api/backup/router.go`: `POST /api/restore` - `api/backup/restore.go`: accepts `
osv:GHSA-p393-cf76-4jmr
github.com/0xJacky/Nginx-UI
Fixed versions: 1.9.10-0.20260728074146-a467ed652591
Complete source record
{
"id": "3a9730eaf73c6c299e1df6f96424f1bbac2764964f988d51982add906177c3cc",
"url": "https://osv.dev/vulnerability/GHSA-p393-cf76-4jmr",
"method": "structured",
"payload": {
"kind": "advisory",
"title": "Nginx UI: Authenticated Remote Code Execution via Backup Restore App Config Overwrite",
"summary": "## Summary An authenticated nginx-ui user can call `POST /api/restore`, upload a forged encrypted backup, restore `app.ini`, set nginx command settings such as `TestConfigCmd`, and then trigger command execution with `POST /api/nginx/test`. This was validated on nginx-ui `2.3.11 2(523) 6c86e5a5` in the local Docker container `uozi/nginx-ui:latest`. ## Impact An authenticated user can overwrite nginx-ui application configuration and database state through restore, including protected settings that are normally not writable through the settings API. By setting nginx command fields in the restored `app.ini`, the attacker can execute commands in the nginx-ui runtime context. This affects confidentiality, integrity, and availability because the attacker can read or replace secrets, change node/JWT secrets, corrupt application state, and execute arbitrary commands. ## Affected Version / Environment - Version: `nginx-ui 2.3.11 2(523) 6c86e5a5` - Deployment: local Docker, `uozi/nginx-ui:latest` - Base URL used in validation: `http://127.0.0.1:8080` ## Root Cause `/api/restore` is reachable through normal authenticated-user authorization. The restore handler accepts attacker-supplied backup key material, validates the manifest with a key derived from that supplied AES key, decrypts attacker-controlled backup contents, and copies restored `app.ini` into the live nginx-ui config path. Relevant code paths: - `api/backup/router.go`: `POST /api/restore` - `api/backup/restore.go`: accepts `",
"evidence": "osv:GHSA-p393-cf76-4jmr",
"products": [
{
"name": {
"value": "github.com/0xJacky/Nginx-UI",
"evidence": "/affected/0/package/name"
},
"prerequisites": [],
"fixed_versions": [
{
"value": "1.9.10-0.20260728074146-a467ed652591",
"evidence": "/affected/0/ranges"
}
],
"affected_versions": []
}
],
"severity": "critical",
"structured": {
"id": "GHSA-p393-cf76-4jmr",
"aliases": [
"CVE-2026-107806",
"GHSA-p393-cf76-4jmr",
"GO-2026-6741"
],
"metrics": [
{
"type": "CVSS_V4",
"score": "CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:P/VC:H/VI:H/VA:H/SC:H/SI:H/SA:H"
}
],
"affected": [
{
"ranges": [
{
"type": "SEMVER",
"events": [
{
"introduced": "1.9.10-0.20260421071512-7864e378f5cf"
},
{
"fixed": "1.9.10-0.20260728074146-a467ed652591"
}
]
}
],
"package": {
"name": "github.com/0xJacky/Nginx-UI",
"purl": "pkg:golang/github.com/0xJacky/Nginx-UI",
"ecosystem": "Go"
},
"database_specific": {
"source": "https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/10/GHSA-p393-cf76-4jmr/GHSA-p393-cf76-4jmr.json"
}
}
],
"modified": "2026-10-19T21:41:10.824670129Z",
"provider": "osv",
"references": [
"https://github.com/0xJacky/nginx-ui/security/advisories/GHSA-p393-cf76-4jmr",
"https://nvd.nist.gov/vuln/detail/CVE-2026-107806",
"https://github.com/0xJacky/nginx-ui/commit/a467ed652591fc0cd1b466a1ec751b493faef9f7",
"https://github.com/0xJacky/nginx-ui",
"https://github.com/0xJacky/nginx-ui/releases/tag/v2.5.0"
],
"provider_metadata": {
"cwe_ids": [
"CWE-94"
],
"severity": "CRITICAL",
"github_reviewed": true,
"nvd_published_at": "2026-10-09T15:17:10Z",
"github_reviewed_at": "2026-10-09T20:45:02Z"
}
},
"related_cves": [
{
"value": "CVE-2026-107806",
"evidence": "/aliases"
}
],
"security_relevant": true,
"severity_evidence": "/database_specific/severity"
},
"source_id": "core-osv",
"document_id": 376780,
"published_at": "2026-10-09T20:45:02+00:00"
}Nginx UI: Authenticated Remote Code Execution via Backup Restore App Config Overwrite in github.com/0xJacky/Nginx-UI
core-osv · Original sourcePublished 19 Oct 2026, 21:08 UTC
Nginx UI: Authenticated Remote Code Execution via Backup Restore App Config Overwrite in github.com/0xJacky/Nginx-UI
osv:GO-2026-6741
github.com/0xJacky/Nginx-UI
Fixed versions: 1.9.10-0.20260728074146-a467ed652591
Complete source record
{
"id": "c2f5f37aae95c9baed30f62026181575f37dab031083bae32cc2a2adfc5ea3be",
"url": "https://osv.dev/vulnerability/GO-2026-6741",
"method": "structured",
"payload": {
"kind": "advisory",
"title": "Nginx UI: Authenticated Remote Code Execution via Backup Restore App Config Overwrite in github.com/0xJacky/Nginx-UI",
"summary": "Nginx UI: Authenticated Remote Code Execution via Backup Restore App Config Overwrite in github.com/0xJacky/Nginx-UI",
"evidence": "osv:GO-2026-6741",
"products": [
{
"name": {
"value": "github.com/0xJacky/Nginx-UI",
"evidence": "/affected/0/package/name"
},
"prerequisites": [],
"fixed_versions": [
{
"value": "1.9.10-0.20260728074146-a467ed652591",
"evidence": "/affected/0/ranges"
}
],
"affected_versions": []
}
],
"severity": "unknown",
"structured": {
"id": "GO-2026-6741",
"aliases": [
"CVE-2026-107806",
"GHSA-p393-cf76-4jmr",
"GO-2026-6741"
],
"affected": [
{
"ranges": [
{
"type": "SEMVER",
"events": [
{
"introduced": "1.9.10-0.20260421071512-7864e378f5cf"
},
{
"fixed": "1.9.10-0.20260728074146-a467ed652591"
}
]
}
],
"package": {
"name": "github.com/0xJacky/Nginx-UI",
"purl": "pkg:golang/github.com/0xJacky/Nginx-UI",
"ecosystem": "Go"
},
"database_specific": {
"source": "https://vuln.go.dev/ID/GO-2026-6741.json"
},
"ecosystem_specific": {}
}
],
"modified": "2026-10-19T21:31:53.113603304Z",
"provider": "osv",
"references": [
"https://github.com/0xJacky/nginx-ui/security/advisories/GHSA-p393-cf76-4jmr",
"https://nvd.nist.gov/vuln/detail/CVE-2026-107806",
"https://github.com/0xJacky/nginx-ui/commit/a467ed652591fc0cd1b466a1ec751b493faef9f7",
"https://github.com/0xJacky/nginx-ui/releases/tag/v2.5.0"
],
"provider_metadata": {
"url": "https://pkg.go.dev/vuln/GO-2026-6741",
"review_status": "UNREVIEWED"
}
},
"related_cves": [
{
"value": "CVE-2026-107806",
"evidence": "/aliases"
}
],
"security_relevant": true,
"severity_evidence": null
},
"source_id": "core-osv",
"document_id": 376718,
"published_at": "2026-10-19T21:08:26+00:00"
}