{"id":"EUVD-2026-97908","revision":"e0158d1cb35b4a5280da6de47c4625b3","records":[{"revision":"e0158d1cb35b4a5280da6de47c4625b3","observedAt":"2026-11-07T15:21:53.161+00:00","statement":{"source":"euvd","id":"EUVD-2026-97908","aliases":["CVE-2026-84318","GHSA-9jww-cxg5-rj9m"],"title":"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 ident…","description":"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.","state":0,"publishedAt":null,"modifiedAt":null,"affected":[],"metrics":[{"system":"EUVD CVSS 3.1","vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H","score":8.8,"severity":null}],"references":["https://github.com/0xJacky/nginx-ui/security/advisories/GHSA-9jww-cxg5-rj9m","https://github.com/0xJacky/nginx-ui/commit/23d1934099b05b2a01589b48129dc3d3159d91c2","https://github.com/0xJacky/nginx-ui/releases/tag/v2.4.1"],"sourceUrl":"https://euvd.enisa.europa.eu/vulnerability/EUVD-2026-97908","license":"ENISA EUVD · source terms and attribution apply","enrichment":{"sourceStatus":null,"weaknesses":[],"productCriteria":[],"sourceDates":{"datePublished":"Oct 12, 2026, 8:20:18 PM","dateUpdated":"Oct 13, 2026, 2:59:04 PM"},"relatedAdvisories":[],"note":"EUVD source date text has no stated timezone and is retained without inventing a UTC instant. Related bulletin membership is not an alias, common cause or applicability claim. A missing vector with a zero score is treated as unrated. Complete vendor/product and underlying source evidence remains in the original JSON."},"key":"euvd:EUVD-2026-97908","identifiers":["EUVD-2026-97908","CVE-2026-84318","GHSA-9jww-cxg5-rj9m"]},"retained":false,"historicalAffected":[]}],"coverage":[]}