{"id":"CVE-2026-84318","summary":"Nginx UI: MCP `nginx_config_add` Bypasses Directive Validation — Authenticated RCE","details":"Nginx UI is a web user interface for the Nginx web server. From 2.0.0-rc.6 until 2.4.1, the MCP tool nginx_config_add writes nginx configuration files to disk and triggers an nginx reload without calling config.ValidateConfigFile. The identical flow in the REST API (POST /api/configs) does call that function and correctly rejects dangerous directives. An authenticated attacker can exploit this gap to write config files containing any blocked directive (perl, js_import, load_module, user root, etc.), bypassing nginx-ui's entire security layer. On a server with the nginx Perl, njs, or Lua module loaded, this is post-authentication Remote Code Execution. This issue is fixed in version 2.4.1.","aliases":["GHSA-9jww-cxg5-rj9m"],"modified":"2026-10-15T02:31:04.857392853Z","published":"2026-10-12T20:20:18.595Z","database_specific":{"cna_assigner":"GitHub_M","cwe_ids":["CWE-693"],"osv_generated_from":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/84xxx/CVE-2026-84318.json"},"references":[{"type":"WEB","url":"https://github.com/0xJacky/nginx-ui/releases/tag/v2.4.1"},{"type":"ADVISORY","url":"https://github.com/0xJacky/nginx-ui/security/advisories/GHSA-9jww-cxg5-rj9m"},{"type":"ADVISORY","url":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/84xxx/CVE-2026-84318.json"},{"type":"ADVISORY","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-84318"},{"type":"FIX","url":"https://github.com/0xJacky/nginx-ui/commit/23d1934099b05b2a01589b48129dc3d3159d91c2"}],"affected":[{"ranges":[{"type":"GIT","repo":"https://github.com/0xjacky/nginx-ui","events":[{"introduced":"1330888280a244552402accf7b26abab6c2dcb9a"},{"fixed":"23d1934099b05b2a01589b48129dc3d3159d91c2"},{"fixed":"0540f3ecf7824e9adbe408f3166d151651ccf4dd"}],"database_specific":{"extracted_events":[{"introduced":"2.0.0-rc.6"},{"fixed":"2.4.1"}],"source":["AFFECTED_FIELD","REFERENCES"]}}],"versions":["v2.4.0","v2.3.11","v2.3.10","v2.3.9","v2.3.8","v2.3.7","v2.3.6","v2.3.5","v2.3.4","v2.3.3","v2.3.2","v2.3.1","v2.3.0","v2.2.1","v2.2.0-patch.1","v2.2.0","v2.1.17","v2.1.16","v2.1.15","v2.1.14","v2.1.13","v2.1.12","v2.1.11","v2.1.10","v2.1.9","v2.1.8","v2.1.7","v2.1.6","v2.1.5","v2.1.4-patch.1","v2.1.4","v2.1.3","v2.1.2","v2.1.1","v2.1.0-patch.1","v2.1.0","v2.1.0-rc.3","v2.1.0-rc.2","v2.1.0-rc.1","v2.1.0-beta.1","v2.0.2","v2.0.1","v2.0.0","v2.0.0-rc.8-patch.1","v2.0.0-rc.8","v2.0.0-rc.7-patch.8","v2.0.0-rc.7-patch.7","v2.0.0-rc.7-patch.6","v2.0.0-rc.7-patch.5","v2.0.0-rc.7-patch.4","v2.0.0-rc.7-patch.3","v2.0.0-rc.7-patch.2","v2.0.0-rc.7","v2.0.0-rc.6-patch.5","v2.0.0-rc.6-patch.4","v2.0.0-rc.6-patch.3","v2.0.0-rc.6-patch.2","v2.0.0-rc.6-patch.1","v2.0.0-rc.6"],"database_specific":{"source":"https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-84318.json"}}],"schema_version":"1.9.0","severity":[{"type":"CVSS_V3","score":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H"}]}